5.为什么要引进线程的概念?比较线程和进程之间有什么异同和联系。
目的:为了既能提高程序的并发程度,又能减少OS的开销,操作系统设计者引入了线程 进程和线程的区别与联系:
调度:进程是资源拥有的基本单位,线程是分派和调度资源的基本单位 拥有资源 :进程拥有资源,线程不拥有资源 并发性 :进程和线程都拥有并发性
系统开销:进程的系统开销远大于线程的系统开销
第三章 并发控制——进程的同步与互斥
1.什么叫进程同步?什么叫进程互斥?通过前趋图进一步感受进程的同步。 所谓进程同步,是指多个相互合作的进程,在一些关键点上可能需要互相等待或互相交换信息,这种相互制约的关系称为进程同步。
所谓进程互斥是指当有若干进程都要使用某一共享资源时,最多允许一个进程使用,而其他要使用该资源的进程必须等待,直到占用该资源的进程释放了该资源为止。
2.什么叫临界资源?什么叫临界区?
把在一段时间内只允许一个进程访问的资源称为临界资源或独占资源。 OS中把每个进程在键盘么个访问临界资源的那段代码称为临界区
3.什么叫信号量?它是一种解决什么问题的机制?信号量的值可以人为设定几次?它的值是由哪些操作改变的?
信号量是一个确定的两元组(S,Q),其中S是一个具有非负初值的整型变量,Q是一个初始状态为空的队列
信号量是一种有效的用来解决进程同步与互斥问题的机制 一次
信号量的值仅能由P操作(又叫Wait操作)和V操作(又称Signal操作)来改变。 4.体会、理解信号量以及P、V(Wait、Signal)操作的意义。
P操作: P操作记为P(S),其中S为一个信号量,它执行时主要完成下述动作:
S=S-1; 若S>=0则进程继续运行;否则(即S<0)阻塞该进程,并将它插入该信号量的等待队列中。
V操作:V操作记为V(S),S为一个信号量,它执行时主要完成下述动作:
S=S+1; 若S大于0则进程继续执行;否则(即S<=0)则从信号量等待队列中移出第一个进程,使其变为就绪状态并插入就绪队列,然后再返回原进程继续执行。
5.为什么要引入管程?管程由哪几个部分组成?
信号量机制对于每个要访问临界资源的进程都必须自备同步操作P(S)和V(S) 。这使得大量的同步操作分散在各个进程中。这不仅给系统管理带来麻烦,而且还会因为同步操作的使用不当造成系统死锁。于是在解决上述问题的基础上,产生了一种新的同步工具——管程 管程是一种软件模块,包括一个或多个过程、初始化语句和局部数据。
6.什么是进程的低级通信、高级通信?高级通信机制分为哪几大类?
进程之间的互斥与同步也是一种通信,由于其所交换的信息量少而被叫做“低级通信”。 高级进程通信,是指用户可直接利用操作系统所提供的一组通信命令,高效地传送大量数据的一种通信方式。
5
三大类:共享存储器系统;消息传递系统;管道通信系统
例题:
桌上有一空盘,允许存放一只水果。爸爸可向盘子中放苹果或桔子;儿子专等吃盘中的桔子,女儿专等吃盘中的苹果。规定当盘空时一次只能放一只水果供吃者取用。请用信号量机制中的Wait和Signal原语操作实现爸爸、儿子、女儿3个并发进程的同步。 答:
plate:=1; apple:=0; orange:=0; cobegin
father: begin repeat P(plate); 将水果放入盘中; V(plate); if 放入的是桔子 then V(orange) else V(apple)
untile false end
son: begin repeat P(orange); untile false
从盘中取出桔子; V(plate); 吃桔子
end
daughter: begin repeat P(apple); untile false
从盘中取出苹果; V(plate); 吃苹果
end coend
第四章 处理机调度与死锁
1.简述三级调度的概念。是否任何操作系统都必须配置作业调度?哪一级调度是所有操作系统必备的?
高级调度又称作业调度或长程调度,它的功能是按照某种原则从后备作业队列中选取若干作业进入主存
中级调度又称平衡负载调度或中程调度。引入中级调度的主要目的,是为了提高内存利用率和系统吞吐量。
低级调度也叫进程调度或短程调度,用来决定就绪队列中的哪个进程应获得处理机,然后再由分派程序执行具体的操作,把处理机分配给具体的进程。 不是任何操作系统都必须配置作业调度 低级调度是所有操作系统必备的
2.常见的作业调度算法有哪些?常见的进程调度有哪些?哪些调度是可剥夺的,哪些是不可
6
剥夺的?
1.先来先服务调度算法(FCFS);2.短作业优先调度算法(SJF);3.响应比高者优先(HRF)调度算法
常见的进程调度有:先来先服务、最高优先权优先、时间片轮转、多级反馈队列调度算法 先来先服务一定是非剥夺调度算法,时间片轮转、多级反馈队列调度算法一定是可剥夺调度算法
3. 给定一个作业序列,按先来先服务、短作业优先、响应比高者优先算法调度,分别计算该作业序列的平均周转时间和平均带权周转时间 周转时间:作业从提交到完成所经历的时间 作业i的周转时间为:Ti=Tei-Tsi
其中,Tei为作业i的完成时间,Tsi为提交时间 平均周转时间:多个作业周转时间的平均值 T=(T1+T2+……+Tn)/n
平均周转时间越短,作业吞吐率越大,系统效率越高
带权周转时间:作业周转时间与作业实际运行时间的比。作业i的带权周转时间为: Wi=Ti/Tri
其中Ti为作业i的周转时间,Tri为作业i的实际运行时间 平均带权周转时间:多个作业带权周转时间的平均值 W=(W1+W2+……+ Wn)/n
响应比Rp =1+等待时间/估计运行时间
4.什么是死锁?死锁产生的根本原因是什么?至少有几个进程并发才可能发生死锁? 所谓死锁是指多个进程在运行过程中因争夺资源而造成的一种僵局,当进程处于这种僵局的时候,若没有外力的干预,它们都将无法再向前推进。
根本原因:一是系统提供的资源有限,不能满足每个进程的需要;
二是多道程序运行时,进程推进顺序不合理
至少两个进程并发才可能发生死锁
5.总的来说,解决死锁问题有哪几个方面的策略? 解决死锁的基本方法有三种(注意填空):死锁的预防,死锁的避免,死锁的检测与恢复
6.预防死锁可从哪几个方面着手?常见的措施有哪些? 死锁的预防主要是打破造成死锁的4个必要条件之一: (1)破坏“互斥”条件。(该条无法做到)
(2)破坏“占用并等待”条件(可以采用静态分配策略。)
(3)破坏“不可剥夺”条件(方法:进程需要的资源不是一次性分配给它,而是在运行的过程中,它需要的时候才进行分配。)
(4)破坏“循环等待”条件(可采用按序分配资源策略)
7.银行家算法是解决死锁问题的一种什么策略?什么样的状态为安全状态?什么样的为不安全状态?会根据具体问题用银行家算法判断系统是否安全。 避免死锁的算法 若在某一时刻,系统能按某种顺序如
7
全序列。若某一时刻系统中不存在这样一个安全序列,则称此时的系统状态为不安全状态
8.什么是死锁定理?死锁定理有什么用?
系统为死锁状态的充分条件是:当且仅当该系统状态的资源分配图是不可完全简化的。 该充分条件被称为死锁定理。
作用:检测系统是否已进入死锁状态
例题:某多道程序设计系统配有一台处理机和两台外设IO1、IO2,现有3个优先级由高到低的作业J1、J2、J3都已装入内存,它们使用资源的顺序和占用时间分别是: J1:IO2(30ms)、CPU(10ms)、IO1(30ms)、CPU(10ms) J2:IO1(20ms)、CPU(20ms)、IO2(40ms) J3:CPU(30ms)、IO1(20ms)
处理器调度采用可抢占的优先数算法,忽略其它辅助操作时间,回答下列问题: ①别计算作业J1、J2、J3从开始到完成所用的时间。(要求画出资源调度时序图) ②个作业全部完成时CPU的利用率。
③3个作业全部完成时外设IO1的利用率。 答:(1)资源调度时序图略。
J1:80ms J2:90ms J3:90ms
(2)CPU利用率=(90-20)/90=77.78% (3)IO1利用率=(90-20)/90=77.78% 资源调度时序图略。
例题:假如有四道作业,他们的提交时间及运行时间由下表给出:
采用单道运行,试问用短作业优先调度算法: (1) 计算平均周转时间。 (2) 写出作业调度顺序。
第五章 存储器管理
1.内存管理的任务是什么?操作系统的内存管理应具备哪些功能? 存储管理的目的主要有两个:
一是提高资源的利用率,尽量满足多个用户对主存的要求; 二是能方便用户使用主存储器,使用户不必考虑作业存放在哪块区域,如何实现正确运行等问题 。
存储管理一般应能完成如下功能:
(1)按作业要求进行内存的分配并进行实时回收;
8

