《计算机操作系统教程第三版》答案作者左万历周长林Word文档格式.docx
《《计算机操作系统教程第三版》答案作者左万历周长林Word文档格式.docx》由会员分享,可在线阅读,更多相关《《计算机操作系统教程第三版》答案作者左万历周长林Word文档格式.docx(26页珍藏版)》请在冰豆网上搜索。
7.说明“栈”和“堆”的差别.答:
栈是一块按后进先出(FIFO)规则访问的存储区域,用
来实现中断嵌套和子程序调用的参数和返回断点。
而堆虽然是一块存储区域,但是对堆的访问
是任意的,没有后进先出的要求,堆主要用来为动态变量分配存储空间。
8.何为系统栈?
何为用户栈?
系统栈有何用途?
用户栈有何用途?
系统栈是内存中操作
系统空间的一个固定区域;
用户栈是内存中用户空间的一个区域。
系统栈的作用:
(1)保存中
断现场,对于嵌套中断,被中断程序的现场信息依次压入系统栈,中断返回时逆序弹出;
(2)
保存操作系统子程序间相互调用的参数、返回值、返回点、以及子程序的局部变量。
用户栈的
作用:
用于保存用户进程的子程序间相互调用的参数、返回值、返回点、以及子程序的局部变
量。
9.用户堆栈段的长度为何无法确定?
用户堆栈段的长度主要取决于两个因素:
(1)用户
进程(线程)中子程序(函数)之间的嵌套调用深度;
(2)子程序参数和局部变量的数量及类
型;
(3)动态变量的使用。
这些在进程(线程)运行前无法确定,由此导致用户堆栈段的长度
无法预先准确确定。
10堆栈段的动态扩充为何可能导致进程空间的搬迁?
堆栈段的扩充需要在原来进程
空间大小的基础上增添新的存储区域,而且通常要求与原来存储区域连续。
由于原
存放位置处可扩展的区域可能已经被其它进程占用,故可能需要将整个进程空间搬
迁到另外一个区域,以实现地址空间扩展要求。
11.何谓并行?
何谓并发?
在单处理机系统中,下述并行和并发现象哪些可能发生,哪些不
会发生?
(1)进程与进程之间的并行;
(2)进程与进程之间的并发;
(3)处理机与设备之间的
并行;
(4)处理机与通道之间的并行;
(5)通道与通道之间的并行;
(6)设备与设备之间的并
行;
所谓并行是指同一时刻同时进行,进程并行需要多处理器的支持;
所谓并发,是指在
一段时间内,多个进程都在向前推进,而在同一时刻,可能只有一个进程在执行,多个进程轮
流使用处理器。
在单处理器传统中,可能发生的并行和并发现象如下:
(2)进程与进程之间
的并发。
例如,在Windows操作系统中,mp3播放进程和Word字处理进程可以并发执行,这样
用户就可以边听音乐边写文章了。
(3)处理机与设备之间的并行。
例如,当处理机进行科学
运算时,打印机可以打印文档。
(4)处理机与通道之间的并行。
通道程序的执行可与处理机
的操作并行。
(5)通道与通道之间的并行。
通常一个系统中有多个通道,这些通道可以并行
地执行相应的通道程序。
(6)设备与设备之间的并行。
例如打印机打印文档时,磁带机在输
入数据。
12.何谓作业?
它包括哪几个部分?
各部分用途是什么?
答:
所谓作业是指用户要求计算机系
统为其完成的计算任务的集合。
一个作业通常包括程序、程序所处理的数据以及作业说明书。
程序用来完成特定的功能,数据是程序处理的对象,作业说明书用来说明作业处理的步骤。
13.从透明性和资源共享两方面,说明网络操作系统与分布式操作系统之间的差别。
从
透明性上看,分布式操作系统优于网络操作系统。
网络用户能够感觉到所访问的资源是在本地
还是在远地;
而在分布式系统中,用户感觉不到所访问的资源是否在本地,分布式操作系统掩
盖了资源在地理位置上的差异。
从资源共享上看,分布式操作系统比网络操作系统能共享更
多的资源。
在网络操作系统中,一个计算任务不能由一台主机任意迁移到另外一台主机上运行;
而在分布式操作系统中,所有作业可以由一台主机任意迁移到另外一台主机上处理,即可实现
处理机资源的共享,从而达到整个系统的负载平衡。
14.为什么构成分布式系统的主机一般都是相同的或兼容的?
这样更有利于进程的动
态迁移。
如果主机不兼容,则在一台主机上能运行的进程,因所用指令系统不同,
在另一台主机上可能无法运行,导致进程难于在不同主机间迁移,使得分布式系统
难于实现负载平衡。
构成分布式系统的主机一般都是相同的或兼容的。
15.为什么嵌入式操作系统通常采用微内核结构?
嵌入式操作系统与一般操作系统
相比具有比较明显的差别:
(1)嵌入式操作系统规模一般较小,因为一般硬件配置较低,而且
对操作系统提供的功能要求也不高。
(2)应用领域差别大,对于不同的应用领域其硬件环境和设
备配置情况有明显差别。
所以,嵌入式操作系统一般采用微内核(microkernel)结构,包括
如下基本功能:
(1)处理机调度;
(2)基本内存管理;
(3)通讯机制;
(4)电源管理。
在这些基本成分
之上可进行扩展,以适应不同应用目标。
第二章进程、线程与作业课后习题
1.为何引入多道程序设计?
在多道程序系统中,内存中作业的道数是否越多越好?
请说明原
因。
引入多道程序设计技术是为了提高计算机系统资源的利用率。
在多道程序系统中,
内存中作业的道数并非越多越好。
一个计算机系统中的内存、外设等资源是有限的,只能容纳
适当数量的作业,当作业道数增加时,将导致对资源的竞争激烈,系统开销增大,从而导致作
业的执行缓慢,系统效率下降。
2.什么是进程?
进程具有那些主要特性?
比较进程与程序之间相同点与不同点.答:
进程是
具有一定独立功能的程序关于一个数据集合的一次执行活动。
特性:
并发性、动态性、独立性、
交往性、异步性和结构性。
联系:
程序是进程的组成部分,一个进程存在的目的就是执行其所
对应的程序。
区别:
程序是静态的,而进程是动态的;
进程是有生存期的,而程序没有;
一个
程序可对应多个进程,而一个进程只能对应一个程序。
3.有人说,用户进程所执行的程序一定是用户自己编写的。
这种说法对吗?
如不对举例说明
之。
这种说法不对。
例如,C编译程序以用户进程身份运行,但C编译程序并不是用户自
己编写的。
此外还有字处理程序等工具软件。
4.什么是进程上下文?
进程上下文包括那些成分?
那些成分对目态程序是可见的?
在
UNIXSystemV中,将进程的物理实体与支持进程运行的物理环境合称为进程上下文(process
context),进程上下文包括三个组成部分:
用户级上下文。
是由用户进程的程序块、用户数
据块(含共享数据块)和用户堆栈组成的进程地址空间。
系统级上下文。
包括进程控制块、
内存管理信息、进程环境块,以及系统堆栈等组成的进程地址空间寄存器上下文。
由程序状态字寄存器、各类控制寄存器、地址寄存器、通用寄存器、用户堆栈指针
等组成。
其中用户级上下文及部分寄存器上下文对目态程序是可见得。
5.进程一般具有哪三个主要状态?
举例说明状态转换的原因。
进程在其生存期内可能处
于如下三种基本状态之一:
(1)运行态(Run):
进程占有处理机资源,正在运行。
显然,
在单处理机系统中任一时刻只能有一个进程处于此种状态;
(2)就绪态(Ready):
进程本身
具备运行条件,但由于处理机的个数少于可运行进程的个数,暂未投入运行。
即相当于等待处
理机资源;
(3)等待态(Wait):
也称挂起态(Suspended)、封锁态(Blocked)、睡眠态
(Sleep)。
进程本身不具备运行条件,即使分给它处理机也不能运行。
进程正等待某一个
事件的发生,如等待某一资源被释放,等待与该进程相关的I/O传输的完成信号等。
进程的
三个基本状态之间是可以相互转换的。
具体地说,当一个就绪进程获得处理机时,其状态由就
绪变为运行;
当一个运行进程被剥夺处理机时,如用完系统分给它的时间片,或出现高优先
级别的其它进程,其状态由运行变为就绪;
当一个运行进程因某事件受阻时,如所申请资源被
占用,启动I/O传输未完成,其状态由运行变为等待;
当所等待事件发生时,如得到申请资
源,I/O传输完成,其状态由等待变为就绪。
6.有几种类型进程队列?
每类各应设置几个队列?
有三种类型进程队列:
就绪队列(整
个系统一个)、等待队列(每个等待事件一个)和运行队列(在单CPU系统中只有一个)
7.线程控制块TCB中一般应包含那些内容?
一般TCB中的内容较少,因为有关资源分
配等多数信息已经记录于所属进程的PCB中.TCB中的主要信息包括:
线程标识、线程状态、
调度参数、现场、链接指针,其中现场信息主要包括通用寄存器、指令计数器PC以及用户栈
指针.对于操作系统支持的线程,TCB中还应包含系统栈指针。
8.同一进程中的多个线程有那些成分是共用的,那些成分是私用的?
共用的成分有:
堆、
数据和程序代码;
私用的成分有:
线程控制块、寄存器和用户栈。
9.比较用户级线程与系统级线程间在以下方面的差别和各自的优缺点。
(1)创建速度;
切换速度;
(3)并行性;
(4)TCB的存储位置答:
用户级线程由系统库支持.线程的创建和撤
销,以及线程状态的变化都由库函数控制并在目态完成,与线程相关的控制结构TCB保存在
目态空间并由运行系统维护。
由于线程对操作系统不可见,系统调度仍以进程为单位,核心
栈的个数与进程个数相对应用户级别线程的优点在于:
(1)线程不依赖于操作系统,可以采用
与问题相关的调度策略,灵活性好;
(2)同一进程中的线程切换不需进入操作系统,因而实现
效率较高。
缺点在于:
(1)同一进程中的多个线程不能真正并行,即使在多处理机环境中;
由于线程对操作系统不可见,调度在进程级别,某进程中的一个线程通过系统调用进入操作系
统受阻,该进程的其它线程也不能运行。
核心级别线程通过系统调用由操作系统创建,线程
的控制结构TCB保存于操作系统空间,线程状态转换由操作系统完成,线程是CPU调度的基
本单位。
另外由于系统调度以线程为单位,操作系统还需要为每个线程保持一个核心栈。
核
心级线程的优点是并发性好,在多CPU环境中同一进程中的多个线程可以真正并行执行。
心级别线程的缺点是线程控制和状态转换需要进入操作系统完成,系统开销比较大。
10.何谓
作业步?
作业何时转为进程?
作业步:
作业中一个相对独立的处理步骤作业进入内存,根
据作业步的要求建立进程。
11.分析作业、进程、线程三者之间的关系.答:
一个作业
包含多个进程,一个进程包含多个线程;
作业是向计算机提交任务的任务实体,而进程
是执行实体,是资源分配的基本单位,线程是处理机调度的基本单位。
12.何谓系统开销?
试
举三个例子说明之运行操作系统程序对系统进行管理而花费的时间和空间,如:
作业调度、
进程调度、进程切换等。
第三章中段与处理机调度课后习题
1.试说明下述概念之间的联系与差别:
(1)系统调用命令
(2)访管指令(3)广义指令答:
访管指令由指令码和访管中断号两部分组成。
即:
SVCn───①其中SVC(SuperVisorCall)为指令码,表明为访管指令;
n为访管中断号,其值是一整数,具体表示何种访问要求。
中断发生时,硬件中断装置将访管中断号n送入旧的程序状态字内的中断码字段,访管中断总控程序由系统堆栈中将其取出,并据此转入对应的服务程序。
在实际使用时,用户程序与操作系统之间还需要相互传递参数和返回值。
如此,用户使用访管指令的一般形式为:
准备参数SVCn取返回值───②根据具体访管要求约定,参数及返回值可以通过寄存器传递,也可以通过内存传递。
对于后者,操作系统必须能够访问进程空间。
通常将②称为系统调用命令,它除访管指令外,还有准备参数和取返回值。
为了使用方便,在高级语言中一般将其写为与过程调用相类似的形式,即:
返回值=系统调用名称(参数1,参数2,,参数m);
───③当然,编译程序会将③翻译成形如②的形式。
其中系统调用名称对应①,不同的系统调用名称对应不同的整数n。
在有的书中,也将③称为代表②的宏指令或广义指令。
2.为什么说中断是进程切换的必要条件,但不是充分条件?
发生进程切换时一定发生中断。
系统由一个运行进程转去运行另外一个进程,前提条件是必须进入操作系统,即处于系统态,因为处于用户态运行的进程不可能将cpu的使用权直接交给另一个进程,而中断是从用户态转换为系统态的必要条件。
即中断是进程切换的前提(必要)条件。
但发生中断时未必发生进程切换。
如果中断处理完后原进程不再具有继续运行的条件,则一定会发生进程切换;
反之,如果中断处理完后原进程仍具有继续运行的条件,则可能会发生进程切换,也可能不发生进程切换,这与处理机调度策略有关。
3.试分析中断与进程状态转换之间的关系。
进程状态转换是由内核控制的,如果一个进程的状态发生了改变,则在新旧状态之间一定发生了处理机状态由目态到管态的转换,而中断是处理机状态由目态转换到管态的必要条件,所以中断也是进程状态转换的必要条件。
4.中断发生时,旧的PSW和PC为何需要压入系统栈?
保存断点信息,以便中断结束后接着原来的程序断点处继续执行。
通常来说中断处理程序的最后一条指令是中断返回指令,该指令从系统栈顶弹出断点信息。
如果未将PSW和PC压入系统栈,则中断返回指令弹出的不是中断前的断点信息,而是不确定的信息,这将导致系统处于不确定的状态,严重的情况会使系统崩溃。
5.何谓中断向量?
用户能否修改中断向量的值?
当中断事件发生时,中断装置根据中断类别自动地将中断处理程序所对应的PSW和PC送入程序状态字和指令计数器中,如此便转移到对应的中断处理程序。
这个转移类似于向量转移,因而PSW和PC被称为中断向量。
用户不能修改中断向量的值,因为修改中断向量是特权指令,普通用户程序不能执行特权指令。
另外,如果允许用户修改中断向量的值,那么,用户就可以将中断向量与一段病毒程序联系起来,使中断发生时便执行病毒程序,从而破坏计算机系统。
6.中断向量的存储位置是否可由程序改变?
中断向量的值是如何确定的?
中断向量的存储位置是由硬件确定的,不能由程序改变。
中断发生后,中断装置按照中断类型到内存指定位置取出中断向量。
例如,在IBMPC系统中,地址000~03FF是中断向量空间。
操作系统的设计者根据各中断事件处理程序的存储位置及运行环境确定对应中断向量的值,系统启动时由初始化程序将该值填入指定位置。
7.有人说,中断发生后硬件中断装置保证处理机进入管态,这种说法准确吗?
说明理由。
这种说法不准确。
中断发生后,硬件中断装置负责引出中断处理程序,中断处理程序是否运行于管态取决于PSW中的处理机状态位,该位的值是操作系统初始化时设置的,只有在初试化程序正确设置该状态位的前提下,才能保证中断后系统进入管态。
8.为什么在中断处理过程中通常允许高优先级别的中断事件中途插入,而不响应低优先级别的中断事件?
(1)从逻辑上来说,高优先级别中断源所对应的事件比低优先级别中断源所对应的中断事件急迫;
(2)由于硬件中断类型是有限的,这样做实际上也就限制了中断嵌套的深度。
防止中断层数无限增长,甚
至系统栈溢出。
9.为什么说“关中断”会影响系统的并发性?
考虑单处理机系统。
在单处理机系统中,并发是通过将处理机轮流分配给多个进程而实现的,这个分配是由操作系统中处理机调度程序完成的。
中断是进程切换的必要条件,如果关了中断,则操作系统无法获得处理机的控制权,也就无法使多个进程分时共享处理机。
在关中断期间,一个进程独占处理机。
所以说“关中断”会影响系统的并发性。
10.假如关中断后操作系统进入了死循环,会产生什么后果?
因为操作系统进入了死循环,并且处于关中断,即不能响应中断,也就不能从死循环中退出。
系统不响应任何外部干预事件,系统表现为“死机”。
11.为什么不允许目态程序执行关中断指令及中断屏蔽指令?
开关中断指令和中断屏蔽指令属于特权指令,一般用户无权访问。
如果允许用户使用,用户关中断后可能影响系统对内部或外部事件的响应,也会使操作系统无法获得系统控制权。
12.如果没有中断,是否能够实现多道程序设计?
不能。
因为一个程序一旦被调度执行,将一直执行下去,中间不可能被打断,不可能达到多个进程交替执行的并发目的。
13.下列中断源哪些通常是可以屏蔽的,哪些通常是不可屏蔽的?
(1)I/O中断;
(2)访管中断;
(3)时钟中断;
(4)掉电中断答:
(1)I/O中断可以屏蔽;
(2)访管中断不可以屏蔽;
(3)时钟中断可以屏蔽;
(4)掉电中断不可以屏蔽。
14.下列中断事件哪些可由用户自行处理?
哪些只能由操作系统中断服务程序统一处理?
(1)溢出;
(2)地址越界;
(3)除零;
(4)非法指令;
(5)掉电答:
一般来说,只影响应用程序自身的中断,可以由用户自行处理,包括:
(1)溢出;
(3)除零。
可能影响其它用户或操作系统的中断只能由操作系统中断服务程序统一处理,包括:
(5)掉电。
15.如果中断由用户程序自行处理,为何需要将被中断程序的断点由系统堆栈弹出并压入用户堆栈?
中断发生时,被中断程序的现场信息已被压入系统堆栈中。
而中断续元运行于目态,它执行完毕后将由用户堆栈区中恢复现场。
为此,操作系统在转到中断续元之前还应当将系统堆栈中的现场信息弹出并压入用户堆栈中,否则中断续元执行完毕后将无法恢复现场返回断点。
16.对于下面中断与进程状态转换之间的关系各举两个例子说明之:
(1)一定会引起进程状态转换的中断事件;
(2)可能引起进程状态转换的中断事件.答:
定会引起进程状态转换的中断事件:
当前运行进程终止、应用程序启动I/O传输并等待I/O数据、运行程序申请当前被占用的某一资源。
可能引起进程状态转换的中断事件:
时钟中断事件可能引起进程状态转换,例如对于时间片轮转进程调度算法,
若时钟中断发生后,当前进程的时间片已用完,则将发生进程切换;
否则不发生进程切换。
17.若在T1时刻进程P1运行,T2时刻进程P2运行,且P1≠P2,则在时刻T1和时刻T2期间之内一定发生过中断。
这种说法对吗?
这种说法对。
如果在时刻T1进程P1在运行,在时刻T2进程P2在运行,且P1≠P2,则说在时刻T1和时刻T2之间发生了进程切换。
这说明在时刻T1和时刻T2之间执行了处理机调度程序,而处理机调度程序是操作系统低层中的一个模块,在系统运行的过程中,除非显式地调用到该模块,否则系统不会由运行一个进程转去运行另外一个进程,就是说不会发生进程切换。
只有进入操作系统,即处于系统态,才有可能调用到处理机调度,因为处于用户态运行的用户程序不可能直接调用操作系统中的任何模块。
中断是系统由用户态转换为系统态的必要条件。
据此,假如在时刻T1与时刻T2之间发生了进程切换,则在时刻T1与时刻T2之间一定发生过中断。
18.进程切换时,上升进程的PSW和PC为何必须由一条指令同时恢复?
中断向量中程序状态字PSW与指令计数器PC的内容必须由一条指令同时恢复,这样才能保证系统状态由管态转到目态的同时,控制转到上升进程的断点处继续执行。
如果不同时恢复,则只能
(1)先恢复PSW再恢复PC,在恢复PSW后已经转到目态,操作系统恢复PC的使命无法完成;
(2)先恢复PC再恢复PSW,PC改变后转到操作系统另外区域(因为PSW仍为系统状态),PSW无法恢复。
19.某系统采用可抢占处理机的静态优先数调度算法,请问何时会发生抢占处理机的现象?
当一个新创建的进程或一个被唤醒进程的优先数比正在运行进程的优先数高时,可能发生抢占处理机现象。
20.在实时系统中,采用不可抢占处理机的优先数调度算法是否适宜?
不适宜。
一旦一个低优先数、需要大量CPU时间的进程占用处理机,就会一直运行,直到运行结束,或者直到因某事件而阻塞。
在此之前,即使高优先数的紧急任务到达,也得不到处理,因而可能延误对重要事件的响应和处理。
21.在分时系统中,进程调度是否只能采用时间片轮转算法?
分时系统的特点是要求响应速度及时,除RR算法之外,还可以采用可剥夺CPU的动态优先数调度算法。
如经典UNIX的处理机调度算法,由于负反馈性质,算法也可以保证响应速度。
22.有人说,在采用等长时间片轮转处理机调度算法的分时操作系统中,各终端用户所占有处理机的时间总量是相同的.这种说法对吗?
因为处理机是分配给进程(线程)的,而不同终端用户可能有不同数量的进程,一个拥有较多数量进程的终端显然比拥有较少数量进程的终端获得CPU的时间要多。
23.对于下述处理机调度算法分别画出进程状态转换图。
(1)时间片轮转算法;
(2)
24.举出两个例子说明操作系统访问进程空间的必要性.答:
例
(1):
进程执行输出操作时,通过系统调用进入系统,由操作系统将待输出的数据由进程空间取出送给指定的外部设备,为此操作系统必须访问用户进程空间。
例
(2):
当发生可由用户自己处理的中断事件时,操作系统在转到中断续元之前应当将系统堆栈中的现场信息弹出并压入用户堆栈中,为此操作系统也必须访问进程空间。
25.根据进程和线程的组成说明进程调度和线程调度各需要完成哪些工作