目录
- 前言
- 1. 简答题
- 2. 应用题
前言
本系列文章是针对操作系统教程第六版(骆斌、葛季栋、费翔林)的习题解答,其中简答题部分为博主自己搜索整理的,错漏之处在所难免。应用题部分有答案为依据。
1. 简答题
(1)什么是程序状态字(PWB),它有何作用?
程序状态字描述程序动态执行的行为,包括程序计数器,指令寄存器,条件码,中断位,中断允许位,中断屏蔽位,处理器模式位,主存保护位等,记录当前程序运行的动态信息。
(2)为什么将机器指令分为特权指令和非特权指令
如果应用程序能够执行有关资源管理的机器指令将会导致系统混乱。
(3)为什么说操作系统由中断驱动?试述中断在操作系统中的作用是什么?
CPU运行的上层程序唯一可以进行用户态和核心态切换的途径就是通过中断机制。中断是操作系统与外部设备或程序交互的主要机制之一。
实时响应:当外部设备或程序需要操作系统的注意时,它们会发送一个中断信号,操作系统能够及时地响应这些中断请求,以处理设备的输入输出或者其他紧急任务。
资源管理:中断允许操作系统有效地管理计算机系统的资源。通过中断,操作系统可以动态地分配处理器时间、内存和其他资源给不同的任务,以实现多任务处理和资源共享。
事件驱动:许多操作系统和应用程序都是基于事件驱动的模型,中断提供了一种机制,使得操作系统能够在发生特定事件时立即做出响应,而不需要轮询或持续检查状态。
异常处理:操作系统使用中断来处理各种异常情况,例如除零错误、内存访问错误等。中断机制使得操作系统能够及时地捕获并处理这些异常,以保证系统的稳定性和安全性。
(4)根据中断请求信号的来源对中断事件进行分类
硬件故障中断事件:由计算机系统关键性故障事件导致的。
程序性中断事件:由处理器执行机器指令出错或异常引起的。
自愿性中断事件:又称系统调用,由程序执行陷入指令引起
IO中断事件:来自设备输入输出过程
外部中断事件:来自cpu现场之外的信号。
(5)硬件是如何发现与响应中断事件的?操作系统如何处理中断事件的?
对于来自处理器外异步中断事件,通常设置中断控制器。
对于请求操作系统服务自愿性中断事件,通常设置系统陷阱。
对于处理器执行指令引发的程序中断事件,通常设置陷阱。
操作系统处理中断事件的一般流程如下:
中断请求:硬件设备通过发送中断请求信号通知处理器需要处理某种事件,比如设备完成了数据传输、发生了错误或者需要处理器执行特定的任务。
中断响应:处理器收到中断请求信号后,会立即暂停当前正在执行的程序,保存当前程序的状态(比如程序计数器、寄存器状态等),然后根据中断向量表找到对应的中断处理程序的入口地址,开始执行中断处理程序。
中断处理程序执行:中断处理程序是预先由操作系统编写并注册的,用于处理特定类型的中断事件。它可能会进行一些特定的操作,如设备寄存器的读写、数据传输、更新数据结构等。
中断处理程序返回:当中断处理程序执行完毕后,处理器会恢复之前被中断的程序的执行状态,继续执行被中断的程序
(6)什么是中断屏蔽?哪些中断事件可被屏蔽?什么是中断优先级?为什么要为中断事件划分等级?
中断屏蔽是指进制cpu响应中断或进制产生中断。
设备中断时钟中断等
中断装置所预设的中断响应顺序称为中断优先级
中断是随机发生的,在计算机执行的每一个瞬间都可能有多个中断事件同时出现,中断设置要以不发生中断丢失为前提响应这些同时发生的中断,所以引入中断优先级。
(7)什么是进程,操作系统为什么引入进程概念?
从原理角度看,进程是支持程序执行的一种系统机制,它对处理器上运行程序的活动规律进行抽象,从实现角度看,进程是一种数据结构,用来准确地刻画运行程序的状态和系统的动态变化状况。进程概念既能描述程序的并发执行,又能共享系统资源。
在多道程序系统出现后,为了刻画系统内部动态状况,描述运行程序活动而引入的心概念。
(8)进程的基本状态有哪些?哪些状态能引起不同状态间的转换?
(9)进程新建态和终止态的主要作用分别是什么?
新建态对应于进程被创建时所处的状态,此时进程尚未进入就绪队列。
终止态是指进程完成任务到达正常结束点,或出现无法克服的错误而异常终止,或被操作系统及有终止权的进程所终止时所处的状态。
(10)什么是进程挂起状态?
进程的挂起状态指的是进程被操作系统临时中止执行,但仍然保留在内存中的状态。在这种状态下,进程暂时停止执行,但它的上下文信息(如寄存器状态、内存映像等)仍然被保存在内存中,以便稍后能够恢复执行。
(11)什么是进程控制块(PCB)?它包含哪些基本信息?
它是进程存在的唯一标识,用来记录和刻画进程状态及环境信息,是进程动态特征的汇集,也是操作系统掌握进程的唯一资料结构和管理进程的主要依据。
(12)什么是进程上下文?试述其主要内容。
进程物理实体和支持进程运行的环境称为进程上下文。进程在当前上下文中运行,当系统调度新进程占有处理器时,新老进程随之发生上下文切换。
(13)什么是进程切换?什么是模式切换?试述两种切换的主要步骤并对他们进行比较。
进程切换是指在操作系统中,从一个正在运行的进程切换到另一个进程的过程。当一个进程的时间片用完、被阻塞、或者由于其他原因需要暂停执行时,操作系统会进行进程切换,将CPU的控制权转移到另一个就绪状态的进程上,以实现多任务并发执行。
模式切换是指在计算机系统中,从用户态切换到内核态(也称为特权态)或者从内核态切换到用户态的过程。在用户态下运行的程序只能访问受限资源,而在内核态下运行的操作系统内核拥有对所有系统资源的完全访问权限。
两种切换的主要步骤及比较如下:
进程切换的主要步骤:
保存当前进程的上下文:包括程序计数器、寄存器内容、堆栈指针等。
切换内存映像和虚拟内存:将当前进程的内存映像从物理内存中移除,加载下一个进程的内存映像到物理内存中。
恢复下一个进程的上下文:包括程序计数器、寄存器内容、堆栈指针等。
更新进程控制块等数据结构:更新进程管理信息,以便操作系统正确追踪各个进程的状态。
模式切换的主要步骤:
保存当前模式的状态信息:保存当前用户态或内核态的寄存器状态、程序计数器等信息。
切换特权级别:修改处理器的特权级别,从用户态切换到内核态或者反之。
恢复新模式的状态信息:恢复目标模式下的寄存器状态、程序计数器等信息。
继续执行:根据所切换到的模式继续执行相应的指令。
比较:
进程切换是针对不同进程之间的切换,而模式切换是针对用户态和内核态之间的切换。
进程切换需要保存和恢复进程的上下文信息,而模式切换需要保存和恢复特权级别下的状态信息。
进程切换还涉及到内存映像和虚拟内存的切换,而模式切换则更侧重于特权级别的切换。
进程切换的开销通常比模式切换大,因为它还涉及到内存映像的切换,而模式切换只需切换特权级别即可。
(14)试述多线程环境中进程和线程的定义
多线程环境中的进程可以定义为操作系统中除处理器以外的资源分配和保护基本单位。它有一个独立的虚拟地址空间,用来容纳进程映像,并以进程为单位对各种资源实施保护。
线程是进程中能够并发执行的实体,是进程的组成部分,也是处理器调度和分配的基本单位。
(15)什么是内核级线程?什么是用户级线程?什么是混合式线程?试对他们进行比较。
内核级线程是指线程管理工作由操作系统内核完成并提供线程应用程序接口使用线程。
用户级线程是指线程管理工作由应用程序来做,在用户空间内实现,内核不知道线程的存在。
混合式线程由操作系统的函数库支持用户级线程,程序员在用户空间中创建线程,根据应用需求自由绑定用户级线程和内核级线程。
(16)试述作业进程线程和程序之间的关系。
程序是指令的集合,描述了特定任务的计算机代码;进程是程序的一次执行过程,是操作系统对程序的抽象;线程是进程内部的一个执行单元,共享进程的资源;作业是用户提交给操作系统的一项任务或一组相关任务。程序通过进程来执行,而进程可以包含多个线程,线程之间可以并发执行。作业可以包含一个或多个进程,这些进程之间可能存在依赖关系或协作关系。
(17)处理器调度分为哪几种类型?试述各类调度主要任务。
(18)在时间片轮转调度算法中,可根据哪些因素确定时间片长度?
时间片的长度可以根据系统负载、进程类型、响应时间要求、系统性能和公平性考虑等因素来确定,在实际应用中需要综合考虑这些因素,选择一个合适的时间片长度。
(19)为什么分级调度算法能够更好地满足各种用户需求?
多级反馈队列:分级调度算法通常使用多级反馈队列作为调度结构。在多级反馈队列中,不同优先级的进程被分配到不同的队列中,每个队列具有不同的时间片大小或调度策略。这样可以更好地满足不同类型进程的需求,例如对响应时间要求较高的交互式进程和对吞吐量要求较高的批处理进程。
公平性:通过采用多级反馈队列,分级调度算法可以实现对不同优先级进程的公平调度。高优先级队列中的进程可以更快地得到执行,而低优先级队列中的进程也能够有机会执行,从而实现了公平性。
资源分配:分级调度算法可以根据不同的优先级,灵活地分配系统资源。高优先级队列中的进程可以获得更多的CPU 时间,从而更快地响应用户的操作;而低优先级队列中的进程则可以长时间地占用 CPU,以提高系统的吞吐量。
适应性:多级反馈队列可以根据进程的行为动态地调整优先级和时间片大小,使得系统能够更好地适应不同的工作负载和用户需求。
性能优化:通过合理设置多级反馈队列的参数,分级调度算法可以在保证系统响应速度的同时最大限度地利用系统资源,从而优化系统的性能。
(20)在分级调度算法中,为什么对不同就绪队列中的进程规定使用不同长度的时间片?
响应时间要求不同:某些进程对响应时间有较高的要求,例如交互式进程,需要被快速响应以保证用户体验;而另一些进程对响应时间要求相对较低,例如批处理型进程,更注重整体吞吐量。通过给不同队列中的进程规定不同长度的时间片,可以更好地满足它们的响应时间需求。
充分利用系统资源:对于CPU密集型的进程,较长的时间片能够减少上下文切换的开销,提高CPU利用率;而对于I/O密集型的进程,较短的时间片能够更快地进行进程切换,以便及时响应I/O操作。因此,根据进程的特点给予不同长度的时间片可以更充分地利用系统资源。
公平性考虑:在多级反馈队列中,不同队列的进程可能处于不同的优先级,为了保证公平性,给予不同队列中的进程不同长度的时间片可以让高优先级的进程更快地得到执行,而低优先级的进程也有机会获得CPU时间,从而实现公平调度。
动态适应性:在实际系统中,不同类型的进程可能会动态地改变其行为特点,例如由CPU密集型转变为I/O密集型。通过给不同队列中的进程规定使用不同长度的时间片,系统可以更灵活地适应不同类型进程的变化,提高系统的适应性和性能。
2. 应用题
-
下列指令中,哪些只能在内核态运行?D读时钟日期:2陷入指令:@设置时钟日期:@加载PSW;置特殊寄存器:@启动 I/O 指令。
答:3456 -
试分别描述非抢占式优先数调度算法中就绪队列的出队与入队过程。
答:非抢占式优先数调度算法是等待 CPU 空闲之后才启动调度程序去选择高优先级进程占有CPU 运行,否则让其他可运行进程进入就绪队列。每当有进程入队则根据队列中进程的优先数进行排序,每次出队时选择队首进程(优先数最高的进程)。常用的优先数的设置有以下算法:FCFS,SJF,SRTF,HRRF 等。 -
试分别写出创建与撤销进程的进程控制算法流程。
答:(1)进程创建的流程:在进程列表中增加一项,从 PCB 池中申请一个空闲 PCB,为新进程分配唯一进程标识符:为新进程的进程映像分配地址空间,以便容纳进程实体;由进程管理程序确定加载至进程地址空间中的程序:为新进程分配各种资源:初始化 PCB,如进程标识符、处理器初始状态、进程优先级等:将新进程的状态设置为就绪态,并将其移入就绪队列;通知操作系统某些模块,如记账程序、性能监控程序。
(2)进程撤销:根据撤销进程的标识号,从相应队列中查找并移除它:将此进程所拥有的资源归还给父进程或操作系统:若此进程拥有子进程,先撤销其所有子进程,以防止它们脱离控制;回收 PCB,并将其归还至 PCB 池;最后,转向进程调度程序工作。 -
某 CAD 软件要实现以下功能:支持用户界面增减构件,2显示构件增减后的光照模型调整:3根据增减的构件对全模型进行结构力学计算。这是一个需要并行计算的复杂任务。试为此设计一个合理的多线程实现方案。
答:分为三个线程,一个线程接收用户输入,一个线程计算用户输入后的光照模型,一个线程对全模型进行结构力学计算。 -
数据库管理系统试图对不支持多线程技术的操作系统进行改造,请给出一个合理的设计方案。请画出用户级线程与操作系统进程之间的状态转换图。
答:数据库管理系统中,设计数据库服务器进程包含多个线程,分别为多个数据库客户服务,一个线程负责输入输出之后,借助于数据库打入操作系统磁盘 I/O 系统调用中的一个楔子 (Jacketing 程序),控制权会被交给数据库服务器的内设调度程序,该调度程序自动将CPU 切换给另一个等待服务的线程,这样数据库服务器进程就可以充分使用CPU 时间。用户级线程与操作系统进程之间的状态转换图如下,其中Running为运行态、Ready为就绪态、Blocked 为阻塞态(等待态)
-
某操作系统不支持多线程机制,高级程序设计语言提供了用户级多线程库,请画出用户级线程与操作系统进程之间的状态转换图。
答:在 Java 语言的多线程系统中,有调度程序 (scheduler) 负责调度线程,处理器资源是按时间片分配的,每个线程被赋予一个优先级,采用抢占式调度方式。为使低优先级线程能够有机会运行,较高优先级线程可以不时进入睡眠 (sleep)状态。线程的优先级如果相同,将依据“先来先服务”原则调度,线程组是 Java 用以管理线程的概念,每个线程均属于某一线程组,一个线程组可以包含多个线程或其他线程组,从而形成线程之间的层次关系。Java 语言对多线程的支持则主要是通过类Thread 和类 Runnable 来提供,而synchronized关键字和 monitor 可以用来控制线程的访问同步。用户级线程与操作系统进程之间的状态转换图如下:
-
假设一低级调度算法的处理器分配原则是:让就绪队列中最近使用处理器较少的那个进程获得处理器,试解释这种分配原则是有利于 /0 繁忙型作业的,但这并不意味着永远不受理处理器繁忙型作业。
答:因为 IO 繁忙型作业忙于/0,所以它 CPU 用得少,按调度策略能优先执行。同样原因一个进程等待 CPU 足够久时,由于它是“最近使用处理器较少的进程”,就能被优先调度,故不会饥饿。 -
假定一个处理器正在执行两个进程,其中一个进程以计算为主,另一个进程以I/O操作为主,应该如何赋予它们占有处理器的优先级,使得系统效率较高?
答:处理器调度算法会考虑以下因素:作业响应时间要求:让 CPU 尽量和外围设备并行工作;限制一个计算进程长时间霸占处理器。因而,以 I/O 为主的作业优先级高。 -
假定一个处理器正在执行 3 个进程,第一个进程以计算为主,第二个进程以I/0 操作为主,第三个进程计算与I/O 操作均匀。应该如何赋予它们占有处理器的优先级,使得系统效率较高?
答:输入输出为主作业优先级最高,输入输出均匀的作业其次,而计算为主作业的优先级最低。理由同上。 -
某操作系统以服务交互式用户为主,支持网络,且支持后台作业,试为该操作系统
设计一个合理的分级调度算法。
答:在该操作系统中,可以考虑将进程分为三大类:以服务交互式用户为主的进程、支持网络的进程、支持后台作业的进程,该系统可以使用多级队列调度算法实现,分为高级就绪队列、中级就绪队列、低级就绪队列。其中:服务交互式用户的进程需要实时交互,将其优先级设置为高级就绪队列,且配置较短的时间片,例如 100ms:对支持网络通信的进程将其优先级配置为中级就绪队列,且配置长度适中的时间片,例如 200ms: 对支持后台作业的进程,理解为是以计算为主,将其将其优先级配置为低级就绪队列,且配置较长的时间片,例如500ms。具体方案如下图所示:
-
若后备作业队列中同时等待运行的有 3 个作业;,已知其运行时间分别为 a、b、c,且满足 a<b<c,试证明采用短作业优先调度算法能获得最小的平均作业周转时间。
-
若有一组作业J,J2,…,Jn,其执行时间依次为 S,S2,…,Sn。这些作业同时到达系统,并在一台处理器上按照单道方式执行。试找出一种处理器调度算法,使得这些作业的平均周转时间最短。
-
某操作系统分配给 A 类进程的时间片长度为 100ms,分配给 B 类进程的时间片长度为 400ms,假定就绪队列中有4 个A类进程和1个B类进程。所有进程的平均服务时间为2s。不考虑 I/O 和系统开销,计算A类进程和 B类进程的平均周转时间分别是多少?
-
某系统就绪队列中有 10个进程,已知该系统处理间隔时钟中断需 ms,完成一次进程切换需 9ms,若采用时间片轮转法调度进程,时间片长度设为 200ms,试计算系统在进程调度的过程中,轮转一次所花费的调度开销占该次进程调度总时间的多少?
-
假定执行作业 Job~Jobs,作业号的数字下标为其到达顺序,即依次按照序号 123、4、5 进入单处理器系统,各作业的执行时间和优先数如下表所示。分别给出先来先服务调度算法、时间片轮转算法(时间片长度为 1ms)、短作业优先算法及非抢占式的优先数调度算法(优先数越小则优先级越高)下各作业的执行次序;@计算每种情况下作业的平均周转时间。
-
设在某系统中,每个进程在 O 阻塞前的平均运行时间为 T,完成一次进程切换所耗时间为 S。若采用时间片长度为Q 的时间片轮转调度算法,试计算下列各种情况下的 CPU利用率:@Q=o:@Q>T:@S<Q<T;@Q=S;Q 接近于0。
-
现有5个批处理作业AE 均已到达一台按单道方式执行的处理器,其运行时间分别为 2min、4min、6min、8min 和 10min,各自的优先级分别规定为1、2、34 和5,其中5 是最高级。对于时间片轮转调度算法(时间片长度为 2min)、优先数调度算法、短作业优先调度算法、先来先服务调度算法(按作业到达次序 C、D、B、E、A),在忽略进程切
换时间的前提下,计算出平均作业周转时间。
-
在一个只支持三道程序同时运行的多道程序系统中,作业调度采用短作业优先调度算法,进程调度采用以优先数为基础的抢占式调度算法。在下表所示的作业序列中,优先数即为进程优先数,优先数越小则优先级越高。
-
在一个只支持四道程序同时运行的多道程序系统中,若在一段时间内先后到达 6个作业,其提交时刻和估计运行时间由下表给出。
-
在一个单处理器多道分时系统中,有 3 道作业依次提交,其提交时刻、运行时间I/O 时间、CPU 时间分别如下表所示。
-
设有4 个进程 P、P2、P、P,它们到达就绪队列的时刻、运行时间及优先级如下:
1若采用抢占式优先数调度算法,试给出各个进程的调度次序以及进程的平均周转时间和平均等待时间。2若采用时间片轮换调度算法,且时间片长度取 2ms,试给出各个进程的调度次序以及进程的平均周转时间和平均等待时间。