第二章 进程管理(课后题)

思考题与练习题

选择与填空

  1. 操作系统提供给应用程序的接口是: (系统调用)
  2. wait(s) 操作中的block(s.L) 阻塞的进程是( 调用wait(s)的进程 )
  3. 在一个单处理系统中存在5个进程, 处于就绪队列中的就绪进程数最多为( 5个)
  4. 若记录型信号量的wait(s)和signal(s)操作的信号量s的初始值为2, 当前值为-1, 则在s的阻塞队列中处理阻塞状的进程数为: (1个)
  • 解析: 假定有p1, p2, p3,…pn 个进程, p1 进入临界区, 此时s=2-1=1, p1可以访问临界资源; 同时p2试图进入临界区, s=1-1=0, p2依然可以访问临界资源; 此时p3试图进入临界区, 此时s=0-1=-1,也就是当前值, 此时执行 block(s.L), s.L中只有p3这一个进程 ,处于阻塞态的也只有p3这一个进程, 处于执行态的有p1和p2两个进程 , 处于就绪态的就是n-3个进程了
  1. 进程是由 正文段, 用户数据段, 进程控制块 构成的实体
  2. 进程的3种基本状态是: 就绪态, 执行态, 阻塞态
  3. 整型信号量的值只能被 wait操作signal操作 改变, 不允许系统中的其它程序改变信号量的值
  4. 临界区是指访问 临界资源 的代码

简答题

1. 什么是进程? 说明进程与程序之间的区别和联系(p44)

  • 进程:
    • 进程是允许并发执行的程序的某个数据集合上的运行过程
    • 进程由正文段, 用户数据段和进程控制段共同组成的执行环境
  • 进程与程序的区别:
    • 程序是静态的, 进程是动态的
    • 程序是永久性的, 进程是暂时性的
    • 两者存在的实体不同, 程序是指令的集合, 进程是包含了正文段, 用户数据段和进程控制块的实体
  • 两者的联系:
    • 进程是程序的一次执行, 进程总是对应至少一个特定的程序, 执行程序的代码.
    • 一个程序可以对应多个进程, 同一个程序可以不同的数据集合上运行, 因此构成若干不同的进程
    • 多个进程可以并发的执行相同的程序代码, 而同一个进程能顺序地执行几个程序.

2. 操作系统在什么时候创建进程? 操作系统如何创建一个进程. ?(p52)

  • 操作系统通常在下列情况下创建进程:
    • 用户登录
    • 作业调度
    • 提供服务
    • 应用请求
  • 调用创建新进程的系统调用来创建进程的一般步骤如下:
    • 申请空白PCB(PCB即进程控制块)
    • 为新进程分配资源
    • 初始化进程控制块
    • 将新进程插入就绪态队列

3. 时钟中断信号是如何产生的?(p60) 时钟中断处理程序(时钟驱动程序)的功能是什么?(p60)

  • 时钟中断信息的产生:
    • OS时钟管理硬件的功能是按指定的时间间隔产生时间中断, 测量逝去的时间, 并触发与时间有关的操作.
    • 主要由3部分构成: 晶振, 计数器, 寄存器
    • 晶振能够产生固定频率的脉冲, 每产生一次脉冲, 计数器的值减1, 当计数器的值为0时, 产生一次时钟中断信号, 保持寄存器的值再次赋值给计数器.
  • 时钟驱动程序的功能:
    • 维护日期和时间
    • 对CPU使用情况进行记账
    • 递减当前进程在一个时间片内的剩余执行时间,并检查是否为零, 防止进程运行超时.

4. 说明单重中断的处理过程(p57, 图2-8即是)

假定中断处理过程中不再响应新近产生的中断信息, 直到本次中断处理完毕. 同时假定中断处理完毕,CPU返回被中断的程序断点继续执行被中断的程序
CPU在反复执行指令的过程中,每执行完一条指令, 都会检测是否有外部中断信号的到来. 如果检测到中断信息, 则转中断处理过程.
关键过程过程如下:

  • 系统关闭中断, 保护断点,把当前要执行的下一条指令的地址保存到内存中, 以便中断时返回,能把这个地址恢复到程序计数器PC中, 使被中断的程序从断点处开始继续执行.
  • 转中断处理程序, 保护现场
  • 执行特定的中断服务子程序
  • 恢复现场
  • 开中断
  • 中断返回 继续执行被中断的程序

5. 进程具有哪些特征?(p45)

进程是操作系统管理的产体, 有以下几个特征:

  • 并发性
  • 动态性
  • 异步性
  • 独立性
  • 结构特征

6.什么是线程? 为什么为引入线程?(p81)

  • 线程是进程的一个实体, 是被系统独立调度分派的基本单位.
  • 由于进程是独立执行的基本单位, 又是资源拥有者,在进程创建, 撤销和切换时需要较大的时空开销, 所以系统中所设置的进程数和进程切换的频率都受到了限制, 影响了操作系统并发程度的提高. 引入线程作为独立调度和分派的单位, 不独立拥有资源, 而与其他线程共享同一进程的资源, 减小了系统的时空开销.

7. 实现进程互斥的基本原理是什么?(p66)

  • 在临界区前面加进入区代码, 在临界区后加退出区代码
  • 进入区代码在临界区代码之前执行, 检查进程是否可以进入临界区,并对临界区进行'加锁'.
  • 退出区代码在临界区代码之后执行, 完成释放临界区访问权的功能

综合应用

有两个进程pA, pB合作解决文件打印问题: pA将文件记录从磁盘读入主存的缓冲区, 每执行一次读一个记录; pB将缓冲区的内容打印出来, 每执行一次打印一个记录. 缓冲区的大小等于一个记录的大小. 请用记录型信号量机制的wait(s)和signal(s)操作来保证文件的正确打印, 并写出同步代码.

# 声明变量
type semaphore = record
	Value: integer;
	L: list of process;
end

# 定义wait(s)函数
procedure wait(s)
var s; semaphore;
begin
	s.value = s.value-1;
	if s.value < 0 then block(s.L)
end.

# 定义signal(s)函数
procedure signal(s)
var s: semaphore;
begin
	s.value = s.value+1
	if s.value <=0 then wakeup(s.L)
end.

# 执行代码
var s: semaphore;
s.value = 1
Begin
	Repeat
		wait(s) // 调用wait()函数
		 pA();
		 signal(s);
		 pB();
	Until false;
End
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值