1.什么是前趋图?为什么要引入前趋图?
前趋图(Precedence Graph)是一个有向无循环图,记为DAG(DirectedAcyclic Graph)
用于描述进程之间执行的前后关系
2.画出下面四条语句的前趋图
S1 = a: = x + y; S2 = b: = z + 1; S3 = c: = a - b; S4 = w: = c + 1;
3.什么程序并发执行会产生间断性特征?
程序在并发执行时:由于它们共享系统资源,
为完成同一项任务需要相互合作,致使这些并发执行的进程之间,形成了相互制约关系,
从而使得进程在执行期间出现间断性。
4.程序并发执行时为什么会失去封闭性和可再现性?
程序并发执行时:多个程序共享系统中的各种资源,
因而这些资源的状态由多个程序改变,
致使程序运行失去了封闭性,也会导致其失去可再现性。
5.在操作系统中为什么要引入进程概念?它会产生什么样的影响?
为了使程序在多道程序环境下能并发执行,并对并发执行的程序加以控制和描述,在操作系统中引入了进程概念。
影响:
使程序的并发执行得以更好运行。
6.试从动态性,并发性和独立性上比较进程和程序?
- 动态性:
是进程最基本的特性,表现为由创建而产生,由调度而执行,因得不到资源而暂停执行,由撤销而消亡。进程有一定的生命期,而程序只是一组有序的指令集合,是静态实体。 - 并发性:
是进程的重要特征,同时也是OS的重要特征。引入进程的目的正是为了使其程序能和其它进程的程序并发执行,而程序是不能并发执行的。 - 独立性:
是指进程实体是一个能独立运行的基本单位,也是系统中独立获得资源和独立调度的基本单位。对于未建立任何进程的程序,不能作为独立单位参加运行。
7.试说明PCB的作用,为什么说PCB是进程存在的唯一标志?
PCB是进程实体的一部分,是操作系统中最重要的记录型数据结构。
作用是:
使一个在多道程序环境下不能独立运行的程序,成为一个能独立运行的基本单位,成为能与其它进程并发执行的进程。
OS是根据PCB对并发执行的进程进行控制和管理的。
8.试说明进程在三个基本状态之间转换的典型原因。
- 就绪状态一执行状态:进程被调度
- 执行状态一就绪状态:时间片用完或者处理机被抢占
- 执行状态→阻塞状态:系统调用
- 阻塞状态一就绪状态:申请的资源被分配
9.为什么要引入挂起状态?该状态有哪些性质?
引入挂起状态处于五种不同的需要:
- 终端用户需要
- 父进程需要
- 操作系统需要
- 对换需要
- 负荷调节需要。
处于挂起状态的进程不能接收处理机调度。
10.在进行进程切换时,所要保存的处理机状态信息有哪些?
进行进程切换时,所要保存的处理机状态信有:
- 进程当前暂存信息
- 下一指令地址信息
- 进程状态信息
- 过程和系统调用参数及调用地址信息
11.试说明引起进程创建的主要事件,
引起进程创建的主要事件有:
- 用户登录
- 作业调度
- 提供服务
- 应用请求
12.试说明引起进程被撤销的主要事件。
引起进程被撤销的主要事件有:
- 正常结束
- 异常结束(越界错误、保护错、非法指令、特权指令错、运行超时、等待超时、算术运算错、I/O故障)
- 外界干预(操作员或操作系统干预、父进程请求、父进程终止)。
13.在创建一个进程时所要完成的主要工作什么?
- OS发现请求创建新进程事件后,调用进程创建原语
Creat();
- 申请空白PCB
- 为新进程分配资源
- 初始化进程控制块
- 将新进程插入就绪队列
14.在撤销一个进程时所要完成的主要工作是什么?
- 根据被终止进程标识符,从PCB集中检索出进程PCB,读出该进程状态
- 若被终止进程处于执行状态,立即终止该进程的执行,置调度标志真,指示该进程被终止后重新调度。
- 若该进程还有子进程,应将所有子孙进程终止,以防它们成为不可控进程
- 将被终止进程拥有的全部资源,归还给父进程,或归还给系统
- 将被终止进程PCB从所在队列或列表中移出,等待其它程序搜集信息
15.试说明引起进程阻塞或被唤醒的主要事件是什么?
- 请求系统服
- 启动某种操作
- 新数据尚未到达
- 无新工作可做
16.进程在运行时存在哪两种形式的制约?并举例说明之。
- 间接相互制约关系
举例:有两进程A和B,如果A提出打印请求,系统已把唯一的一台打印机分配给了进程B,则进程A只能阻塞;一旦B释放打印机,A才由阻塞改为就绪。 - 直接相互制约关系
举例:有输入进程A通过单缓冲向进程B提供数据。当缓冲空时,计算进程因不能获得所需数据而阻塞,当进程A把数据输入缓冲区后,便唤醒进程B;反之,当缓冲区已满时,进程A因没有缓冲区放数据而阻塞,进程B将缓冲区数据取走后便唤醒A
17.为什么进程在进入临界区之前应先执行“进入区”代码?而在退出前又要执行“退出区”代码?
为了实现多个进程对临界资源的互斥访问,必须在临界区前面增加一段用于检查欲访问的临界资源是否正被访问的代码,
如果未被访问,该进程便可进入临界区对资源进行访问,并设置正被访问标志,
如果正被访问,则本进程不能进入临界区,
实现这一功能的代码为”进入区"代码;
在退出临界区后,必须执行"退出区"代码,用于恢复未被访问标志,使其它进程能再访问此临界资源
18.同步机构应遵循哪些基本准则?为什么?
同步机构应遵循的基本准则是:
- 空闲让进
- 忙则等待
- 有限等待
- 让权等待
原因:为实现各个进程互斥进入临界区。
19.试从物理概念上说明记录型信号量 wait 和 signal.
- wait(S):
当S.value>0时,表示目前系统中这类资源还有可用的。
执行一次wait操作,意味着进程请求一个单位的该类资源,使系统中可供分配的该类资源减少一个,因此描述为 S.value = S.value-1;
当 S.value<0 时,表示该类资源已分配完毕,
进程应调用block原语自我阻塞,放弃处理机,并插入到信号量链表 S.L中。 - signal(S):
执行一次signal操作,意味着释放一个单位的可用资源,使系统中可供分配的该类资源数增加一个,故执行 S.value = S.value+1 操作。
若加1后S.value <= 0,则表示在该信号量链表中,仍有等待该资源的进程被阻塞,因此应调用 wakeup原语,将S.L链表中的第一个等待进程唤醒。
20.你认为整型信号量机制是否完全遵循了同步机构的四条准则?
整型信号量机制不完全遵循同步机制的四条准则,
它不满足“让权等待"准则
21.如何利用信号量机制来实现多个进程对临界资源的互斥访问?并举例说明之
为使多个进程互斥访问某临界资源,
只需为该资源设置一互斥信号量mutex,并设其初值为 1,然后将各进程访问该资源的临界区CS置于 wait(mutex)和signal(mutex)操作之间即可。
- 每个欲访问该临界资源的进程在进入临界区之前,都要先对mutex执行wait操作,
若该资源此刻未被访问,本次wait操作必然成功,进程便可进入自己的临界区,
这时若再有其他进程也欲进入自己的临界区,此时由于对mutex执行wait操作定会失败,因而该进程阻塞,从而保证了该临界资源能被互斥访问。 - 当访问临界资源的进程退出临界区后,应对mutex执行signal操作,释放该临界资源。
利用信号量实现进程互斥的进程描述如下:
Var mutex semaphore = 1;
beginparbeginprocess 1:begin repeatwait (mutex);critical sectionsignal (mutex);remaindersection untilfalse:
endprocess 2:begin repeatwait (mutex);critical sectionsignal (mutex);remaindersection untilfalse
endparend
22.说明管程由哪几部分组成,为什么要引入条件变量?
管程由四部分组成:
- 管程的名称
- 局部于管程内部的共享数据结构说明
- 对该数据结构进行操作的一组过程
- 对局部于管程内部的共享数据设置初始值的语句
当一个进程调用了管程,在管程中时被阻塞或挂起,直到阻塞或挂起的原因解除,
而在此期间,如果该进程不释放管程,则其它进程无法进入管程,被迫长时间地等待。
为了解决这个问题,引入了条件变量 condition。
23.试比较进程间的低级与高级通信工具。
用户用低级通信工具实现进程通信很不方便,效率低,通信对用户不透明,所有操作都必须由程序员来实现,
而高级通信工具弥补了这些缺陷,用户直接利用操作系统提供的一组通信命令,高效地传送大量的数据。
24.当前有哪几种高级通信机制?
- 共享存储
- 消息传递
- 管道通信
25.消息队列通信机制有哪几方面的功能?
- 构成消息
- 发送消息
- 接收消息
- 互斥与同步
26.为什么要在OS中引入线程?
在操作系统中引入线程,则是
- 为了减少程序在并发执行时所付出的时空开销
- 使OS具有更好的并发性,
- 提高CPU 的利用率。
进程是分配资源的基本单位,而线程购是系统调度的基本单位。
27.试说明线程具有哪些属性?
- 轻型实体
- 独立调度和分派的基本单位
- 可并发执行
- 共享进程资源
28.试从调度性,并发性,拥有资源及系统开销方面对进程和线程进行比较
- 调度性
线程在OS中作为调度和分派的基本单位,进程只作为资源拥有的基本单位。 - 并发性
进程可以并发执行,一个进程的多个线程也可并发执行。 - 拥有资源
进程始终是拥有资源的基本单位,线程只拥有运行时必不可少的资源,本身基本不拥有系统资源,但可以访问隶属进程的资源。 - 系统开销
操作系统在创建、撤消和切换进程时付出的开销显著大于线程
29.为了在多线程OS中实现进程之间的同步与通信,通常提供了哪几种同步机制?
同步功能可以控制程序流并访问共享数据,从而并发执行多个线程。
共有四种同步模型:
- 互斥锁
- 读写锁
- 条件变量
- 信号
30.用于实现线程同步的私用信号量和公用信号量之间有何差别?
- 私用信号量
当某线程需利用信号量实现同一进程中各线程之间的同步时可调用创建信号量的命令来创建一个私用信号量,其数据结构存放在应用程序的地址空间中。 - 公用信号量
公用信号量是为实现不同进程间或不同进程中各线程之间的同步而设置的。其数据结构是存放在受保护的系统存储区中,由OS为它分配空间并进行管理。
31.何谓用户级线程和内核支持线程?
- 用户级线程:
仅存在于用户空间中的线程,无须内核支持。
这种线程的创建、撤销、线程间的同步与通信等功能,都无需利用系统调用实现。
用户级线程的切换通常发生在一个应用进程的诸多线程之间,同样无需内核支持 - 内核支持线程:
在内核支持下运行的线程。
无论是用户进程中的线程,还是系统线程中的线程,其创建、撤销和切换等都是依靠内核,在内核空间中实现的。
在内核空间里还为每个内核支持线程设置了线程控制块,内核根据该控制块感知某线程的存在并实施控制。
32.试说明用户级线程的实现方法
用户级线程是在用户空间中的实现的,运行在“运行时系统”与”内核控制线程”的中间系统上。
运行时系统用于管理和控制线程的函数的集合。
内核控制线程或轻型进程LWP可通过系统调用获得内核提供服务,利用LWP进程作为中间系统。
33.试说明内核支持线程的实现方法
系统在创建新进程时,分配一个任务数据区PTDA,其中包括若干个线程控制块TCB空间。
创建一个线程分配一个TCB,有关信息写入TCB,为之分配必要的资源。
当PTDA中的TCB用完,而进程又有新线程时,只要所创建的线程数目未超过系统允许值,系统可在为之分配新的TCB
在撤销一个线程时,也应回收线程的所有资源和TCB。