Modern Operating System 第二章 笔记与解析

第一部分 课程笔记

1.peterson算法

int turn;

int like[2];

void process(int uid){
    turn=uid;
    like[uid]=true;
    while(turn==uid&&like[1-uid]==true);
    like[uid]=false;
}

2.生产消费者问题

3.读写者问题

4.哲学家就餐问题

第二部分 试题解析

16.在讨论线程中的全局变量时,曾使用过程create_global将存储分配给指向
变量的指针,而不是变量自身。这是必需的,还是由于该过程也需要使用这些
值?
17.考虑线程全部在用户空间实现的一个系统,其中运行时系统每秒钟得到一
个时钟中断。假设在该运行时系统中,当某个线程正在执行时发生一个时钟中
断,此时会出现什么问题?你有什么解决该问题的建议吗?
18.假设一个操作系统中不存在类似于select的系统调用来提前了解在从文
件、管道或设备中读取时是否安全,不过该操作系统确实允许设置报警时钟,以
便中断阻塞的系统调用。在上述条件下,是否有可能在用户空间中实现一个线程
包?请加以讨论。
19.2.3.4节中所讨论的优先级反转问题是否可能在用户级线程中发生?为什
么?
20.2.3.4节中,描述了一种有高优先级进程H和低优先级进程L的情况,导
致了H陷入死循环。若采用轮转调度算法而不是优先级调度算法,还会发生同样
问题吗?请给予讨论。
21.在使用线程的系统中,若使用用户级线程,是每个线程一个堆栈还是每个
进程一个堆栈?如果使用内核级线程情况又如何呢?请给予解释。
22.在开发计算机时,通常首先用一个程序模拟,一次运行一条指令,甚至多
处理器也严格按此模拟。在类似于这种没有同时事件发生的情形下,会出现竞争
条件吗?
25.给出一个可以屏蔽中断的操作系统如何实现信号量的框架。
26.请说明计数信号量(即可以保持一个任意值的信号量)如何仅通过二元信
号量和普通机器指令实现。
27.如果一个系统只有两个进程,可以使用一个屏障来同步这两个进程吗?为
什么?
28.如果线程在内核中实现,可以使用内核信号量对同一个进程中的两个线程
进行同步吗?如果线程在用户空间实现呢?假设在其他进程中没有线程必须访问
该信号量。请讨论你的答案。
31.假设有一个使用信箱的消息传递系统,当向满信箱发消息或从空信箱收消
息时,进程都不会阻塞,相反,会得到一个错误代码。进程响应错误代码的处理
方式为一遍一遍地重试,直到成功为止。这种方式会导致竞争条件吗?
32.CDC 6600计算机使用一种称作处理器共享的有趣的轮转调度算法,它可以同时处理多达10I/O进程。每条指令结束后都进行进程切换,这样进程1执行
指令1,进程2执行指令2,以此类推。进程切换由特殊硬件完成,所以没有开
销。如果在没有竞争的条件下一个进程需要T秒钟完成,那么当有n个进程共享处
理器时完成一个进程需要多长时间?
33.是否可以通过分析源代码来确定进程是CPU密集型的还是I/O密集型的?
如何能在运行时刻进行此项决定?
34.何时调度一节中曾提到,有时一个重要进程可以在选择下一个被阻塞
进程进入运行的过程中发挥作用,从而改善调度性能。请给出可以这样做的情形
并解释如何做。
35.对某系统进行监测后表明,当阻塞在I/O之前时,平均每个进程运行时间
T。一次进程切换需要的时间为S,这里S实际上就是开销。对于采用时间片长
度为Q的轮转调度,请给出以下各种情况中CPU利用率的计算公式:
a)Q=∞
b)QT
c)SQT
d)Q=S
e)Q趋近于0
36.5个待运行作业,估计它们的运行时间分别是9635X。采用哪
种次序运行这些作业将得到最短的平均响应时间?(答案将依赖于X。)
37.5个批处理作业AE,它们几乎同时到达一个计算中心。估计它们的运行时间分别为106248分钟。其优先级(由外部设定)分别为3521
4,其中5为最高优先级。对于下列每种调度算法,计算其平均进程周转时间,
可忽略进程切换的开销。
a)轮转法。
b)优先级调度。
c)先来先服务(按照106248次序运行)。
d)最短作业优先。
a),假设系统具有多道程序处理能力,每个作业均公平共享CPU时间,对
b)d),假设任一时刻只有一个作业运行,直到结束。所有的作业都完全是CPU
密集型作业。
38.运行在CTSS上的一个进程需要30个时间片完成。该进程必须被调入多少
次,包括第一次(在该进程运行之前)?
39.能找到一个使CTSS优先级系统不受随机回车链愚弄的方法吗?
40.a=1/2的老化算法用来预测运行时间。先前的四次运行,从最老的一个到
最近的一个,其运行时间分别是40ms20ms40ms15ms。下一次的预测时间
是多少?
41.一个软实时系统有4个周期时间,其周期分别为50ms100ms200ms
250ms。假设这4个事件分别需要35ms20ms10msx msCPU时间。保持系
统可调度的最大x值是多少?
42.请解释为什么两级调度比较常用。43.一个实时系统需要处理两个语音通信,每个运行5ms,然后每次突发消耗
1ms CPU时间,加上25/秒的一个视频,每一帧需要20msCPU时间。这个系统
是可调度的吗?
44.考虑一个系统,在这个系统中为了内核线程调度希望将策略和机制分离。
请提出一个实现此目标的手段。
45.在哲学家就餐问题的解法(图2-46)中,为什么在过程take_forks中将状态
变量置为HUNGRY
46.考虑图2-46中的过程put_forks,假设变量state[i]在对test的两次调用之后而
不是之前被置为THINKING。这个改动会对解法有什么影响?
47.按照哪一类进程何时开始,读者-写者问题可以有若干种方式求解。请详
细描述该问题的三种变体,每一种变体偏好(或不偏好)某一类进程。对每种变
体,请指出当一个读者或写者访问数据库时会发生什么,以及当一个进程结束对
数据库的访问后又会发生什么?
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值