操作系统习题复习

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2011年11月5日 操作系统
www.tsinghang.com
清航考研 你成功的基石!
试题冲刺班
P原语:申请一个资源
P( semaphore S)
{
--S.count;
//表示申请一个资源;
if (S.count < 0) //表示没有空闲资源;
{
该进程进入等待队列S.queue末尾;
阻塞该进程;
到达,所以无须考虑它们的到达时间。另外,在使 用FCFS算法时,假定各个进程的调度顺序为P1、 P2、P3和P4;在使用RR算法时,假定时间片的长 度为20毫秒。
清航考研
2011年11月5日 操作系统
www.tsinghang.com
清航考研 你成功的基石!
试题冲刺班
• FCFS算法
✓ 调度顺序:P1、P2、P3、P4 ✓ 周转时间:P1:52,P2:68,P3:
非临界区 P(mutex); 临界区 V(mutex); 非临界区
P1
清航考研
非临界区 P(mutex); 临界区 V(mutex); 非临界区
P2
2011年11月5日 操作系统
非临界区 P(mutex); 临界区 V(mutex); 非临界区
P3
www.tsinghang.com
清航考研 你成功的基石!
www.tsinghang.com
清航考研 你成功的基石!
试题冲刺班
• 可抢占的SJF算法
✓ 调度顺序:P1、P3、P4、P3、P1、 P5、P2
✓ 周转时间:P1:25,P2:41,P3: 11,P4:4,P5:13
✓ 平均周转时间:18.8
清航考研
2011年11月5日 操作系统
www.tsinghang.com
清航考研 你成功的基石!
1.2 进程互斥
试题冲刺班
竞争状态(race condition):
两个或多个进程对同一共享数据同时进行读写 操作,而最后的结果是不可预测的,它取决于 各个进程具体运行情况。
解决之道:
在同一时刻,只允许一个进程访问该共享数据, 即如果当前已有一个进程正在使用该数据,那么
其他进程暂时不能访问。这就是互斥的概念。
请问,(1)以上的这种机制能够实现资源互斥访问吗? 为什么?(2)如果把Enter_Critical_Section() 函数中的两条语句互换一下位置,结果会如何?
清航考研
2011年11月5日 操作系统
www.tsinghang.com
清航考研 你成功的基石!
试题冲刺班
• 该机制不能实现资源的互斥访问
试题冲刺班
如何实现A先执行,然后B执行?
信号量S初始值为??
…. A(先);
….
…. B(后);
….
进程P1
进程P2
S初始值为0
A; V(S);
进程P1
配对 P(S); 先后 B;
进程P2
清航考研
2011年11月5日 操作系统
www.tsinghang.com
清航考研 你成功的基石!
试题冲刺班
S初始值为1
清航考研 你成功的基石!
试题冲刺班
• 可能会出现死锁
✓ 初始化时,flag数组的元素值为FALSE
✓ 线程0先执行,flag[0]=TRUE,假设这 个时候来了一个时钟中断;
✓ 线程1去执行,flag[1]=TRUE,在执行 while循环语句时被卡住;
✓ 线程0再执行时,也在while循环语句的 地方被卡住。
2011年11月5日 操作系统
www.tsinghang.com
清航考研 你成功的基石!
试题冲刺班
int flag[2]; /* flag数组,初始化为FALSE */ Enter_Critical_Section(int my_thread_id, int other_thread_id) {
while(flag[other_thread_id] == TRUE); // 空循环语句 flag[my_thread_id] = TRUE; } Exit_Critical_Section(int my_thread_id, int other_thread_id) { flag[my_thread_id] = FALSE; }
2011年11月5日 操作系统
www.tsinghang.com
清航考研 你成功的基石!
3. 写出程序描述
P1( ) //进程P1 {
试题冲刺班
main() {
//均初始化为0 semaphore S13, S23; cobegin
P1; P2;
… V(S13); }
P2( ) //进程P2 {
… V(S23); }
清航考研 你成功的基石!
试题冲刺班
“操作系统”习题复习
清航考研
2011年11月5日 操作系统
www.tsinghang.com
清航考研 你成功的基石!
Contents
1.进程管理 2.存储管理 3.I/O设备管理 4.文件系统
试题冲刺班
清航考研
2011年11月5日 操作系统
www.tsinghang.com
✓ 调度顺序:P1、P2、P3、P4、P1、 P3、P4、P1、P3、P3
✓ 周转时间:P1:136,P2:36,P3: 164,P4:124
✓ 平均周转时间:115
清航考研
2011年11月5日 操作系统
www.tsinghang.com
清航考研 你成功的基石!
试题冲刺班
例题2:
有一组进程在一个单CPU的系统上运行,这组 进程的到达时间和预计运行时间如下,
清航考研 你成功的基石!
试题冲刺班
• RR算法
✓ 调度顺序:P1、P2、P1、P3、P4、 P2、P1、P3、P5、P2、P1、P5
✓ 周转时间:P1:41,P2:36,P3: 26,P4:13,P5:25
✓ 平均周转时间:28.2
清航考研
2011年11月5日 操作系统
www.tsinghang.com
清航考研
2011年11月5日 操作系统
www.tsinghang.com
清航考研 你成功的基石!
试题冲刺班
while(计算未完成) {
得到一个计算结果; 将数据送到缓冲区; }
Compute
while(打印未完成) {
从缓冲区中取一数据; 打印该数据; }
Print
清航考研
2011年11月5日 操作系统
while(1) {
…. A; V(S); …. }
while(1) {
…. P(S); B; …. }
进程P1
进程P2
可能出现哪些序列?ຫໍສະໝຸດ Baidu
清航考研
2011年11月5日 操作系统
www.tsinghang.com
清航考研 你成功的基石!
试题冲刺班
【例题1】 合作进程的执行次序
用进程流图来描述各进程合作完成某一任务的次序 ,其规则如下:
{ 从等待队列S.queue中取出一个进程; 把该进程改为就绪状态,插入就绪队列
}
}
清航考研
2011年11月5日 操作系统
www.tsinghang.com
清航考研 你成功的基石!
试题冲刺班
利用信号量来实现进程互斥
int count; // 共享变量(临界资源)
semaphore mutex;// 互斥信号量,初始化为??
清航考研
2011年11月5日 操作系统
www.tsinghang.com
清航考研 你成功的基石!
试题冲刺班
基于繁忙等待的互斥
基于繁忙等待(busy waiting)的策略:当一个进程想 要进入它的临界区时,首先检查一下是否允许它进 入,若允许,就直接进入了;若不允许,就在那里 循环地等待,一直等到允许它进入。
当一个线程想要访问临界资源时,就调用上述的这两个函数。 比如说,线程0的代码可能是这样的:
清航考研
2011年11月5日 操作系统
www.tsinghang.com
清航考研 你成功的基石!
试题冲刺班
Enter_Critical_Section(0, 1); .... 使用这个资源 ..... Exit_Critical_Section(0, 1); ..... 做其他的事情 .....
✓ 初始化时,flag数组的元素值为FALSE
✓ 线程0先执行,在执行while循环语句时, 顺利结束。假设此时来了一个时钟中断;
✓ 线程1去执行,在执行while循环语句的 时候,顺利结束,进入临界区;
✓ 当线程0再执行时,也进入了临界区。
清航考研
2011年11月5日 操作系统
www.tsinghang.com
清航考研
2011年11月5日 操作系统
www.tsinghang.com
清航考研 你成功的基石!
试题冲刺班
• 不可抢占的SJF算法
✓ 调度顺序:P1、P4、P3、P5、P2 ✓ 周转时间:P1:14,P2:41,P3:
20,P4:11,P5:13 ✓ 平均周转时间:19.8
清航考研
2011年11月5日 操作系统
136,P4:164 ✓ 平均周转时间:105
• SJF算法
✓ 调度顺序:P2、P4、P1、P3 ✓ 周转时间:P1:96,P2:16,P3:
164,P4:44 ✓ 平均周转时间:80
清航考研
2011年11月5日 操作系统
www.tsinghang.com
清航考研 你成功的基石!
试题冲刺班
• RR算法
调用进程调度器;// OSSched( )
}
}
清航考研
2011年11月5日 操作系统
www.tsinghang.com
清航考研 你成功的基石!
试题冲刺班
V原语:释放一个资源
V( semaphore S)
{
++S.count;
//表示释放一个资源;
if (S.count <= 0) //表示有进程被阻塞;
清航考研
2011年11月5日 操作系统
www.tsinghang.com
清航考研 你成功的基石!
试题冲刺班
例题1:
假设有两个线程(编号为0和1)需要去 访问同一个共享资源,为了避免竞争状态的 问题,我们必须实现一种互斥机制,使得在 任何时候只能有一个线程在访问这个资源。 假设有如下的一段代码:
清航考研
www.tsinghang.com
清航考研 你成功的基石!
试题冲刺班
Compute
“ABCD …”
buffer
Print
正确:CPCP 错误:CCPP 错误:CPPC
清航考研
2011年11月5日 操作系统
P3; coend }
P3( ) //进程P3 {
P(S13);
P(S23);

清航考研
}
2011年11月5日 操作系统
www.tsinghang.com
清航考研 你成功的基石!
试题冲刺班
【例题2】共享缓冲区的合作进程的同步
设有一个缓冲区buffer,大小为一个字节。Compute 进程不断产生字符,送buffer,Print进程从buffer中 取出字符打印。如不加控制,会出现多种打印结果, 这取决于这两个进程运行的相对速度。在这众多的 打印结果中,只有Compute和Print进程的运行刚好 匹配的一种是正确的,其它均为错误。
进程 P1 P2 P3 P4 P5
到达时间 0 3 5 7 19
预计运行时间 14 12 7 4 7
清航考研
2011年11月5日 操作系统
www.tsinghang.com
清航考研 你成功的基石!
试题冲刺班
如果分别采用不可抢占的SJF算法、可 抢占的SJF算法和RR算法来进行调度,请计 算各个进程的执行顺序、周转时间以及它们 的平均周转时间。在使用RR算法时,假定时 间片的长度为4。
清航考研 你成功的基石!
一. 进程管理
可能出的题目类型
• 调度算法 • 进程互斥 • 信号量与P、V操作 • 死锁 • 其他
试题冲刺班
清航考研
2011年11月5日 操作系统
www.tsinghang.com
清航考研 你成功的基石!
试题冲刺班
1.1 调度算法
例题1:
有四个进程P1、P2、P3和P4到达了系统,它 们所需要的运行时间分别为52毫秒、16毫秒、68毫 秒和28毫秒。如果分别采用FCFS算法、SJF算法和 RR算法来进行调度,请计算各个进程的周转时间以 及它们的平均周转时间。假定这四个进程几乎同时
清航考研
2011年11月5日 操作系统
www.tsinghang.com
清航考研 你成功的基石!
试题冲刺班
1.3 信号量与PV操作
信号量结构体类型的定义
typedef struct
{
int count;
// 计数变量
struct PCB *queue; // 进程等待队列
} semaphore;
清航考研
清航考研
2011年11月5日 操作系统
www.tsinghang.com
清航考研 你成功的基石!
试题冲刺班
清航考研
用信号量及P、V操作来描述左图 1、说明进程的同步关系
进程P1、P2可并行执行,P3的执 行必须等待P1、P2都完成后才能 开始执行。 几个同步关系?
2、设置信号量,说明含义、初值。 S13=0 表示进程P1尚未执行完成; S23=0 表示进程P2尚未执行完成;
相关文档
最新文档