习题:
1.操作系统的资源分为四类:
(1)处理器 (2)存储器 (3)I/O设备 (4)信息(数据和程序) 而中断机制包括硬件的中断装置和操作系统的中断处理服务程序,不属于资源。
2.【错了】这道题我错在第二个选项:“银行家算法是防止死锁发生的方法之一”,在这里我们要明白处理死锁的三种方法:预防/防止死锁,避免的死锁以及检测和解除死锁。预防/防止死锁的条件更为苛刻,需要我们破坏死锁产生的四个必要条件之一,而银行家算法属于避免死锁的算法,这两者是不同的。
其他选项的话,第一个:“分时系统中,时间片越短越好”这是错误的,时间片太短会使得进程之间的切换太频繁了,使得CPU的使用效率降低。第三个的话没有运行状态,只能说明运行状态和就绪队列为空,但是不能说明等待队列为空。
3.实时操作系统是在被控对象规定时间内处理完来自外部的事件,时间片是分时系统的事件要求。
4.【错了】这个题有点懵,题目说“操作系统提供给编程人员的接口是”我们首先先想接口的概念,在用户接口中接口分为命令接口(联机命令接口和脱机命令接口),程序接口(即系统调用)和图形接口(即图形界面),因此题目中满足接口定义的选项也只有C.系统调用,(系统调用是操作系统提供给编程人员的唯一接口,系统调用在高级语言中常以函数形式提供给程序员)
5.这道题我是选对了,但不完全对,我和答案的理解不太一样,就不说了,搞明白了再说
6.实时操作系统主要就是提供及时响应和高可靠性为主的
7.我们首先需要明白,操作系统是为了有效的管理硬件与软件资源的,所以说,操作系统所关心的事情,都与硬件和系统资源有关(管理计算机裸机,管理计算机中的信息资源,设计、提供用户程序与计算机硬件系统的接口也是为了更好的管理和分配计算机的资源(原因可以看操作系统的目的:提供一个计算机用户与计算机硬件系统之间的接口,使计算机系统更易于使用)),而高级语言的编译时依赖于编译器或者解释器的。
8.我们首先要明白什么是微内核结构,微内核结构的内核功能少,结构清晰便于维护,但是需要频繁的在用户态和核心态之间切换,性能低,所以运行效率反而时它的一个缺点.
微内核结构:
微内核结构不是完整的OS系统,而只是操作系统中最基本的部分,只是为构建通用OS提供一个重要基础,这样就可以确保把操作内核做得很小。具体的可见微内核操作系统介绍这篇文章,因而微内核提高了系统的可扩展性,增强了系统的可靠性,使系统的可移植性更好
9.【错了】错在了“对于批处理作业必须提供相应的作业控制信息”,其实仔细想一下,批处理作业是一旦开始就不会人机交互,所以肯定需要提前提供好作业控制信息才行。而对于分时系统来说,是必须要有交互功能的。实时系统对于分时系统的响应要求要更高。在分时系统中,用户不会独占文件系统,是由用户共享的。
10.系统调用是应用程序同系统之间的接口
11.首先多道程序设计我们是知道的,那么多重是什么,多重处理是指拥有多个CPU真正实现同时运行,就和并行一样。多重处理的实现有赖与多道程序技术,而多道程序设计原则上不一定要求多重处理系统的支持。多重处理系统比起单处理系统来说,虽增加了硬件设施,却换来了提高系统吞吐量、可靠性、计算能力和并行处理能力等好处。题目中的同时处于运行状态,是指多道程序运行。
12.中断处理程序只能在核心态下运行,只能是操作系统程序
13.看到接口,首先想到我们的几个接口方式:命令接口,程序接口,图形接口。而终端命令属于命令接口中的联机命令接口(交互式命令接口),图标菜单属于图形接口,系统调用属于程序接口。在题目选项中,“类似与DOS的批命令文件或UNIX的shell文件”是属于命令接口。
补充: DOS:是个人计算机上的一类操作系统。UNIX:unix是一个强大的多用户、多任务操作系统。shell:用户用来输入命令的任何程序,与Linux的cmd类似
14.【错了】对于中断的了解还不够,题目描述的中断属于内部中断是毋庸置疑的,所以可以排除A,C选项,而特权指令是只能在核心态(管态)下使用的指令,在用户态(目态)下使用特权指令会发生从目态到管态的变化,从用户栈到核心栈的变换,发生访管中断。
硬件故障中断:是指硬件故障引起的中断,eg:在使用打印机时打印机突然断电,造成硬件异常所引起的中断。
程序中断:指程序在执行过程中产生的一般中断,即由一般指令发生的中断,eg:当进程提出需要访问磁盘要求时,产生中断,这个就是程序中断。
外中断:是指由外部事件引起的中断eg:I/O设备的输入输出操作等引起的中断。
15.系统调用分为了:进程管理,文件管理,设备管理,主存管理,进程管理和信息维护,在题目中的读取某个逻辑块就属于文件管理的相关操作。
16.在单核处理器系统中,处理器和设备,处理器和通道,设备和设备都是可以并行的,可以同时打印(设备),计算(处理器),传输数据(通道控制内存与外存间数据交换)。
17.题目中只有A是接口
需要注意:库函数属于系统调用的上层,而中断和原语是计算机系统底层的基础功能,属于系统调用的下层
18.缺页处理和时钟中断都属于中断,只能在用户态下执行,进程调度也是只能在核心态下运行,命令解释程序属于命令接口,是操作系统提供给用户使用的接口,因此可以在用户态执行。
19.【错了】要学会画甘特图不然会吃亏20.系统调用(除了:陷入指令)和中断都是发生在用户态,执行在核心态。而进程切换实际上是对程序状态的修改,因此要修改程序状态字,这是特权指令,必须在核心态下执行。
21.程序状态字:用于记录当前处理器的状态和控制指令的执行顺序,并且保留和指示与运行程序有关的各种信息,其主要作用是实现程序状态的保护和恢复,所以中断处理时一定要将PSW压栈保持。
中断的发生是突然的,如地址越界,I/O设备输入(键盘输入),往往是系统不可知的,当系统发生中断处理时要转入中断处理程序,处理完成之后要返回中断时的指令处继续执行,由于处理中断时CPU可能会切换状态(如果在核心态发生中断就不用切换),因此中断处理返回时就需要还原当时的程序状态,这就需要程序状态字所存储的内容。
而子程序调用是系统能够预知的,并且子程序调用通常是在进程内部执行的,不会更改程序的状态,即使更改程序状态,只要更新寄存器就行,而不需要保存,因为一切都是系统预料到的,不需要保护和修复,所以子程序主要保存举办参数信息,不需要将PSW压栈。
22.用户平时开机时首先启用的时存于主板上的ROM中的BIOS程序(注意:不是操作系统),其次再由它去调用硬盘中的操作系统(如:Windows系统),将操作系统的程序自动加载到内存中的系统区,这段区域时RAM。
至于为什么时加载到RAM现在我的理解如下(在网上借鉴的):
运行linux系统的cpu。其运行频率非常高,远大于ROM读写速度,从rom取指会严重影响速度。故系统会把程序拷贝到RAM执行。
还有一点关于nandFlash和sd的解释等我弄明白了在回来补充
23.一的整数除以零会引发内中断,三的read系统调用,属于由内核提供的系统调用,要进入内核态。二的函数调用,是由软件包的函数库提供的,咋用户态下即可执行。
24.跳转指令和压栈指令都在用户态下执行,trap指令时唯一一个在用户态下执行的系统调用指令,目的就是使得系统进入核心态。而关中断指令时特权指令,只能在核心态下执行。
25.外部中断处理过程,程序计数器的内容由中断隐指令自动访问,通用寄存器的内容由操作系统保存。
26.A中R1为0的时候就会发生内中断,B中软中断发生在内核态,C中寄存器取非不会产生中断,D中addr是主存地址,访问需要进入内核态
27.批处理系统中,是脱机输入,监督程序依次执行磁带上的作业,作业执行时用户无法干预其运行。
28.流程就是:传递系统参数->执行陷入(trap)指令->执行相应的服务程序->返回用户态
29.操作系统的功能主要包括处理器(CPU)功能,存储器管理,文件管理和设备管理。数据管理属于文件管理的范畴,网络管理不属于操作系统的功能
30.多重处理即并行执行,多任务处理即多个进程并发执行(多道程序设计),操作系统既可以实现多重处理(并行),又可以实现多任务处理(并发)。并行执行和并发执行 不存在包含关系
31.就是并发性的性质
32.【错了】大体上是对的,但是在管理层细分中没有细分,采用层次结构方法可以将操作系统的各种功能分成不同的层次,即将整个操作系统看成若干层组成,每一层都提供一组功能。同机器硬件紧挨着的是操作系统的内核,它是操作系统的最内层,内核包括中断处理,设备驱动,CPU调度以及进程控制与通信等功能,其目的是提供一种进程可以存在和活动的环境。
命令管理层是操作系统提供给用户的接口层,因为在最外层
33.这个题目还是甘特图,题目的抢占的话没有太大意义,因为题目中直接给了优先次序执行而没有到达时间,所以很简单。
34.【错了】首先我们得明白什么时候CPU不会利用,即所有的进程都处于I/O设备时,由题意,用户进程等待I/O设备的时间为80%,也就是说每个进程由80%的几率处于进程等待状态,操作系统占2MB,每个用户进程占用10MB,当计算机有32MB的时候,一共有(32-2)/10=3个用户进程,因而CPU不会利用的概率就是当3个进程同时处于I/O设备或者等待I/O设备的状态的时候,即1-(0.8*0.8*0.8)=0.488,也就是48.8%的CPU利用率,当内存再增加32MB内存的时候,则一共有(32+32-2)/10=6个进程,因而CPU不会利用的概率就是当6个进程同时处于I/O设备或者等待I/O设备的状态的时候,即1-(0.8*0.8*0.8*0.8*0.8*0.8)=0.737856,大概是73.8%的CPU利用率。
35.虚拟的话,更多是后面的知识,虚拟是指把一个物理上的实体变为若干个逻辑上的对应物,前者是实际存在的,后者是虚拟的。在现目前,多道程序设计就有体现虚拟性,通过分时使用,把一台物理上的CPU虚拟为多台逻辑上的CPU。我们也通常把覆盖了软件的机器称为扩充机器或虚拟机。在后面的段页式存储的虚拟内存管理也是虚拟。
36.这道题应该是后面地知识会讲到,就先不写了
37.操作系统与硬件之间的关系:操作系统是覆盖在硬件上的第一层软件,它管理计算机的硬件资源。操作系统为用户完成所有与硬件相关的操作,从而极大的方便了用户对硬件资源的使用,并提高了硬件资源的录用率。
操作系统与其他系统软件之间的关系:操作系统是一种特殊的系统软件,其他系统软件运行在操作系统的基础之上,可获得操作系统提供的大量服务,也就是说,操作系统是其他系统软件和硬件之间的接口。
38.第二条改变成系统方式,也就是改变为核心态,这回使得用户可以随意使用特权指令,知识不行的,第四条将数据写到存放操作系统的存储区上,如果用户可以任意使用的话,会对操作系统本身加以修改,造成破坏,最终崩溃。
39.这个在之前我的操作系统笔记中有写到过,这里就再写一遍。
各个层面对于系统调用和库函数:
普通应用程序:可直接进行系统调用,也可使用库函数。有的库函数涉及系统调用,有的不涉及。
编程语言:向上提供库函数。有时会将系统调用封装成库函数,以隐藏系统调用的一些细节,使上层进行系统调用更加方便。
操作系统:向上提供系统调用
系统调用和库函数区别:
(1).系统调用是操作系统向上层提供的接口。
(2).有的库函数是对系统调用的封装。eg:对于文件的修改
(3).当今编写的应用程序大多是通过高级语言提供的库函数间接地进行系统调用
40.对于分时操作系统来说,分为3类:简单分时系统(即单道分时系统),多道分时系统和具有“前台”和“后台”的分时系统。
简单分时系统来说:内存中只驻留一道作业,其他作业都在外存中,时间片结束后,进行内存于外存间的调换。
多道分时系统来说:是引入了多道程序设计技术后,在内存中可以装入多道程序,系统把具备运行条件的作业排成一个队列,使它们依次轮流获得一个时间片运行。
具有“前台”和“后台”的分时操作系统:在简单分时系统中引入了“前台”和“后台”的概念,将作业分为了“前台”和“后台”两类,“前台”存放按时间片调入/调出的作业流,其工作方式与简单分时操作系统相同,“后台”存放批处理作业仅当“前台”正在调入/调出作业流或无调入/调出时,才运行“后台”的批处理作业,并给它分配更长时间片。
对于具有“前台”和“后台”的分时操作系统来说,想要设计一个合理的队列调度策略,使得分时作业响应快,批处理作业也能及时得到响应。
我们需要明白什么叫做及时得到响应,响应时间:从用户提交到首次产生响应所用的时间。及时得到响应就是要使得响应时间尽可能地缩短,因此我们可以设计两个优先级队列。使得分时作业进入高优先级作业,并采用短时间片地时间片轮转法调度。当高优先级队列空时,调度低优先级地成批作业,并给予较长地时间片
第一章习题讲解(2020版操作系统)
最新推荐文章于 2022-11-21 16:30:41 发布