第一章(操作系统引论)

仅作备忘,具体内容以书本为主

0、什么是操作系统(OS)

答:是配置在计算机硬件上的第一层软件,是对硬件系统的首次扩充。其主要作用是管理好这些设备,提高它们的利用率和系统的吞吐量,并为用户和应用程序提供一个简单的接口,便于用户使用。

1.1、操作系统的目标和作用

1.1.1、为什么要学习操作系统

①. 在《计算机组成原理》课程学习的基础上,学习操作系统可以打通计算机的整个体系,让学生能够全方位了解计算机的工作原理。

②. 通过学习操作系统运行机理,对今后的自身应用程序设计非常有好处,自少可以提升程序运行的效率和开发的时间效率。

③. 学习操作系统中经典的事件处理方法,这些方法在今后的应用程序设计中也必然会用到,在学习的时候最好拿一个小系统的源码来研究一下,不过我是无从下手的感觉- -,太复杂了。

1.1.2、操作系统的作用

①OS作为用户与计算机硬件系统之间的接口

用户可以通过三种方式使用计算机:即命令方式,系统调用方式和图标-窗口方式来实现与操作系统的通信。

②OS作为计算机系统资源的管理者

OS主要对处理机、存储器、I/O设备以及文件(数据和程序)这四类资源进行有效的管理。

③OS实现了对计算机资源的抽象

例如I/O设备管理软件实现了对计算机硬件操作的第一个抽象,用户可以利用该抽象模型提供的接口使用计算机,无需了解物理接口实现的细节,从而使用户更容易的使用计算机硬件资源。

1.2、操作系统的发展过程

1.2.1、什么叫脱机I/O和联机I/O?

答: 脱机 I/O 是指事先将装有用户程序和数据的纸带或卡片装入纸带输入机或卡片机,在外围机的控制下,把纸带或卡片上的数据或程序输入到磁带上。该方式下的输入输出由外围机控制完成,是在脱离主机的情况下进行的。

而联机 I/O 的方式是指程序和数据的输入输出都是在主机的直接控制下进行的。

1.2.2、什么是多道批处理及作用(无交互能力)

答:单道的一次只能运行一个程序。而多道批处理可以将用户所提交的作业并排形成一个队列放到外存中,通过调度算法放若干个作业进入内存中运行,它们共享CPU和系统中的各种资源,这样可以在运行A时,利用其I/O操作暂停执行的CPU空挡时间再调度B运行,同理使多道程序交替运行(理论上同一时间只能运行一个程序)。

1.2.3、实现分时系统的关键问题是什么?应如何解决?

答:分时系统具有较好的人机交互性;并且多个用户共享同一台主机;仿佛每个用户独占主机进行操作;且能够及时响应用户操作。

关键问题是当用户在自己的终端上键入命令时,系统应能及时接收并及时处理该命令,在用户能接受的时延内将结果返回给用户。

解决方法:针对及时接收问题,可以在系统中设置多路卡,使主机能同时接收用户从各个终端上输入的数据;为每个终端配置缓冲区,暂存用户键入的命令或数据。针对及时处理问题,应使所有的用户作业都直接进入内存, 并且为每个作业分配一个时间片,允许作业只在自己的时间片内运行,这样在不长的时间内,能使每个作业都运行一次。

1.2.5、实时操作系统(Real Time System)

1.2.5.1、为什么要引入实时OS?

答: 实时操作系统是指系统能及时响应外部事件的请求,在规定的时间内完成对该事件的处理,并控制所有实时任务协调一致地运行。引入实时 OS 是为了满足应用的需求,更好地满足实时控制领域和实时信息处理领域的需要。

实时系统相对于分时系统最主要的就是,实时系统具有高度可靠性,往往都采取了多级容错措施来保障系统的安全性及数据的安全性;而分时系统只具备一般的可靠性。此外还有及时性和交互性。

1.2.5.2、什么是硬实时任务和软实时任务?使举例说明。

答: 硬实时任务是指系统必须满足任务对截止时间的要求,否则可能出现难以预测的结果。举例来说,运载火箭的控制等。

软实时任务是指它的截止时间并不严格,偶尔错过了任务的截止时间,对系统产生的影响不大。举例:网页内容的更新、火车售票系统。

1.3、操作系统的基本特征

1.3.1、OS有哪几大特征?其最基本的特征是什么(并发和共享)?

①、并发性(最基本的特征): 指两个或多个事件在同一时间间隔内发生,譬如开四个进程,宏观上是同时运行,微观上是交替运行,只是时间间隔短,肉眼无法分辨;并行是指两个或多个事件在同一时刻发生

②、共享性:1、互斥共享方式:对于某些资源虽然可以提供给多个进程使用,但是在一段时间内只允许一个进程访问的资源,称为临界资源。2、同时访问:即允许若干个用户“同时”访问该资源文件(重入码:允许多个进程同时访问的代码)。

③、虚拟性:1、 (多道程序技术)时分复用技术:利用某一设备为用户服务的空闲时间,又转去为其它用户服务,使设备资源得到最充分的利用。概念上说是通过利用处理机的空闲时间运行其它程序,提高了处理器的利用率。 2、空分复用技术:利用存储器的空闲空间分区域存放和运行其它的多道程序,以此来提高内存的利用率。

④、异步性:当正在执行的进程提出某种资源要求时,如打印请求,而此时的打印机正在为其它进程打印,由于此时的打印机属于临界资源,因此正在执行的进程必须等待,并释放出处理机,直到打印空闲,并且再次获得处理机时,该进程方能继续执行。由于资源的因素的限制,使得进程的执行通常不是一气呵成的,而是走走停停的方式运行,可能先进入内存的后完成,后进入内存的先完成,进程是以不可预知的速度向前推进的,此即进程的异步性。

1.4、操作系统的主要功能

1.4.1、处理机管理有哪些主要功能?它们的主要任务是什么?

答:处理机 管理的主要功能是:进程控制、进程同步、进程通信和处理机调度;

①进程控制: 为作业创建进程,撤销已结束进程,控制进程在运行过程中的状态转换。

②进程同步: 为多个进程(含线程)的运行进行协调。两种协调方式:1、进程互斥方式,2、进程同步方式。而实现进程同步时,最常用的机制是信号量机制(锁机制)。

③进程通信:用来实现在相互合作的进程之间的信息交换。

④处理机调度:1、作业调度:从后备队列里按照一定的算法,选出若干个作业,为他们分配运行时所需的资源(首选是分配内存),使它们成为可能获得处理机的就绪进程。2、进程调度:从进程的就绪队列中,按照一定算法选出一个进程,把处理机分配给它,并设置运行现场,使进程投入执行。

1.4.2、存储器管理有哪些主要功能?它们的主要任务是什么?

答:内存管理的主要功能有:内存分配、内存保护、地址映射和内存扩充。

①内存分配:为每道程序分配内存。

②内存保护:决不允许用户程序访问操作系统的程序和数据;确保每道用户程序都只在自己的内存空间中运行,彼此互不干扰。

③地址映射:能够将地址空间中的逻辑地址转换为内存空间中与之相对应的物理地址。

④内存扩充:借助虚拟存储技术,从逻辑上扩充内存容量;用于实现请求调用功能,置换功能等。

1.4.3、设备管理有哪些主要功能?它们的主要任务是什么?

答: 主要功能有缓冲管理、设备分配和设备处理以及虚拟设备等。主要任务是:完成用户进程提出的I/O请求,为用户进程分配所需的I/O设备,并完成指定的I/O操作;提高CPU和I/O设备的利用率,提高I/O速度,以及方便用户使用I/O设备。

①缓冲管理:有效的缓和了I/O设备和CPU速度不匹配的矛盾。

②设备分配

③设备处理

1.4.4、文件管理有哪些主要功能?它们的主要任务是什么?

答:主要功能有:文件存储空间的管理,目录管理,文件的读/写管理和保护。 主要任务是:管理用户文件和系统文件,方便用户使用,保证文件安全性。

①文件存储空间的管理:

②目录管理:

③文件的读/写管理和保护:

1.4.5、是什么原因使操作系统具有异步性特征?

答:操作系统的异步性体现在三个方面:一是进程的异步性,进程以人们不可预知的速度向前推进;二是程序的不可再现性,即程序执行的结果有时是不确定的,三是程序执行时间的不可预知性,即每个程序何时执行,执行顺序以及完成时间是不确定的。

1.5、OS结构设计

1.5.1、模块独立性概念:内聚性:指模块内部各部分间联系的紧密程度,内聚性越高,模块独立性越强。 耦合性:指模块间相互联系,相互影响的程序,显然,耦合度越低,模块独立性越好。(设计程序要点高内聚,弱耦合)。

1.5.2、 模块接口法存在哪些问题?可通过什么样的途径来解决?

答: (1 )模块接口法存在的问题: ①在 OS 设计时,各模块间的接口规定很难满足在模块完成后对接口的实际需求。 ②在 OS 设计阶段,设计者必须做出一系列的决定,每一个决定必须建立在上一个决定的基础上。但模块化结构设计的各模块设计齐头并进,无法寻找可靠的

顺序,造成各种决定的无序性,使程序设计人员很难做到设计中的每一步决定都建立在可靠的基础上,因此模块接口法被称为“无序模块法” 。

(2)解决途径:将模块接口法的决定顺序无序变有序,引入有序分层法;分层的优点是(1、保证系统正确性,2、易扩充和易维护性)

1.5.3、在微内核OS中,为什么要采用客户/服务器模式?

答:C/S模式具有独特的优点:①数据的分布处理和存储②便于集中管理③灵活性和可扩充性。④易于改编应用软件。

1.5.4、描述什么是微内核?

答:①足够小的内核②基于客户/服务器模式③应用机制与策略分离原理④采用面向对象技术。

1.5.5、何谓微内核技术?在微内核中通常提供了哪些功能?

答:把操作系统中更多地成分和功能放到更高的层次(即用户模式)中去运行,而留下一个尽量小的内核,用它来完成操作系统最基本的核心功能,称这种技术为微内核技术。在微内核中通常提供了进程(线程)管理,低级存储器的管理,中断和陷入处理等功能。

1.5.6、 微内核操作系统具有哪些优点?它为何能有这些优点?

答: 1 )提高了系统的可扩展性

2)增强了系统的可靠性

3)可移植性

4)提供了对分布式系统的支持

5)融入了面向对象技术