操作系统实验报告[材料]_实验报告操作系统

2020-02-28 其他范文 下载本文

操作系统实验报告[材料]由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“实验报告操作系统”。

计算机学院实验报告

课 程实验名称

专 业班 级学 号学生姓名

操作系统 进程的控制 计算机操作系统 131110196 邹明镇 嘉应学院计算机学院

1305

一、实验目的熟悉进程的睡眠、同步、撤消等进程控制方法  利用 wait()来控制进程执行顺序 

二、实验原理

1.sleep()使当前的进程睡眠,即当前的进程进入阻塞态。2.wait()等待子进程运行结束。如果子进程没有完成,父进程一直等待。wait()将调用进程挂起,直至其子进程因暂停或终止而发来软中断信号为止。如果在wait()前已有子进程暂停或终止,则调用进程做适当处理后便返回。系统调用格式:

int wait(int *status);其中,status是用户空间的地址。它的低8位反应子进程状态,为0表示子进程正常结束,非0则表示出现了各种各样的问题;高8位则带回了exit()的返回值。exit()返回值由系统给出。

核心对 wait()作以下处理:

(1)首先查找调用进程是否有子进程,若无,则返回出错码;

(2)若找到一处于“僵死状态”的子进程,则将子进程的执行时间加到父进程的执行时间上,并释放子进程的进程表项;

(3)若未找到处于“僵死状态”的子进程,则调用进程便在可被中断的优先级上睡眠,等待其子进程发来软中断信号时被唤醒。3.exit()终止进程的执行。系统调用格式:

void exit(int status);其中,status是返回给父进程的一个整数,以备查考。

为了及时回收进程所占用的资源并减少父进程的干预,UNIX/LINUX利用exit()来实现进程的自我终止,通常父进程在创建子进程时,应在进程的末尾安排一条exit(),使子进程自我终止。exit(0)表示进程正常终止,exit(1)表示进程运行有错,异常终止。

如果调用进程在执行exit()时,其父进程正在等待它的终止,则父进程可立即得到其返回的整数。核心须为exit()完成以下操作:(1)关闭软中断(2)回收资源(3)写记帐信息

(4)置进程为“僵死状态”

/* 父进程 */ int status;wait(&status);/*同步*/ printf(“Child proce completed: %dn”, status);} else { /* 子进程 */ printf(“Hello child!n”);return 0;} } 思考:这个程序中,子进程的退出状态值是多少? 5)利用 exit()设定子进程的退出状态 #include #include #include

main(){ int pid = fork();/*创建子进程*/

if(pid > 0){ /* 父进程 */ int status;wait(&status);/*同步*/ printf(“Child proce completed: %d(%d, %d)n”, status, status/256, status%256);} else { /* 子进程 */ printf(“Hello child!n”);exit(2);} } 思考:这个程序中,子进程的退出状态值是多少?如何获得其低8位和高8位? 思考与练习:

试回答每个程序后面的思考题。

四、实验环境

本次实验所使用的系统平台Linux(Ubuntu)和相关软件GCC。

3)同步

5)利用 exit()设定子进程的退出状态

《操作系统实验报告[材料].docx》
将本文的Word文档下载,方便收藏和打印
推荐度:
操作系统实验报告[材料]
点击下载文档
相关专题 实验报告操作系统 实验报告 操作系统 材料 实验报告操作系统 实验报告 操作系统 材料
[其他范文]相关推荐
    [其他范文]热门文章
      下载全文