操作系统实验指导1[1]

操作系统实验指导1[1]

ID:43958189

大小:347.28 KB

页数:12页

时间:2019-10-17

操作系统实验指导1[1]_第1页
操作系统实验指导1[1]_第2页
操作系统实验指导1[1]_第3页
操作系统实验指导1[1]_第4页
操作系统实验指导1[1]_第5页
资源描述:

《操作系统实验指导1[1]》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、实验一进程创建模拟实验学时:2实验类型:验证实验要求:必修一、实验目的1)理解进程创建相关理论;2)掌握进程创建方法;3)掌握进程相关数据结构。二、实验内容木实验针对操作系统中进程创建相关理论进行实验。要求实验者输入实验指导帖提供的代码并进行测试。代码简化了进程创建的多个步骤和内容。进程的树形结构采用广义二义树的方式进行存储。三、实验原理1)进程控制块为了描述和控制进程的运行,系统为每个进程定义了一个进程控制块(PCB),它是进稈实体的一部分,是操作系统管理进程最重要的数据结构。其上要包含四类信息:(1)进程标识符它唯一地标识一个进程。通常包括

2、进程号pid,父进程号ppid和川户号Uido(2)处理机状态处理器的状态通常rtl处理机的各种寄存器中的内容组成。PCB存放中断(阻塞,挂起)时的各寄存器值,当该进程重新执行时,可以从断点处恢复。主要包括:a)通用寄存器;b)指令计数器;c)程序状态字PSW;d)用户栈指针。(3)进程调度信息a)Jit程状态;b)述程优先级(用于描述优先使用cpu级别的一个整数,高优先级的进程先得到CPU,通常情况下,优先值越小优先级越高);C)其它信息(等待时间、总执行时间等);d)事件(等待原因)。(4)进程控制信息a)程序和数据的地址(程序在内存和外存

3、屮的首址);b)进程同步和通信机制;c)资源列表(进程除CPU以外的所有资源);d)链接指针(进程队列中指向下一个进程的PCB首址)。2)进程创建流程(1)申请空白PCB为新进程申请获得唯一的数字标识符,并从PCB集合中索取一个空HPCB。如杲无空白PCB,可以创建一个新的PCBo在本实验中,每次动态创建PCBo(2)为新进程分配资源为新进程分配内存空间和栈空间。(3)初始化进程控制块a)初始化标识信息;b)初始化处理机状态信息;c)初始化处理机控制信息。(4)将新进程插入就绪队列3)进程树图1-1进程树进程树用于描述进程家族关系,如图1-1中

4、可以看出,进程P1创建了进程P2、P3、P4、P5,而P2又创建了P6、P7、P8……o在进程创建过程中,需耍对每一个新增加的进程加入到进程树中,有了清晰的父子关系,可以使资源继承或进程删除等操作变得很方便。4)进程总链它是一个PCB链表,每一个新创建的进程必须把其PCB放入总链中,该总链可以对破坏的进程树进行修复,也方便PCB查找。四、程序清单1.basic,h文件#ifndefbasic_h#include#include#include#definebasic_hchar*erro

5、rmsg[256];//processcontrolblockstructpcb{intpid;//processidintppid;//parentprocessidintprio;//priorityintstate;//stateintlasttime;//lastexecutetimeinttottime;//totleexecutetime};//processnodestructpnode{pcb*node;pnode*sub;pnode*brother;pnode*next;};//信号量structsemphorefcharna

6、me[5];〃名称intcount;//i;

7、*数值intcurpid;//当前进程idpnode*wlist;//等待链表};#definegeterror(eno)printf(n%s,errormsg[eno])voidiniteiTor(){errormsg[0]=(char*)malloc(20);eiTonnsg[0]=Merrorcommand!n;errormsg[1]=(char*)malloc(20);errormsg[1]=nerrorparameter!11;}//getasubstringinstringscha

8、r*substr(char*s,intstart,intend){char*sl;intlen=strlen(s);if(start<0IIend>=lenIIstart>end)returnNULL;s1=(char*)malloc(end-start+2);for(inti=O;i<=end-start;i++)si[i]=s[i+start];sinw;returnsi;)//findthelocationofcinstringsintinstr(char*s,charc)unsignedi;foi

9、)if(s[i]==c)returni;return-1;}//changethestringtoarraydataint*strtoarray(ch

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。