汤子瀛《计算机操作系统》(第4版)笔记和课后习题(含考研真题)详解(txt+pdf+epub+mobi电子书下载)


发布时间:2020-07-11 15:58:40

点击下载

作者:圣才电子书

出版社:圣才电子书

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

汤子瀛《计算机操作系统》(第4版)笔记和课后习题(含考研真题)详解

汤子瀛《计算机操作系统》(第4版)笔记和课后习题(含考研真题)详解试读:

第1章 操作系统引论

1.1 复习笔记

一、操作系统的目标和作用

1操作系统的目标(1)方便性。(2)有效性。(3)可扩充性。(4)开放性。

2操作系统的作用(1)OS作为用户与计算机硬件系统之间的接口。(2)OS作为计算机系统资源的管理者。(3)OS实现了对计算机资源的抽象。

二、操作系统的发展过程

1未配置操作系统的计算机系统(1)人工操作方式。(2)脱机输入/输出方式。

2单道批处理系统

3多道批处理系统

多道批处理系统特征:多道、宏观上并行、微观上串行。

4分时系统

分时系统的特征:多路性、独立性、及时性、交互性。

5实时系统(1)实时系统的类型

①工业(武器)控制系统,如火炮的自动控制系统、飞机的自动驾驶系统,以及导弹的制导系统等。

②信息查询系统,如飞机或火车的订票系统等。

③多媒体系统。

④嵌入式系统。(2)实时系统最主要的特征便是及时性与可靠性。

6微机操作系统的发展

微机操作系统按运行方式分为以下几类:(1)单用户单任务操作系统。(2)单用户多任务操作系统。(3)多用户多任务操作系统。

三、操作系统的基本特性

1并发(Concurrence)

区分并行与并发(1)并行性是指两个或多个事件在同一时刻发生;(2)并发性是指两个或多个事件在同一时间间隔内发生。

2共享(Sharing)

目前实现资源共享的主要方式有以下两种:(1)互斥共享方式。(2)同时访问方式。

3虚拟(Virtual)

4异步(Asynchronism)

并发和共享是多用户(多任务)OS的两个最基本的特征。

四、操作系统的主要功能

1处理机管理功能

对处理机的管理可归结为对进程的管理。处理机管理的主要功能有:(1)进程控制。(2)进程同步。(3)进程通信。(4)调度。

2存储器管理功能(1)内存分配。(2)内存保护。(3)地址映射。(4)内存扩充。

3设备管理功能(1)缓冲管理。(2)设备分配。(3)设备处理。

4文件管理功能(1)文件存储空间的管理。(2)目录管理。(3)文件的读/写管理和保护。

5操作系统与用户之间的接口(1)用户接口

用户接口进一步分为联机用户接口、脱机用户接口和图形用户接口三种。(2)程序接口

程序接口是由一组系统调用组成的,每一个系统调用都是一个能完成特定功能的子程序。

6系统调用(1)系统调用又被称为广义指令。(2)系统调用的相关处理都是在核心态下进行。(3)系统调用按功能分类为:设备管理、文件管理、进程控制、进程通信、内存管理。

五、操作系统的运行环境

1内核态与用户态(1)操作系统的内核是计算机上配置的底层软件,是操作系统最基本、最核心的部分。(2)操作系统内核的核心功能包括时钟管理,中断处理,原语,进程管理,存储器管理,设备管理。(3)用户态也叫做目态,核心态也叫做管态。

2操作系统的指令分为特权指令和非特权指令。(1)特权指令是只能由操作系统才能执行的指令,如I/O指令、内存清零指令,只能在核心态下执行。(2)非特权指令是用户可以去执行的指令,在用户态下执行。

3中断与异常(1)中断分为内中断和外中断。其中,内中断信号的来源是CPU内部,与当前执行指令的有关;外中断信号的来源是CPU外部,与当前执行指令的无关。(2)内中断也称为异常或者陷入(trap)。(3)外中断就是狭义上的中断。(4)中断可以使CPU从用户态切换为核心态。

六、微内核OS结构(1)基本概念

微内核并非是一个完整的OS,而只是将操作系统中最基本的部分放入微内核,微内核通常包含以下几部分:

①与硬件处理紧密相关的部分;

②一些较基本的功能;

③客户和服务器之间的通信。(2)微内核的基本功能

①进程(线程)管理。

②低级存储器管理。

③中断和陷入处理。(3)微内核操作系统的优点

①提高了系统的可扩展性。

②增强了系统的可靠性。

③可移植性强。

④提供了对分布式系统的支持。

⑤融入了面向对象技术。(4)微内核操作系统存在的问题

微内核OS存在着潜在的缺点。其中最主要的是,较之早期OS,微内核OS的运行效率有所降低。

1.2 课后习题详解

1设计现代OS的主要目标是什么?

答:在计算机系统上配置操作系统的主要目标是方便性、有效性、可扩充性和开放性。(1)方便性

配置操作系统后,系统可以使用编译命令将用户采用高级语言书写的程序翻译成机器代码,用户可以直接通过OS所提供的各种命令操纵计算机系统,使计算机变得易学易用。(2)有效性

①提高系统资源利用率

能有效分配各种设备的工作状态,提高系统资源的利用率。

②提高系统的吞吐量

OS可以通过合理地组织计算机的工作流程,加速程序的运行,缩短程序的运行周期,从而提高系统的吞吐量。(3)可扩充性

OS必须具有很好的可扩充性,才能适应计算机硬件、体系结构以及应用发展的要求。(4)开放性

开放性是指系统能遵循世界标准规范,特别是遵循开放系统互连(OSI)国际标准。开放性是衡量一个新推出系统或软件能否被广泛应用的至关重要的因素。

2OS的作用可表现在哪几个方面?

答:OS的作用可表现在以下3个方面:(1)OS作为用户与计算机硬件系统之间的软件接口

OS处于用户与计算机硬件系统之间,用户通过OS来使用计算机系统。(2)OS作为计算机系统资源的管理者

在计算机系统中,通常都包含硬件和软件资源,归纳起来可将资源分为4类:处理器、存储器、I/O设备以及信息(数据和程序)。相应地,OS的主要功能也正是针对这4类资源进行有效的管理。为了管理好这些共享资源(包括硬件和信息)的使用,操作系统必须记录下各种资源的使用情况,对使用资源的请求进行授权,协调诸用户对共享资源的使用,避免发生冲突,并计算使用资源的费用等。(3)OS实现了对计算机资源的抽象

在裸机上覆盖上一层I/O设备管理软件得到扩充机器(虚拟机),它向用户(进程)提供了一个对硬件操作的抽象模型,用户可利用抽象模型提供的接口使用计算机,而无需了解物理接口实现的细节,从而使用户更容易地使用计算机硬件资源。

3为什么说OS实现了对计算机资源的抽象?

答:OS是铺设在计算机硬件上的多层系统软件,它不仅增强了系统的功能,而且还隐藏了对硬件操作的细节,实现了对计算机硬件操作的多个层次的抽象。(1)在裸机上覆盖上一层I/O设备管理软件,由它来实现对I/O设备操作的细节,并向上提供一组I/O命令,用户可利用它来进行数据输入或输出,而无需关心I/O是如何实现的。该软件实现了对计算机硬件操作的第一层次的抽象。(2)在第一层次的抽象上再覆盖上一层用于文件的管理软件,同样由它来实现文件操作的细节,并向上提供一组对文件进行存取操作的命令,用户可利用这组命令进行文件的存取。该层软件实现了对硬件资源操作的第二层次的抽象。

4试说明推动多道批处理系统形成和发展的主要动力是什么。

答:不断提高计算机资源的利用率和系统吞吐量是推动多道批处理系统形成和发展的主要动力。

5何谓脱机I/O和联机I/O?

答:(1)脱机I/O

为了解决人机矛盾及CPU和I/O设备之间速度不匹配的矛盾,20世纪50年代末出现了脱机输入/输出(Off-Line I/O)技术。该技术是事先将装有用户程序和数据的纸带(或卡片)装入纸带输入机(或卡片机),在一台外围机的控制下,把纸带(卡片)上的数据(程序)输入到磁带上。当CPU需要这些程序和数据时,再从磁带上将其高速地调入内存。类似地,当CPU需要输出时,可由CPU直接高速地把数据从内存送到磁带上,然后再在另一台外围机的控制下,将磁带上的结果通过相应的输出设备输出。即脱机I/O方式指的是程序和数据的输入和输出都是在外围机的控制下完成的,或者说,它们是在脱离主机的情况下进行的。(2)联机I/O

和脱机I/O方式相反,联机I/O方式指的是在主机的直接控制下进行输入/输出的方式。

6试说明推动分时系统形成和发展的主要动力是什么?

答:进一步提高计算机资源的利用率、更好的满足人机交互是推动分时系统形成和发展的主要动力。

7实现分时系统的关键问题是什么?应如何解决?

答:(1)实现分时系统的关键问题是如何使用户能与自己的作业进行交互,即当用户在自己的终端上键入命令时,系统应能及时接收并及时处理该命令,再将结果返回给用户。(2)解决方案

①及时接收问题

针对及时接收问题,解决办法是在系统中配置一个多路卡,多路卡的作用是使主机能同时接收不同用户从终端上输入的数据。此外,还须为每个终端配置一个缓冲区,用来暂存用户键入的命令(或数据)。

②及时处理问题

针对及时处理问题,各个用户的作业应该直接进入内存,并且规定每个作业只运行一个很短的时间片,然后暂停该作业的运行,并立即调度下一个作业运行。

8为什么要引入实时OS?

答:引入实时OS是为了满足实时应用的需求,更好地满足实时控制领域和实时信息处理领域的需要。

9什么是硬实时任务和软实时任务?试举例说明。

答:在实时操作系统中,根据对截止时间的要求来分类,实时任务可分为硬实时任务和软实时任务两种。(1)硬实时任务及其举例

硬实时任务是系统必须满足任务对截止时间的要求,否则可能出现难以预测的结果,在一些高科技领域,如运载火箭的控制等。(2)软实时任务及其举例

软实时任务是它也联系着一个截止时间,但并不严格,若偶尔错过了任务的截止时间,对系统产生的影响也不会太大,比如网页的更新等。

10试从交互性、及时性以及可靠性方面将分时系统与实时系统进行比较。

答:(1)交互性

实时信息处理系统虽然也具有交互性,但这里人与系统的交互仅限于访问系统中某些特定的专用服务程序。它不像分时系统那样能向终端用户提供数据处理和资源共享等服务。(2)及时性

实时信息处理系统对实时性的要求与分时系统类似,都是以人所能接受的等待时间来确定的;而实时控制系统的及时性,则是以控制对象所要求的开始截止时间或完成截止时间来确定的,一般为秒级到毫秒级,甚至有的要低于100微秒。(3)可靠性

分时系统虽然也要求系统可靠,但相比之下,实时系统对可靠性的要求更高。因为任何差错都可能带来巨大的经济损失,甚至是无法预料的灾难性后果,所以在实时系统中,往往都采取了多级容错措施来保障系统的安全性及数据的安全性。

11OS有哪几大特征?其最基本的特征是什么?

答:(1)操作系统具备四种共同的基本特征,即并发、共享、虚拟和异步。(2)并发和共享是OS两大最基本的特征。

12在多道程序技术的OS环境下的资源共享与一般情况下的资源共享有何不同?对独占资源应采取何种共享方式?

答:(1)OS环境下与一般情况下的资源共享间的不同点

①一般情况下的共享

一般情况下的共享只是说明某种资源能被大家使用,对于这样的资源共享方式,只要通过适当的安排,用户之间并不会产生对资源的竞争,因此资源管理是比较简单的。

②OS环境下的共享

OS环境下的资源共享或称为资源复用,是指系统中的资源可供内存中多个并发执行的进程共同使用。这里在宏观上既限定了时间(进程在内存期间),也限定了地点(内存)。对于这种资源共享方式,其管理就要复杂得多,因为系统中的资源少于多道程序需求的总和,会形成它们对共享资源的争夺。所以,系统必须对资源共享进行妥善管理。(2)独占资源应采取的共享方式

对独占资源应采用互斥共享方式,该共享方式仅当占有该资源的进程访问并释放资源后,才允许另一进程对该资源进行访问。

13什么是时分复用技术?举例说明它能提高资源利用率的根本原因是什么。

答:(1)时分复用技术是将不同的信号相互交织在不同的时间段内,沿着同一个信道传输;在接收端再用某种方法,将各个时间段内的信号提取出来还原成原始信号的通信技术。这种技术可以在同一个信道上传输多路信号。(2)时分复用技术能提高资源利用率的根本原因在于,它利用某设备为一用户服务的空闲时间,又转去为其他用户服务,使设备得到最充分的利用。

14是什么原因使操作系统具有异步性特征?

答:由于各用户程序性能的不同,不同程序对内存的使用开始时间、结束时间、中断时间是不可预知的,或者说,进程是以人们不可预知的速度向前推进,导致了进程的异步性。

15处理机管理有哪些主要功能?其主要任务是什么?

答:处理机管理的主要功能是进程控制、进程同步、进程通信和调度。(1)进程控制

为作业创建进程,并为之分配必要的资源;进程结束时撤销进程,及时回收该进程所占用的各类资源;以及控制进程在运行过程中的状态转换。(2)进程同步

为多个进程(含线程)的运行进行协调,协调分为进程互斥方式和进程同步方式。(3)进程通信

用来实现在相互合作的进程之间的信息交换。(4)处理机调度

在后备队列上等待的每个作业都必须经过调度才能执行,在传统的操作系统中,包括作业调度和进程调度两步。

①作业调度

从后备队里按照一定的算法,选择出若干个作业,为它们分配运行所需的资源(首先是分配内存)。

②进程调度

从进程的就绪队列中,按照一定算法选出一个进程,把处理机分配给它,并为它设置运行现场,使进程投入执行。

16内存管理有哪些主要功能?其主要任务是什么?

答:内存管理的主要功能有内存分配、内存保护、地址映射和内存扩充。(1)内存分配

内存分配的主要任务是为每道程序分配内存空间,使它们“各得其所”;提高存储器的利用率,减少不可用的内存空间;允许正在运行的程序申请附加的内存空间,以适应程序和数据动态增长的需要。(2)内存保护

内存保护的主要任务是确保每道用户程序都只在自己的内存空间内运行,彼此互不干扰;绝不允许用户程序访问操作系统的程序和数据;也不允许用户程序转移到非共享的其他用户程序中去执行。(3)地址映射

为使程序能正确运行,存储器管理必须提供地址映射功能,以将地址空间中的逻辑地址转换为内存空间中与之对应的物理地址,该功能应在硬件的支持下完成。(4)内存扩充

借助于虚拟存储技术,从逻辑上去扩充内存容量,使用户所感觉到的内存容量比实际内存容量大得多,以便让更多的用户程序并发运行。

17设备管理有哪些主要功能?其主要任务是什么?

答:设备管理的主要功能有缓冲管理、设备分配和设备处理。设备管理的主要任务是完成用户进程提出的I/O请求,为用户进程分配其所需的I/O设备;提高CPU和I/O设备的利用率;提高I/O设备处理速度;方便用户使用I/O设备。

18文件管理有哪些主要功能?其主要任务是什么?

答:文件管理主要功能有文件存储空间的管理、目录管理、文件的读/写管理和保护。文件管理的主要任务是对用户文件和系统文件进行管理,以方便用户使用,并保证文件的安全性。

19试说明推动传统OS演变为现代OS的主要因素是什么?

答:推动传统OS演变为现代OS的主要因素如下:(1)不断提高计算机资源的利用率

在计算机发展初期,计算机系统特别昂贵,因此,必须千方百计地提高计算机各种资源的利用率,这是OS最初发展的推动力。(2)方便用户

当资源利用率不高的问题得到基本解决后,用户在上机、调试程序时的不方便性又成为了继续推动OS发展的主要因素。(3)器件的不断更新换代

随着微机芯片的不断更新换代,使得计算机的性能快速提高,从而推动了OS功能和性能的迅速增强和提高。(4)计算机体系结构的不断发展

计算机体系结构的发展,不断推动着OS的发展,也促进了新的OS类型的产生。(5)不断提出新的应用需求

不断提出的新的应用需求是推动OS迅速发展的另一个重要原因。

20什么是微内核OS?

答:微内核操作系统结构是20世纪80年代后期发展起来的。它能有效地支持多处理机运行,非常适用于分布式系统环境,微内核OS主要有以下四个方面的特征:(1)足够小的内核

能实现现代OS最基本的核心功能的部分,微内核并非是一个完整的OS,而只是操作系统中最基本的部分。(2)基于客户/服务器模式

将操作系统中最基本的部分放入内核中,而把操作系统的绝大部分功能都放在微内核外面的一组服务器(进程)中实现。(3)应用“机制与策略分离”原理

在传统的OS中,将机制放在OS的内核的较低层,把策略放在内核的较高层次中。而在微内核操作系统中,通常将机制放在OS的微内核中。正因为如此,才有可能将内核做得很小。(4)采用面向对象技术

确保操作系统的“正确性”“可靠性”“易修改性”“易扩展性”等,并提高操作系统的设计速度。

21微内核操作系统具有哪些优点?它为何能有这些优点?

答:(1)微内核操作系统的优点

①提高了系统的可扩展性。

②增强了系统的可靠性。

③可移植性强。

④提供了对分布式系统的支持。

⑤融入了面向对象技术。(2)微内核操作系统具有上述优点的原因

微内核OS结构是建立在模块化、层次化结构的基础上的,并采用了客户/服务器模式和面向对象的程序设计技术。

22现代操作系统较之传统操作系统又增加了哪些功能和特征?

答:(1)现代操作系统增加的功能

传统的OS具有处理机管理、存储器管理、设备管理、文件管理和提供友好的用户接口这五大功能,现代OS中还增加了面向安全、面向网络和面向多媒体等功能。(2)现代操作系统增加的特征

现代操作系统较传统的多道批处理系统、实时操作系统以及分时操作系统增加 并发性、资源共享性、虚拟性和异步性四大特征。

23在微内核OS中,为什么要采用客户/服务器模式?

答:由于客户/服务器模式具有数据的分布处理和存储;便于集中管理;灵活性和可扩充性;易于改编应用软件等优点。故在单机微内核操作系统中几乎无一例外地都采用客户/服务器模式,将操作系统中最基本的部分放入内核中,而把操作系统的绝大部分功能都放在微内核外面的一组服务器(进程)中实现。

24在基于微内核结构的OS中,应用了哪些新技术?

答:在设计微内核OS时,采用了面向对象的技术,其中的“封装”,“继承”,“对象类”和“多态性”,以及在对象之间采用消息传递机制等,都有利于提高系统的“正确性”“可靠性”“易修改性”“易扩展性”,而且还能显著地减少开发系统所付出的开销。

25何谓微内核技术?在微内核中通常提供了哪些功能?

答:(1)微内核技术的定义

把操作系统中更多的成分和功能放到更高的层次(即用户模式)中去运行,而留下一个尽量小的内核,用它来完成操作系统最基本的核心功能,这种技术被称为微内核技术。(2)微内核技术提供的功能

在微内核中通常提供了进程(线程)管理、低级存储器管理、中断和陷入处理功能。

1.3 考研真题详解

1在单处理机系统中,可并行的是(  )。[2009年统考]

Ⅰ.进程与进程

Ⅱ.处理机与设备

Ⅲ.处理机与通道

Ⅳ.设备与设备

A.Ⅰ、Ⅱ和Ⅲ

B.Ⅰ、Ⅱ和Ⅳ

C.Ⅰ、Ⅲ和Ⅳ

D.Ⅱ、Ⅲ和IV【答案】D【解析】单处理机即只有一个处理机(此处不包含多核的情况),某时刻处理机只能执行一个进程,所以进程与进程之间不能并行执行。处理机、通道、设备都能并行执行,比如同时打印(设备)、计算(处理机)、传输数据(通道控制内存与外存间数据交换)。换个角度来想,进程的执行必须要依赖处理机,而一个处理机同时只能处理一个进程,所以单处理机系统中进程就不可以并行;而其他选项依赖的是不同部件,因此可以并行。明确一个概念,即使是采用了多道程序设计技术的系统,只要是单处理机,进程就不可以并行,而只是并发。因此如果题目改成“采用多道程序设计技术的单处理机系统”,答案依然不变。

2举例说明为什么操作系统起到了扩展机器的作用?[北大2004年研]

答:把真实的硬件情况在程序员面前隐藏起来,而表现为一组友好的、简单的、可以被读/写的命名文件的程序就是操作系统。就如同隐藏磁盘硬件,表现为一个简单的面向文件的接口一样,操作系统还隐藏了很多令人厌烦的中断、定时器、内存管理以及其他一些底层特性。在这种情况下,操作系统所提供的对硬件的抽象更简单,更容易使用。例如,对于最基本的命令read与write,每个read及write命令都需要13个参数,这些参数被组合在一个9字节的数据中。这些参数给出了需要读的磁盘块的地址、每磁道的扇区数、物理介质上所使用的记录模式、扇区间的间隔以及遇到数据删除标志时需要做些什么。当操作完成的时候,控制芯片会返回23个状态以及错误码,它们会被组合到7个字节长的数据中。不仅如此,编写软盘驱动程序的程序员还必须随时留意驱动器的电动机是开着的还是关着的。如果电动机是关着的,在读/写数据前,它必须被打开(伴随很长一段启动延时)。电动机也不能长时间开着,否则会使软磁盘因磨损过度而损坏。这就要求程序员必须在长启动延时及磁盘磨损度(磨损会使磁盘上的数据丢失)之间寻找一种平衡。这对程序员来说是非常困难的。程序员所想要的,是一种简单的、高级的抽象。对于这一问题,一个典型的抽象就是磁盘上包含一组已被命名的文件,每一个文件都可能被打开来写或读,最后,文件会被关闭。诸如记录信息是否需要调整频率、电动机的当前状态等细节问题在这一抽象中就不会再出现在用户的面前。

在这种观点中,操作系统的功能在用户面前就等同于是一台扩展了的机器或者说是虚拟的机器,它使得在硬件上面的编程更加容易。

第2章 进程的描述与控制

2.1 复习笔记

一、前趋图和程序执行

1前趋图(1)定义

前趋图是指一个有向无循环图,可记为DAG,它用于描述进程之间执行的先后顺序。(2)图形表示

前趋图如图2-1所示。

图2-1 前趋图

2程序的执行(1)程序顺序执行时的特征

①顺序性。

②封闭性。

③可再现性。(2)程序并发执行时的特征

①间断性。

②失去封闭性。

③不可再现性。

二、进程的描述

1进程的定义和特征(1)进程的定义

对于进程的定义,从不同的角度可以有不同的定义,其中较典型的定义有:

①进程是程序的一次执行。

②进程是一个程序及其数据在处理机上顺序执行时所发生的活动。

③进程是具有独立功能的程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位。(2)进程的特征

①动态性

动态性是进程的最基本的特征。

②并发性。

③独立性。

④异步性。(3)进程实体

通常,进程实体由程序控制块(PCB)、程序段、数据段三部分组成。

2进程的状态及转换(1)进程有三种基本状态:就绪状态、执行状态、阻塞(等待)状态。图2-2示出了基本状态的转换图。

图2-2 进程的三种基本状态及转换(2)引入进程的创建状态和终止状态后,图2-3示出了进程的五种状态及转换关系图。

图2-3 进程的五种状态及转换

3挂起操作和进程状态的转换(1)当挂起操作作用于某个进程时,该进程将被挂起,意味着此时该进程处于静止状态。如果进程正在执行,它将暂停执行。若原本处于就绪状态,则该进程此时暂不接受调度。与挂起操作对应的操作是激活操作。(2)引入挂起原语操作后三个进程状态的转换

①活动就绪→静止就绪。

②活动阻塞→静止阻塞。

③静止就绪→活动就绪。

④静止阻塞→活动阻塞。(3)引入挂起操作后五个进程状态的转换如图2-4所示。

图2-4 具有创建、终止和挂起状态的进程状态图

4进程控制块(PCB)(1)概念

PCB是一记录型数据结构,它作为进程实体的一部分,记录了操作系统所需的、用于描述进程的当前情况以及管理进程运行的全部信息。(2)进程控制块中的信息(3)进程控制块的组织方式

①线性方式。

②链接方式。

③索引方式。

三、进程控制

进程控制是进程管理中最基本的功能,主要包括创建新进程、终止已完成的进程、将因发生异常情况而无法继续运行的进程置于阻塞状态、负责进程运行中的状态转换等功能。

四、进程同步

1进程同步的基本概念(1)进程同步机制的主要任务

对多个相关进程在执行次序上进行协调,使并发执行的诸进程之间能按照一定的规则(或时序)共享系统资源,并能很好地相互合作,从而使程序的执行具有可再现性。(2)临界资源

一次仅允许一个进程使用的资源称为临界资源。(3)临界区

将在每个进程中访问临界资源的那段代码称为临界区。(4)同步机制应遵循的规则

①空闲让进。

②忙则等待。

③有限等待。

④让权等待。

2硬件同步机制(1)关中断。(2)利用Test-and-Set指令实现互斥。(3)利用Swap指令实现进程互斥。

3信号量机制(1)整型信号量

①定义

把整型信号量定义为一个用于表示资源数目的整型量S。

②描述

通过两个标准的原子操作wait(S)和signal(S)来访问S,两个操作一直被分别称为P、V操作。wait和signal操作可描述如下:

wait(S){  while(S<=0); /*do no-op*/  S--;}signal(S){  S++;}(2)记录型信号量

①定义

记录型信号量机制采用了记录型的数据结构,是一种不存在“忙等”现象的进程同步机制。

②描述

typedef struct{  int value; //代表资源数目的整型变量  struct process_control_block *list; //一个链接所有等待进程的进程链表指针}semaphore;wait(S)和signal(S)操作可描述如下:wait(semaphore *S){  S->value--;  if(S->value<0)    block(S->list);}signal(semaphore *S){  S->value++;  if(S->value<=0)    wakeup(S->list);}

4经典同步问题-生产者-消费者问题

问题描述:一组生产者进程和一组消费者进程共享一个初始为空、大小为n个单元的缓冲区。只有当缓冲区没满时,生产者才可以把消息放入缓冲区,否则必须等待;只有当缓冲区不空时,消费者才可以从中取出消息,否则必须等待。由于缓冲区是临界资源,只允许一个生产者放入消息或者一个消费者从中取出消息,不允许同时访问缓冲区。

信号量设置:定义信号量mutex为互斥信号量,初值为1,用于表示互斥访问缓冲区;信号量empty用于表示当前缓冲区中可用空间大小,初值为n;信号量full用于表示当前缓冲区中已用空间大小,初值为0。

程序描述:

semaphore mutex=1;semaphore empty=n;semaphore full=0;producer()

{ //生产者进程  while(true)  {    //生产一个消息    p(empty); //申请缓冲区中的一个空单元    p(mutex); //申请访问缓冲区    //将消息放入缓冲区    v(mutex); //释放互斥信号量    v(full); //缓冲区中满单元数加一  }}consumer(){ //消费者进程  while(true)  {    p(full); //申请从缓冲区中的满单元取出消息    p(mutex); //申请访问缓冲区    //将消息取出缓冲区    v(mutex); //释放互斥信号量    v(empty); //缓冲区中空单元数加一  }}

5管程机制(1)定义

一个管程定义了一个数据结构和能为并发进程所执行(在该数据结构上)的一组操作,这组操作能同步进程和改变管程中的数据。(2)组成

①管程的名称;

②局部于管程的共享数据结构说明;

③对该数据结构进行操作的一组过程;

④对局部于管程的共享数据设置初始值的语句。

五、进程通信

1进程通信的概念(1)进程通信的定义

进程通信是指进程之间的信息交换。(2)进程通信的分类

进程通信可分为高级进程通信和低级进程通信两种。

2高级进程通信的类型(1)共享存储器系统

①基于共享数据结构的通信方式。

②基于共享存储区的通信方式。(2)管道通信系统(3)消息传递系统(Message passing system)

①直接通信方式。

②问接通信方式。(4)客户机-服务器系统(Client-Server system)

六、线程的基本概念

1线程的引入(1)进程的两个基本属性

①进程是一个可拥有资源的独立单位;

②进程同时又是一个可独立调度和分派的基本单位。(2)线程引入原因

减少程序并发执行所需付出的时空开销,使操作系统具有更好的并发性。

2线程与进程的比较(1)调度的基本单位

①在传统的OS中,进程是作为独立调度和分派的基本单位,因而进程是能独立运行的基本单位。

②而在引入线程的OS中,已把线程作为调度和分派的基本单位,因而线程是能独立运行的基本单位。(2)并发性

不同进程之间、在一个进程中的多个线程之间或者不同进程中的线程之间都能并发执行。(3)拥有资源

①进程是系统中拥有资源的一个基本单位。

②线程本身并不拥有系统资源,而是仅有一点必不可少的、能保证独立运行的资源。(4)独立性

在同一进程中的不同线程之间的独立性要比不同进程之间的独立性低得多。(5)系统开销

①创建或撤消进程时所付出的开销明显大于线程创建或撤消时所付出的开销。

②线程的切换代价也远低于进程的切换代价。

3线程的状态和线程控制块(1)线程运行的三个状态:执行状态,就绪状态,阻塞状态。(2)线程控制块TCB

线程控制块通常有这样几项信息:

①线程标识符;

②一组寄存器;

③线程运行状态;

④优先级;

⑤线程专有存储区;

⑥信号屏蔽;

⑦堆栈指针。【说明】在多线程OS中,线程作为独立运行(或称调度)的基本单位;而进程仍是资源分配的基本单位。

七、线程的实现方式

1内核支持线程KST

2用户级线程ULT

3组合方式

组合方式下包括三种不同的模型,如图2-5所示。

图2-5 多线程模型

2.2 课后习题详解

1什么是前趋图?为什么要引入前趋图?

答:(1)前趋图的定义

前趋图是一个有向无循环图,记为DAG,用于描述进程之间执行的前后关系。图中的每个结点可用于描述一个程序段或进程,乃至一条语句;结点间的有向边则用于表示两个结点之间存在的偏序或前趋关系。(2)引入前趋图的原因

引入前趋图可以形象的表示进程之间的前后关系和顺序,可以更好地描述程序的顺序和并发执行情况。

2试画出下面四条语句的前趋图:

S1:a=x+y;

S2:b=z+1;

S3:c=a-b;

S4:w=c+1;

答:S3语句中的操作涉及S1中的a和S2中的b,因此,S3的前趋是S1和S2;S4中的语句涉及S3中的c,因此,S4的前趋是S3,所以画出前趋图如图2-6所示。

图2-6 前趋图

3为什么程序并发执行会产生间断性特征?

答:程序在并发执行时,由于它们共享系统资源,以及为完成同一项任务而相互合作,致使在这些并发执行的程序之间,形成了相互制约的关系,从而产生间断性特征。简而言之,相互制约将导致并发程序具有“执行-暂停-执行”这种间断性的活动规律。

4程序并发执行时为什么会失去封闭性和可再现性?

答:程序在并发执行时,是多个程序共享系统中的各种资源,因而这些资源的状态将由多个程序来改变,致使程序的运行失去了封闭性。这样,某程序在执行时,必然会受到其他程序的影响,而这也将导致其再失去可再现性,亦即程序经过多次执行后,虽然它们执行时的环境和初始条件相同,但得到的结果却各不相同。

5在操作系统中为什么要引入进程的概念?它会产生什么样的影响?

答:(1)引入进程的原因

在多道程序环境下,程序的执行属于并发执行,此时它们将失去其封闭性,并具有间断性及不可再现性的特征。这决定了通常的程序是不能参与并发执行的,因为程序执行的结果是不可再现的。这样,程序的运行也就失去了意义。为使程序能并发执行,且为了对并发执行的程序加以描述和控制,人们引入了“进程”的概念。(2)引入进程的影响

进程的引入使程序的并发执行得以实现。

6试从动态性、并发性和独立性上比较进程和程序。

答:(1)动态性

进程的实质是进程实体的一次执行过程,因此,动态性是进程的最基本的特征。动态性还表现在:“它由创建而产生,由调度而执行,由撤销而消亡”。可见,进程实体有一定的生命期,而程序则只是一组有序指令的集合,并存放于某种介质上,其本身并不具有运动的含义,因而是静态的。(2)并发性

这是指多个进程实体共同存于内存中,且能在一段时间内同时运行。并发性是进程的重要特征,同时也成为OS的重要特征。引入进程的目的也正是为了使其进程实体能和其他进程实体并发执行;而程序(没有建立PCB)是不能并发执行的。(3)独立性

在传统的OS中,进程是一个能独立运行、独立分配资源和独立接受调度的基本单位,具有高度的独立性。但凡未建立PCB的程序都不能作为一个独立的单位参与运行。

7试说明PCB的作用具体表现在哪几个方面,为什么说PCB是进程存在的唯一标识?

答:(1)PCB作用的具体表现

①进程控制块PCB是进程实体的一部分,是操作系统中最重要的记录型数据结构。

②PCB中记录了操作系统所需的、用于描述进程的当前情况以及控制进程运行的全部信息。

③进程控制块使一个在多道程序环境下不能独立运行的程序(含数据),成为一个能独立运行的基本单位,一个能与其他进程并发执行的进程。(2)PCB是进程存在的唯一标识的原因

在进程的整个生命期中,系统总是通过PCB对进程进行控制,即系统是根据进程的PCB而非其他感知到该进程的存在的。所以说,PCB是进程存在的唯一标识。

8PCB提供了进程管理和进程调度所需要的哪些信息?

答:在进程控制块中,主要包括下述四个方面的信息:(1)进程标识符:进程标识符用于唯一标识一个进程。(2)处理机状态:处理机状态信息也称为处理机的上下文,主要由处理机的各种寄存器中的内容组成。(3)进程调度信息:进程调度信息包括进程状态、进程优先级、进程调度所需的其他信息、事件四个方面。(4)进程控制信息:进程控制信息包括程序和数据的地址、进程同步和通信机制、资源清单和链接指针。

9进程控制块的组织方式有哪几种?

答:(1)线性方式:将系统中所有的PCB都组织在一张线性表中,将该表的首址存放在内存的一个专用区域中。(2)链接方式:把具有相同状态进程的PCB分别通过PCB中的链接字链接成一个队列。(3)索引方式:系统根据所有进程状态的不同,建立几张索引表,在每个索引表的表目中,记录具有相应状态的某个PCB在PCB表中的地址。

10何谓操作系统内核?内核的主要功能是什么?

答:(1)操作系统内核的定义

操作系统内核是指大多数操作系统的核心部分。它由操作系统中用于管理存储器、文件、外设和系统资源的那些部分组成。操作系统内核通常运行进程,并提供进程间的通信。(2)操作系统内核的主要功能

①支撑功能

该功能是提供给OS其他众多模块所需要的一些基本功能,以便支撑这些模块工作。其中三种最基本的支撑功能是:中断处理、时钟管理和原语操作。

a.中断处理

中断处理是内核最基本的功能,是整个操作系统赖以活动的基础,OS中许多重要的活动。

b.时钟管理

时钟管理是内核的一项基本功能,在OS中的许多活动都需要得到它的支撑。

c.原语操作

原语(Primitive),就是由若干条指令组成的,用于完成一定功能的一个过程,是一个不可分割的基本单位,在内核中可能有许多原语。

②资源管理功能

a.进程管理

在进程管理中,或者由于各个功能模块的运行频率较高,通常都将它们放在内核中,以提高OS的性能。

b.存储器管理

存储器管理软件的运行频率也比较高,通常也将它们放在内核中,以保证存储器管理具有较高的运行速度。

c.设备管理

由于设备管理与硬件(设备)紧密相关,因此其中很大部分也都设置在内核中。

11试说明进程在三个基本状态之间转换的典型原因。

答:进程的三种基本状态是就绪状态、执行状态和阻塞状态,这三种基本状态之间转换的典型原因如图2-7所示,具体如下:(1)就绪状态→执行状态:进程通过调度分配到CPU资源;(2)执行状态→就绪状态:时间片用完;(3)执行状态→阻塞状态:I/O设备请求;(4)阻塞状态→就绪状态:I/O设备请求完成。

图2-7 进程状态转换图

12为什么要引入挂起状态?该状态有哪些性质?

答:(1)引入挂起状态的原因

①终端用户的请求:当终端用户在自己的程序运行期间发现有可疑问题时,希望暂时使自己的程序静止下来。

②父进程请求:父进程希望挂起自己的某个子进程,以便考查和修改该子进程,或者协调各子进程间的活动。

③负荷调节的需要:当实时系统中的工作负荷较重,已可能影响到对实时任务的控制时,可由系统把一些不重要的进程挂起,以保证系统能正常运行。

④操作系统的需要:操作系统有时希望挂起某些进程,以便检查运行中的资源使用情况或进行记账。(2)挂起状态的性质

①当进程处于未被挂起的就绪状态时,称此为活动就绪状态,表示为Readya。当用挂起原语Suspend将该进程挂起后,该进程便转变为静止就绪状态,表示为Readys,处于Readys状态的进程不再被调度执行。

②当进程处于未被挂起的阻塞状态时,称它是处于活动阻塞状态,表示为Blockeda。当用Suspend原语将它挂起后,进程便转变为静止阻塞状态,表示为Blockeds。处于该状态的进程在其所期待的事件出现后,将从静止阻塞变为静止就绪。

13在进行进程切换时,所要保存的处理机状态信息有哪些?

答:处理机状态信息主要是由处理机的各种寄存器中的内容组成的。处理机在运行时,许多信息都放在寄存器中。当处理机被中断时,所有这些信息都必须保存在PCB中,以便在该进程重新执行时,能从断点继续执行。这些寄存器包括:(1)通用寄存器,用户程序可以访问,用于暂存信息;(2)指令寄存器,存放要访问的下一条指令的地址;(3)进程状态字PSW,含有状态信息,如条件码,执行方式,中断屏蔽标志等;(4)用户栈指针,每个用户进程都有一个或若干个与之相关的系统栈,用于存放过程和系统调用地址。

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

答:引起进程创建的主要事件有:(1)用户登录

在分时系统中,用户在终端键入登录命令后,如果是合法用户,系统将为该终端建立一个进程,并把它插入到就绪队列中。(2)作业调度

在批处理系统中,当作业调度程序按一定的算法调度某作业时,便将该作业装入内存,为它创建进程,分配必要的资源,并插入到就绪队列中。(3)提供服务

当运行中的用户程序提出某种请求后,系统将专门创建一个进程来提供用户所需要的服务。(4)应用请求

基于应用进程的需求,由它自己创建一个新进程,以便使新进程以并发运行的方式完成特定任务。

15试说明引起进程被撤消的主要事件。

答:引起进程被撤销的主要事件有:(1)正常结束:在任何计算机系统中,都应有一个用于表示进程已经运行完成的指示;(2)异常结束:在进程运行期间,由于出现某些错误和故障而迫使进程终止(包括越界错误、保护错、非法指令、特权指令错、运行超时、等待超时、算术运算错、I/O故障);(3)外界干预:外界干预并非指在本进程运行中出现了异常事件,而是指进程应外界的请求而终止运行(包括操作员或操作系统干预、父进程请求、父进程终止)。

16在创建一个进程时所要完成的主要工作是什么?

答:一旦操作系统发现了要求创建新进程的事件后,便调用进程创建原语Create按下述步骤创建一个新进程:(1)申请空白PCB:为新进程申请获得唯一的数字标识符,并从PCB集合中索取一个空白PCB。(2)为新进程分配资源:为新进程的程序和数据以及用户栈分配必要的内存空间。(3)初始化进程控制块:包括初始化标识信息,初始化处理机状态信息,初始化处理机控制信息。(4)将新进程插入就绪队列:如果进程就绪队列能够接纳新进程,便将新进程插入就绪队列。

17在撤消一个进程时所要完成的主要工作是什么?

答:如果系统中发生了要求终止进程的某事件,OS便调用进程终止原语,按下述过程去终止指定的进程:(1)根据被终止进程标识符,从PCB集中检索出进程PCB,从中读出该进程的状态;(2)若被终止进程正处于执行状态,立即终止该进程的执行,并置调度标志为真,指示该进程被终止后可以被重新调度;(3)若该进程还有子进程,应将所有子孙进程终止,以防它们成为不可控进程;(4)将被终止进程拥有的全部资源,或者归还给父进程,或者归还给系统;(5)将被终止进程PCB从所在队列或链表中移出,等待其他程序搜集信息。

18试说明引起进程阻塞或被唤醒的主要事件是什么?

答:有下述几类事件会引起进程阻塞或被唤醒:(1)请求系统服务

当正在执行的进程请求操作系统提供服务时,由于某种原因,操作系统并不能立即满足该进程的要求时,该进程只能转变为阻塞状态来等待;(2)启动某种操作

当进程启动某种操作后,如果该进程必须在该操作完成之后才能继续执行,则必须先使该进程阻塞,以等待该操作完成;(3)新数据尚未到达

对于相互合作的进程,如果其中一个进程需要先获得另一(合作)进程提供的数据后才能对数据进行处理,则只要其所需数据未到达,该进程只有(等待)阻塞;(4)无新工作可做

系统往往设置一些具有某特定功能的系统进程,每当这种进程完成任务后,便把自己阻塞起来以等待新任务到来。

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

答:为了减少程序在并发执行时所付出的时空开销,使OS具有更好的并发性。

20试说明线程具有哪些属性?

答:(1)轻型实体;(2)独立调度和分派的基本单位;(3)可并发执行;(4)共享进程资源。

21试从调度性、并发性、拥有资源及系统开销方面对进程和线程进行比较。

答:(1)调度性

线程在OS中作为调度和分配的基本单位,进程作为资源拥有的基本单位。(2)并发性

在引入线程的操作系统中,不仅进程之间可以并发执行,而且在一个进程中的多个线程之间亦可并发执行。(3)拥有资源

进程是系统中拥有资源的基本单位,一般而言,线程自己不拥有系统资源,只有一点必不可少的资源,但它可以访问其隶属进程的资源,即一个进程的代码段、数据段及所拥有的系统资源。(4)系统开销

操作系统在创建、撤销和切换进程时付出的开销明显大于线程。

22线程控制块TCB中包含了哪些内容?

答:线程控制块通常有这样几项信息:线程标识符,一组寄存器,线程运行状态,优先级,线程专有存储区,信号屏蔽,堆栈指针。

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

答:(1)用户级线程

用户级线程ULT仅存在于用户空间中。对于这种线程的创建、撤销、线程之间的同步与通信等功能,都无须利用系统调用来实现。对于用户级线程的切换,通常发生在一个应用进程的诸多线程之间,这时,也同样无须内核的支持。由于切换的规则远比进程调度和切换的规则简单,因而使线程的切换速度特别快。可见,这种线程是与内核无关的。(2)内核支持线程

内核支持线程KST,也都同样是在内核的支持下运行的,即无论是用户进程中的线程,还是系统进程中的线程,他们的创建、撤销和切换等也是依靠内核,在内核空间实现的。此外,在内核空间还为每一个内核支持线程设置了一个线程控制块,内核是根据该控制块来感知某线程的存在,并对其加以控制。

24试说明用户级线程的实现方法。

答:用户级线程是在用户空间实现的。所有的用户级线程都具有相同的结构,它们都运行在一个中间系统的上面。当前有两种方式实现的中间系统,即运行时系统和内核控制线程。(1)运行时系统

运行时系统实质上是用于管理和控制线程的函数(过程)的集合。其中包括用于创建和撤销线程的函数、线程同步和通信的函数以及实现线程调度的函数等。正因为有这些函数,才能使用户级线程与内核无关。运行时系统中所有函数都驻留在用户空间,并作为用户级线程与内核之间的接口。(2)内核控制线程

内核控制线程又称为轻型进程LWP,每一个进程都可拥有多个LWP,同用户级线程一样,每个LWP都有自己的数据结构,其中包括线程标识符、优先级、状态,另外还有栈和局部存储区等。它们也可以共享进程所拥有的资源。可通过系统调用来获得内核提供的服务。这样当一个用户级线程运行时,只要将它连接到一个LWP上,此时它便具有了内核支持线程的所有属性。

25试说明内核支持线程的实现方法。

答:系统在创建新进程时,便为它分配一个任务数据区PTDA,其中包括若干个线程控制块TCB空间。在每一个TCB中可保存线程标识符、优先级、线程运行的CPU状态等信息,这些信息被保存在内核空间中。每当进程要创建一个线程时,便为新线程分配一个TCB,将有关信息填入该TCB中,并为之分配必要的资源。当PTDA中的所有TCB空间已用完,而进程又要创建新的线程时,只要其所创建的线程数目未超过系统的允许值(通常为数十至数百个),系统可再为之分配新的TCB空间;在撤销一个线程时,也应回收该线程的所有资源和TCB。

26多线程模型有哪几种类型?多对一模型有何优缺点?

答:(1)多线程模型有三种类型:多对一模型、一对一模型、多对多模型。(2)多对一模型的优缺点

①多对一模型的主要优点是线程管理的开销小,效率高。

②多对一模型的主要缺点在于,如果一个线程在访问内核时发生阻塞,则整个进程都会被阻塞;此外,在任一时刻,只有一个线程能够访问内核,多个线程不能同时在多个处理机上运行。

2.3 考研真题详解

1下列选项中会导致进程从执行态变为就绪态的事件是(  )。[2015年统考]

A.执行P(wait)操作

B.申请内存失败

C.启动I/O设备

D.被高优先级进程抢占【答案】D【解析】D项,被高优先级进程抢占,进程会由执行态变为就绪态。ABC三项,程序由于缺少资源而由执行态转为阻塞态。

2下列关于进程和线程的叙述中,正确的是(  )。[2012年统考]

A.不管系统是否支持线程,进程都是资源分配的基本单位

B.线程是资源分配的基本单位,进程是调度的基本单位

C.系统级线程和用户级线程的切换都需要内核的支持

D.同一进程中的各个线程拥有各自不同的地址空间【答案】A【解析】进程始终是操作系统资源分配的基本单位,线程不能直接被系统分配资源。因此A项是正确的,B项错误,而且线程是调度的基本单位。用户级线程只在用户进程的空间内活动,系统并不能感知到用户级线程的存在,所以用户级线程的切换不需要通过内核。系统级线程的切换是需要内核支持的,因此C项错误。同一进程下的各线程共享进程的地址空间,并共享进程所持有的资源,但线程有自己的栈空间,不与其他线程共享,因此D项错误。

3有两个并发执行的进程P1和P2,共享初值为1的变量x。P1对x加1,P2对x减1。

两个操作完成后,x的值(  )。[2011年统考]

A.可能为-1或3

B.只能为1

C.可能为0、1或2

D.可能为-1、0、1或2【答案】C【解析】执行①②③④⑤⑥结果为1,执行①②④⑤⑥③结果为2,执行④⑤①②⑨⑥结果为0,结果-1无法得到。这个题目的进程之间没有同步关系,因此通过分步尝试就可以得到答案。有的题目中两个进程会有同步关系,可以画出前趋图,以防推进顺序错误。

4在支持多线程的系统中,进程P创建的若干个线程不能共享的是(  )。[2011年统考]

A.进程P的代码段

B.进程P中打开的文件

C.进程P的全局变量

D.进程P中某线程的栈指针【答案】D【解析】进程是资源分配的基本单元,进程下的各线程可以并行执行,它们共享进程的资源,包括地址空间、持有资源、相关变量和代码等,但各个线程有自己的栈,这样各线程才能够独立执行程序而不相互干扰,各自的栈指针对其他线程是透明的,因此进程P中某线程的栈指针是不能共享的。

5下列选项中,导致创建新进程的操作是(  )。[2010年统考]

Ⅰ.用户登录成功

Ⅱ.设备分配

Ⅲ.启动程序执行

A.仅Ⅰ和Ⅱ

B.仅Ⅱ和Ⅲ

C.仅Ⅰ和Ⅲ

D.Ⅰ、Ⅱ、Ⅲ【答案】C【解析】用户登录成功就需要为这个用户创建进程来解释用户的各种命令操作,用户的相应操作都会反映为该用户进程的请求或反馈,便于系统管理;设备分配由相应进程提出申请,内核自动完成,对于设备的操作可以归于提出申请的这个进程,因此不需要创建新进程;启动程序执行,系统需要为这个程序创建一个对应的动态结构,也就是进程,来控制和管理这个程序的运行,可以简单地说启动程序的目的就是创建一个新进程来执行程序。

6下列选项中,降低进程优先权级的合理时机是(  )。[2010年统考]

A.进程的时间片用完

B.进程刚完成I/O操作,进入就绪列队

C.进程长期处于就绪列队

D.进程从就绪状态转为运行态【答案】A【解析】进行降低优先级的操作主要是为了改善交互式系统的响应时间,并均衡各个作业的公平性。A项进程时间片用完可以降低其优先级;B项中进程刚完成I/O,进入就绪队列后应该等待被处理器调度,故应提高优先级;C项中长期处于就绪队列中的进程应当提高其优先级,避免产生“饥饿”甚至“饿死”现象;D中优先级不应该在此时降低,应该在时间片用完后降低。

7设与某资源相关联的信号量初值为3,当前值为1,若M表示该资源的可用个数,N表示等待该资源的进程数,则M,N分别是(  )。[2010年统考]

A.0,1

B.1,0

C.1,2

D.2,0【答案】B【解析】题目中信号量初值为3,表示该资源初始时有3个。信号量当前值K>0时,表示此资源还有K个资源可用,题目中信号量当前值为1,表示还有1个可用资源,M应该为1。由于还存在可用资源,所以此时

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载