操作系统实验一 Linux基本环境及进程管理(9)

时间:2025-05-04

操作系统实验一 Linux基本环境及进程管理

}

}

三、运行结果

执行命令ls -l ,列出当前目录下所有文件和子目录;

ls completed!

四、分析原因

程序在调用fork( )建立一个子进程后,马上调用wait( ),使父进程在子进程结束之前,一直处于睡眠状态。子进程用exec( )装入命令ls ,exec( )后,子进程的代码被ls的代码取代,这时子进程的PC指向ls的第1条语句,开始执行ls的命令代码。

注意在这里wait( )给我们提供了一种实现进程同步的简单方法。

五、思考

(1)可执行文件加载时进行了哪些处理?

(2)什么是进程同步?wait( )是如何实现进程同步的?

4.编制一段程序,使其实现进程的软中断通信。

要求:使用系统调用fork()创建两个子进程,再用系统调用signal()让父进程捕捉键盘上来的中断信号(即按Del键);当捕捉到中断信号后,父进程用系统调用kill()向两个子进程发出信号,子进程捕捉到信号后分别输出下列信息后终止:

Child process 1 is killed by parent!

Child process 2 is killed by parent!

父进程等待两个子进程终止后,输出如下的信息后终止:

Parent process is killed!

实验指导

一、信号

1 、信号的基本概念

每个信号都对应一个正整数常量 ( 称为 signal number, 即信号编号。定义在系统头文件 <signal.h> 中 ) , 代表同一用户的诸进程之间传送事先约定的信息的类型,用于通知某进程发生了某异常事件。每个进程在运行时,都要通过信号机制来检查是否有信号到达。若有, 便中断正在执行的程序,转向与该信号相对应的处理程序,以完成对该事件的处理;处理结束后再返回到原来的断点继续执行。实质上,信号机制是对中断机制的一 种模拟,故在早期的 UNIX 版本中又把它称为软中断。

信号与中断的相似点:

( 1 )采用了相同的异步通信方式;

( 2 )当检测出有信号或中断请求时,都暂停正在执行的程序而转去执行相应的处理程序; ( 3 )都在处理完毕后返回到原来的断点;

( 4 )对信号或中断都可进行屏蔽。

信号与中断的区别:

( 1 )中断有优先级,而信号没有优先级,所有的信号都是平等的;

( 2 )信号处理程序是在用户态下运行的,而中断处理程序是在核心态下运行; ( 3 )中断响应是及时的,而信号响应通常都有较大的时间延迟。

信号机制具有以下三方面的功能:

( 1 )发送信号。发送信号的程序用系统调用 kill( ) 实现;

操作系统实验一 Linux基本环境及进程管理(9).doc 将本文的Word文档下载到电脑

精彩图片

热门精选

大家正在看

× 游客快捷下载通道(下载后可以自由复制和排版)

限时特价:7 元/份 原价:20元

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219