操作系统之课后习题 —— 进程的描述与控制

(一)简答题

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

S1:a=x+y; S2:b=z+1; S3:c=a – b;S4:w=c+1;

答:前趋图(Precedence Graph)是一个有向无循环图,记为DAG(DirectedAcyclicGraph),用于描述进程之间执行的前后关系。前驱图如下:操作系统之课后习题 —— 进程的描述与控制_第1张图片

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

答:

        进程是一个可并发执行的具有独立功能的程序关于某个数据集合的依次执行过程,也是操作系统进行资源分配和保护的基本单位。

        在操作系统中引入进程的概念,是为了实现多个程序的并发执行。传统的程序不能以其他程序并发执行,只有在为之创建进程后,才能与其他程序(进程)并发执行。这是因为并发执行的程序(即进程)是“走走停停”地执行,只有在为之创建进程后,在他停下来时,才能将其现场信息保存在他的pcb中,待下次被调度执行时,在从pcb中恢复cpu现场而继续执行,而传统的程序却无法满足上述要求。

        建立进程所带来的好处是使多个程序能并发执行,这极大地提高了资源利用率和系统吞吐量。但管理进程也需付出一定的代价,包括进程控制块及协调各运行的机构所占用的内存空间开销,以及为运行进程间的切换、同步及通信等所付出的时间开销。

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

答:

        进程最基本的状态(1)运行态:进程占用处理器运行的状态。(2)就绪态:进程具备运行条件,等待系统分配处理器以便其运行的状态。(3)等待态:又称阻塞态或睡眠态,是指进程不具备运行条件,正在等待某个事件完成的状态。

        引起进程状态转换的具体原因:(1)运行态——等待态:运行进程等待使用某种资源或某事件发生,如等待设备传输数据或人工干预。(2)等待态——就绪态:所需资源得到满足或某事件已经完成,如设备传输数据结束或人工干预完成。(3)运行态——就绪态:运行时间片到时或出现更高优先级的进程时当前进程被迫让出处理器。(4)就绪态——运行态:当CPU空闲时,调度程序选中一个就绪进程执行。

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

 答:

        

        进程的挂起状态是操作系统进程管理中的一个概念。通常,进程有多种状态,如就绪、运行、等待等。挂起状态是为了满足特定需求而引入的。具体原因如下:

        内存管理:当系统中的进程数量增多,且内存不足以满足所有进程的需求时,操作系统可能需要将一些进程从主存(RAM)移至辅助存储器(如硬盘)上。这种操作被称为交换(Swapping)或者换页(Paging)操作。被移到辅助存储器的进程进入挂起状态。

        用户请求:用户可能希望手动暂停某个进程的执行,而不是完全终止它。此时,进程会被挂起。

        系统故障:在某些情况下,如设备故障或其他原因,系统可能需要将进程挂起。

        资源不足:当一个进程需要多个资源并且因为某些资源的不足(可能是其他进程正在使用)而不能执行时,为了避免死锁,系统可以选择挂起该进程。

        进程优先级管理:系统可以基于优先级来决定哪些进程应该继续运行,哪些应该挂起。高优先级的进程可能导致低优先级的进程被挂起。

        手动干预和调试:开发人员在调试期间可能希望挂起某个进程,以便在特定的状态或条件下进行检查或修改。

        引入挂起状态有助于更加有效地管理系统资源,提高系统的响应能力和吞吐量,并为用户和系统管理员提供更多的控制和灵活性。

5.叙述组成进程的基本要素,并说明它们的作用。

答:

        每个进程有4个要素组成:控制块、程序块、数据块和堆栈。
(1)进程控制块 每一个进程都将捆绑一个进程控制块,用来存储进程的标志信息、现场信息和控制信息。进程创建时建立进程控制块,进程撤销时回收进程控制块,它与进程一一对应。
(2)进程程序块 即被执行的程序,规定了进程一次运行应完成的功能。通常它是纯代码,作为一种系统资源可被多个进程共享。
(3)进程数据块 即程序运行时加工处理对象,包括全局变量、局部变量和常量等的存放区以及开辟的工作区,常常为一个进程专用。
(4)系统/用户堆栈 每一个进程都将捆绑一个系统/用户堆栈,用来存储进程的标志信息、现场信息和控制信息。进程创建时建立进程控制块,进程撤销时回收进程控制块,它与进程一一对应。

6.请给出PCB的主要内容,描述当进程发生下面的状态转换时操作系统要使用/修改PCB中的哪些内容:就绪→运行,运行→阻塞。

答:

         PCB中的内容包括:标识进程运行状态的状态位、用户ID、Group ID、进程PID;调度参数(如优先级)、存储区位置和长度、页表指针、进程收到的signal、进程打开的文件列表、上下文相关信息(寄存器状态、栈状态)、系统调用返回值、中断相关参数等。
        发生就绪一运行和运行一阻塞状态转换时,系统要修改标识进程运行状态的状态位。

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

答:引起进程创建的主要事件有:用户登录、作业调度、提供服务、应用请求。

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

答: (1)OS 发现请求创建新进程事件后,调用进程创建原语Creat(); (2)申请空白PCB; (3)为新进程分配资源; (4)初始化进程控制块; (5)将新进程插入就绪队列.

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

 答:引起进程创建的主要事件有:
①用户登录。用户登录时验证是否为合法的用户。若合法,则为他创建一进程。
②作业调度。当作业调度程序调度到某作业,应为它创建一进程。
③提供服务。运行中的用户程序提出某种请求。如父进程创建子进程。
引起进程撤消的主要事件有:
①正常结束。当进程正常完成执行,应终止该进程,并将它删除。
②异常结束。当进程执行中遇到越界错误、保护错、特权指令错、非法指令错、算术运算错、I/O故障等应终止该进程,并将它删除。
③外界干预。操作员或操作系统干预。操作系统之课后习题 —— 进程的描述与控制_第2张图片

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

答:

(1)根据被终止进程标识符,从PCB 集中检索出进程PCB,读出该进程状态。

(2)若被终止进程处于执行状态,立即终止该进程的执行,置调度标志真,指示该进程被终止后重新调度。

(3)若该进程还有子进程,应将所有子孙进程终止,以防它们成为不可控进程。

(4)将被终止进程拥有的全部资源,归还给父进程,或归还给系统。

(5)将被终止进程PCB 从所在队列或列表中移出,等待其它程序搜集信息。


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

答:(1)请求系统服务。当正在执行得进程请求系统提供服务而系统无法满足其请求时,进程阻塞等待;由释放服务得进程唤醒阻塞进程。(2)启动某种操作。当进程启动某种I/O操作后阻塞以等待操作完成;由中断处理程序唤醒阻塞进程.(3)新数据尚未到达。相互合作得进程中,消费者进程阻塞等待数据到达;生产者进程在数据到达后唤醒阻塞进程.(4)无新工作可做.系统进程没有新工作可做时阻塞等待;当有进程发出请求时唤醒阻塞进程.操作系统之课后习题 —— 进程的描述与控制_第3张图片


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

答:用户用低级通信工具实现进程通信很不方便,效率低,通信对用户不透明,所有操作都必须由程序员来实现,而高级通信工具弥补了这些缺陷,用户直接利用操作系统提供的一组通信命令,高效地传送大量的数据。


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

答:有三种:共享存储器系统、消息传递系统、管道通信系统


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

管道通信作为进程间通信方式具有以下优缺点:

优点:
1.实现简单方便,不需要像消息队列、共享内存等进程通信方式那样对系统资源进行复杂管理。
2.可以保证数据的顺序传输,从而避免数据包乱序的问题。
3.可以有效地控制进程间数据流量,避免负载过多或过少的情况出现。
缺点:
1.只支持单向数据传输,双向通信需使用两条独立的管道。
2.只能用于父子进程或者兄弟进程之间进行通信,限制了其应用范围。
3.由于管道是基于内存机制实现的,所以传输的数据量有限,大型数据传输需采用其他通信方式。


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

答: 
(1)发送和接收原语。直接通信原语通常为send(receiver,message),receive (sender ,message ) ;间接通信原语通常为 send(mailbox,message)、receive(mailbox,message),而且它还需要提供有关信箱创建和撤消的原语。
(2)提供对方的标识符。直接通信要求发送双方显式地提供对方的标识符,对接收进程,如果允许它同时接收多个进程发来的消息,则接收原语中的发送进程标识符可以是通信完成后返回的值:间接通信则不要求它们显式地提供对方的标识符,而只需提供信箱标识。
(3)通信链路。直接通信时,进程只需提供对方的标识符便可进行通信,在收发双方之间建立通信链路由系统自动完成,并且在收发双方之间有且仅有一条通信链路;间接通信时,仅当一对进程共享某个信箱时,它们之间才有通信链路,每对进程间可以有多条链路。
(4)实时性。直接通信通常只能提供实时的通信:而间接通信则既可实现实时通信也可实现非实时通信。

        


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

答:在操作系统中引入线程,则是为了减少程序在并发执行时所付出的时空开销,使OS具有更好的并发性,提高CPU的利用率。进程是分配资源的基本单位,而线程则是系统调度的基本单位。


17.试说明线程的属性。

答:(1)调度切换:在引入线程的操作系统中,线程是调度和分配的基本单位,在同一进程中,线程切换不影响进程切换。

(2)地址空间资源:同一进程的各线程共享同一地址空间。

(3)并发性:同一进程的各个线程并发执行,因而系统具有更好的并发性。

(4)拥有资源:一个进程的所有资源可供进程的所有线程共享。

(5)系统开销:线程切换只需保存和设置少量寄存器,并不涉及存储管理的操作,系统开销小。


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

答:

(1)用户级线程:仅存在于用户空间中的线程,无须内核支持。这种线程的创建、撤销、线程间的同步与通信等功能,都无需利用系统调用实现。用户级线程的切换通常发生在一个应用进程的诸多线程之间,同样无需内核支持。

(2)内核支持线程:在内核支持下运行的线程。无论是用户进程中的线程,还是系统线程中的线程,其创建、撤销和切换等都是依靠内核,在内核空间中实现的。在内核空间里还为每个内核支持线程设置了线程控制块,内核根据该控制块感知某线程的存在并实施控制。


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

答:(1)内核支持线程是OS内核可感知的,而用户级线程是OS内核不可感知的 
(2)用户线程的创建、撤销和调度不需要OS内核的支持,是在语言(如Java)这一级处理的;而内核支持线程的创建、撤销和调度都需要OS内核提供支持,而与进程的创建、撤销和调度大体来说是相同的。
(3)用户级线程执行系统调用指令时将导致其所属进程被中断,而内核支持线程执行系统调用指令时,只导致该线程被中断。
(4)在只有用户线程的系统内,CPU调度还是以进程为单位,处于运行状态的进程中的多个线程,由用户程序控制线程的轮换运行;在有内核支持线程的系统内CPU调度则以线程为单位,由OS的线程调度程序负责线程的调度 
(5)用户级线程的程序实体是运行在用户态下的程序,而内核支持线程的程序实体则是可以运行在任何状态下的程序。

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

答:系统在创建新进程时, 分配一个任务数据区 PTDA ,其中包括若干个线程控制块TCB空间。创建一个线程分配一个TCB ,有关信息写入 TCB ,为之分配必要的资源。 当 PTDA中的 TCB 用完,而进程又有新线程时,只要所创建的线程数目未超过系统允许值,系统可在为之分配新的 TCB ;在撤销一个线程时,也应回收线程的所有资源和

(二)综合应用题


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

答:进程和线程之间在调度性、并发性、拥有资源、独立性、系统开销及对多处理机的支持方面的比较如下。
(1)调度性。在传统的操作系统中,拥有资源的基本单位、独立调度和分派的基本单位都是进程。而在引入线程的OS中,则把线程作为调度和分派的基本单位,进程只是拥有资源的基本单位,而不再是调度和分派的基本单位。
(2)并发性。在引入线程的 OS 中,不仅进程间可以并发执行,而且在一个进程内的多个线程间,也可以并发执行,因而比传统的OS具有更好的并发性。
(3)拥有资源。在这两种 OS 中,拥有资源的基本单位都是进程。线程除了一点在运行中必不可少的资源((如线程控制块、程序计数器、一组寄存器值和堆栈)外,本身基本不拥有系统资源,但它可共享其隶属进程的资源。
(4)独立性。每个进程都能独立地申请资源和独立地运行;但同一进程的多个线程则共享进程的内存地址空间和其他资源,它们之间的独立性比进程之间的独立性要低。
(5)开销。由于创建或撤消进程时,系统都要为之分配和回收资源,如内存空间等。进程切换时所要保存和设置的现场信息也要明显地多于线程,因此,OS在创建、撤消和切换进程时所付出的开销显著地大于线程。另外,由于隶属于同一个进程的多个线程共享同一地址空间和打开文件,从而使它们之间的同步和通信的实现也变得更为容易。
(6)支持多处理机系统。传统的进程,只能运行在一个处理机上;多线程的进程,则可以将进程中的多个线程分配到多个处理机上,从而获得更好的并发执行效果。
 

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

(1)为支持多进程的并发执行,系统必须建立哪些关于进程的数据结构?
(2)为支持进程状态的变迁,系统至少应提供哪些进程控制原语?
(3)在执行每一个进程控制原语时,进程状态会发生什么变化?相应的数据结构会发生什么变化?

答:

答:(1) 为支持多进程的并发执行,系统为每个进程建立了一个数据结构——进程限制块〔PCB〕,用于进程的管理和限制。

(2) 进程限制的主要职责是对系统中的全部进程实施有效的管理,它具有创立新进程、撤销已有进程、实现进程的状态转换等功能。在操作系统的内核中,有一组程序特地用于完成对进程的限制,这些原语至少须要包括创立新进程原语、终止进程原语、堵塞进程原语、唤醒进程原语等操作。这些系统命令一般对用户是开放的,也就是说用户可以通过相应的接口来运用它们。

(3) 进程创立原语:从PCB集合中申请一个空白PCB,将调用者参数、以及从执行进程获得的调用者内部标识填入该PCB,设置记账数据。置新进程为“就绪”状态。

终止进程原语:用于终止完成任务的进程,收回其所占的资源。消去该进程的PCB。

堵塞原语:将进程从运行态变为堵塞状态。进程被插入等待事务的队列中,同时修改PCB中相应的表项,如进程状态和等待队列指针等。

唤醒原语:将进程从堵塞态变为就绪状态。进程被从堵塞队列中移出,插入到就绪队列中,等待调度,同时修改PCB中相应的表项,如进程状态等。

你可能感兴趣的:(操作系统,408,操作系统)