第二章进程描述和控制
第二章
2.1 前趋图和程序执行 2.2 进程的描述
2.3 进程控制 2.4 进程同步
2.5 经典进程的同步问题 2.6 进程通信
2.7 线程(Threads)的基本概念 2.8 线程的实现
1.为什么程序并发执行会产生间断性特征?
程序在并发执行时,由于它们共享系统资源,为完成同一项任务需要相互合作,致使这些并发执行的进程之间,形成了相互制约关系,从而使得进程在执行期间出现间断性。
2.程序并发执行时为什么会失去封闭性和可再现性?
答:程序并发执行时,多个程序共享系统中的各种资源,因而这些资源的状态由多个程序改变,致使程序运行失去了封闭性,也会导致其失去可再现性。
3.试从动态性、并发性和独立性上比较进程和程序?
(1)动态性是进程最基本的特性,表现为由创建而产生,由调度而执行,因得不到资源而暂停执行,由撤销而消亡。进程有一定的生命期,而程序只是一组有序的指令集合,是静态实体。
(2)并发性是进程的重要特征,同时也是OS 的重要特征。引入进程的目的正是为了使其程序能和其它进程的程序并发执行,而程序是不能并发执行的。
(3)独立性是指进程实体是一个能独立运行的基本单位,也是系统中独立获得资源和独立调度的基本单位。对于未建立任何进程的程序,不能作为独立单位参加运行。
4.试说明PCB的作用具体表现在哪几个方面,为什么说PCB是进程存在的惟一标志?
PCB 是进程实体的一部分,是操作系统中最重要的记录型数据结构。作用是使一个在多道程序环境下不能独立运行的程序,成为一个能独立运行的基本单位,成为能与其它进程并发执行的进程。OS是根据PCB对并发执行的进程进行控制和管理的。
5.进程控制块的组织方式有哪几种?
-
线性方式
-
链接方式
-
索引方式
6.何谓操作系统内核?内核的主要功能是什么?
现代操作系统一般将OS划分为若干层次,再将OS的不同功能分别设置在不同的层次中。通常将一些与硬件紧密相关的模块(如中断处理程序等)、各种常用设备的驱动程序以及运行频率较高的模块(如时钟管理、进程调度和许多模块所公用的一些基本操作),都安排在紧靠硬件的软件层次中,将它们常驻内存,即通常被称为的OS内核。
支撑功能:中断处理、时钟管理、原语操作
资源管理功能:进程管理、存储器管理、设备管理
7.为什么要引入挂起状态?该状态有哪些性质?
引入挂起状态处于五种不同的需要: 终端用户需要,父进程需要,操作系统需要,对换需要和负荷调节试说明引起进程阻塞或被唤醒的主要事件是什么?
8.试说明引起进程阻塞或被唤醒的主要事件是什么?
-
请求系统服务;
-
启动某种操作;
-
新数据尚未到达;
4.无新工作可做
9.试从调度性、并发性、拥有资源及系统开销方面对进程和线程进行比较。
(1)调度性。线程在OS 中作为调度和分派的基本单位,进程只作为资源拥有的基本单位。
(2)并发性。进程可以并发执行,一个进程的多个线程也可并发执行。
(3)拥有资源。进程始终是拥有资源的基本单位,线程只拥有运行时必不可少的资源,本身基本不拥有系统资源,但可以访问隶属进程的资源。
(4)系统开销。操作系统在创建、撤消和切换进程时付出的开销显著大于线程。
10.何谓用户级线程和内核支持线程?
(1)用户级线程:仅存在于用户空间中的线程,无须内核支持。这种线程的创建、撤销、线程间的同步与通信等功能,都无需利用系统调用实现。用户级线程的切换通常发生在一个应用进程的诸多线程之间,同样无需内核支持。
(2)内核支持线程:在内核支持下运行的线程。无论是用户进程中的线程,还是系统进程中的线程,其创建、撤销和切换等都是依靠内核,在内核空间中实现的。在内核空间里还为每个内核支持线程设置了线程控制块,内核根据该控制块感知某线程的存在并实施控制。
(内核功能开销大)
11.什么是前趋图?为什么要引入前趋图?
前趋图(Precedence Graph)是一个有向无循环图,记为DAG(Directed Acyclic Graph),用于描述进程之间执行的前后关系。
12.试画出下面四条语句的前趋图:
S1: a=x+y;
S2:b=z+1;
S3:c=a-b;
S4:w=c+1;其前趋图为:
:
13.在操作系统中为什么要引入进程的概念?它会产生什么样的影响?
为了使程序在多道程序环境下能并发执行,并对并发执行的程序加以控制和描述,在操作系统中引入了进程概念。
影响: 使程序的并发执行得以实现。
14.试说明进程在三个基本状态之间转换的典型原因。
(1)就绪状态→执行状态:进程分配到CPU资源
(2)执行状态→就绪状态:时间片用完
(3)执行状态→阻塞状态:I/O请求
(4)阻塞状态→就绪状态:I/O完成
15.为什么要在OS中引入线程?
在操作系统中引入线程,则是为了减少程序在并发执行时所付出的时空开销,使OS具有更好的并发性,提高CPU的利用率。进程是分配资源的基本单位,而线程则是系统调度的基本单位。