自考操作系统课后答案

更新时间:2023-12-06 16:30:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第一章引论

1、计算机系统由哪些部分组成?

答:计算机系统由硬件子系统和软件子系统组成。

2、什么是计算机的操作系统?

答:操作系统 是计算机的一种系统软件,由它统一管理计算机系统的资源和控制程序的执行。操作系统既是一种资源管理程序,又是一种其他程序执行的控制程序,其目的是提供一个供其它程序执行的良好环境。

3、操作系统管理计算机系统的哪些资源?

答:操作系统管理的计算机系统资源包括两大类:硬件资源和软件资源。计算机系统的硬件资源主要包括CPU、主存储器、辅助存储器(磁带、磁盘等)以及各种输入输出设备(键盘、显示器、打印机等);软件资源包括各种程序和数据。

4、操作系统怎样为用户提供良好的运行环境?

答:操作系统是一种系统程序,其目的是提供一个供其他程序执行的良好环境。

首先操作系统要使得计算机系统使用方便:操作系统为用户提供方便的使用接口,用户按需要输入命令或从提供的\菜单\中选择命令,操作系统按命令去控制程序的执行;用户也可以请求操作系统的功能模块为其服务,而不必了解硬件的特性。

其次操作系统要使得计算机系统能高效地工作:操作系统扩充硬件的功能,而硬件的功能发挥的更好;操作系统使拥护合理共享资源,防止各用户间的干扰;操作系统以文件形式管理软件资源,保证信息的安全和快速存取。

5、操作系统怎样提高系统的效率?

答:为提高系统的效率:

? 操作系统扩充硬件的功能,使硬件的功能发挥得更好; ? 操作系统使用户合理共享资源,防止各用户间的相互干扰; ? 操作系统以文件形式管理软件资源,保证信息安全和快速存取。

6、批处理操作系统怎样实现计算机操作的自动化?

答:用户把准备好的一批作业信息,包括程序、数据、作业控制说明书通过相应的输入设备传送到大容量的磁盘上等待处理。操作系统中的作业调度程序

按照某种原则从磁盘上选择若干作业装入主存储器,主存储器中的这些作业可以占用中央处理机运行。当某个作业执行结束时,启动打印机,输出计算结果。然后又可以从磁盘上选择作业装入主存储器,让其运行。这样,在作业控制说明书的控制下,无需认为干预,批处理操作系统实现了计算机操作的自动化。

7、分时操作系统的主要特点是什么?

答:分时操作系统支持多道程序同时执行,实现了人机交互对话,主要有以下特点:

? 同时性允许多个终端用户同时使用一个计算机系统;

? 独立性用户在各自的终端上请求系统服务,彼此独立,互不干扰;

? 及时性分时系统对用户的请求能在较短的时间内给出应答,使用户觉得系统即时响应了对他的请求而感到满意。

? 交互性采用了人-机对话的工作,用户在终端上可以直接输入、调试和运行自己的程序,能及时修改程序中的错误且直接获得结果。

8、什么是“前台”作业?什么是“后台”作业?为什么对“前台”作业要及时响应?

答:批处理操作系统实现自动控制无需人为干预,分时操作系统实现了人机交互对话,这两种操作系统各具有各自的优点。为了充分发挥批处理系统和分时系统的优点,一个计算机系统上配置的操作系统往往具有批处理能力,有提供分时交互的能力。这样,用户可以先在分时系统的控制下,以交互式输入、调试和修改自己的程序;然后,可以把调试好的程序转交给批处理系统自动控制其执行而产生结果。这些由分时系统控制的作业称为\前台\作业,而那些由批处理系统控制的作业称为\后台\作业。在这样的系统中,对前台作业应该及时响应,使用户满意;对后台作业可以按一定的原则进行组合,以提高系统的效率。

9、实时操作系统的主要特征是什么?

答:能使计算机系统接受到外部信号后及时进行处理,并且在严格的规定时间内处理结束,再给出反馈信号的操作系统统称\实时操作系统\,简称\实时系统\。

其特征是:(1)及时响应,快速处理 实时系统的时间要求是强制性严格规定的,仅当在规定的时间内返回一个正确的结果时,才能认为系统的功能是正确的。

(2)高可靠性和安全性 不强求系统资源的利用率

10、网络操作系统和分布式操作系统都是配置在计算机网络上的操作系统,它们之间有什么本质上的不同?

答:分布式操作系统与网络操作系统本质的不同之处在于,分布式操作系统的网络中的多台计算机没有主次之分;分布式操作系统能使系统中若干台计算机相互协作完成一个共同的任务。把一个计算问题分成若干个可并行执行的子运算,让每个子计算在系统中的各计算机上并行执行,充分利用各计算机的优势。这样,一个程序就分布在几台计算机并行执行,相互协作得到结果。

11、从资源管理的角度来看,操作系统的基本功能可分成哪些部分? 答:从资源管理的角度来看,操作系统的基本功能可分为五大部分

(1)处理器管理 为用户地分处理器时间,尽可能地使处理器处于忙状态,提高处理器的工作效率。

(2)存储管理 实现对主存储器的管理,为用户分配主存空间,保护主存中的程序和数据不被破坏,提高主存空间的利用率。

(3)文件管理 面向用户实现按文件名存取文件,管理用户信息的存储、检索、共享和保护,合理地分配和使用文件的存储空间。

(4)设备管理 负责管理各种外围设备,包括设备的分配、启动以及SPOOL的实现技术。

(5)作业管理 实现作业调度和控制作业的执行。作业调度从等待处理的作业中选择可以装入主存储器的作业,对已经装入主存储器的作业按用户的意图控制其执行。

第二章计算机系统结构

(1)计算机系统既有操作系统程序,又有用户程序,在什么情况下操作系统程序才能占用中央处理器? 这道题解答了三方面的内容:一个是程序和CPU之间的占用关系;一个是操作系统开始时占用CPU;最后一个是,操作系统在中断装置判断有事件发生时才让操作系统占用CPU。简单的说,就是操作系统是总管,没事的时候他等待,“有事”中断他出面。 答:一个计算机系统,尤其是采用多道程序设计的计算机系统,不仅有操作系统和其他的系统软件,而且还有若干应用程序。这些程序只有占用中央处理执行时才能履行自己职责。而中央处理器在任何时刻最多只能被一个程序占用。

计算机开启时,自动执行引导程序。引导程序首先进行系统初始化的工作,然后把操作系统中的核心装入主存储器。此后操作系统便等待用户请求(事件)的发生,当有某个事件出现,硬件便能识别并能发生一个中断,从而通知操作系统,由它的服务程序去处理,处理结束后,又等待下一个事件发生。

中断是计算机系统结构一个重要的组成部分。中断装置由一些特定的寄存器的控制线路组成,CPU每执行完一条指令,中断装置都要判断是否有事件发生。如果没有事件发生,CPU继续执行;若有事件发生,中断装置中断原先占

用CPU的程序的执行,让操作系统的处理事件服务程序占用CPU对事件进行处理,处理完后,再让被中断的程序继续占用CPU执行下去。

(2)阐述硬件的中断装置的作用。

答:中断是计算机系统结构一个重要的组成部分。在中断机制中的硬件部分(中断装置)的作用就是在CPU每执行完一条指令后,判别是否有事件发生,如果没有事件发生,CPU继续执行;若有事件发生,中断装置中断原先占用CPU的程序的执行,把被中断程序的断点保存起来,让操作系统的处理服务程序占用CPU对事件进行处理,处理完后,再让被中断的程序继续占用CPU执行下去。所以中断装置的作用总的来说就是使操作系统可以控制各个程序的执行,为用户提供各种服务。

(3)操作系怎样让多个程序同时执行? 以上几道题均涉及到中断机制,其实说的就是这个机制的作用,中断机制包括硬件部分和软件部分,硬件就是中断装置,由它来发现事件并告诉软件(操作系统),再配合操作系统来处理事件,所以计算机的任务管理就是由操作系统和中断装置的密切配合完成的。 答:一个计算机系统,尤其是采用多道程序设计的计算机系统,不仅有操作系统和其他的系统软件,而且还有若干应用程序。这些程序只有占用中央处理执行时才能履行自己职责。而中央处理器在任何时刻最多只能被一个程序占用。

中断装置在判别到有某个事件发生时,就会触发一个中断让操作系统去占用处理器。操作系统对事件处理结束后,又主动让出处理器,并根据对事件处理情况从那些具备占用处理器条件的程序中选择一个,让它占用处理器,直到系统再一次发生事件而被中断。操作系统总是按照预定的策略去选择可占用处理器的程序,系统中若干程序可以交替地占用处理器,形成多个程序同时执行的状态。

(4)为什么要把“启动I/O”等指令定义为特权指令?

答:一个程序可以在其它程序等待外围设备传送信息时占用处理器执行,在执行中如果它也使用启动指令去启动一台正在工作的外围设备,那么就会造成冲突。为保护输入输出的完整性,把“启动I/O”等的一类可能影响系统安全的指令定义为特权指令。特权指令只允许操作系统使用,用户程序不能使用特权指令。用户程序若要启动I/O,必须请求操作系统代为启动,这种方式不但可以保证安全地使用外围设备,正确地传送信息,而且可减少用户为启动设备而必须了解外围设备特性以及启动等工作,大大方便了用户。

(5)怎样限制用户程序中使用特权指令? 这三道题中的关键字是“特权指令”、CPU的两种工作方式“管态”和“目态”、访问地址、基址、限长寄存器等。弄清了这几个关键字的意义,也就清楚了系统中“硬件保护”的实现方法。 答:为了保证正确的操作,应该限制用户程序使用特权指令,为此,中央处理器设置了两种工作方式:管态和目态。在管态下,中央处理器可执行包含特权指令在内的一切指令;在目态下,中央处理器不准执行特权指令。操作系统在管态下工作,用户程序在目态下工作。如果中央处理器在目态下取到了特权指令,中央处理器就拒绝执行该指令,并产生“非法操作”事件经中断装置和操作系统通知用户修改。

(6)操作系统与硬件如何配合来实现存储保护的?

答:主存储器往往同时装入了操作系统程序和若干用户程序,为了保证正确操作,必须对主存储器区域进行存储保护。存储保护随着主存储器管理方式的不同,实现保护的方法也有所不同,一般是操作系统与硬件配合来实现存储保护。

在连续分配的存储系统中,硬件中设置了两个寄存器来限定用户程序执行时可以访问的空间范围。这两个寄存器是基址寄存器和限长寄存器,用来限定用户程序执行时可以访问的主存空间范围。程序执行时,系统对每一个访问内存的地址进行核对:\基址寄存器值≤访问地址≤基址寄存器值+限长寄存器值\成立,则允许访问;否则,不允许访问。这样就保护了该区域以外的存储信息不受到破坏,一旦程序执行中出错也不会涉及其他程序。

(7)为什么要研究操作系统的结构?

答:操作系统是一种程序量大且接口复杂的系统软件。设计一个操作系统要投入大量的人力和花费较长的时间。因而,如何保证操作系统能正确,高效地工作至关重要。由于程序的结构是影响程序质量的内在因素,因此,有必要对操作系统的结构进行研究。

正确性、高效性、可维护性和可移值性是操作系统结构设计的重要方面。 (8)应从哪些方面考虑操作系统的结构设计? 答:操作系统的结构设计应追求以下目标:

? 正确性:一个结构良好的操作系统不仅能保证正确性而且易于验证其正确性;

? 高效性:核心程序是影响计算机系统效率的的关键所在应遵循少而精的原则,使处理既有效又灵活。

? 可维护性:操作系统要容易维护

? 可移植性:在结构设计时,尽量减少与硬件直接有关的程序量并将其独立封装

(9)操作系统采用层次结构有什么优点? 操作系统结构的设计方法有:无序模块法、内核扩充法、层次结构法和管程设计法等。

//P2指示比P优先数大的第一个进程指针 while(P->prioritypriority && P1->Next) { //查找要插入位置的前后结点 P2=P1; P1=P1->Next; }

//查到后将P插入到就绪队列中 P->Next=P1; P2->Next=P; }//End Procedure

16、当进程调度选中一个进程后,怎样才能让它占用处理器?

答:当进程调度选中一个进程后,把选中进程的进程控制块中有关的现场信息,如通用寄存器、控制寄存器和程序状态字寄存器的内容送入处理器相应的寄存器中,处理器就按该进程的要求工作,达到了进程占用处理器的目的。

17、在分级调度算法中,为什么对不同就绪队列中的进程规定使用不同长度的时间片?

答:在分级调度算法中,对不同就绪队列中的进程,可规定使用不同长度的时间片,一般来说,第一级就绪队列的时间片短一些,以的各级就绪队列的时间片逐级延长,最后一级就绪队列的时间片最长,这样运行时间短的里程只需经过前面几级队列就能得到结果,且它们被优先调度,有利于提高系统的吞吐率。而对运行时间长的进程在进入了低级就绪队列后可得到较长的时间片,以减少调度次数来保证系统效率。对经常使用外围设备的进程来说,每次等待外围设备传输结束后总是排入第一级就绪队列,它们会被优先调度,有利于处理器与外围设务以及外围设备之间的并行工作,从而提高资源的使用效率。

18、有5个进程P1,P2,P3,P4,P5它们同时依次进入就绪队列,它们的优先数和所需要的处理器时间如表 3-1所示 进程 P1 P2 P3 P4 P5 处理器时间 10 1 2 1 5 优先数 3 1 3 4 2 忽略进行调度等所花费的时间,请回答下列问题

a、写出分别采用“先来先服务”和“非抢占式的优先数”调度算法选中进程

执行的顺序。

b、分别计算出上述两种算法使进程在就绪队列中的等待时间以及两种算法下的平均等待时间。

解释如下:按照优先数从大到小的顺序进程被调入处理器是优先数调度法的原则。但由于不是抢占式的优先数调度法,则在首先进入处理器的进程运行时不会被更高优先数的进程打断,因此,首先运行P1进程。在P1执行过程中,P2、P3、P4、P5相继进入进程队列。进程调度算法按照优先数从高到低的次序进行排列,等P1运行完毕时,此时应是P4调入,以此类推,之后相继进入CPU的应该是P3、P5、P2。

注:根据教材第三章的解释(第43页12行),是优先数从高到低的顺序排列,而根据Unix系统的实际情况,则是优先数最小的进程优先权最高(第223页倒5行).按此算法可得到的进程执行顺序为P1→P2→P5→P3→P4.(这两种不同的顺序并不表明实际进入处理器的进程其顺序会相反,因为在实际的操作系统中,确定优先数的原则和其进程调度算法总是配套的。)

解:a)采用先来先服务法的执行顺序是P1→P2→P3→P4→P5。这是由其进入的顺序所确定的。

采用“非抢占式的优先数”调度算法时,各进程的执行顺序是P1→P4→P3→P5→P2.

b)如表所示:先来先服务法: 进程 P1 P2 P3 P4 P5 平均等待时间 等待时间 0 10 11 13 14 运行时间 10 1 2 1 5 (0+10+11+13+14)/5=9.6 非抢占式的优先数调度算法: 进程 P1 P4 P3 P5 P2 平均等待时间 等待时间 0 10 11 13 18 运行时间 10 1 2 5 1 (0+10+11+13+18)/5=10.4

第四章存储器管理

1、解释下列术语:逻辑地址、绝对地址、重定位、程序浮动、存储保护 答:逻辑地址:用户程序中使用的从“0”地址开始的连续地址。

绝对地址:主存储器以字节为单位编址单位,每个字节都有一个地址与其对应,这些主存储器的地址编号就是绝对地址。

重定位:为了保证作业的正确执行,必须根据分配给作业的主存区域对作业中指令和数据的存放进行重定位,这种把逻辑地址转换成绝对地址的工作称为“重定位”或“地址转换”。重定位的方式有“静态重定位”和“动态重定位”两种。

程序浮动:若作业执行时,被改变了存放区域仍能正确执行,则称程序是可浮动的。采用动态重定位的系统支持“程序浮动”

存储保护:存储管理中为了防止各作业相互干扰和保护各区域内的信息不被破坏而采取的对各作业的存储区域进行保护的措施。

2、比较各种存储管理方式的特征(包括主存空间的分配方式、是否要有硬件的地址转换机构作支撑、适合单道或多道系统等)、重定位方式、地址转换的实现(操作系统和硬件怎样配合)、存储保护的实现(操作系统和硬件各自做些什么工作)。

答: 存储管理特征 方式 除操作系统占用的一部分存储空单分间外,其余的用户区域作为一个连区管续的分区分配给用户使用 理 不需要硬件转换机构 适用于单道系统 固定分区数目、大小固定 分区 设置上、下限寄存器 的管 不需要硬件转换机构 理 适用于多道系统 可变分区管理方式不是把作业装入到已经划分好的分区中,而是在可变分区的管理 作业要求装入主存储器时,根据作业需要的主存量和当时的主存情动态况决定是否可以装入该作业。 分区数目大小不定 设置基址、限长寄存器 适用于多道程序系统 需要硬件地址转换机构 重定位 逻辑地址+基址寄存器的值→绝对基址值≤绝对地址≤基址地址。 值+限长值 静态方式 逻辑地址+下限地址→绝对地址。 下限地址≤绝对地址≤上限地址 静态界限寄存器值+逻辑地址→绝对地主存最大地址≥绝对地方式 址 址≥界限地址 重定位 地址转换 存储保护 主存储器分为大小相等的\块\页式存储管理 程序中的逻辑地址进行分页,页的大小与块的大小一致。 用页表登记块页分配情况 需要硬件的支持 适用于多道系统 程序分段 每一段分配一个连续的主存段存区域,作业的各段可被装到不相连动态逻辑地址中的段号→查段表得到由段表中的标志位验证储管的几个区域中。 理 设置段表记录分配情况 需要硬件机构 适用于多道系统 类似页式管理: 页式类似页式管理将作业信息保存在虚拟磁盘上部分装入主存 存储 需要硬件支持 管理 适用于多道系统 逻辑地址的页号部分→页表动态中对应页号的起始地址→与逻辑重定地址的页内地址部分拼成绝对地类似页式管理 位 址。 若该页对应标志为0,则硬件形成\缺页中断\先将该页调入主存 段式类似段式管理将作业信息保存在虚拟磁盘上部分装入主存 存储 需要硬件支持 管理 适用于多道系统 动态重定类似段式管理 位 类似段式管理 重定本段起始地址+段内地址→绝对地存取是否合法,根据段位 址 表长度判断是否越界 动态逻辑地址的页号部分→页表中对由页表中的标志位验证重定应页号的起始地址→与逻辑地址存取是否合法,根据页位 的页内地址部分拼成绝对地址。 表长度判断是否越界

3、在可变分区管理方式下,采用移动技术有什么特点?移动一道作业时操作系统要做哪些工作?

答:采用移动技术的主要优点是:

1)可以使分散的空闲区集中起来,可以容纳新的作业,提高主存空间的利用率

2)方便作业执行过程中扩充主存空间,一道作业在执行中要求增加主存量时,只要移动邻近作业就可以增加它所点的分区长度。

移动一道作业时操作系统要进行的处理:

1)判断被移动的作业是否在与外围设备交换信息,如是则不能移动,否则可以移动。

2)操作系统在移动作业信息时先移动作业信息的存储位置。

3)修改主存分配表中和保存在进程控制块中的分区起始地址和长度信息。 4)采取必要措施,尽量减少移动的作业数和信息量,提高系统效率。

4、解释页式存储管理中为什么要设置页表和快表?

答:在页式存储管理中,主存被分成大小相等的若干块,同时程序逻辑地址也分成与块大小一致的若干页,这样就可以按页面为单位把作业的信息放入主存,并且可以不连续存放,为了在作业执行过程中准确地查表逻辑地址与绝对地址的的对应关系,就需要为每个作业建立一张页表,表示逻辑地址中的页号与主存中块号的对应关系。

页表一般存放在主存中,当要按给定的逻辑地址访问主存时,要先访问页表,计算出绝对地址,这样两次访主存延长了指令执行周期,降低了执行速度,而设置一个高速缓冲寄存器将页表中的一部分存放进去,这部分页表就是快表,访问主存时二者同时进行,由于快表存放的是经常使用的页表内容,访问速度很快,这样可以大大加快查找速度和指令执行速度。

5、什么叫虚拟存储器?怎样确定虚拟存储器的容量?

虚拟存储器是为“扩大”主存容量而采用的一种设计技巧,它利用作业在只装入部分信息时就可以执行的特性和程序执行中表现出来的局部性特性,借助于大容量的辅助存储器实现小主存空间容纳大逻辑地址空间的作业。

虚拟存储器的容量由计算机的地址结构(地址总线位数)决定。如计算机的地址总线位数为32位,则最大的虚存容量为2^32=4294967296B=4GB

6、叙述页式虚拟存储器的基本原理。

答:页式虚拟存储器是在页式存储的基础上实现虚拟存储器的,其工作原理是:

? 首先把作业信息作为副本存放在磁盘上,作业执行时,把作业信息的部分页面装入主存,并在页表中对相应的页面是否装入主存作出标志。 ? 作业执行时若所访问的页面已经在主存中,则按页式存储管理方式进行地址转换,得到绝对地址,否则产生“缺页中断”由操作系统把当前所需的页面装入主存。

? 若在装入页面时主存中无空闲块,则由操作系统根据某种“页面调度”算法选择适当的页面调出主存换入所需的页面。

7、用可变分区方式管理主存时,假定主存中按地址顺序依次有五个空闲区,空闲区的大小依次为32K、10K、5K,228K,100K.现有五个作业J1,J2,J3,J4,J5.它们各需主存1K,10K,108K,28K和115K.若采用最先适应分配算法能把这五个作业按J1--J5的次序全部装入主存?你认为按怎样的次序装入这五个作业可使主存空间利用率最高?

答:按最先适应算法时32K空闲区可装入J1、J2,剩下21K。228K空闲区中装入J3,J4,剩下92K,结果是J5无法装入。仍按最先适应算法,若调整作业

时间最短者优先算法”选中作业执行的次序以及它们的平均周转时间。

解:先来先服务法如下表: 作业进输入进入主开始计结束计序号 井时间 存时间 算时间 算时间 1 10:00 10:10 10:00 10:25 周转时间 解释 此时输入井中只有一个作业且满足资源要求,因此被选中运行。 作业2到达输入井,满足资源要求,装入主存,等到作业1运行完毕进入运行态。 由于作业3要求主存空间无法满足,因此作业4先行一步,4 10:35 10:35 10:55 11:15 40 运行期间作业5进入输入井,并满足资源要求,因此作业5进入主存就绪。 5 3 10:40 10:55 11:15 11:30 10:30 11:30 11:30 11:40 50 70 作业3仍要等候,作业5可以运行。 最后作业3装入主存并运行 25 2 10:20 10:20 10:25 10:55 35 平均周转时间为(22+35+40+50+70)/5=44分钟 按计算时间最短者优先算法如下表: 作业进输入进入主开始计结束计序号 井时间 存时间 算时间 算时间 1 10:00 10:10 10:00 10:25 周转时间 解释 此时输入井中只有一个作业且满足资源要求,因此被选中运行。 作业2到达输入井,满足资源要求,装入主存,等到作业1运行完毕进入运行。 由于作业3要求主存空间无法满足,因此作业4先行一步装入主存,当作业2让出处理器的同时,作业5满足资源要求4 3 10:35 10:35 11:10 11:30 10:30 11:30 11:30 11:40 55 70 进入主存就绪。根据算法作业5先进入处理器运行。 最后作业3装入主存并运行 25 2 5 10:20 10:20 10:25 10:55 10:40 10:55 10:55 11:10 35 30 平均周转时间:(25+35+30+55+70)/5=43 分钟

11、在上题中,若允许移动已在主存储器中的作业,则作业被选中的次序又是怎样的呢?并计算出它们的平均周转时间?

解:本题中,由于作业3需要3台磁带机,因此即使允许移动主存中的作业,得到足够存储空间,但是由于静态分配的策略,磁带机不足以让作业3满足。因此本题的结果和上题的结果是相同的。

第八章进程同步与通信

1、解释进程的顺序性和并发性。

答:目前使用的计算机基本上是冯.诺依曼式结构,其基本特点是处理器顺序执行指令。进程在顺序的处理器上的执行是严格按顺序进行的,这就是进程的顺序性。当一个进程独占处理器顺序执行时,具有两个特性:一、封闭性 二、可再现性。

在多道程序设计系统中,多个作业可以同时执行,一个作业又由多个进程协助完成,当一个进程的工作没有全部完成之前,另一个进程就可以开始工作,它们的执行在时间上是重迭的。我们把它们称为是“可同时执行的”。若系统中存在一组可同时执行的进程,则就该进程就具有并发性,可同时执行的进程称为“并发进程”。

2、并发进程执行时一定会产生与时间有关的错误吗?为什么?

答:并发进程由于其执行的随机性,执行速度不能由自己控制,往往会出现一个进程对另一进程的影响不可预测的情况,从而产生与时间有关的错误。但是并发进程并不一定都会产生与时间有关的错误:

首先,无关的并发进程不会产生与时间有关的错误;

其次,有交往的并发进程如果不交叉访问共享变量,也不会产生与时间有关的错误。

产生这类错误根本原因在于对共享变量不受限制的使用。

3、什么是临界区?什么是相关临界区?

答:并发进程中与共享变量有关的程序段称为“临界区”。相关临界区是指并发进程中涉及到相同变量的那些程序段。

4、对相关临界区的管理有哪些要求?

答:

1)一次最多让一个进程在临界区执行,当有进程在临界区时其他想进入临界区执行的进程必须等待。

2)任何一个进入临界区执行的进程必须在有限的时间内退出临界区,即任何一个进程都不应该无限地逗留在自己的临界区。

3)不能强迫一个进程无限地等待进入它的临界区,即有进程退出时应让一个等待进入临界区的进程进入它的临界区。

5、若用PV操作管理某一组相关临界区,其信号量S的值在[-1,1]之间变化,当S=-1,S=0,S=1时它们各自的物理含义是什么?

答:

S=-1 表示等待队列中有1个进程(|S|)等待进入临界区,而且当前已有进程在相关临界区中访问临界资源。

S=0:表示当前有进程在相关临界区访问临界资源,并且不允许任何进程使用临界资源。

S=1: 表示有一个进程可以访问临界资源或进入相关临界区执行。

6、两个并发进程的程序如下:

begin

N: integer; N:=3; cobegin PROCESS A begin L1:N:=N+5; goto L1 end; PROCESS B begin L2:print(N); N:=0; goto L2 end; coend; end;

若PROCESS A先执行了三个循环后,PROCESS A和PROCESS B又并发执行了一个循环,写出可能出现的打印值。正确的打印值应该是多少?请用PV操作进行管理,使它们并发执行时不出现与时间有关的错误。

解: 可能出现的打印值为18或23。因为N的初始值为3,当进程A执行三个循环后,N的值为18,此时Process A和ProcessB并发执行,如果正巧是B先进入CPU执行的话,打印值就是18,打印时A进程为N增加的值就没有被记录下来。正确的打印值应该是23。PV操作的管理程序如下:

begin N: integer; N:=3; S:SEmaphore; S:=1 cobegin PROCESS A begin L1:P(S); N:=N+5;

V(S); goto L1 end; PROCESS B begin L2:P(S); print(N); N:=0; V(S); goto L2 end; coend; end;

7、a,b两点之间是一段东西向的单行车道,现要设计一个管理自动系统,管理规则如下:当ab之间有车辆在行驶时同方向的车可以同时驶入ab段,但另一方向的车必须在ab段外等待;当ab之间无车辆在行驶时,到达a点(或b点)的车辆可以进入ab段,但不能从a点和b点同时驶入;当某方向在ab段驶出了ab段且暂无车辆进入ab段时,应让另一方向等待的车辆进入ab段行驶。请用PV操作为工具,对ab段实现正确管理以保证行驶安全。

解:在这里有两组进程,一组是向东行驶进程,一组是向西行驶进程,他们的相关临界区是ab道路.同时还要注意,各自进程还有相关临界区,那就是同方向进程的车辆总数(进入时加1,出ab段时要减1). 在各组进程访问自己的共享变量(本进程车辆数)时要进行PV操作,同时,当访问两组进程的共享变量(ab段)时也要进行PV操作.

过程如下

begin

S,SE,SW:SEmaphore;//S为两组不同进程的临界信号,SE,SW为各自临界信号 CountE,CountW:Interger;//分别为两种进程进入ab段的车辆数 CountE:= CountW:= 0;//初始时ab段无车辆 S:=SE:=SW:=1; //初始任何一边均可驶入 CoBegin

Process EASTi (i=1,2,3...) //向东行驶进程可以有多个 begin

P(SE);//检查有无正在向东驶入或驶出的车辆(因为要访问本组进程的共享变量 CountE) if CountE=0 then P(S);

//检查向东行驶车辆数是否为0

//如果为0时,要检查是否有向西行驶的车辆. //P(S)的作用就是给ab段上的信号S-1,

//如果原来有西行车辆,则操作后S小于0,本进程等待,

//如果原来没有,则S=0,禁止西行车辆进入ab段通行. //如果CountE不为0,说明已经有本方向车辆通行, //就不必对ab段使用信号进行处理,直接进入ab段. CountE:=CountE+1;//向东行驶车辆数增加1. V(SE); //允许同样向东行驶的车辆进程通行 pass(ab);//车辆驶过

P(SE); //又要访问本组进程临界区了 CountE:=CountE-1;//车子驶出ab段.

if CountE=0 then V(S);// 如果ab段无向东行驶车辆则允许ab段由向西行驶进程使用. V(SE);//本组临界区访问结束,允许其他东行车辆进入或离开ab段 end;

Process WESTj(j=1,2,3...)//向西行驶进程 begin

P(SW); //本进程与向东行驶的过程类同,只是共享变量和信号变量不同. if CountW=0 then P(S);

CountW:=CountW+1;//向西行驶车辆数增加. V(SW); //允许其他西行车辆进入 pass(ba); //车辆驶过 P(SW);

CountW:=CountW-1;//车子驶出ab段. if CountW=0 then V(S); V(SW); end; coend; end;

8、今有3个并发进程R,M,P,它们之间共享一个缓冲器。进程R负责从输入设备读信息,每读出一个记录后把它存放在缓冲器B中。进程M在缓冲器B中加工进程R存入的记录。进程P把加工后的记录打印输出。缓冲器B中每次只能存放一个记录,当记录被加工输出后,缓冲器B中又可存放一个新记录。请用PV操作为同步机制写出它们并发执行能正确工作的程序。

解:在这题中 R 是生产者, M是 R 的消费者。将 M 看成是生产者,则 P是 M的消费者。设置三个信号量SR,SM,SP,当其值为1时,SR表示缓冲器为空,SM表示缓冲器中存有待加工记录,SP表示缓冲器中记录已被加工好了。

begin

Buffer:integer; SR,SM,SP:SEmapore; SR=1;SM=0;SP=0; cobegin

PROCESS R //读入一个记录进程

begin L1: read;

P(SR); //读之前检查缓冲器是否为空,为空则读入一条记录 Buffer:=read;

V(SM); //读好后允许加工进程工作 goto L1 end;

PROCESS M //加工记录进程 begin

L2:product;

P(SM); //检查缓冲器中是否有待加工记录 Buffer:=product;

V(SP); //允许打印进程工作 goto L2 end;

PROCESS P //打印进程 begin L3:print

P(SP); //检查是否可以打印 take a product from Buffer; V(SR); //允许读入记录 print; goto L3 end; coend; end;

9、在公共汽车上,司机和售票员的工作流程如下图所示。为保证乘客的安全,司机和售票员应密切配合协调工作。请用PV操作来实现司机与售票员之间的同步。

解:在这个问题中,有两组进程,一组是司机启动车辆,行车和停车的进程,另一组是售票员售票、开车门和关车门的进程,两组进程的制约关系为启动车辆->行驶-停车->开车门->(旅客上车)关车门->启动车辆。关键在于开门

应在停车之后,启动车辆应在关门之后。设有两个信号用于司机和售票员之间通信,一个是Run,另一个是Open,Run等于1表示可以开车,Open等于1表示可以开门。

过程如下:

begin Buffer:integer; Run,Open:Semapore; Run:=1;Open:=0; cobegin

PROCESS Busman; //司机进程 begin

L1:P(Run) //检查是否可以启动车辆 start; //启动车辆 driving; //行驶 stop; //停车 V(Open); //允许开门 goto L1 end;

RPOCESS Conductor; //售票员进程 begin

L2: selling tickets;//售票

P(Open);//检查是否可以打开车门 Open the door;//开车门让乘客上车 Close the door; //关门 V(Run); //允许开车 goto L2; end; coend; end;

10、请用进程通信的办法解决生产消费者问题。

解:设生产者的与消费者之间进行直接通信,在message中说明可用产品的信息。

begin

Process M; //生产者进程: begin

L1:{生产物品};

send (B,message);//发送一条消息给B进程 goto L1; end;

Process B; 消费者进程:

begin

L2:recieve(M,message); //取出信箱信件,如有信件则可以消费 {取出物品消费}; goto L2; end; end;

第九章死锁

1、什么叫死锁?什么原因会引起死锁?

答:若系统中存在一组进程(两个或多个进程),它们中的每一个进程都占用了某种资源而又都在等待其中另一个进程所占用的资源,这种等待永远不能结束,则说系统出现了“死锁”。

死锁产生的原因有现除了与资源的分配策略有关,当系统中若干进程需求资源的总数大于系统能提供的资源数时,进程间会出现竞争资源,如果对进程竞争的资源分配不当就会引起死锁。

死锁的出现也与并发进程的执行速度有关,并发进程的执行速度是不可预知的。因此可能形成死锁。

2、某系统有输入机和打印机各一台,今有两个进程都要同时使用它们,采用PV操作实现请求使用和归还释放后,还会产生死锁吗?若否,说明理由;若会产生死锁则给出一种防止死锁的方法。

答:这两个进程采用PV操作,可能不产生死锁,也可能产生死锁。如果PV操作对两个资源进行按序分配,则不会产生死锁,反之,则于进行的并发性,其执行速度无法预知,当一个进程得到输入机另一进程得到打印机时,PV操作虽然实现互斥访问,但两个进程进入循环等待而死锁。

以下是根据按序分配的策略写成的PV操作控制方法:

begin

S1,S2:semaphore; S1=1;S2=1; cobegin PROCESS P1 begin

P(S1); //先申请S1再申请S2

P(S2); 操作

V(S1); V(S2); end; PROCESS P2 begin

P(S1); //先申请S1再申请S2

P(S2); 操作 V(S1); V(S2); end; end;

可见其会类似于哲学家一样而产生死锁。(如进程R1占用了打印机,请求输入设备,而R2占用输入设备,请求打印机)。解决的方法是同时申请这两个资源,一起使用。

3、若系统只有一个进程,它会被卷入死锁吗?请解释你的回答。 答:当系统只有一个进程时,不会产生死锁现象,因为死锁现象必须要存在一组进程,在这组进程竞争资源的情况下才有可能产生。

4、现有同类资源12个供3个进程共享,假定进程所需资源和已占资源的情况如下表所示。3个进程在执行中又都提出申请一个资源的要求,回答: 进程 A B C 已占资源数 1 4 5 最大需求数 4 6 8 a.如果先满足进程A的要求,系统将会出现什么现象?解释之。 b.你认为应按怎样的次序分配资源才合适?为什么?

答:a.在当前状态下,尚余2个资源可供分配,如果先满足进程A的要求,把其中1个资源分配给A进程,此时A、B、C进程仍未拥有足够资源完成任务。系统进入不安全状态,随着进程的继续执行,剩余的1个资源无论分给哪个进程,均导至所有进程进入等告待而出现死锁。

b.根据目前的资源占用情况,应该先满足B的要求,把剩下的2个资源分配给他,这样,B进程可执行完毕归还系统6个资源。这6个资源可以满足A和C进程的资源需求,从而使系统处于安全状态。

5、某系统有A,B,C,D这4类资源供5个进程共享,进程对资源的需求和分配情况如下表所示。现在系统还剩资源A类1个,B类5个,C类2个和D类0个,请按银行家算法回答下面问题: 已占资源数 进程 A B C D P1 P2 P3 P4 P5 0 0 1 2 1 0 0 0 1 3 5 4 0 6 3 2 0 0 1 4 A B C D 0 0 1 2 1 7 5 0 2 3 5 6 0 6 5 2 0 6 5 6 最大需求数 a.现在系统是否处于安全状态?

b.如果现在进程P2提出需要(0,4,2,0)个资源的要求,系统能否满足它的请求?

按照银行家算法,当进程首次申请资源时,要测试该进程对资源的最大需求量,如果系统现存的资源可以满足它的最大需求量则按当前的申请分配资源,否则就推迟分配。

当进程在执行继续申请资源时,先测试进程已占有的资源数与本次申请的资源数之和是否超过了该进程对资源的最大需求量。若超过则拒绝分配资源,若没有超过则再测试系统现存的资源能否满足该进程尚需的最大资源数,若能满足则按当前的申请量分配资源,否则也要推迟分配。

答:a.在这里,进程P1已经拥有足够资源,在执行行后可归还C和D资源,,同时,进程P3可以得到足够的资源完成执行,其后,P2,P4、P5可以依次得到足够的资源来完成,因此,用银行家算法分配资源时,系统处于安全状态。

b.系统可满足进程P2的资源要求。根据银行家算法,P2进程首次申请B类资源4个,不大于其所需的最大资源数(7个),也不大于系统尚存可用资源数(5个),同样对于C类资源也是可以满足的,因此系统按其当前申请数分配给P2进程。系统仍能按前面所述的资源分配序列P1,P3,P2,P4,P5来完成运行,系统处于安全状态。

6、某系统有同类资源m个供n个进程共享,如果每个进程最多申请x个资源(1≤x≤m)且各进程的最大需求量之和小于(m+n),证明该系统不会发生死锁。

证明:因为每个进程最多申请x个资源,最坏情况下n个进程各已申请了x-1 个资源。所以现在还剩下的资源是m-n(x-1),又因为各进程的最大需求量之和小于(m+n),因此有n(x-1)<m (即每个进程至少还差一个资源才能得到满足)。所以剩余资源m-n(x-1)≥1,这样,系统至少还有一个资源可使其中一个进程得到所需的全部资源,在它执行结束后,归还的资源可供其他进程使用,因而不可能发生死锁。

15、什么是UNIX进程的对换空间?怎样管理对换空间?

答:磁盘上设置开辟一个足够大的区域,为对换区。当内存中的进程要扩大内存空间,而当前的内存空间又不能满足时,则可把内存中的某些进程暂换出到对换区中,在适当的时候又可以把它们换进内存。因而,对换区可作为内存的逻辑扩充,用对换技术解决进程之间的内存竞争。 UNIX对内存空间和对换区空间的管理都采用最先适应分配算法。对换空间是由一组连续的磁盘块组成的,每块大小相同。对换空间以块为单位进行分配,为了管理对换空间,在内存中设置一个数组,称为映射图。该图中每个项是一个记录,用来登录空闲的对换空间,该记录有两个域,第一个域登录空闲空间的起始地址,第二个域登录该组空闲对换空间的块数。

16、UNIX文件系统有什么特点?UNIX怎样实现文件目录的检索? 答:在UNIX系统中,文件的逻辑结构是流式文件。文件的物理结构是采用索引结构方式。在UNIX中,把外围设备也当作文件看待,称为设备文件。所以,UNIX中的文件包括普通文件、目录文件和设备文件。

UNIX的文件系统分成基本文件系统和可装卸的子文件系统两部分,二者都有自己独立的目录结构。基本文件系统是整个UNIX文件系统的继承,称为根文件系统,系统一理启动运行,基本文件系统不能脱卸而子文件系统可以随时更换。这种结构使得文件系统易于扩充和更改。

UNIX采用的树形目录结构,UNX中每个文件有一个唯一的索引节点,静态存放在磁盘上,又称磁盘索引节点。为了加快访问文件的速度,UNIX在内存开辟了一个索引节点缓冲区,用来建立活动索引节点表。通过文件目录、磁盘索引结点和活动索引结点系统可以快速有效地进行目录检索了。

17、进程打开文件表和系统打开文件表的作用是什么?

答:UNIX在整个系统运行期间维护一张系统打开文件表,每个用户进程有一张进程打开文件表,以实现对文件读写操作的动态管理。

一个文件可以被同一个进程或不同进程以相同或不同的路径同时打开,在请求打开时可以提出相同或不同的打开方式(只读、写、读写)。UNIX设置的系统打开文件表用于反映对被打开文件进程操作的动态信息。主要用于对文件的读写控制。

UNIX允许每个进程同时打开多个文件,但规定每个进程最多同时打开15个文件。UNIX为每个进程设置的进程打开文件表,其中的表项对应指向系统打开文件表中的一个表项。

18、UNIX怎样管理磁盘上的文件存储空间?

答: UNIX中的每一个文件系统的磁盘空间可以分成几个部分:包括引导块、超级块、索引节点区和文件存储区。

UNIX中可分配的磁盘空间有两类。索引结点区和存放文件的存储区。 对索引节点为区的管理:在索引节点餐中,每一块可用来存放一占;建立文件时,从中找到一个空闲块存放该文件的索引节点;删除文件时,置该文件的索引节点为空闲。

对文件存储区的管理:对文件存储区中的空闲块采用成组连接的方式管理每1000个空闲块为一组。

19、UNIX块设备缓冲技术有什么特点?设备使用过的缓冲区被释放时链入了空缓冲区队列,为什么还要把该缓冲区保留在设备缓冲区队列中?

答:UNX系统采用缓冲技术实现设备的读写操作,其目的是减少启动设备的次数,减少对块设备的访问次数,减少输入输出操作所区费的时间。提高整个系统的吞吐量。

UNIX系统为磁盘的读写操作设置了一组缓冲区,构成缓冲区池。每个缓冲区包含用于存放磁盘块信息的缓冲区数据块和用于缓冲区管理的缓冲区控制块。UNIX系统根据缓冲区使用情况,把他们分成不同队列:空闲缓冲区队列和设备缓冲区队列。

设备使用过的缓冲区被释放时链入了空缓冲区队列,这样可以充分利用缓冲区,在需要时作为空闲缓冲区分配,而把它保留在设备缓冲队列中,可以在需要时继续使用缓冲区中的数据。因为只要该缓冲区还没有被重新分配,则其中信息不会改变。当需要时只要把该缓冲区从空闲缓冲区队列中退出就可以继续使用该缓冲区中的信息了。

20、什么情况下要对块设备缓冲区置DELWR(延迟写)标志?为什么要把有DELWR标志的缓冲区链入空闲缓冲区队列?又为什么不能有把有DELWR标志的缓冲区立即分配?

答:DELWR标志表示缓冲区中的内容尚未写回到磁盘上,所以在缓冲区的数据块尚未写到磁盘上是要设置DELWR标志,这样当该缓冲区需另作它用时,就可以根据这个标志,首先把该缓冲区的内容写回到磁盘上。

当分配缓冲区时总是摘取空闲缓冲区队列中的第一个缓冲区,有DELWR的缓冲区链在空闲区队列中的目的是为了使缓冲区能被充分利用上,而当需要这个缓冲区时,由于有DELWR标志,说明缓冲区中的信息尚未写入磁盘,因此不能分配。

21、字符设备的缓冲区为什么与块设备的缓冲区不同?

答:UNIX系统对块设备采用缓冲区池的方式实施缓冲技术,以减少设备启动次数及输入输出操作花费的时间,提高整个系统的吞吐量。

字符设备工作速度低,一次输入输出要求传送字节数少而且不固定,所以不适宜采用块设备管理中的缓冲技术,而是采用缓冲区容量较小的,易管理的字符缓冲技术。

本文来源:https://www.bwwdw.com/article/copt.html

Top