p13
答:操作系统是计算机的一种系统软件,由它统一管理计算机系统的资源和控制程序的执行。操作系统既是一种资源管理程序,又是一种其他程序执行的控制程序,其目的是提供一个供其它程序执行的良好环境。
答:操作系统管理的计算机系统资源包括两大类:硬件资源和软件资源。计算机系统的硬件资源主要包括CPU、主存储器、辅助存储器(磁带、磁盘等)以及各种输入输出设备(键盘、显示器、打印机等);软件资源包括各种程序和数据。
答:操作系统是一种系统程序,其目的是提供一个供其他程序执行的良好环境。
首先操作系统要使得计算机系统使用方便:操作系统为用户提供方便的使用接口,用户按需要输入命令或从提供的"菜单"中选择命令,操作系统按命令去控制程序的执行;用户也可以请求操作系统的功能模块为其服务,而不必了解硬件的特性。
其次操作系统要使得计算机系统能高效地工作:操作系统扩充硬件的功能,而硬件的功能发挥的更好;操作系统使拥护合理共享资源,防止各用户间的干扰;操作系统以文件形式管理软件资源,保证信息的安全和快速存取。
答:为提高系统的效率:
操作系统扩充硬件的功能,使硬件的功能发挥得更好;
操作系统使用户合理共享资源,防止各用户间的相互干扰;
操作系统以文件形式管理软件资源,保证信息安全和快速存取。
6、批处理操作系统怎样实现计算机操作的自动化?通过相应的输入设备传送到大容量的磁盘上等待处理。操作系统中的作业调度程序按照某种原则从磁盘上选择若干作业装入主存储器,主存储器中的这些作业可以占用中央处理机运行。当某
答:用户把准备好的一批作业信息,包括程序、数据、作业控制说明书个作业执行结束时,启动打印机,输出计算结果。然后又可以从磁盘上选择作业装入主存储器,让其运行。这样,在作业控制说明书的控制下,无需认为干预,批处理操作系统实现了计算机操作的自动化。
答:分时操作系统支持多道程序同时执行,实现了人机交互对话,主要有以下特点:
同时性 允许多个终端用户同时使用一个计算机系统;
独立性 用户在各自的终端上请求系统服务,彼此独立,互不干扰;
及时性 分时系统对用户的请求能在较短的时间内给出应答,使用户觉得系统即时响应了对他的请求而感到满意。
交互性 采用了人-机对话的工作,用户在终端上可以直接输入、调试和运行自己的程序,能及时修改程序中的错误且直接获得结果。
8、什么是“前台”作业?什么是“后台”作业?为什么对“前台”作业要及时响应?
答:批处理操作系统实现自动控制无需人为干预,分时操作系统实现了人机交互对话,这两种操作系统各具有各自的优点。为了充分发挥批处理系统和分时系统的优点,一个计算机系统上配置的操作系统往往具有批处理能力,有提供分时交互的能力。这样,用户可以先在分时系统的控制下,以交互式输入、调试和修改自己的程序;然后,可以把调试好的程序转交给批处理系统自动控制其执行而产生结果。这些由分时系统控制的作业称为"前台"作业,而那些由批处理系统控制的作业称为"后台"作业。在这样的系统中,对前台作业应该及时响应,使用户满意;对后台作业可以按一定的原则进行组合,以提高系统的效率。
答:能使计算机系统接受到外部信号后及时进行处理,并且在严格的规定时间内处理结束,再给出反馈信号的操作系统统称"实时操作系统",简称"实时系统"。
其特征是:(1)及时响应,快速处理
实时系统的时间要求是强制性严格规定的,仅当在规定的时间内返回一个正确的结果时,才能认为系统的功能是正确的。
(2)高可靠性和安全性 不强求系统资源的利用率
答:计算机硬件不再以物理上独立的装置形式出现,而是大部分或全部都隐藏和嵌入到各种应用系统中。我们把这样的系统称为嵌入式系统。
嵌入式系统是指运行在嵌入式系统中对各种部件、装置等资源进行统一协调、处理和控制的系统软件。
答:微型化和实时性。
12、网络操作系统和分布式操作系统都是配置在计算机网络上的操作系统,它们之间有什么本质上的不同?
答:分布式操作系统与网络操作系统本质的不同之处在于,分布式操作系统的网络中的多台计算机没有主次之分;分布式操作系统能使系统中若干台计算机相互协作完成一个共同的任务。把一个计算问题分成若干个可并行执行的子运算,让每个子计算在系统中的各计算机上并行执行,充分利用各计算机的优势。这样,一个程序就分布在几台计算机并行执行,相互协作得到结果。
13、从资源管理的角度来看,操作系统的基本功能可分成哪些部分?
答:从资源管理的角度来看,操作系统的基本功能可分为五大部分
(1)处理器管理 为用户地分处理器时间,尽可能地使处理器处于忙状态,提高处理器的工作效率。
(2)存储管理 实现对主存储器的管理,为用户分配主存空间,保护主存中的程序和数据不被破坏,提高主存空间的利用率。
(3)文件管理 面向用户实现按文件名存取文件,管理用户信息的存储、检索、共享和保护,合理地分配和使用文件的存储空间。
(4)设备管理 负责管理各种外围设备,包括设备的分配、启动以及SPOOL的实现技术。
第二章复习题答案p33
答:一个计算机系统,尤其是采用多道程序设计的计算机系统,不仅有操作系统和其他的系统软件,而且还有若干应用程序。这些程序只有占用中央处理执行时才能履行自己职责。而中央处理器在任何时刻最多只能被一个程序占用。
计算机开启时,自动执行引导程序。引导程序首先进行系统初始化的工作,然后把操作系统中的核心装入主存储器。此后操作系统便等待用户请求(事件)的发生,当有某个事件出现,硬件便能识别并能发生一个中断,从而通知操作系统,由它的服务程序去处理,处理结束后,又等待下一个事件发生。
中断是计算机系统结构一个重要的组成部分。中断装置由一些特定的寄存器的控制线路组成,CPU每执行完一条指令,中断装置都要判断是否有事件发生。如果没有事件发生,CPU继续执行;若有事件发生,中断装置中断原先占用CPU的程序的执行,让操作系统的处理事件服务程序占用CPU对事件进行处理,处理完后,再让被中断的程序继续占用CPU执行下去。
答:中断和通道技术的出现是基础。
3、操作系统怎样让多个程序同时执行?
答:一个计算机系统,尤其是采用多道程序设计的计算机系统,不仅有操作系统和其他的系统软件,而且还有若干应用程序。这些程序只有占用中央处理执行时才能履行自己职责。而中央处理器在任何时刻最多只能被一个程序占用。
中断装置在判别到有某个事件发生时,就会触发一个中断让操作系统去占用处理器。操作系统对事件处理结束后,又主动让出处理器,并根据对事件处理情况从那些具备占用处理器条件的程序中选择一个,让它占用处理器,直到系统再一次发生事件而被中断。操作系统总是按照预定的策略去选择可占用处理器的程序,系统中若干程序可以交替地占用处理器,形成多个程序同时执行的状态。
答:一个程序可以在其它程序等待外围设备传送信息时占用处理器执行,在执行中如果它也使用启动指令去启动一台正在工作的外围设备,那么就会造成冲突。为保护输入输出的完整性,把“启动I/O”等的一类可能影响系统安全的指令定义为特权指令。特权指令只允许操作系统使用,用户程序不能使用特权指令。用户程序若要启动I/O,必须请求操作系统代为启动,这种方式不但可以保证安全地使用外围设备,正确地传送信息,而且可减少用户为启动设备而必须了解外围设备特性以及启动等工作,大大方便了用户。
答:为了保证正确的操作,应该限制用户程序使用特权指令,为此,中央处理器设置了两种工作方式:管态和目态。在管态下,中央处理器可执行包含特权指令在内的一切指令;在目态下,中央处理器不准执行特权指令。操作系统在管态下工作,用户程序在目态下工作。如果中央处理器在目态下取到了特权指令,中央处理器就拒绝执行该指令,并产生“非法操作”事件经中断装置和操作系统通知用户修改。
答:主存储器往往同时装入了操作系统程序和若干用户程序,为了保证正确操作,必须对主存储器区域进行存储保护。存储保护随着主存储器管理方式的不同,实现保护的方法也有所不同,一般是操作系统与硬件配合来实现存储保护。
在连续分配的存储系统中,硬件中设置了两个寄存器来限定用户程序执行时可以访问的空间范围。这两个寄存器是基址寄存器和限长寄存器,用来限定用户程序执行时可以访问的主存空间范围。程序执行时,系统对每一个访问内存的地址进行核对:"基址寄存器值≤访问地址≤基址寄存器值+限长寄存器值"成立,则允许访问;否则,不允许访问。这样就保护了该区域以外的存储信息不受到破坏,一旦程序执行中出错也不会涉及其他程序。
答:操作系统是一种程序量大且接口复杂的系统软件。设计一个操作系统要投入大量的人力和花费较长的时间。因而,如何保证操作系统能正确,高效地工作至关重要。由于程序的结构是影响程序质量的内在因素,因此,有必要对操作系统的结构进行研究。
8、应从哪些方面考虑操作系统的结构设计?(0904考题33)
答:操作系统的结构设计应追求以下目标:
正确性:一个结构良好的操作系统不仅能保证正确性而且易于验证其正确性;
高效性:核心程序是影响计算机系统效率的的关键所在应遵循少而精的原则,使处理既有效又灵活。
可维护性:操作系统要容易维护
可移植性:在结构设计时,尽量减少与硬件直接有关的程序量并将其独立封装
答:各种设计方法总的目标都要保证操作系统工作的可靠性。层次结构法的最大特点是把整体问题局部化,采用层次结构不仅结构清晰,而且便于调试,有利于功能的增加,删减和修改。层次结构的主要优点是有利于系统的设计和调试,正确性容易得到保证,也提高了可维护性和可移植性。
答:用户是通过操作系统来使用计算机系统的,操作系统为用户提供两种类型的使用接口:
操作员接口:用户可以用作业控制语言写出控制作业执行步骤的"作业说明书",也可以从键盘上输入操作控制命令或从"命令菜单"中选择命令指出作业的执行步骤。
程序员接口:操作系统提供了许多不同功能的子程序-系统功能调用,用户可以在程序中调用这些子程序。
答:在用户编写的源程序一级,用户使用程序设计语言描述算题任务的逻辑要求,有一些要求的实现只有通过操作系统的功能程序才能完成。操作系统编制了许多不同功能的子程序,用户程序在执行中可以调用这些子程序。由操作系统提供的这些子程序称为"系统功能调用"程序,简称"系统调用"。系统调用是操作系统提供给用户程序的服务接口。
答:从结构上看,UNIX可以分成内核层和外壳层两部分。
内核层是UNIX操作系统的核心,它实现存储管理、文件管理、设备管理、进程管理等功能并为外壳层提供系统调用。
外壳层为用户提供各种操作命令(UNIX把它们称为shell命令)和程序设计环境。
外壳层由shell解释程序、支持程序设计的各种语言(如C、PASCAL和BASIC)、编译环境和解释程序、实用程序和系统库等组成。
UNIX系统不允许外壳层程序直接访问和干扰内核程序,因此,UNIX系统提供两种程序运行环境,即用户态和核心态.
UNIX系统的层次结构具有良好的性能,主要包括:短小精悍、简洁有效、易移植、可扩充、开放性好等。
13、UNIX为用户提供怎样的使用接口?(201004.33)
答:UNIX的操作员通过操作控制命令来启动外壳层的用户程序执行。
UNIX的程序员接口就是其内核提供的系统调用,它是内核为外壳的用户程序提供的服务界面,也就是操作系统支持用户程序正常工作接口。
系统调用是用户程序请求操作系统继其服务的惟一形式,UNIX规定用户程序调用“trap指令”请求系统服务。
14、、什么是UNIX的shell文件(shell进程)?请按自己的需要写一个shell文件。
答:为了方便用户,UNIX系统允许用户使用shell命令语言编辑成一个文件来表示一组命令的执行顺序,用shell语言编辑成的文件称shell文件。例P29例题。
15、带参数的shell文件有什么优点?试写一个带参数的shell文件。
具有通用性,只要在启动shell文件执行的csh命令中给出不同的实际参数,就可对不同的源程序进行处理。例P29例题
在用户程序中,根据需要,在适当的位置使用trap指令来请求系统功能调用。当处理器执行到trap指令时便形成了一个中断事件,此时将暂停当前用户程序的执行,而由UNIX系统内核的trap处理子程序来处理这个中断事件。
根据trap指令中的系统调用编号查系统调用程序入口表,得到该系统调用所带的参数个数和相应的处理程序的入口地址。然后把参数传送到内核的系统工作区,再按处理程序入口地址转向该系统调用的处理程序执行。
如果一个程序的运行需要较长的时间,且该程序运行时不再需要从终端上输入信息,那么用户可以要求UNIX把它转入后台运行,而不再加以监视。
UNIX规定只要在请求后台执行的命令末尾输入字符&,系统在执行命令时,若发现末尾有&,则就把实现这条命令功能的程序转入后台执行。
UNIX把一个程序转入后台执行后,不等该程序执行完就立即返回前台,且显示可以输入新命令的提示符。如果这时用户又输入了一条新命令,那么实现这条命令功能的程序就与已转入后台执行的程序同时执行。实现了一个用户同时执行两个以上的任务。
第三章处理器管理p79
答:让多个计算问题同时装入一个计算机系统的主存储器并行执行,这种设计技术称“多道程序设计”,这种计算机系统称“多道程序设计系统” 或简称“多道系统”。
碌状态,系统资源被充分利用;
答:多道程序设计利用了系统与外围设备的并行工作能力,从而提高工作效率。具体表现为:
- 提高了处理器的利用率;
- 充分利用外围设备资源:计算机系统配置多种外围设备,采用多道程序设计并行工作时,可以将使用不同设备的程序搭配在一起同时装入主存储器,使得系统中各外围设备经常处于忙
- 发挥了处理器与外围设备以及外围设备之间的并行工作能力;
从总体上说,采用多道程序设计技术后,可以有效地提高系统中资源的利用率,增加单位时间内的算题量,从而提高了吞吐率。
答:多道程序设计对算题量和算题时间的影响。 采用多道程序设计能改变系统资源的使用情况,提高系统效率。但是应注意以下两个问题:
- 可能延长程序的执行时间;
- 并行工作道数与系统效率不成正比。从表面上看,增加并行工作道数就可提高系统效率,但实际上并行工作道数与系统效率是不成正比,因为并行的道数要根据系统配置的资源和用户对资源的要求而定:
(1)主存储器的大小限制了可同时装入的程序数量;
(2)外围设备的数量也是一个制约条件;
(3)多个程序同时要求使用同一资源的情况也会经常发生。
总之,多道程序设计能提高系统资源的使用效率,增加单位时间的算题量;但是对每个计算问题来说,从算题开始到全部完成所需要的时间可能延长,另外在确定并行工作道数时应综合系统的资源配置和用户对资源的要求。
4、答:单道时处理器的利用率为:(18+18)/(60+60)=30%
两道并行是处理器的利用率为:(18+18)/(72=50%
利用率提高了(50-30)/30=66.7%
5、操作系统中为什么要引入“进程”? (200907.34)
答:程序是具有特定功能的一组指令或语句的集合,它指出了处理器执行操作的步骤。在多道程序设计的系统中,可能有多个程序同时运行,而同一个程序也可能多次并行执行,仅用程序的概念不能正确反映出程序执行时的活动规律和状态变化,为了从变化的角度动态研究程序的执行,就需要引入“进程”的概念。
进程是指一个程序在一个数据集合上的一次执行(三个“一”)。程序是静止的,进程是动态的(执行),进程包括程序和程序处理的对象,进程能够得到程序处理的结果。
6、可再入程序有什么特性? 它有什么特性?
答:可再入程序是指一个能够被多个用户同时调用的程序。(可以再次调入)。它的特性有两点:(1) 可再入程序必须是纯代码,在执行时自身不改变;(2) 一个可再入程序要求调用者提供工作区,以保证程序以同样方式为各用户服务。
7、进程有哪些基本状态?它们的变化关系是怎样的?
答:通常,根据进程执行过程中不同时刻的状态,可归纳为三种基本状态:
·等待态:等待某个事件的完成;
·就绪态:等待系统分配处理器以便运行;
·运行态:占有处理器正在运行。
进程在执行中状态会不断地改变,每个进程在任何时刻总是处于上述三种基本状态的某一种基本状态.
运行态→等待态 往往是由于等待外设,等待主存等资源分配或等待人工干预而引起的。
等待态→就绪态 则是等待的条件已满足,只需分配到处理器后就能运行。
运行态→就绪态 不是由于自身原因,而是由外界原因使运行状态的进程让出处理器,这时候就变成就绪态。例如时间片用完,或有更高优先级的进程来抢占处理器等。
就绪态→运行态 系统按某种策略选中就绪队列中的一个进程占用处理器,此时就变成了运行态。
8、阐述进程控制块的作用?
答:进程控制块(Process Control Block,简称PCB),是操作系统为进程分配的用于标志进程,记录各进程执行情况的。进程控制块是进程存在的标志,它记录了进程从创建到消亡动态变化的状况,进程队列实际也是进程控制块的链接。操作系统利用进程控制块对进程进行控制和管理。
进程控制块的作用有:
- (1)记录进程的有关信息,以便操作系统的进程调度程序对进程进行调度。这些信息包括标志信息、说明信息、现场信息和管理信息等;
- (2)标志进程的存在,进程控制块是进程存在的唯一标志
9、进程能否访问自己的进程控制块内容?
进程控制块是系统为程序建立的用于标志进程,记录各进程执行情况的。进程本身不能访问或者修改自己的进程控制块的内容,但父进程可以访问或修改其子孙进程的进程控制块内容,以便对它的子孙进程进行必要的管理和控制。
10、处理器为什么要区分“目态”和“管态”两种操作模式?
答:硬件提供的指令系统中有一部分不允许用户程序直接使用,这些不允许用户程序使用的指令称特权指令,特权指令只允许操作系统进行调度、控制或启动外围设备的程序使用。为了避免错误地使用特权指令,处理器分为两种操作模式:目态-只能执行特权指令以外的指令、管态-可执行指令系统中的一切指令。
若程序处于"目态"操作模式,一旦出现特权指令,处理器就能识别出程序非法使用指令,形成程序性中断事件,终止程序的执行。在计算机系统中往往把用户程序置于目态下运行,已保证计算机系统的安全可靠。
答:中断装置发现了中断事件后,由操作系统的中断处理程序对中断事件进行处理,中断处理程序的主要工作有:
- 保护被中断进程的现场信息 把中断时的通用寄存器,控制寄存器内容及旧PSW保存到被中断进程的进程控制块中。
- 分析中断原因 根据旧PSW的中断码可知发生该中断的具体原因。
- 处理发生的中断事件 一般只做一些简单处理,在多数情况下把具体的处理交给其他程序模块去做。
答:中断优先级只是规定了中断装置响应同时出现的中断的次序,当中断装置响应了某个中断后中断处理程序在进行处理时,中断装置也可能去响应另一个中断事件。因此会出现优先级低的中断事件的处理打断优先级高的中断事件的处理,使得中断事件的处理顺序与响应顺序不一致,而且会形成多重嵌套处理,使多现场保护、程序返回等工作变的复杂。
中断屏蔽技术就是为了解决上述问题而提出的,在一个中断处理没有结束之前不响应其他中断事件,或者只响应比当前级别高的中断事件。于是,当中断装置检查到有中断事件后,便去查看PSW中中断屏蔽标志,如果没有屏蔽就响应该中断;否则,暂时不响应该中断,待屏蔽标志消除后再响应 。
答:自愿中断事件是正在运行程序所期待中的事件,它是正在运行程序为请求调用操作系统的某个功能服务而执行一条“访管指令”所引起的中断。当处理器执行到访管指令时就产生一个中断,因而进程自愿中断的断点是确定的。自愿中断不同于强迫性中断,强迫中断不是当前进程所期待的,而是由于外部请求或意外而被迫打断当前进程的。自愿中断是用户程序访问系统功能的手段,在进程中是确定的,因而不能屏蔽。
14、在一个单处理器的多道程序设计系统中,现有两道作业同时执行,其中以运算为主,另一道以输入输出为主,你将怎样赋予作业进程占有处理器的优先数?解释为什么?
答:赋于输入输出作业以较高的优先权。确定作业的优先数一般从任务的紧迫性和系统效率等方面考虑。交互式作业进程的优先数大于批处理作业进程的优先数。
15、假定就绪队列中的进程按优先数自大到小顺序排列,当即有进程要加入就绪队列时,应将它的优先数排入相应的位置,试就单向链接的方式写出实现进程入队的程序。
解:这就是一个单向链表的插入操作,用类C语言描述如下:
procedure Insert(Queue ReadyQue,Pointer P) {//ReadyQue 是就绪队列指针,P是要插入队列进程指针 //P中的priority指示其进程的优先数 //P中的Next指示其后继进程指针
Pointer P1=ReadyQue, P2=ReadyQue; //P1指示比P优先数小的第一个进程指针 //P2指示比P优先数大的第一个进程指针 while(P->priority<P1->priority && P1->Next) { //查找要插入位置的前后结点 P2=P1; P1=P1->Next; } //查到后将P插入到就绪队列中 P->Next=P1; P2->Next=P; }//End Procedure |
我们把磁盘上用来存放作业信息的专用区域称为输入井;把输入井中等待处理的作业称为后备作业。从输入井中选取后备作业装入主存的工作称为作业调度。
作业调度选中了一个作业且把它装入主存储器时,就为该作业创建了一个用户进程,初始状态为就绪态。
我们把从就绪进程中选取一个进程,让它占用处理器的工作称为进程调度。
答:作业调度是指按一定的策略从“输入井”中选择资源能得到满足的作业装入主存储器,使作业能有机会占用处理器执行。作业调度选择作业的必要条件是系统中现有的尚未分配的资源能够满足该作业的资源要求。
18、某系统采用不能移动已在主存储器中作业的可变分区方式管理主存储器,现有供用户使用的主存空间100K,系统配有4台磁带机,有一批作业见下表:
作业序号 | 进输入井时间 | 要求计算时间 | 需要主存容量 | 申请磁带机数 |
1 | 10:00 | 25分钟 | 15K | 2台 |
2 | 10:20 | 30分钟 | 60K | 1台 |
3 | 10:30 | 10分钟 | 50K | 3台 |
4 | 10:35 | 20分钟 | 10K | 2台 |
5 | 10:40 | 15分钟 | 30K | 2台 |
该系统采用多道程序设计技术,对磁带机采用静态分配,忽略设备工作时间和系统进行调度所花的时间,请分别写出采用“先来先服务调度算法”和“计算时间最短者优先算法”选中作业执行的次序以及它们的平均周转时间。
解:先来先服务法如下表:
作业序号 | 进输入井时间 | 进入主存时间 | 开始计算时间 | 结束计算时间 | 周转时间 | 解释 |
1 | 10:00 | 10:00 | 10:00 | 10:25 | 25 | 此时输入井中只有一个作业且满足资源要求,因此被选中运行。 |
2 | 10:20 | 10:20 | 10:25 | 10:55 | 35 | 作业2到达输入井,满足资源要求,装入主存,等到作业1运行完毕进入运行态。 |
4 | 10:35 | 10:35 | 10:55 | 11:15 | 40 | 由于作业3要求主存空间无法满足,因此作业4先行一步,运行期间作业5进入输入井,并满足资源要求,因此作业5进入主存就绪。 |
5 | 10:40 | 10:55 | 11:15 | 11:30 | 50 | 作业3仍要等候,作业5可以运行。 |
3 | 10:30 | 11:30 | 11:30 | 11:40 | 70 | 最后作业3装入主存并运行 |
平均周转时间为(22+35+40+50+70)/5=44分钟
按计算时间最短者优先算法如下表:
作业序号 | 进输入井时间 | 进入主存时间 | 开始计算时间 | 结束计算时间 | 周转时间 | 解释 |
1 | 10:00 | 10:10 | 10:00 | 10:25 | 25 | 此时输入井中只有一个作业且满足资源要求,因此被选中运行。 |
2 | 10:20 | 10:20 | 10:25 | 10:55 | 35 | 作业2到达输入井,满足资源要求,装入主存,等到作业1运行完毕进入运行。 |
5 | 10:40 | 10:55 | 10:55 | 11:10 | 30 | 由于作业3要求主存空间无法满足,因此作业4先行一步装入主存,当作业2让出处理器的同时,作业5满足资源要求进入主存就绪。根据算法作业5先进入处理器运行。 |
4 | 10:35 | 10:35 | 11:10 | 11:30 | 55 | |
3 | 10:30 | 11:30 | 11:30 | 11:40 | 70 | 最后作业3装入主存并运行 |
平均周转时间:(25+35+30+55+70)/5=43 分钟
作业名 | 到达时间 | 估计时间(分钟) | 开始时间 | 完成时间 | 等待时间 |
A | 8:30 | 130 |
|
|
|
B | 8:50 | 15 |
|
|
|
C | 9:20 | 70 |
|
|
|
答:采用计算时间短的作业优先算法如下:
作业名 | 到达时间 | 估计时间(分钟) | 开始时间 | 完成时间 | 等待时间分钟 |
A | 8:30 | 130 | 10:55 | 13:05 | 145 |
B | 8:50 | 15 | 9:30 | 9:45 | 40 |
C | 9:20 | 70 | 9:45 | 10:55 | 25 |
最高响应比优先调度结果如下:
作业名 | 到达时间 | 估计时间(分钟) | 开始时间 | 完成时间 | 等待时间 | 响应比1 | 响应比2 |
A | 8:30 | 130 | 9:45 | 11:55 | 85 | 60/130 | 75/130 |
B | 8:50 | 15 | 9:30 | 9:45 | 40 | 40/15 |
|
C | 9:20 | 70 | 11:55 | 13:05 | 155 | 10/70 | 25/70 |
20、什么是进程调度?当进程调度选中一个进程后,怎样才能让它占用处理器? 我们把一个进程让出处理器由另一个进程占用处理器的过程称为进程调度。
答:当进程调度选中一个进程后,把选中进程的进程控制块中有关的现场信息,如通用寄存器、控制寄存器和程序状态字寄存器的内容送入处理器相应的寄存器中,处理器就按该进程的要求工作,达到了进程占用处理器的目的。
21、答:在分时系统中,使每个用户的请求都能得到及时的响应,感觉计算机系统对自己的请求有求必应,好像独占一个计算机系统。这样用户感觉到不必等待,可算得上及时响应。使用户比较满意。
- 被进程调度程序选中。
- 时间片用完。
- 运行中发生等待事件。
- 等待事件结束。
(2)应优先选择时间片较短的进程优先占用处理器。可极大地提高系统吞吐量。解释如下:在分级调度算法中,对不同就绪队列中的进程,可规定使用不同长度的时间片,一般来说,第一级就绪队列的时间片短一些,以的各级就绪队列的时间片逐级延长,最后一级就绪队列的时间片最长,这样运行时间短的里程只需经过前面几级队列就能得到结果,且它们被优先调度,有利于提高系统的吞吐率。而对运行时间长的进程在进入了低级就绪队列后可得到较长的时间片,以减少调度次数来保证系统效率。对经常使用外围设备的进程来说,每次等待外围设备传输结束后总是排入第一级就绪队列,它们会被优先调度,有利于处理器与外围设务以及外围设备之间的并行工作,从而提高资源的使用效率。
24、有5个进程P1,P2,P3,P4,P5它们同时依次进入就绪队列,它们的优先数和所需要的处理器时间如表
3-1所示
进程 | 处理器时间 | 优先数 |
P1 | 10 | 3 |
P2 | 1 | 1 |
P3 | 2 | 3 |
P4 | 1 | 4 |
P5 | 5 | 2 |
忽略进行调度等所花费的时间,请回答下列问题
a、写出分别采用“先来先服务”和“非抢占式的优先数”调度算法选中进程执行的顺序。
b、分别计算出上述两种算法使进程在就绪队列中的等待时间以及两种算法下的平均等待时间。
解:a)采用先来先服务法的执行顺序是P1→P2→P3→P4→P5。这是由其进入的顺序所确定的。
采用“非抢占式的优先数”调度算法时,各进程的执行顺序是P1→P4→P3→P5→P2.
b)如表所示:先来先服务法:
进程 | 等待时间 | 运行时间 |
P1 | 0 | 10 |
P2 | 10 | 1 |
P3 | 11 | 2 |
P4 | 13 | 1 |
P5 | 14 | 5 |
平均等待时间 | (0+10+11+13+14)/5=9.6 |
非抢占式的优先数调度算法:
进程 | 等待时间 | 运行时间 |
P1 | 0 | 10 |
P4 | 10 | 1 |
P3 | 11 | 2 |
P5 | 13 | 5 |
P2 | 18 | 1 |
平均等待时间 | (0+10+11+13+18)/5=10.4 |
答:在UNIX系统中进程由三部分组成:进程控制块、正文段和数据段。
UNIX系统为了节省进程控制块所占的主存空间,把每个进程控制块分成两部分。一部分常驻内存,记录了进行进程调度时必须使用的一些主要信息,不管进程是否占有处理器运行,系统经常会对这部分的内容进行查询和处理。UNIX系统把作为基本控制块,把它的数据结构称为proc结构。另一部分非常驻内存,当进程不占有处理器时,系统不会对这部分内容进行查询和处理,因此这部分内容可以存放在磁盘的对换区中,它随着用户程序和数据换进或换出主存。
而正文段的功能则是在多道程序设计系统中,不同的进程可能要调用相同的程序。供多个进程共享的程序称为进程的正文段。正文段是可再入的程序,它由不可被修改的程序和常数组成。
进程执行程序时用到的数据构成数据段,如果进程执行的顺序是非共享的,则也构成数据段的一部分。UNIX把进程的数据段又划分成三部分,用户栈区、用户数据区和系统工作区。
答:UNIX中一个进程使用系统调用fork来创建新进程,形成父子关系经。父进程与子进程可以并发执行。
fork生成一个新进程的工作由函数newproc完成的,它的工作过程如下:
1、在进程表proc[]中为子进程找一个空闲的表项,用来存放子进程的proc结构。
- 2、为子进程分配一个惟一的标识号,UNIX系统进程标识号的范围是0-255。
- 3、把父进程proc中字段复制到子进程的proc中,但把p-pid置为分配到的标识号,把p-pid置为父进程标识号,把p_stat置为“创建”状态。
4、按父进程中p_size所示的长度为子进程申请分配空间。
27、答:运行状态、就绪状态、睡眠状态、创建状态、僵死状态。
UNIX对进程的调度采用动态优先数算法,进程的优先数随进程的执行情况而变化。
- 答:UNIX中每个进程都有一个优先数,就绪进程能占用处理器的优先权取决于进程的优先数,优先数越小则优先权越高。
30、UNIX什么情况下要进行进程调度?调度程序swtch的主要任务是什么?
答:当进程执行中由于各种事件让出处理器时,或一个处理器的进程用完了一个时间片后被剥夺了占用处理器的权利(被抢占)时。进程调度程序swtch从内存就绪队列中选取优先数最小的进程占用处理器运行。
- 在UNIX系统中,Swtch程序是用来完成进程调度的。Swtch进行调度的时机是:
- 进程完成了预定任务而终止
- 进程因等待某些时间而进入睡眼状态
- 进程由于与其他进程协同完成某一任务时因同步需要而主动放弃处理器
- 发现比线性进程更高优先权的进程。
- 进程用完了一个规定的时间片
- 其他异常处理时强迫对处理器进行调度。
- Swtch程序的主要任务是:
- 保存现在运行进程的现场信息
- 从在内存就绪的进程中选择一个优先数最小(优先权最高)的进程占用处理器
为被选中的进程恢复现场信息。
31、答:p_pri=p_cpu/2+PUSER+p_nice+NZERO
=p_cpu/2+25+p_nice+20
每隔一个时钟周期(20ms),p_cpu加1,优先数增大,优先权降低,在进程切换时再次占用cpu的机会减少;系统每隔1s对所有进程执行p_cpu/2;他们的优先数减小,使得进程的优先权就提高,在进程切换时再次占用处理器的机会就增大。
第四章复习题P114
答:逻辑地址:对于用户来说,他无须知道自己的作业究竟是在主存的什么位置,他们可以认为自己的程序和数据就是放在从0地址开始一组连续的地址空间中,这个地址空间是程序用来访问信息所用的一系列连续地址单元的集合,该地址空间就是逻辑地址空间。逻辑地址空间中,地址单元的编号称为逻辑地址。
绝对地址:主存也被按照连续的存储单元进行编号,绝对地址空间就是主存中一系列连续存储信息的物理单元的集合,也称绝对地址空间为存储地址空间或物理地址空间。绝对地址空间中物理单元的编号称为绝对地址。 地址转换:由于一个作业装入到与其逻辑地址空间不一致的绝对地址空间,使得逻辑地址与绝对地址不同,而引起的对有关地址部分的调整,即逻辑地址转换成绝对地址的过程称为重定位,也称为地址转换。
答:存储保护的目的就是为了保护主存中各区域内的信息不被破坏,它包括存储的权限,存储不可跨越区域等等。为实现存储保护,必须由硬件和软件配合实现。比如在页式管理中,要由操作系统提供页表,硬件机构确定页的使用必须是安全的,如不能访问不属于自己的页等。
答:由于一个作业装入到与其逻辑地址空间不一致的绝对地址空间,使得逻辑地址与绝对地址不同,而引起的对有关地址部分的调整,即逻辑地址转换成绝对地址的过程称为重定位,也称为地址转换。
重定位有静态和动态两种情况。
所谓静态重定位是在装入一个作业的时候,把作业中的指令地址和数据地址全部一次性地转换成绝对地址。
所谓动态重定位是由软件和硬件相配合来实现的。地址重定位不再是装入的时候一次完成了,而是设置一个基址寄存器,装入作业的时候,将作业在主存区域的首地址放入到基址寄存器中。作业执行的时候,由硬件的地址转换机构动态地对地址进行转换,执行指令的时候,只要将逻辑地址加上基址寄存器的内容,就得到了绝对地址。
静态重定位和动态重定位的不同在于:①静态重定位是在作业装入的时候一次完成,动态重定位是在作业执行时再实现的。②静态重定位是软件支持的,动态重定位是硬件和软件合作实现的。③静态重定位不能实现主存的移动,而动态重定位可以。④动态重定位还可能提供虚拟存储空间。
答:固定分区优点:
①能支持多道程序设计。
②无需专门的硬件地址转换机构。
缺点:
①主存利用率不算太高,分配中出现内部零头问题。
②分区大小固定不灵活,不能为程序动态申请内存。
③不具备虚拟存储能力。
可变分区优点:
①支持多道程序设计。
②没有内部零头问题,主存利用率比固定分区高。
③采用移动技术后可以满足正在执行的作业的主存扩充的要求。
缺点:
①动态重定位和保护措施需要硬件机构支持,成本高。
②由于有外部零头,所以主存利用率依然不算很高。
③移动技术开销很大。
④每次必须将作业完整调入并连续存放,主存利用率不高。
⑤不具备虚拟存储能力。
页式存储管理优点:
①支持多道程序设计
②解决了外部零头问题,内部零头大大减少(一个作业平均只有50%页面大小的内部零头)主存利用率比较高。
③用户作业无需在主存中连续存放,提高主存的利用率。
④如果是分页虚拟存储管理,可以提供大容量的多个虚拟存储器,主存利用率更高了。
缺点:
①动态重定位和保护措施需要硬件机构支持,成本高;
②采用页表,占用了一部分主存空间和处理机时间。
③分页虚拟存储管理中,增加了缺页中断的处理,增加了系统开销。
5、在可变分区管理方式下,为什么要引入移动技术?移动一道作业时操作系统要做哪些工作?
答:采用移动技术的主要优点是:
1)可以使分散的空闲区集中起来,可以容纳新的作业,提高主存空间的利用率
2)方便作业执行过程中扩充主存空间,一道作业在执行中要求增加主存量时,只要移动邻近作业就可以增加它所点的分区长度。
移动一道作业时操作系统要进行的处理:
1)判断被移动的作业是否在与外围设备交换信息,如是则不能移动,否则可以移动。
2)操作系统在移动作业信息时先移动作业信息的存储位置。
3)修改主存分配表中和保存在进程控制块中的分区起始地址和长度信息。
4)采取必要措施,尽量减少移动的作业数和信息量,提高系统效率。
6、假定某计算机系统的主存容量为32K,对主存采用动态定位可变分区分配算法。现在已经有3个作业在主存储器中(如图),当作业J2执行时,要求扩充3K作业,为了满足作业J2这一要求,应移动几道作业的信息?写出它们的次序、方向和距离。
答:因为采用可变分区的管理方式,要求作业的逻辑地址空间是连续的,并且主存空间也是连续的。因此,作业J2要求扩充的主存区域应该在原占有区域之后,于是必须通过移动来集中空闲区以供J2扩充之需。移动的方法有两种:
①先把J1向上移动1K再把J2向上移动2K.
②J3向下移动2K.
显然,第二种方法只要进行一次移动,明显比第一种方法好。
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无法装入。仍按最先适应算法,若调整作业装入次序为J4、J1、J2、J3、J5。即在32K空闲区中依次装入J4(28K),J1(1K)(或先J1再J4),剩下3K,在10K空闲区中装入J3刚好,在228K空闲区中装入J3和J5,
剩下5K。这时的主存空间利用率最高。
答:在页式存储管理中,主存被分成大小相等的若干块,同时程序逻辑地址也分成与块大小一致的若干页,这样就可以按页面为单位把作业的信息放入主存,并且可以不连续存放,为了在作业执行过程中准确地查表逻辑地址与绝对地址的的对应关系,就需要为每个作业建立一张页表,表示逻辑地址中的页号与主存中块号的对应关系。
页表一般存放在主存中,当要按给定的逻辑地址访问主存时,要先访问页表,计算出绝对地址,这样两次访主存延长了指令执行周期,降低了执行速度,而设置一个高速缓冲寄存器将页表中的一部分存放进去,这部分页表就是快表,访问主存时二者同时进行,由于快表存放的是经常使用的页表内容,访问速度很快,这样可以大大加快查找速度和指令执行速度。
9、页式存储管理中页面大小是根据什么决定的?页表的长度又是根据什么决定的?
答:页面的大小是由地址结构决定的。页表的长度是由作业的信息量决定的,作业有多少页,页表中就有多少个记录项。
- 1MB/4KB=256块
- 4MB/4KB=1024页
答:首先,操作系统为每个作业创建一张页表,它建立了逻辑地址中的页号到绝对地址中的块号的映射。然后,借助于硬件地址转换机构,在作业执行过程中,每执行一条指令时,按逻辑地址中的页号查页表得到对应的块号,再根据公式“绝对地址=块号×块长+页内地址”换算出欲访问的主存单元的绝对地址。
虚拟存储器是为“扩大”主存容量而采用的一种设计技巧,它利用作业在只装入部分信息时就可以执行的特性和程序执行中表现出来的局部性特性,借助于大容量的辅助存储器实现小主存空间容纳大逻辑地址空间的作业。
虚拟存储器的容量由计算机的地址结构(地址总线位数)决定。如计算机的地址总线位数为32位,则最大的虚存容量为2^32=4294967296B=4GB
答:页式虚拟存储器是在页式存储的基础上实现虚拟存储器的,其工作原理是:
首先把作业信息作为副本存放在磁盘上,作业执行时,把作业信息的部分页面装入主存,并在页表中对相应的页面是否装入主存作出标志。
作业执行时若所访问的页面已经在主存中,则按页式存储管理方式进行地址转换,得到绝对地址,否则产生“缺页中断”由操作系统把当前所需的页面装入主存。
若在装入页面时主存中无空闲块,则由操作系统根据某种“页面调度”算法选择适当的页面调出主存换入所需的页面。
14、采用可变分区方式管理主存时,能实现虚拟存储器吗?为什么?
答:不可以,因为可变分区每次必须将作业完整调入并连续存放,这不适合虚拟存储的要求。同时,可变分区的硬件地址转换机构把绝对地址超出限定范围时作地址错处理,而不是产生“缺分区中断”。
答:如果选用了一个不合适的调度算法,就会出现这样的现象:刚被淘汰了的页面又立即要用,又要把它调入进来,而调入不久又被调出,调出不久再次被调入,如此反复,使得调度非常频繁,以至于大部分时间都花费在来回调度上。这种现象叫“抖动”。一个好的调度算法应减少和避免抖动现象。
16、某采用页式虚拟存储管理的系统,一个共7页的作业,作业执行时依次访问的页为1,2,3,4,2,1,5,6,2,1,2,3,7,6,3,2,1,2,3,6。若采用最近最少使用(LRU算法),作业得到四块主存空间时会产生多少次中断?如果采用先进先出(FIFO)算法又会怎样的结果?
答: LRU算法时四块主存空间时:
当前页 | 1 | 2 | 3 | 4 | 2 | 1 | 5 | 6 | 2 | 1 | 2 | 3 | 7 | 6 | 3 | 2 | 1 | 2 | 3 | 6 |
| 1 | 2 | 3 | 4 | 2 | 1 | 5 | 6 | 2 | 1 | 2 | 3 | 7 | 6 | 3 | 2 | 1 | 2 | 3 | |
|
| 1 | 2 | 3 | 4 | 2 | 1 | 5 | 6 | 6 | 1 | 2 | 3 | 7 | 6 | 3 | 3 | 1 | 2 | |
|
|
| 1 | 1 | 3 | 4 | 2 | 1 | 5 | 5 | 6 | 1 | 2 | 2 | 7 | 6 | 6 | 6 | 1 | |
调出页 |
|
|
|
|
|
| 3 | 4 |
|
|
| 5 | 6 | 1 |
|
| 7 |
|
|
|
缺页中断 | 共6次 |
采用FIFO算法四块主存空间时:
访问页 | 1 | 2 | 3 | 4 | 2 | 1 | 5 | 6 | 2 | 1 | 2 | 3 | 7 | 6 | 3 | 2 | 1 | 2 | 3 | 6 |
当前页 | 1 | 2 | 3 | 4 | 4 | 4 | 5 | 6 | 2 | 1 | 1 | 3 | 7 | 6 | 6 | 2 | 1 | 1 | 3 | 3 |
| 1 | 2 | 3 | 3 | 3 | 4 | 5 | 6 | 2 | 2 | 1 | 3 | 7 | 7 | 6 | 2 | 2 | 1 | 1 | |
|
| 1 | 2 | 2 | 2 | 3 | 4 | 5 | 6 | 6 | 2 | 1 | 3 | 3 | 7 | 6 | 6 | 2 | 2 | |
|
|
| 1 | 1 | 1 | 2 | 3 | 4 | 5 | 5 | 6 | 2 | 1 | 1 | 3 | 7 | 7 | 6 | 6 | |
调出页 |
|
|
|
|
|
| 1 | 2 | 3 | 4 |
| 5 | 6 | 2 |
| 1 | 3 |
| 7 |
|
缺页中断 | 共10次 |
17、答:访问序列为:1,2,1,0,4,1,3,4,2,1
| 1 | 2 | 1 | 0 | 4 | 1 | 3 | 4 | 2 | 1 |
0 | 0 | 0 |
|
| 4 |
| 4 |
|
| 4 |
| 1 | 1 |
|
| 1 |
| 3 |
|
| 3 |
|
| 2 |
|
| 2 |
| 2 |
|
| 1 |
| ∨ | ∨ |
| ∨ | ∨ |
| ∨ | |||
| 5次中断,中断率为50%。 |
18、、有一个程序要把100*100数组置初值“0”,现假定有两个主存块可用来存放数组信息,主存块的大小为可存放200个数组元素,数组中的元素按行编址。两个主存块的初始状态都为空,若程序编制如下:
(a) Var A:array[1..100] of array[1..100] of integer;
for j:=1 to 100 do
for i:=1 to 100 do
A[i,j]=0
(b) Var A:array[1..100] of array[1.100] of integer;
for i:=1 to 100 do
for j:=1 to 100 do
A[i,j]=0
当采用LRU页面调度算法时各会产生多少次缺页中断?
答:由于主存地址是连续的,二维数组按行的顺序进行排列,在每个主存块可以存放二行数组,初始状态下主存为空。
(a)方案编制的程序,第一次访问的是A[1,1],即第一个单元;第二次访问的是A[2,1],在主存中也就是访问第101个单元,这样,第一次调入的两个页只能命中四次,当访问[5,1]时就产生缺页中断,这时调入一个页面,包括两行,则访问[6,1]时命中。依次下去当访问[7,1],[9,1]...[99,1]时均产生缺页中断。内循环结束后,进入外循环,访问[1,2]...[100,2]...直到访问完每个数据。每隔一次访问均产生一次中断。因此本方案的总的缺页中断次数是:
50*100=5000 次。
(B)方案时,因为在主存中按[1,1],[1,2],[1,3]...[1,100]的顺序访问,则第一次访问的四行均没有中断,访问到[5,1]时,产生一次中断,调入一页,依此类推,访问到[7,1],[9,1]...[99,1]时产生中断,总共的中断次数为:
100/2=50 次
(根据LRU算法,每次调入的页面是一个页面)
LRU算法 | |||||||||||
2 | 3 | 2 | 1 | 5 | 2 | 4 | 5 | 3 | 2 | 5 | 2 |
2 | 2 | 3 | 3 | 2 | 1 | 5 | 2 | 4 | 5 | 3 | 3 |
| 3 | 2 | 2 | 1 | 5 | 2 | 4 | 5 | 3 | 2 | 5 |
|
|
| 1 | 5 | 2 | 4 | 5 | 3 | 2 | 5 | 2 |
|
|
|
| ∨ | ∨ | ∨ | ∨ |
| |||
中断次数为4次:依次淘汰3124 |
OPT算法 | ||||||||||||||||||||||
2 | 3 | 2 | 1 | 5 | 2 | 4 | 5 | 3 | 2 | 5 | 2 | |||||||||||
2 | 2 | 2 | 2 | 2 |
| 4 |
|
| 2 |
|
| |||||||||||
| 3 | 3 | 3 | 3 |
| 3 |
|
| 3 |
|
| |||||||||||
|
|
| 1 | 5 |
| 5 |
|
| 5 |
|
| |||||||||||
|
|
|
| ∨ | ∨ |
| ∨ |
| ||||||||||||||
中断次数为3次:124 | ||||||||||||||||||||||
FIFO算法 | ||||||||||||||||||||||
2 | 3 | 2 | 1 | 5 | 2 | 4 | 5 | 3 | 2 | 5 | 2 | |||||||||||
2 | 2 |
| 2 | 5 | 5 | 5 |
| 3 |
| 3 | 3 | |||||||||||
| 3 |
| 3 | 3 | 2 | 2 |
| 2 |
| 5 | 5 | |||||||||||
|
|
| 1 | 1 | 1 | 4 |
| 4 |
| 4 | 2 | |||||||||||
|
|
|
| ∨ | ∨ | ∨ | ∨ | ∨ | ∨ | |||||||||||||
中断次数为6次: 231524 |
LFU算法 | |||||||||||
2 | 3 | 2 | 1 | 5 | 2 | 4 | 5 | 3 | 2 | 5 | 2 |
2 | 2 | 3 | 3 | 5 |
| 5 |
| 5 |
|
|
|
| 3 | 2 | 2 | 2 |
| 2 |
| 2 |
|
|
|
|
|
| 1 | 1 |
| 4 |
| 3 |
|
|
|
|
|
|
| ∨ | ∨ | ∨ |
|
| |||
中断次数为3次 |
20、在第3章第18题中,若允许移动已在主存储器中的作业,则作业被选中的次序又是怎样的呢?并计算出它们的平均周转时间?
解:本题中,由于作业3需要3台磁带机,因此即使允许移动主存中的作业,得到足够存储空间,但是由于静态分配的策略,磁带机不足以让作业3满足。因此本题的结果和上题的结果是相同的。
作业序号 | 进输入井时间 | 要求计算时间 | 需要主存容量 | 申请磁带机数 | 剩余 | 开始运行 | 结束 | 周转时间 |
1 | 10:00 | 25分钟 | 15K | 2台 |
|
|
|
|
2 | 10:20 | 30分钟 | 60K | 1台 |
|
|
|
|
3 | 10:30 | 10分钟 | 50K | 3台 |
|
|
|
|
4 | 10:35 | 20分钟 | 10K | 2台 |
|
|
|
|
5 | 10:40 | 15分钟 | 30K | 2台 |
|
|
|
|
先来先服务分析如下: | ||||||||
1 | 10:00 | 装入 | 15K | 2台 | 85,2 | 10:00 | 10:25 | 25 |
2 | 10:20 | 装入 | 60K | 1台 | 25,1 | 10:25 | 10:55 | 35 |
| 10:25 | 回收 |
|
| 40,3 |
|
|
|
| 10:30 | 未装入 | 50K | 3台 |
|
|
|
|
4 | 10:35 | 装入 | 10K | 2台 | 30,1 | 10:55 | 11:15 | 40 |
| 10:40 | 未装入 | 30K | 2台 |
|
|
|
|
| 10:55 | 回收 |
|
| 90,2 |
|
|
|
5 | 10:55 | 装入 | 30K | 2台 | 60,0 | 11:15 | 11:30 | 50 |
| 11:15 | 回收 |
|
| 70,2 |
|
|
|
| 11:30 | 回收 |
|
| 100,4 |
|
|
|
3 | 11:30 | 装入 |
|
| 50,1 | 11:30 | 11:40 | 70 |
平均周转时间为:220/5=44 |
作业序号 | 进输入井时间 | 要求计算时间 | 需要主存容量 | 申请磁带机数 | 剩余 | 开始运行 | 结束 | 周转时间 |
1 | 10:00 | 25分钟 | 15K | 2台 |
|
|
|
|
2 | 10:20 | 30分钟 | 60K | 1台 |
|
|
|
|
3 | 10:30 | 10分钟 | 50K | 3台 |
|
|
|
|
4 | 10:35 | 20分钟 | 10K | 2台 |
|
|
|
|
5 | 10:40 | 15分钟 | 30K | 2台 |
|
|
|
|
计算时间短分析如下: | ||||||||
1 | 10:00 | 装入 | 15K | 2台 | 85,2 | 10:00 | 10:25 | 25 |
2 | 10:20 | 装入 | 60K | 1台 | 25,1 | 10:25 | 10:55 | 35 |
| 10:25 | 回收 |
|
| 40,3 |
|
|
|
| 10:30 | 未装入 | 50K | 3台 |
|
|
|
|
4 | 10:35 | 装入 | 10K | 2台 | 30,1 | 11:10 | 11:30 | 55 |
| 10:40 | 未装入 | 30K | 2台 |
|
|
|
|
| 10:55 | 回收 |
|
| 90,2 |
|
|
|
5 | 10:55 | 装入 | 30K | 2台 | 60,0 | 10:55 | 11:10 | 30 |
| 11:10 | 回收 |
|
| 90,2 |
|
|
|
| 11:30 | 回收 |
|
| 100,4 |
|
|
|
3 | 11:30 | 装入 |
|
| 50,1 | 11:30 | 11:40 | 70 |
平均周转时间为:215/5=43 |
在UNIX系统中进程由三部分组成:进程控制块、正文段和数据段。
3张页表
UNIX采用二次机会页面调度算法。他的实现要点如下:
1,把除了内核部分的所有物理页登陆在一张总页面表中。
2,设置一个时钟指针,时钟指针扫描总页面表。当时钟指针到达一个表项时,如果该物理页是空闲的或正在与外设交换信息,则继续扫描下一表项,否则找出占用该进程的进程页表。
3,按物理页号从进程页表中找出对应的表项。若该页的有效位被制成了0,则对该页所在的物理页置上空闲标志。若该页的有效位为1,则把该页置为0.
4,产生缺页中断后,可找一个空闲标志的物理页,将该物理页中的信息调出到磁盘上,然后再装入新页。
5,对有效位被置成0的页,页中的信息任然保留在物理页中,只要这个物理页没有空闲标志,那么就不会被用来装入新页。这样一旦进程又要访问该页时,只要把有效位重新置成1,使该页信息成为2次有效,进程就可立即访问该页信息。显然这样减少了大量的输入/输出传送。
24、答:它的作用是保证有足够的空闲物理页可供使用。一般它都处于睡眠状态。每当有空闲标志的物理页数量低于一个限值时就被唤醒。
页面守护进程的职责:
1,控制上述的二次机会算法中的时钟指针,当时钟指针指向的某物理页成为空闲页时,把空闲的物理页加1.
2,使时钟指针继续扫描,让空闲的物理页不断增加。
3,当空闲页达到一定数量,就使时钟指针停止扫描,页面守护进程进入睡眠状态。
第五章复习题P156
答:文件是逻辑上具有完整意义的信息集合。
答:文件系统由以下各部分组成:
(1)目录管理:文件目录是实现按名存取的一种手段,用户要求建立的新文件,目录管理的工作是把与该文件有关的属性登记在目录用户要求读文件时,应从文件目录中查找指定的文件并核对是否有权使用。目录结构应既能方便文件的检索,又能保证文件系统的安全。
(2)文件的组织:文件组织包括文件的物理组织和文件的逻辑组织,而文件系统的这部分工作就是要能够在用户存取文件时把文件的逻辑组织和物理组织进行转换。
(3)文件存储的空间管理:对文件使用存储空间的情况进行登记和管理,保证文件存储在空闲块中,并在文件删除时收回该文件所用的空间。
(4)文件操作:文件操作是文件系统提供给用户使用文件的一组接口,包括建立文件、打开文件、读文件、写文件、关闭文件和删除文件等。
(5)文件的共享、保护和保密:文件共享允许多个用户使用同一个文件,但是要注意共享文件的保护和保密,即防止文件被破坏和被未经授权的用户剽窃。
3、叙述下述术语并说明它们之间的关系:存储介质、卷、块、文件和记录。
答:存储介质是指可用来记录信息的磁带、硬磁盘组、软磁盘片、卡片等。
存储介质的物理单位定义为“卷”。
存储介质上存放的连续信息所组成的区域称为“块”,块是存储设备与主存储器之间进行信息交换的物理单位。
逻辑上具有完整意义的信息集合称为“文件”。
记录是指用户对文件内的信息按逻辑上独立的含义划分的信息单位,每个单位为一个逻辑记录。
答:文件的存取方式包括顺序存取和随机存取两种,采用哪种存取方式,主要取决于两方面的因素:
(1)怎样使用文件。
文件的性质决定了文件的使用,也就决定了存取方式的选择。对于由顺序字符或其他数据组成的文件,按照顺序存取的方式进行。对于按逻辑记录方式组织的文件,则采用随机存取的方式。
(2)存储介质的特性。 磁带机是适合顺序存取的存储设备。而磁盘机则既可采用顺序方式,也可采用随机方式。
答:文件目录应包括的内容有:
- 有关文件存取控制信息。例如用户名、文件名、文件类型、文件属性(可读写、只读、只执行等)
- 有关文件结构的信息。例如文件的逻辑结构、物理结构、记录个数和在存储介质上的位置等。
有关文件管理的信息。例如文件建立的日期、修改日期、保留期限等。
6、怎样才能防止不同的用户可能给各自的文件取了相同的名字而造成的混乱?
8、用户A有名为W1,W2和W3的三个私有文件,用户B有名为J1,J2的两个私有文件,这两个用户需要使用共享文件T。文件系统对所有用户提供按名存取功能,为保证存取的正确性,文件系统应设置合理的目录结构,请画出文件系统设计的目录结构。
解:如图所示:
9、有一个可以带4个终端的计算机系统,该系统配置了一个磁盘用来存储终端用户的程序和数据。今有4个上机的学生,他们在各自的终端上键入了自己的程序和数据,并都存储在磁盘上,凑巧他们给各自的程序取的文件名均为WJ,请问
a.系统应该采用怎样的目录结构才能区别这些学生的程序?并画出这个目录结构。
b.简单阐明系统怎样为这4个学生索取他们各自的程序。
答:a.系统可采用二级目录结构或树形目录结构。图略。
b.以二级目录结构存储时,系统首先找到学生的用户名(主文件目录),再在用户名下的的目录中查找WJ为名的程序,这样就可以找到他们各自的程序了。
答:这三种文件均是指物理文件:
顺序文件:就是在磁盘上的按顺序结构组织的文件,按逻辑文件记录本身的顺序在磁盘上按序存放在连续的块中。读取时也从第一个记录开始顺序进行,这样的文件组织就是顺序文件。在文件目录中要指出文件名,存放的起始块号和占用块数。
顺序文件的最大优点是存取速度快(可以连续访问)。而问题主要是存储空间利用率不高、输出文件时难以估计需要多少磁盘块、影响文件扩展。
2)链接文件:如果将逻辑文件中的各个逻辑记录任意存放到一些磁盘块中,再用指针把各个块按逻辑记录的顺序链接起来,在文件目录中只记录第一块的地址和最后一块的地址,读取时从第一块开始,根据每块中的指针访问到下一块直到最后一块,这种文件组织就是链接文件。
链接结构解决了顺序结构中的所有问题,所有空闲块都可以被利用,在顺序读取时效率较高但需要随机存取时效率低下(因为要从第一个记录开始读取查找)。此外,对于链接结构,也有一些问题要注意:由于块中要存放指针信息,因此一部分空间被占用;读出信息时要把指针信息分离出来;还要防止指针丢失或破坏造成的混乱,所以又要增加一些管理的信息。总之链式结构会使用于存放文件信息的空间减少。
3)索引文件:按索引方式组织的文件结构,文件的逻辑记录任意存放在磁盘中,通过一张“索引表”指示每个逻辑记录存放位置。访问时根据索引表中的项来查找磁盘中的记录,索引结构的文件既适合顺序存取记录,也可以方便地随机存取记录,并且容易实现记录的增删和插入,所以索引结构被广泛应用。
优点:提高主存空间利用率。
14、假定磁带的记录密度为每英寸800个字符,每一个逻辑记录长为160个字符,块与块之间的间隙为0.6英寸,现有1000个逻辑记录需要存储到磁带上,分别回答下列问题:
a.不采用成组操作时磁带空间的利用率
b.采用以5个逻辑记录为一组的成组操作时磁带空间的利用率。
c.为了使磁带空间的利用率大于50%,采用记录成组时其块因子至少为多少?
答:a.不采用成组操作时,磁带空间利用率为:
(160×1000)/(160000+800×0.6×1000)=0.25=25%
b.采用5个逻辑记录一组时,磁带空间利用率为:
(160×1000)/(160000+800×0.6×1000/5)=62.5%
c.设块因子为x,利用率为50%,则有得:
160000/(160000+480000/x)=0.5 解之得:x=3
即块因子至少为3才可以使磁带空间利用率大于50%。
- 100*8*8=6400块
- 6400/32=200字
- 块号=50*32+16=1616
柱面号=块号/柱面上的扇区数=1616/64=25
磁头号=1616%64/8=2
扇区号=1616%64%8=0
在第3号记录,偏移量为39.
根据题意知第3号记录在80块。
答:文件的保护是防止文件被破坏。文件的保密是防止不经文件拥有者授权而窃取文件。引起文件被破坏的原因有:硬件故障、软件失误和用户共享文件时的错误等。
23、文件系统中为什么要设置“建立文件”、“打开文件”和“关闭文件”的操作?
答:文件系统把用户组织的逻辑文件按一定方式转换成物理文件存放到存储介质上,当用户需要文件时,文件系统又从存储介质上读出文件并把它转换成逻辑结构。如果没有“建立文件”的操作,就无法将逻辑文件转换成物理文件。而“打开文件”的作用是检索文件所在位置以及核对存取方式必须,“关闭文件”是核实是否为文件的建立者或打开者执行的操作,并对修改部分进行保存。这几个操作均是为了正确实现文件的按名存取。因此要设置这些操作。
答:如果用户要求读一个尚未打的文件时,文件系统会提示用户先打开文件,有的系统为了方便用户,提供一种隐式使用文件的方法,允许用户不需先调用“打开文件”、“建立文件”和“关闭文件”文件的操作,而直接调用“读文件”或“写文件”的操作。当用户要“读文件”时,系统先做“打开文件”(文件已存在)或“建立文件”(文件不存在)的操作,再执行“读文件”操作。
25、文件系统能允许用户关闭一个不是自己打开或建立的文件吗?
答:“关闭文件”操作主要是核实只有文件的建立者或打开者才有权关闭文件。因此文件系统一般不允许别的用户来关闭一个不是自已打开的文件。
(可能有人说,不对,我打开一个文件,我妹妹就能把它关掉。这里的用户并不是指操作的人,而是指用户程序,比如我用word打开了一个文件,这时另一个程序如Excel程序如果来想关闭这个文件是不允许的。但是操作系统的文件系统可以来关闭各个用户打开的文件。)
答:UNIX在整个系统运行期间维护一张系统打开文件表,每个用户进程有一张进程打开文件表,以实现对文件读写操作的动态管理。
一个文件可以被同一个进程或不同进程以相同或不同的路径同时打开,在请求打开时可以提出相同或不同的打开方式(只读、写、读写)。UNIX设置的系统打开文件表用于反映对被打开文件进程操作的动态信息。主要用于对文件的读写控制。
UNIX允许每个进程同时打开多个文件,但规定每个进程最多同时打开15个文件。UNIX为每个进程设置的进程打开文件表,其中的表项对应指向系统打开文件表中的一个表项。
33、UNIX怎样管理磁盘上的文件存储空间? (201004.35)
答: UNIX中的每一个文件系统的磁盘空间可以分成几个部分:包括引导块、超级块、索引节点区和文件存储区。
UNIX中可分配的磁盘空间有两类。索引结点区和存放文件的存储区。
对索引节点为区的管理:在索引节点餐中,每一块可用来存放一占;建立文件时,从中找到一个空闲块存放该文件的索引节点;删除文件时,置该文件的索引节点为空闲。
对文件存储区的管理:对文件存储区中的空闲块采用成组连接的方式管理每1000个空闲块为一组。
补充、假定某文件系统把文件存储到磁盘上采用链接结构,磁盘的分块大小为512字节,而逻辑记录的大小为250个字符。现有一个名为ABC的文件,共10个逻辑记录,回答下列问题:
a.怎样才能有效地利用磁盘空间
b.画出文件ABC在磁盘上的链接结构(磁盘块号自定)
c.若用户要求读包含第 1425个字符的逻辑符号,请写出用户要求的主要工作步骤。
答:a.可以将两个记录成组写在一个磁盘块上,正好占用500个字符,余下的12个字符(每个字符一个字节,共12个字节)位置用来存放下一块的指针。这时的磁盘利用率为: 250*10/(512*5)=97.7% b.如图所示:
c.文件系统完成用户要求的主要工作步骤是:
1)访问时首先计算出包含第1452个字符的逻辑记录是在第六个记录。从0开始的话记录号为5。
2)从文件目录中找到该文件第0号记录在磁盘上的物理块号3。 3)根据读到块中的指针指示依次读取下一块直到包括5号记录的块14。
4)把14号块中的内容读到主存缓冲区。
5)把主存缓冲区中的第2条记录读入用户作业区。这条记录就是用户所请求访问的记录。
第六章复习题P186
答:设备绝对号:在设备管理中,计算机系统为每一台设备确定一个编号,以便区分和识别不同设备,这个编号称为设备的绝对号。而用户在程序中定义的设备号就是“设备相对号”。
3、用户程序中采用“设备类、相对号”的方式用来使用设备有什么优点?
答:用户程序中采用“设备类、相对号”的方式,使设备分配的适应性好,灵活性强:
1)系统只要从指定的设备类中找出一台“好的且未分配的”设备来进行分配即可。
2)如果分配给用户的设备在使用中出故障,则系统可以从同类设备中找出“好的且未分配”的另一台设备来替换。
答:用户程序中采用“设备类、相对号”方式使用设备时,用户编程就不必指定特定设备,在程序中由“设备类、相对号”定义逻辑设备。程序执行时由系统根据用户指定的逻辑设备转换成与其对应的具体物理设备。所以,用户编程时使用的设备与实际使用哪台设备无关,这就是“设备独立性”。
答:设备的静态分配是指当一个作业所需使用的独占设备能得到满足时,该作业才能被装入主存储器执行。此时该设备完全被分配给该作业占用,直到作业执行结束撤离时才收回这个设备。
答:启动磁盘执行一次输入输出操作花费的时间由“寻找时间、延迟时间和传送时间”三部分时间组成。其中寻找时间是指磁头在移动臂带动下移动到指定术面所花的时间;延迟时间是指指定扇区旋转到磁头下所需的时间;传送时间是指由磁头进行读写完成信息传送的时间。
7、什么是磁盘的驱动调度?它包括哪两部分?总结对磁盘进行驱动调度的过程。
答:在多道程序设计系统中,同时有多个访问者请求磁盘操作,此时系统采用一定的调度策略来决定各等待访问者的执行次序,所以系统决定等待磁盘访问者的执行次序的工作就是磁盘的“驱动调度”。
磁盘调度分为移臂调度和旋转调度。根据访问者指定的柱面位置来决定执行次序的调度称“移臂调度”;当移动臂定位后,如有多个访问者等待访问该柱面时,根据延迟时间来决定执行次序的调度称为“旋转调度”。
8、假定某磁盘共有200个柱面,编号为0-199,如果在为访问143号柱面的请求者服务后,当前正在为访问125号柱面的请求服务,同时有若干请求者在等待服务,它们每次要访问的柱面号为
86,147,91,177,94,150,102,175,130
请回答下列问题:
a.分别用先来先服务算法,最短寻找时间优先算法、电梯调度算法和单各扫描算法来确定实际的服务次序。
b.按实际服务计算上述算法下移动臂需移动的距离。
答:a.先来先服务法:(125-86)+(147-86)+(147-91)+(177-91)+(177-94)+(150-94)+(150-102)+(175-102)+(175-130)=547
最短寻找时间算法:(130-125)+(147-130)+(150-147)+(175-150)+(177-175)+(177-102)+(102-94)+(94-91)+(91-86)=143
电梯调度算法:(125-102)+(102-94)+(94-91)+(91-86)+(130-86)+(147-130)+(150-147)+(175-150)+(177-175)=130
b.实际服务算法是指单向扫描算法,在此算法下,移动距离是:
(130-125)+(147-130)+(150-147)+(175-150)+(177-175)+(199-177)+86+(91-86)+(94-91)+(102-94)=176(返回的移动不算入内)
9、假定磁盘的移动臂现在处于第8号柱面,有如下6个请求者等待访问磁盘(见下图),请你列出最省时间的响应次序。
序号 | 柱面号 | 磁头号 | 扇区号 |
1 | 9 | 6 | 3 |
2 | 7 | 5 | 6 |
3 | 15 | 20 | 6 |
4 | 9 | 4 | 4 |
5 | 20 | 9 | 5 |
6 | 7 | 15 | 2 |
答:最省时间的响应次序是2、6、1、4、3、5。根据题意,只要访问的柱面号顺序为7,9,15,20的顺序均应为正确答案。因为题中未给出确定的扇区数及访问和处理所需时间。大约本题的出题重点在于考察移臂调度。至于本题的答案是根据这样的原则来的,在确定移臂次序之后,如果有访问相同柱面的,根据先来先响应的次序确定
10、假定某磁盘的旋转速度是每圈20ms,格式化时每个盘面被分成10个扇区,现有10个逻辑记录存放在同一磁道上。
扇区号 | 逻辑记录 |
1 | A |
2 | B |
3 | C |
4 | D |
5 | E |
6 | F |
7 | G |
8 | H |
9 | I |
10 | J |
处理程序要顺序处理这些记录,每读出一个记录后处理程序要花4ms的时间进行处理,然后再顺序读下一个记录并处理,直到处理完这些记录,回答:
a.顺序处理完这10个记录总共花费了多少时间?
b.请给出一种记录优化分布的方案,使处理程序能在最短时间内处理完成这10个记录,
并计算优化分布时需要花费的时间。
答:a.顺序处理完这10个记录所费时间:
读一个记录的时间是20/10=2ms
每条记录处理时间为4ms.计算如下:
A记录:2+4=6ms
B记录:因为6ms后已转到第4扇区,因此还要转过8个扇区方能到达第2扇区取B记录,所需时间为:2*8+2+4=22ms.
同样的,C...J记录和B记录访问一样,会有8个扇区的空转时间。
总的时间为:6+22*9=204ms
b.要使处理程序在最短时间内处理完毕,则根据我们上面的计算,把B记录安排在第扇区4上,把C记录存放在扇区7上...按照这个办法,可以得到记录的优化分布如下分配:
A | B | C | D | E | F | G | H | I | J |
1 | 4 | 7 | 10 | 3 | 6 | 9 | 2 | 5 | 8 |
这时每处理一个记录后刚好转入下一记录扇区,所以处理时间总和为:10*(2+4)=60ms
11、假定有一个磁盘组共100个柱面,每个柱面上有8个磁道,每个盘面被划分成8个扇区。现有一个含有6400个逻辑记录的文件,逻辑记录的大小与扇
区大小一致,该文件以顺序结构的形式被存放到磁盘上。柱面、磁道、扇区的编号均从“0”开始,逻辑记录的编号也从“0”开始。文件信息从0柱面、0磁道、0扇区开始存放。试问:
a.该文件的第 3680个逻辑记录应存放在哪个柱面的第几磁道的第几个扇区?
b.第78柱面的第6磁道的第6扇区应存放在了该文件的第几个逻辑记录?
解:a.因为在磁盘中,文件是按柱面-磁道-扇区为序存放的。计算如下:(题中[ ]表示求整除的值?
柱面号=[3680/(8*8)] =57
磁道号=[(3680 mod 64)/8]=4
扇区号=(3680 mod 64)mod 8=0
b.反过来也可计算:
逻辑记录号=78*64 + 6*8 +6 =5046
答:通道命令是计算机硬件设备提供的用于使用输出设备的操作命令,每一条通道命令规定了设备的一种操作。通常由命令码、数据主存地址、传送字节个数及标志码等部分组成。
通道程序是由一组通道命令组成的,这一级通道命令规定了通道执行一次输入输出操作应用的工作。
通道地址字(CAW)是在具有通道的计算机系统中,用来存放通道程序首地址的主存固定单元。
通道状态字(CSW)是用于记录通道和设备执行情况的主存单元。通常包括通道命令地址、设备状态、通道状态和剩余字节个数等几个字段。通道状态字采用双机器字(64位)表示。
答:首先,中为处理器执行“启动I/O”指令去启动通道,如启动成功,则通道执行指定的通道程序去控制外设工作。
当通道工作正常完成时,即通道状态字中仅有通道结束、控制器结束和设备结束时,通道形成一个输入输出正常结束中断事件。此时操作系统使有关进程从等等状态进入就绪状态。
如果通道工作时发现设备故障或设备特殊情况(如硬件故障、缺纸等)时形成操作异常结束的I/O中断事件。此时由操作系统组织通道复执(重新执行程序)或产生有关信息请求用户或操作员来处理。
总之,中央处理器是借助于I/O中断来实现配合工作的。通道借助I/O中断请求CPU进行干预,CPU根据产生的I/O中断事件了解输入输出操作的执行情况,对通道操作而言,当操作正常结束或异常结束(如设备故障、设备特殊情况引起异常结束)形成I/O中断,由CPU根据相应情况分别处理。
14、 答:把利用缓冲区来缓解处理器与外围设备之间工作速度不匹配的矛盾而采用的技术称为缓冲技术。
采用缓冲的原因:
①缓解CPU和外设之间速度不匹配的矛盾。②协调逻辑记录与物理记录大小不一致的问题。
答:为实现虚拟设备,必须在磁盘上划出的专用存储空间,这部分空间就是“井”,其中又分为两部分:用于存放作业的初始信息的井是输入井,存放作业执行结果的是输出井。
答:SPOOL系统由三部分程序组成:
- 预输入程序。通过该程序把作业流中每个作业的初始信息传送到“输入井”保存起来以以备作业执行时使用。
- 井管理程序:包括井管理读程序和井管理写程序两个功能,井管理读程序负责从输入机上读取文件信息供用户使用,井管理写程序负责把作业执行产生的结果保存到输出井中。
- 缓输出程序。它负责查看“输出井”中是否有待输出的结果信息,若有则启动打印机把作业结果输出。
答:实现虚拟设备的硬件条件:大容量磁盘;中断装置和通道;中央处理器与通道并行工作的能力。
实现虚拟设备的软件条件是要求操作系统采用多道程序设计技术。
答:SPOOL系统借助硬件的中断装置和通道技术使得中央处理器与各种外围设备以及各外围设备之间均可并行工作。操作系统采用多道程序设计技术,合理分配处理器,实现联机的外围设备同时操作。
作业执行时从磁盘上读写信息来代替从输入机和打印机的读写操作,不仅使多个作业可以同时执行,而且加快了作业的执行速度,提高了单位时间内处理作业的能力。在作业执行的同时还可利用输入机继续预输入作业信息和利用打印机输出结果,于是,整个系统可以是第一批作业的执行结果在打印输出,第二批作业正在处理,第三批作业信息正在预输入到磁盘的“输入井”中。
这种联机同时操作极大地提高了独占设备的利用率,也使计算机系统的各种资源被充分利用。
答:实现虚拟设备后系统从输入、输出以及作业执行速度方面均提高了效率。具体如上题答案中所述。
第七章复习题
答:目前使用的计算机基本上是冯.诺依曼式结构,其基本特点是处理器顺序执行指令。进程在顺序的处理器上的执行是严格按顺序进行的,这就是进程的顺序性。当一个进程独占处理器顺序执行时,具有两个特性:一、封闭性 二、可再现性。
在多道程序设计系统中,多个作业可以同时执行,一个作业又由多个进程协助完成,当一个进程的工作没有全部完成之前,另一个进程就可以开始工作,它们的执行在时间上是重迭的。我们把它们称为是“可同时执行的”。若系统中存在一组可同时执行的进程,则就该进程就具有并发性,可同时执行的进程称为“并发进程”。
答:并发进程由于其执行的随机性,执行速度不能由自己控制,往往会出现一个进程对另一进程的影响不可预测的情况,从而产生与时间有关的错误。但是并发进程并不一定都会产生与时间有关的错误:
首先,无关的并发进程不会产生与时间有关的错误;
其次,有交往的并发进程如果不交叉访问共享变量,也不会产生与时间有关的错误。
产生这类错误根本原因在于对共享变量不受限制的使用。
答:并发进程中与共享变量有关的程序段称为“临界区”。相关临界区是指并发进程中涉及到相同变量的那些程序段。
答: 1)一次最多让一个进程在临界区执行,当有进程在临界区时其他想进入临界区执行的进程必须等待。
- 2)任何一个进入临界区执行的进程必须在有限的时间内退出临界区,即任何一个进程都不应该无限地逗留在自己的临界区。
- 3)不能强迫一个进程无限地等待进入它的临界区,即有进程退出时应让一个等待进入临界区的进程进入它的临界区。
5、若用PV操作管理某一组相关临界区,其信号量S的值在[-1,1]之间变化,当S=-1,S=0,S=1时它们各自的物理含义是什么?
答:
S=-1 表示等待队列中有1个进程(|S|)等待进入临界区,而且当前已有进程在相关临界区中访问临界资源。
S=0:表示当前有进程在相关临界区访问临界资源,并且没有任何进程等待使用临界资源。
S=1: 表示有一个进程可以访问临界资源或进入相关临界区执行。
P(S)
A->B
V(S)
7、今有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: P(SP); //检查是否可以打印 take a product from Buffer; V(SR); //允许读入记录 print; goto L3 end; coend; end; |
R1,R2互斥,设置信号量SF,初值为1.
R1,W1同步,设置信号量S2,初值为0.
R2,W2同步,设置信号量S3,初值为0.
程序段如下:
R1
{L1:从磁盘读入数据X;
P(SF);
B=X;;
V(S2);
GOTO L1;
}
R2
{L2:从键盘读入数据 Y;
P(SF);
B=Y;
V(S3);
GOTO L2;
}
W1
{L3:P(S2);
从B中取出数据X;
V(SF);
打印输出;
GOTO L3;
}
W2
{L4:P(S3);
从B中取出数据Y;
V(SF);
打印输出;
GOTO L4;
}
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; |
10、在公共汽车上,司机和售票员的工作流程如下图所示。为保证乘客的安全,司机和售票员应密切配合协调工作。请用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;
|
设置信号量M用于进程间对盘子使用的互斥。程序如下:
cobegin
S1=2;S2=0;s3=0;m=1
producefather
{l0:取苹果;
P(S1);
p(m);
把苹果放入盘子;
v(m);
V(S2);
GOTO L0;}
producemother
{l1:取桔子;
P(S1);
p(m);
把桔子放入盘子;
v(m);
V(S3);
GOTO L1;}
consumerson
{l2:p(s3);
p(m);
把桔子从盘子取出;
v(m);
v(s1);
吃桔子;
GOTO L2;}
consumerdauther
{l3:p(s2);
p(m);
把苹果从盘子取出;
v(m);
v(s1);
吃苹果;
GOTO L3;}
答:
- 创建线程无须另外分配资源,速度快,开销小。
- 线程间的通信在同一地址空间进行,无须额外的通信机制,通信简便,传送速度快。
- 线程能独立执行,充分利用了处理器与外设的并行工作能力。
补充:请用进程通信的办法解决生产消费者问题。
解:设生产者的与消费者之间进行直接通信,在message中说明可用产品的信息。
begin Process M; //生产者进程: begin L1:{生产物品}; send (B,message);//发送一条消息给B进程 goto L1; end; Process B; 消费者进程: begin L2:recieve(M,message); //取出信箱信件,如有信件则可以消费 {取出物品消费}; goto L2; end; end;
|
第八章复习题
答:若系统中存在一组进程(两个或多个进程),它们中的每一个进程都占用了某种资源而又都在等待其中另一个进程所占用的资源,这种等待永远不能结束,则说系统出现了“死锁”。
死锁产生的原因:与资源的分配策略有关,当系统中若干进程需求资源的总数大于系统能提供的资源数时,进程间会出现竞争资源,如果对进程竞争的资源分配不当就会引起死锁。
死锁的出现也与并发进程的执行速度有关,并发进程的执行速度是不可预知的。因此可能形成死锁。
防止死锁的策略:破坏死锁的四个必要条件的一个条件即可:资源的静态分配、可抢夺资源、资源的按序分配;
避免死锁的策略:银行家算法。
3、某系统有输入机和打印机各一台,今有两个进程都要同时使用它们,采用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占用输入设备,请求打印机)。解决的方法是同时申请这两个资源,一起使用。
4、现有同类资源12个供4个进程共享,假定进程所需资源和已占资源的情况如下表所示。回答:
进程 | 已占资源数 | 最大需求数 |
P1 | 2 | 4 |
P2 | 3 | 6 |
P3 | 4 | 7 |
P4 | 1 | 4 |
(1)目前系统是否处于安全状态?为什么?
(2).4个进程在执行中又都提出申请一个资源的要求,则在什么情况下会引起死锁?为什么?
答:(1).处于安全状态。
在当前状态下,尚余2个资源可供分配,如果先满足进程P1的要求,把其中2个资源分配给P1进程,P1进程可执行完毕归还系统4个资源,则系统剩余资源为4个,可满足P2,P3,P4中的一个。因此可以找到一个安全序列P1,P2,P3,P4.所以系统是安全的。
(2).根据目前的资源占用情况,若先满足P2,或P3,或P4的一个资源要求,则系统只剩下1个资源,不能满足任何一个的资源需求,从而使系统处于死锁状态。
5、某系统有A,B,C,D这4类资源供5个进程共享,进程对资源的需求和分配情况如下表所示。现在系统还剩资源A类1个,B类5个,C类2个和D类0个,请按银行家算法回答下面问题:
进程 | 已占资源数 | 最大需求数 |
A B C D | A B C D | |
P1 | 0 0 1 2 | 0 0 1 2 |
P2 | 1 0 0 0 | 1 7 5 0 |
P3 | 1 3 5 4 | 2 3 5 6 |
P4 | 0 6 3 2 | 0 6 5 2 |
P5 | 0 0 1 4 | 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,这样,系统至少还有一个资源可使其中一个进程得到所需的全部资源,在它执行结束后,归还的资源可供其他进程使用,因而不可能发生死锁。
7、有3个进程P1,P2和P3并发执行,进程P1需使用资源S3和S1,进程P2需使用资源S1和S2,进程P3需使用资源S2和S1,回答:
a.若对资源分配不加限制,会发生什么情况?为什么?
b.为保证进程能执行到结束,应采用怎样的资源根本策略?
答:a.若对资源分配不加限制,可能出现死锁情况:如下表
进程名 | 已占资源 | 申请资源 |
P1 | S3 | S1 |
P2 | S1 | S2 |
P3 | S2 | S1 |
三个进程都不能得到自己所需的另一个资源,从而产生死锁。
b. 有几种方法可以避免死锁产生:
(1)采用静态分配策略,每一个进程在开始执行前申请到所需的全部资源后,该进程才能开始执行,只要一个资源不能满足,系统就不分配任何资源给该进程使其等待。
- (2)采用释放已占资源策略,即当进程申请新的资源时必须先释放已经占用的资源才可以给予分配资源。
- (3)采用按序分配策略,如给S1,S2,S3资源确定编号,进程在申请资源时必须从小到大的编号进行申请,即P1按S1,S3的顺序,P2按S1,S2的顺序,P3按S1,S2的顺序申请,这样的话,只要S1被任何一个进程申请到,别的进程就不可以申请到任何资源,从而保证了系统的安全。
8、当前某系统有同类资源10个,进程P1,P2,P3所需资源总数分别为8,4,9。它们向系统申请资源的次序和数量如下表所示。回答:
a.系统采用银行家算法分配资源,请你写出系统完成第6次分配后各进程的状态及所占资源量。
b.在以后各次的申请中,哪次的申请要求可先得到满足?
次序 | 进程 | 申请量 | 次序 | 进程 | 申请量 |
1 | P3 P1 P2 | 2 | 6 | P2 P3 P1 P3 | 2 |
答:系统完成第6次分配后各进程状态如下:
进程 | 已分配资源数 | 尚需资源数 | 进程状态 | 系统剩余资源数 |
P1 | 4 | 4 | 等待 | 0 |
P2 | 4 | 0 | 运行 | |
P3 | 2 | 7 | 等待 |
附:按银行家算法进行的各进程的资源分配状态变化如下:
次序 | P1 | P2 | P3 | 系统剩余资源数 |
1 | 0 | 0 | 2 | 8 |
2 | 4 | 0 | 2 | 4 |
3 | 4 | 2 | 2 | 2 |
4 | 4 | 2 | 2 | 2 |
5 | 4 | 2 | 2 | 2 |
6 | 4 | 4 | 2 | 0 |
b.进程P2运行结束后,第7次申请不能得到满足,因为归还的4个资源不足P3进程的剩余需求量,而第8次申请则可以使P1进程完成任务,因此第8次申请将先得到满足。