目录

计算机操作系统慕课版第二章课后习题及参考答案

目录

计算机操作系统慕课版第二章课后习题及参考答案

第二章:

一、简答题:

1.什么是前趋图?请画出下列4条语句的前趋图。

前趋图:有向无环图,描述进程之间执行的先后顺序

https://i-blog.csdnimg.cn/blog_migrate/da183aae9f20cceebdd58322fe7fe452.jpeg

2.什么是进程?OS中为什么要引入进程?它会产生什么样的影响?

进程是程序的执行过程,是系统进行资源分配和调度的一个独立单位

3.进程最基本的状态有哪些?那些事件可能会引起不同状态间的转换?

就绪、执行、阻塞

处于就绪状态的进程,在调度程序为之分配处理机之后便可执行,相应的便可以从就绪状态转换为执行状态

处于执行状态的进程,如果因分配给其的时间片已完而被剥夺处理机执行程序时,其状态便会由执行状态转换为就绪状态

如果因发生某事件而致使当前进程的执行受阻(例如进程访问某临界资源而该资源又正在被其他进程访问),使之无法继续执行,则该进程将由执行状态变为阻塞

具体如图所示

4.为什么要引入进程的挂起状态?

在许多操作系统中,为了满足系统和用户观察与分析进程的需要,除了就绪、执行和阻塞3种基本的状态外,故而引入挂起

5

.叙述组成进程的基本要素?

控制块 程序块  数据块  和堆栈

请给出PCB的主要内容。描述当进程状态发生转换(就绪->运行、运行->阻塞)时,OS需要使用/修改PCB的哪些内容?

PCB主要包含 进程标识符,处理机状态,进程调度信息,进程控制信息4个方面的信息

https://i-blog.csdnimg.cn/blog_migrate/df055b8c51647a9028e74e0f203d67d5.jpeg

7.试说明引起进程创建的主要事件?

用户登录:在分时系统中,用户在终端键入登录命令后,若登录成功,则系统将会为该用户创建一个进程,并把它插入就绪队列中

作业调度:在多道批处理系统中,当作业调度程序按一定的算法调度到某个(或某些)作业时,便会将其装入内存,为其创建进程,并将其插入就绪队列中

提供服务:当运行中的用户陈鼓型提出某种请求后,系统将专门创建一个进程为其用户提供其所需要的服务,例如,用户进程要求打印文件,系统将为其创建一个打印进程,这样,不仅可使打印进程与该用户进程并发执行,还便于计算出完成打印任务所需花费的时间

应用请求:只针对“应用请求”该事件,则需要用户自己创建新进程,以使新进程以同创建进程并发执行的方式完成特定任务。例如:用户需要不断的地先从键盘终端读入数据,在对读入的数据进行相应的处理,最后将处理结果以表格的形式显示在屏幕上。该用户进程为使这几个操作能并发执行以加速完成任务,可以分别建立键盘输入进程、数据处理进程以及表格输出进程

8.在创建一个进程时,OS需要完成的主要工作是什么?

申请空白PCB

为新进程分配其运行所需的资源,包含各种物理和逻辑资源

初始化PCB

如果进程就绪队列能够接纳新进程,就将新进程插入就绪队列

9.试说明引起进程终止的主要事件?

正常结束:任务已经完成,准备推出运行

异常结束:进程在运行时,发生了某种异常事件,使程序无法正常运行

外界干预:进程应外界的请求而终止运行

10.在终止一个进程时,OS要完成的主要工作是什么?

当系统中发生要求终止进程的相关事件后,OS会调用进程终止原语,并且根据如下步骤进行操作:1.根据进程的标识符,从PCB集合中检索出该进程的PCB,并从该进程的PCB读出该进程的状态 2.若被终止进程正在处于执行状态,则立即终止该进程的执行,并置调度标志为真,以指示该进程被终止后应重新进行调度  3.若该进程还有子孙进程,则还应该终止其子孙继承,以防止其成为不可控的进程   4.将被终止的进程所拥有的全部资源,或归还给其父进程,或归还给系统 5.将被终止进程的PCB从所在队列(或链表)中移出,等待其他程序来搜索信息

11.试说明引起进程阻塞或被唤醒的主要事件

向系统请求共享资源失败  等待某种操作的完成   新数据尚未到达   等待新任务的到达

12.试比较进程间的低级与高级通信工具

低级进程通信:1.效率低,生产者每次只能向缓冲区投放一个产品,消费者每次只能从缓冲区中取得一个消息   2.通信对用户不透明,对用户的使用不方便,OS只为进程之间的通信提供了共享存储器,关于进程之间通信所需要的共享数据结构的设置,数据的传送,进程的互斥与同步等都必须由程序员去实现

高级进程通信:使用方便,OS隐藏了实现进程通信的具体细节,向用户提供了一组高级通信指令(原语),用户可以方便地直接利用其来实现进程之间的通信,或者说进程通信对用户是透明的,这样就大大减少了通信程序编制上的复杂性  ;     高效地传送大量数据,用户可以直接利用高级通信命令(原语)来高效地传送大量数据

13.当前有哪几种高级通信机制?

共享存储器系统   管道通信提供    消息传递系统   客户机—服务器系统和

14.试说明使用管道文件(pipe文件)进行通信的优缺点

优点:管道是指用于连接一个读进程和一个写进程以实现它们之间的一个共享文件,向管道(即共享文件)提供输入的发送进程(即写进程),则会从管道中接收(读)数据, 由于这种的方式发送能够有效地传送大量数据,因而又被应用于许多其他OS中

缺点: 管道机制必须提供互斥  同步   即确定对方的存在  3方面的协调能力

15.试比较直接通信和间接通信方式

直接消息传递系统采用直接通信方式,即发送进程利用OS提供的发送命令(原语),直接发消息发送给目标进程。

信箱通信采用间接通信方式,即进程之间的通信需要通过某种中间实体(如共享数据结构等)实现。该实体建立在随机存储器的共享缓冲区上,用来暂存发送进程发送给目标进程的消息;接收进程可以从该实体中去除发进程发送给自己的消息,通常把这种中间实体称为信箱,每个信箱都有一个唯一的标识符。消息在邮箱中可以被安全保存,只允许核准的目标和用户对其进行随时读取,因此利用信箱通信方式既可实现实时通信,又可实现非实时通信。

16.为什么要在OS中引入线程?

由于引入进程的目的是使多个程序能够并发执行,以提高资源的利用率和系统吞吐量,因此需要引入线程来减少程序在并发执行时所付出的时空开销,以使OS具有更好的并发性。

17.试说明线程的属性

轻型实体   独立调度和分派的基本单位  可并发执行        共享进程资源

18.何谓用户级线程和内核支持线程、

用户级线程 :

在用户空间中实现的,对线程的创建撤销同步与通信等功能都无须内核支持,与内核无关。且内核不知道用户级线程的存在。

内核支持线程:

在内核的支持下运行,相关的创建、阻塞、撤销和切换都是在内核控件实现。并且内核空间会为每个内核支持线程设置一个TCB,内核根据TCB感知线程的存在并加以控制。

19.用户级线程和内核支持线程有何区别?

用户级进程:与内核无关,且内核不知道其的存在

内核支持线程:与内核相关,且根据内核空间的TCB感知线程并且控制

20.试说明用户线程和内核支持线程的实现方法

KST的实现:在仅设置KST的OS中,系统在创建一个新进程时,便为其分配一个任务数据区,其中包括若干个TCB空间,在每个TCB中的信息相同,但是都被保存在了内核空间中。每当需要创建一个进程时,便会为新线程分配一个TCB,同时将有关信息填入该TCB中,并为之分配必要的资源,如为线程分配数百至数千字节的栈空间和局部存储区,于是新创建的线程便有条件立即执行。当PTDA中的所有TCB空间已用完而进程又要创建新的线程时,只要其所创建的线程数目未超过系统的允许值(通常数十至数百个),系统即可再为之分配新的TCB空间;再撤销一个线程时,也应回收线程的所有资源和TCB。

ULT的实现:有两种方式实现的中间系统

运行时系统,ULT由运行时系统中的线程切换过程来执行切换任务,该过程将线程的CPU状态保存在该线程的堆栈中,然后按照一定的算法选择一个处于就绪状态的新线程运行,并将新线程堆栈中的CPU状态装入CPU相应的寄存器中,一旦将指针和程序计数器切换后,便开始了新的运行,且由于ULT的切换无须进入内核,且操作简单,切换速度因此非常快。

核心线程:每一个进程都可拥有多个LWP,同YULT一样,每个LWP都有自己的数据结构(如TCB),其中包括吸纳成标识符,优先级,CPU状态等信息,另外还有栈和局部存储区等等。LWP也可以共享进程所拥有的资源,LWP可以通过系统调用来获得内核提供的服务,当一个ULT运行,只须连接到一个LWP上,便能具有KST的属性

二、

1.试从调度、并发、拥有资源和系统开销这4个方面对传统进程和线进程进行比较。

传统进程线程
调度性拥有资源的基本单位和和独立调度,分派的基本单位都是进程把线程作为调度和分派的基本单位,把进程作为资源拥有的基本单位
并发性进程间可以并发执行不仅进程间可以并发执行,而且一个进程中的多个线程之间也可以并发执行
拥有资源进程始终是拥有资源的基本单位除了拥有一点运行时必不可少的资源外,本身不具备系统资源,但可以访问隶属进程的资源
系统开销创建或撤销时,系统要为之分配和回收资源,进程切换时所需要保存和设置的现场信息明显多于线程  ,操作系统在创建撤销和切换进程时所付出的开销将显著地大于线程创建或撤销时,系统 要为之分配和回收资源,

2.现代OS一般都提供多进程(或称多任务)运行环境,回答下列问题。

(1)为支持多进程的并发执行,系统必须建立哪些关于进程的数据结构?

系统必须建立进程控制块(PCB),进程队列,进程调度表,内存管理表,文件描述符表

(2)为支持多进程状态的变迁,系统至少应提供那些进程控制原语?

创建进程,   终止进程,    挂起进程,      恢复进程,   阻塞进程,    唤醒进程,       进程同步,   进程间通信

(3)在执行每一个进程控制原语时,进程状态会发生什么变化?相应的数据结构会发生什么变化?

进程状态变化:进程的状态可能会从运行态切换到阻塞态或者就绪态,或者从阻塞态或就绪态切换到运行态,取决于原语的操作

数据结构变化:进程控制原语可能会更改相关的数据结构,以反映进程的状态变化,例如:可能会更新进程控制块PCB,就绪队列,阻塞队列等