logo资料库

Linux操作系统实验报告.doc

第1页 / 共72页
第2页 / 共72页
第3页 / 共72页
第4页 / 共72页
第5页 / 共72页
第6页 / 共72页
第7页 / 共72页
第8页 / 共72页
资料共72页,剩余部分请下载后查看
广西外国语学院信息工程学院 课程设计报告 课程名称: 操作系统 题 目: 专业班级: 13 级软件二班 学 号: 135501228 姓 名: 韦文宁 同组人员: 指导教师: 卢豫开 时 间: 2015 年 6 月 20 号 目 录 1、 进程控制
(1). 创建子进程 create.c 使用系统调用 fork( )创建子进程,当程序运行时,在系统中有一个父进程和一个子进程活动。 请你编译并运行这个 create.c。 gcc create.c -o create.out 提交的实验报告(打印版)内容: 1) 源代码 2) 运行时显示的结果 3) 根据所学的理论知识对源代码及 运行结果分析 第一题:1)代码如下: #include int main(){ int pid; pid = fork();//创建进程 if(pid == 0){ //子进程创建成功 printf("I am the child,my pid is %d!\n",getpid()); printf("I am the parent,my pid is %d,my child pid is %d!\n",getpid(),pid); }else{ } } 2)实验结果截图:
3)实验结果分析:创建了一个进程,父进程的 PID 是 13246,子进程的 PID 是 13247 第二题:1)进程控制 processControl.c 多个进程依次执行,使系统调用 fork( )、execl( )、exit( )、wait( ),调用“/bin/echo”下的 echo 命 令,向控制台输出一句,显示是哪个进程。 请你编译并运行这个 processControl.c。 gcc processControl.c -o processControl.out 提交的实验报告(打印版)内容: 1) 源代码 2) 运行时显示的结果 3) 根据所学的理论知识对源代码及 运行结果分析 2)代码如下: #include #include #include int main(){ int p1,p2,p3,p4,p5,p6,p7;//定义七个进程 int end_p1=0,end_p2=0,end_p3=0,end_p4=0, end_p5=0,end_p6=0,end_p7=0;//设定进程初始都未结束 int pid, status;
if((p1=fork())==0) {//创建进程 p1 //是子进程则输出 } execl("/bin/echo","echo","I am P1",0); wait(&status);//等待终止的子进程 if((p2=fork())==0) {//创建进程 p2 //是子进程则输出 execl("/bin/echo","echo","I am P2",0); } if((p3=fork())==0) {//创建进程 p3 //是子进程则输出 execl("/bin/echo","echo","I am P3",0); } do{ pid=wait(&status);//等待终止的子进程 if(pid==p2) end_p2=1;//置进程 p2 结束 if(pid==p3) end_p3=1; //置进程 p3 结束 }while(end_p3==0);
if((p4=fork())==0) {//创建进程 p4 //是子进程则输出 } execl("/bin/echo","echo","I am P4",0); if((p5=fork())==0) {//创建进程 p5 //是子进程则输出 execl("/bin/echo","echo","I am P5",0); } do{ pid=wait(&status); //等待终止的子进程 if(pid==p4) end_p4=1; //置进程 p4 结束 if(pid==p5) end_p5=1; //置进程 p5 结束 }while(end_p4==0||end_p5==0); if((p6=fork())==0) {//创建进程 p6 //是子进程则输出 } execl("/bin/echo","echo","I am P6",0);
do{ pid=wait(&status); //等待终止的子进程 if(pid==p2) end_p2=1; //置进程 p2 结束 if(pid==p6) end_p6=1; //置进程 p6 结束 }while(end_p2==0||end_p6==0); if((p7=fork())==0) {//创建进程 p7 //是子进程则输出 } execl("/bin/echo","echo","I am P7",0); wait(&status); //等待终止的子进程 exit(1); } 2)实验结果截图: 3)实验结果分析:这个程序定义了 7 个进程,但是只显示了 6 个进程,只需在最后一行代码 exit(1)前加
上 sleep(3);即可显示 7 个进程 2、处理机调度 1. 按优先权调度 prioChange.c 这是 1 个按优先权调度算法实现处理机调度的程序,请你编译并运行这个 prioChange.c。运行时按提示给出 进程数量、进名、每个进程的运行时间。 请你编译并运行这个 prioChange.c。 gcc prioChange.c -o prioChange.out 提交的实验报告(打印版)内容: 1) 源代码 2) 运行时显示的结果 3) 根据所学的理论知识及源代码分 析运行结果 第一题:1)代码如下: #include #include #include #include #include #include #include
//定义进程结构信息 typedef struct pcbStruct { int pid;//进程 id char name[10]; //进程名称 int status; //进程状态 1-运行 2-就绪 3-等待 0-完成 int type; // 进程类别 0-系统 进程 1-用户进程 int res; //进程需要资源的时间点 int totalTime; //进程占用 cpu 的时间 int runTime; //进程执行的时间 int count; //进程运行时间计数器 int prio; //进程优先级 struct pcbStruct *next; /*链指针*/ }PCB; //定义资源结构 typedef struct resStruct{ int pid;//占用进程 id int free;//是否可用,1:可用 0:不可用
分享到:
收藏