第一章 操作系统引论
文章目录
操作系统(Operating System,OS)
- 是
配置在计算机硬件上的第一层软件
,是对硬件系统的首次扩充。控制和管理
整个计算机系统的硬件和软件资源
,并合理地组织调度计算机的工作和资源的分配;【提高设备利用率和系统的吞吐量】提供给用户和其他软件方便的接口和环境
,便于使用。- 是计算机系统中最基本的
系统软件
。
1.1 操作系统的目标和作用
1.1.1 操作系统的目标
在计算机系统上配置操作系统,其主要目标是:方便性、有效性、可扩充性和开放性
。
-
方便性
-
有效性
- 第一层含义是提高系统资源的利用率。
- 另一层含义是提高系统的吞吐量。OS可以通过合理地组织计算机的工作流程,加速程序的运行,缩短程序的运行周期,从而提高了系统的吞吐量。
-
可扩充性
-
开放性
:是指系统能遵循世界标准规范,特别是遵循开放系统互连OSI国际标准。
1.1.2 操作系统的作用
1、OS 作为用户与计算机硬件系统之间的接口
用户在OS帮助下能够方便、快捷、可靠地操纵计算机硬件和运行自己的程序。
用户可通过三种方式使用计算机,即通过命令方式
、系统调用方式
和图标-窗口方式
来实现与操作系统的通信
,并取得它的服务。
2、OS 作为计算机系统资源的管理者
在一个计算机系统中,通常都含有多种硬件和软件资源。归纳起来可分为四类:处理机、存储器、I/O设备以及文件(数据和程序)。
OS的主要功能也正是对这四类资源进行有效的管理:
处理机
管理是用于分配和控制
处理机:存储器
管理主要负责内存的分配与回收
;I/O设备
管理是负责I/O设备的分配(回收)与操纵
;文件
管理是用于实现对文件的存取、共享和保护
。
3、OS 实现了对计算机资源的抽象
扩充机器或虚机器
:覆盖了软件的机器,实现对硬件机器的拓展【将CPU、内存、磁盘、显示器、键盘等硬件合理地组织起来,让各种硬件能够相互协调配合,实现更多更复杂的功能】
向用户提供了一个对硬件操作的抽象模型(封装)
。用户可利用该模型提供的接口
使用计算机,无需了解物理接口实现的细节,从而使用户更容易地使用计算机硬件资源。
GUI图形化用户接口
(Graphical User Interface)用户可以使用形象的图形界面进行操作,而不再需要记忆复杂的命令、参数。用户接口
:命令接口
:- 联机命令接口 =
交互式
命令接口 (命令行) - 脱机命令接口 =
批处理
命令接口 (*.bat文件)
- 联机命令接口 =
程序接口
: 可以在程序中进行系统调用来使用程序接口。普通用户不能直接使用程序接口,只能通过程序代码间接使用。
【系统调用
类似于函数调用,是应用程序请求操作系统服务的唯一方式】
1.2 操作系统的发展过程
1.2.1 未配置操作系统的计算机系统
第一代计算机: 1945 年诞生的第一台计算机 ~ 到50年代中期 - 电子管
1、人工操作方式:
-
原理:
-
由程序员将事先
已穿孔的纸带
(或卡片),装入纸带输入机
(或卡片输入机), -
再启动纸带输入机将纸带(或卡片)上的程序和数据
输入计算机
, -
然后启动
计算机运行
。 -
仅当程序运行完毕并
取走计算结果
后,才允许下一个用户上机。
-
-
缺点:
用户独占全机
,即一台计算机的全部资源由上机用户所独占。CPU等待人工操作
。【CPU与I/O设备之间速度不匹配】
2、脱机输入/输出(Off-Line l/O)方式:
-
概念:程序和数据的输入和输出都是在
外围机
的控制下完成的【是在脱离主机
的情况下进行的】 -
原理:
- 输入:
- 事先将装有用户程序和数据的
纸带装入纸带输入机
, - 在一台
外围机
的控制下,把纸带(卡片)上的数据(程序)输入到磁带
上。 - 当
CPU
需要这些程序和数据时,再从磁带上高速地调入内存
。
- 事先将装有用户程序和数据的
- 输出:
- 当
CPU需要输出
时,可先由CPU把数据直接从内存高速地输送到磁带
上, - 然后在另一台外围机的控制下, 再将磁带上的结果通过相应的输出设备输出。
- 当
- 输入:
-
优点:
- 减少了CPU 的空闲时间——
缓解了一定程度的人机速度矛盾,资源利用率有所提升
。 - 提高了 I/O 速度。
- 减少了CPU 的空闲时间——
-
联机输入/输出(On-Line l/O)方式
:把在主机的直接控制下进行输入/输出的方式
1.2.2 单道批处理系统(Simple Batch Processing System)
第二代计算机: 20世纪50年代中期出现了第二代晶体管
计算机
单道批处理系统:
-
定义:在
内存中
始终只保持一道作业 -
核心原理:把
一批作业
以脱机方式
输入到磁带上,并在系统中配上监督程序(Monitor)
,在它的控制下,使这批作业能一个接一个地连续处理。 -
具体处理细节:
- 首先由监督程序将磁带上的第一个作业装入内存,并把运行控制权交给该作业
- 当该作业处理完成时,又把控制权交还给监督程序
- 再由监督程序把磁带上的第二个作业调入内存。
- …
- 直至磁带上的所有作业全部完成
-
缺点:
内存中仅能有一道程序运行
,只有该程序运行结束之后才能调入下一道程序。CPU有大量的时间是在空闲等待I/O完成
。资源利用率依然很低。
1.2.3 多道批处理系统(Multiprogrammed Batch Processing System)
第三代计算机: 20世纪60年代中期出现了第一台小规模集成电路计算机
多道批处理系统:
-
原理:
- 用户所提交的作业先存放在外存上,并排成一个队列,称为
“后备队列”
。 - 然后由作业调度程序按一定的算法,
从后备队列中选择若干个作业调入内存
,使它们共享CPU和系统中的各种资源。 - 由于同时在内存中装有若干道程序, 这样便可以在运行程序 A 时,利用其因 I/O 操作而暂停执行时的 CPU 空档时间,再调度另一道程序B运行,同样可以利用程序B在I/O 操作时的 CPU 空档时间,再调度程序C运行,使多道程序交替地运行,这样便可以保持CPU 处于忙碌状态。
- 用户所提交的作业先存放在外存上,并排成一个队列,称为
-
优缺点:
- 资源利用率高。- 多道程序并发执行
- 系统吞吐量大。能提高系统吞吐量的主要原因为: ①CPU和其它资源保持“忙碌”状态; ②仅当作业完成时或运行不下去时才进行切换,系统开销小。
- 平均周转时间长。
- 无交互能力。- 用户提交自己的作业之后就只能等待计算机处理完成,中间不能控制自己的作业执行。
eg: 无法调试程序/无法在程序运行迁程中输入一些参数
-
必须解决下述一系列问题:
-
处理机争用问题。
-
内存分配和保护问题。
-
I/O设备分配问题。
-
文件的组织和管理问题。
-
作业管理问题。
-
用户与系统的接口问题。
则应在计算机系统中增加一组软件,用以对上述问题进行妥善、有效的处理。这一组软件构成了操作系统。
-
1.2.4 分时系统(Time Sharing System)
原理:在一台主机
上连接了多个
配有显示器和键盘的终端
并由此所组成的系统,该系统允许多个用户同时通过自己的终端,以交互方式使用计算机,共享主机中的资源
。【计算机**以时间片为单位**轮流为各个用户/作业服务,各个用户可通过终端与计算机进行交互】
关键问题:
-
系统首先必须能提供
多个终端
,同时给多个用户使用
-
其次,当用户在自己的终端上键入命令时,系统应能及时接收,并及时处理该命令,再将结果返回给用户。此后,用户可根据系统返回的响应情况,再继续键入下一条命令,此即
人 — 机交互
。亦即,允许有多个用户同时通过自己的键盘键入命令,系统也应能全部及时接收并处理。及时接收
- 在
系统中
配置一个多路卡
——实现分时多路复用。即主机以很快的速度周期性地扫描各个终端,在每个终端处停留很短的时间,用于接收从终端发来的数据。 - 还需要为
每个终端
配置一个缓冲区
——用来暂存用户键入的命令(或数据)。
- 在
及时处理
作业直接进入内存
。- 采用
轮转运行
方式。
时间片,就是一段很短的时间(例如30ms)。系统规定每个作业每次只能运行一个时间片,然后就暂停该作业的运行,并立即调度下一个作业运行。
特征:
多路性
。系统允许将多台终端同时连接到一台主机上,并按分时原则为每个用户服务。【多路性允许多个用户共享一台计算机】独立性
。该系统提供了每个用户在各自的终端上进行操作,彼此之间互不干扰的用机环境。及时性
。及时性是指用户的请求能在很短时间内获得响应。交互性
。交互性是指用户可通过终端与系统进行广泛的人机对话。
缺点:不能优先处理一些紧急任务
1.2.5 实时系统(Real Time System)
定义:指系统能及时响应外部事件的请求,在规定的时间内完成对该事件的处理,并控制所有实时任务协调一致地运行。
实时系统的类型:
工业(武器)控制系统
。该系统应具有能实时采集现场数据,并对所采集的数据进行及时处理,进而能够自动地控制相应的执行机构,使之具有按预定的规律变化的功能,确保产品的质量和产量。如火炮的自动控制系统、飞机的自动驾驶系统,及导弹的制导系统等。信息查询系统
。该系统接收从远程终端上发来的服务请求,根据用户提出的请求,对信息进行检索和处理,并能及时对用户做出正确的回答。如飞机或火车的订票系统等。多媒体系统
。文本、图像、音频和视频等信息集成在一个文件中,形成一个多媒体文件。嵌入式系统
。芯片嵌入到各种仪器和设备中,用于对设备进行控制或对其中的信息做出处理。
实时任务的类型:
- 周期性实时任务和非周期性实时任务。
周期性实时任务
是指这样一类任务,外部设备周期性地发出激励信号给计算机,要求它按指定周期循环执行,以便周期性地控制某外部设备。非周期性实时任务
并无明显的周期性,但都必须联系着一个截止时间(Deadline),或称为最后期限。- ①
开始截止时间
,指某任务在某时间以前必须开始执行 - ②
完成截止时间
,指某任务在某时间以前必须完成。
- ①
- 硬实时任务和软实时任务。
硬实时任务(Hard Real-time Task,HRT)
是指系统必须满足任务对截止时间的要求,否则可能出现难以预测的后果。例如工业和武器控制的实时系统软实时任务(Soft Real-time Task,SRT)
也联系着一个截止时间,但并不严格,若偶尔错过了任务的截止时间,对系统产生的影响也不会太大。例如用于信息查询系统和多媒体系统中的实时系统
实时系统特征:
多路性
。信息查询系统
的多路性都表现为系统按分时原则为多个终端用户服务
;【和分时系统一样】实时控制系统
的多路性则是指系统周期性地对多路现场信息进行采集,以及对多个对象或多个执行机构进行控制
。
独立性
。彼此之间互不干扰的用机环境。及时性
。以控制对象所要求的截止时间来确定的,一般为秒级到毫秒级。信息查询系统
对实时性的要求是依据人所能接受的等待时间确定的
多媒体系统
实时性的要求是,播放出来的音乐和电视能令人满意
。
交互性
。信息查询系统
中,人与系统的交互性仅限于访问系统中某些特定的专用服务程序。多媒体系统
的交互性也仅限于用户发送某些特定的命令,如开始、停止、快进等,由系统立即响应。
可靠性
。要求系统高度可靠
优点:能够优先响应一些紧急任务,某些紧急任务不需时间片排队。
1.2.6 微机操作系统的发展
定义:配置在微型机上的操作系统
按微机的字长来分类: 8位、16位、32位、64位
按运行方式分类:
单用户单任务操作系统
:只允许一个用户上机,且只允许用户程序作为一个任务运行- 8位的CP/M 和16位的MS-DOS
单用户多任务操作系统
:只允许一个用户上机,但允许用户把程序分为若干个任务,使它们并发执行。- Windows
多用户多任务操作系统
:允许多个用户通过各自的终端,使用同一台机器,共享主机系统中的各种资源,而每个用户程序又可进一步分为几个任务,使它们能并发执行,从而可进一步提高资源利用率和系统吞吐量。- UNIX --变形–> Solaris + Linux
1.3 操作系统的基本特性
共同具有并发、共享、虚拟和异步四个基本特征。并发和共享是互为存在条件的
1.3.1 并发(Concurrence)
1、并行与并发
并行性
是指两个或多个事件在同一时刻发生。
并发性
是指两个或多个事件在同一时间间隔内发生。
- 宏观上,并发性是指在在一段时间内宏观上有多个程序在同时运行,
- 微观上,并发性是指这些程序是分时地交替执行。
并发例子:
在1秒钟时间内,0~15ms程序A运行;15~30ms程序B运行;30~45ms程序C运行;45~60ms程序D运行;
因此可以说,在1秒钟时间间隔内,宏观上有四道程序在同时运行,但微观上,程序A、B、C、D 是分时地交替执行的。
单核CPU
同一时刻只能执行一个程序,各个程序只能并发地
执行;
多核CPU
同一时刻可以同时执行多个程序,多个程序可以并行地
执行。
2、进程
进程定义:
-
是指在系统中能
独立运行
并作为资源分配的基本单位
, -
是由
一组机器指令、数据和堆栈
等组成的 -
是一个能独立运行的活动实体。
-
多个进程之间可以并发执行和交换信息。
有无进程对比:
-
在一个
未引入进程
的系统中,在属于同一个应用程序的计算程序和 I/O 程序之间只能是顺序执行
【即只有在计算程序执行告一段落后,才允许 I/O程序执行;反之,在程序执行 I/O操作时,计算程序也不能执行】 -
在一个
引入进程
的系统中,为计算程序和 I/O 程序分别建立一个进程(Process)后,这两个进程便可并发执行
。若对内存中的多个程序都分别建立一个进程,它们就可以并发执行。
1.3.2 共享(Sharing)
定义: 在OS环境下的资源共享
或称为资源复用
,是指系统中的资源可供内存中多个并发执行的进程共同使用。
主要实现资源共享的方式有如下两种:
-
互斥共享方式
:当进程A要访问某资源时,必须先提出请求。若此时该资源空闲,系统便可将之分配给请求进程A使用。此后若再有其它进程也要访问该资源,只要A未用完就必须等待。仅当A进程访问完并释放系统资源后,才允许另一进程对该资源进行访问。
临界资源(或独占资源)
:在一段时间内只允许一个进程访问的资源。
例子:使用QQ和微信视频。同一时间段内摄像头只能分配给其中一个进程。 -
同时访问方式
:允许在一段时间内由多个进程“同时”对它们进行访问。
“同时”:在单处理机环境下是宏观意义上的;而在微观上,这些进程对该资源的访问是交替进行的(分时共享)。典型的可供多个进程“同时”访问的资源是磁盘设备。
例子:使用QQ发送文件A,同时使用微信发送文件B。宏观上看,两边都在同时读取并发送文件,说明两个进程都在访问硬盘资源,从中读取数据。微观上看,两个进程是交替着访问硬盘的。
并发和共享是互为存在的条件
资源共享依赖于并发执行 —— 资源共享的前提是系统支持并发
- 如果系统不能同时运行多个任务(即不支持并发),那么资源就只会被一个任务独占,根本谈不上“共享”。
- 让多个任务能同时运行,才能一起使用资源。
共享的资源管理影响并发执行
- 如果系统不能管好资源(比如多个任务同时抢一个资源,导致冲突或死锁),那么这些任务就没法正常运行,并发执行的效果也就大打折扣,甚至完全卡死。
- 要想实现并发执行,系统必须管好共享资源,避免冲突,让任务之间能和谐地共同运行。
1.3.3 虚拟(Virtual)
定义:在 OS中,把通过某种技术将一个物理实体【实的】变为若干个逻辑上的对应物的功能【虚的】。没有并发性,虚拟性没有存在意义
实现技术:
-
时分复用技术: 将同一物理资源通过时间分割轮流使用。
利用某设备为一用户服务的空闲时间,又转去为其他用户服务,使设备得到最充分的利用。【通过将时间分割
成多个小的时间片,轮流分配给多个用户或进程,使得多个用户或进程可以并发执行。】N是某物理设备所对应的虚拟的逻辑设备数,则每台虚拟设备的平均速度必然等于或低于物理设备速度的1/N。
-
虚拟处理机技术
- CPU虚拟化核心是将物理CPU的时间资源分时分配给多个虚拟机或进程。
时分复用的典型场景 - 单核CPU的虚拟化
例子:一边用 Word 写文档,一边用浏览器查资料,一边用音乐播放器听歌。
虚拟处理机技术:电脑只有一个物理CPU,会快速在这些软件之间切换:
先让 Word 运行几毫秒,然后切换到浏览器运行几毫秒,再切换到音乐播放器运行几毫秒。
**效果:**觉得这些软件都在同时运行,但其实CPU是通过快速切换实现的。
-
虚拟设备技术
- 让多个进程或用户共享同一物理设备将一台物理 I/O 设备虚拟为多台逻辑上的 I/O 设备,并允许每个用户占用一台逻辑上的 I/O 设备。
例子:办公室里只有一台打印机,但大家需要打印文件。
虚拟设备技术:通过网络,把一台打印机“虚拟”成多台打印机,让多台电脑都能同时发送打印任务。
-
-
空分复用技术: 将物理资源划分为不同的空间区域,同时独立使用各个区域。
利用存储器的空闲空间分区域存放和运行其它的多道程序,以此来提高内存的利用率。【通过将空间分割
成多个小的部分,使得多个用户或进程可以共享同一资源。】N是某物理设备所对应的虚拟的逻辑设备数,则每台虚拟设备平均占用的空间必然也等于或低于物理设备所拥有空间的1/N。
场景:
假设正在用电脑:
- 打开了浏览器(占用一部分内存)。
- 然后又打开了音乐播放器(再占用一部分内存)。
- 接着又打开了文档编辑器(又占用一部分内存)。
如果内存中有空闲的区域,系统就会把这些程序分别放进去,让它们同时运行。如果没有分区域存放,程序之间可能会抢内存,导致系统变慢或崩溃。
-
虚拟存储技术
程序可访问的虚拟地址空间远大于物理内存
1.3.4 异步(Asynchronism)
- 同步方式:任务按
顺序执行
,当前任务完成后再执行下一个任务
。【发起后需等待任务完成】——阻塞
调用者
例子: 点击“下载”按钮,在下载完成之前,也就是下载期间,只能干等着什么也不能干。 - 异步方式:
任务在后台执行,程序可继续处理其他任务
,完成后需通知。【发起后无需等待任务完成】——独立执行
,不阻塞
调用者
例子: 点击“下载”按钮, 在下载完成之前,也就是下载期间,可以去干别的了——比如打游戏、看电影等。下载任务在后台默默进行,等下载完了,系统通过通知机制告知。只有系统拥有并发性,才有可能导致异步性。
1.4 操作系统的主要功能
1.4.1 处理机管理功能
处理机的分配和运行都是以进程为基本单位
的,因而对处理机的管理可归结为对进程的管理。
-
进程控制——创建、撤消进程及状态转换
-
在设置有线程的OS中,进程控制还应包括为
一个进程创建若干个线程
。 -
进程控制的主要功能也就是
为作业创建进程
、撤消(终止)已结束的进程
,以及控制进程在运行过程中的状态转换
。
-
-
进程同步——对诸进程的运行进行协调
用的协调方式有两种:
- ①
进程互斥
方式,指诸进程在对临界资源进行访问
时,应采用互斥方式;
最简单的用于实现进程互斥的机制是为每一个临界资源配置一把锁 W
,当锁打开时,进程可以对该临界资源进行访问;而当锁关上时,则禁止进程访问该临界资源。 - ②
进程同步
方式,指在相互合作去完成共同任务
的诸进程间,由同步机构对它们的执行次序加以协调。
而实现进程同步时,最常用的机制是信号量机制
。
- ①
-
进程通信——实现进程之间的信息交换
当相互合作的进程
处于同一计算机系统
时,通常在它们之间采用直接通信方式
:- 由
源进程
利用发送命令
直接将消息(message)挂到目标进程的消息队列上
, - 由
目标进程
利用接收命令
从其消息队列中取出消息
。
- 由
-
调度——按照一定的算法把处理机分配给进程
在传统OS中,调度包括作业调度和进程调度:
作业调度
。作业调度的基本任务是从后备队列中
按照一定的算法选择出若干个作业
,为它们分配运行所需的资源
,在将这些作业调入内存
后,分别为它们建立进程
,使它们都成为可能获得处理机的就绪进程,并将它们插入就绪队列中
。进程调度
。进程调度的任务是从进程的就绪队列
中按照一定的算法选出一个进程
,将处理机分配给它
,并为它设置运行现场
,使其投入执行
。
1.4.2 存储器管理功能
存储器管理应具有内存分配和回收、内存保护、地址映射和内存扩充等功能。
-
内存分配
- 内存分配的主要任务是:
- 为每道程序
分配内存空间
提高存储器的利用率
,尽量减少不可用的内存空间(碎片)。- 允许正在运行的程序申请附加的内存空间,以适应程序和数据
动态增长的需要
- 为每道程序
- OS 在实现内存分配时,可采取静态和动态两种方式:
静态分配方式
。
每个作业的内存空间是在作业装入时确定
的,在作业装入后的整个运行期间不允许该作业再申请新的内存
空间,也不允许作业在内存中“移动”
。动态分配方式
。
每个作业所要求的基本内存空间是在装入时确定
的,但允许作业在运行过程中继续申请新的附加内存
空间,以适应程序和数据的动态增长,也允许作业在内存中“移动”
。
- 内存分配的主要任务是:
-
内存保护
-
内存保护的主要任务是:
-
确保每道用户程序都
仅在自己的内存空间内运行
,彼此互不干扰,必须设置内存保护机制
。
一种比较简单的内存保护机制是设置两个界限寄存器
,分别用于存放正在执行程序的上界和下界
。在程序运行时,系统须对每条指令所要访问的地址进行检查,如果发生越界,便发出越界中断请求,以停止该程序的执行。 -
不允许
用户程序访问操作系统的程序和数据
, -
不允许
用户程序转移到非共享的其它用户程序中
去执行。
-
-
-
地址映射
能够将地址空间中的逻辑地址转换为内存空间中与之对应的物理地址。
属性 逻辑地址 物理地址 定义 程序使用的虚拟地址 内存中实际存储数据的地址 生成者 由编译器或操作系统生成 由内存管理单元(MMU)转换得到 独立性 每个进程有独立的逻辑地址空间 物理地址是唯一的,由硬件决定 空间大小 逻辑地址空间可以大于物理内存 物理地址空间由硬件内存大小决定 -
内存扩充
内存扩充并非物理上增加内存容量,而是通过 虚拟存储技术 从逻辑上扩展内存容量。通过内存扩充机制(包含少量硬件支持)实现。
为了实现逻辑上的内存扩充,系统需要具备以下功能:
-
请求调入功能 - 按需加载
-
系统允许仅装入部分用户程序和数据即可启动程序运行【
仅将程序的 必要部分 先加载到内存中
】。 -
在程序运行过程中,若发现需要访问尚未加载到内存的代码或数据,程序会向操作系统(OS)发出请求。
-
OS 从磁盘中将所需部分调入内存,确保程序继续运行。
-
-
置换功能
- 若发现在
内存中空间不足
时,系统应能将内存中的一部分暂时不用的程序和数据调至硬盘上,以腾出内存空间 - 然后再将所需调入的部分装入内存。
- 若发现在
-
1.4.3 设备管理功能
设备管理的主要任务:
- 完成用户进程提出的 I/O请求,为用户进程分配所需的 I/O 设备,并完成指定的 I/O操作。
- 提高CPU 和 I/O 设备的利用率,提高I/O速度,方便用户使用 I/O设备。
设备管理应具有缓冲管理、设备分配和设备处理以及虚拟设备等功能。
-
缓冲管理
-
如果在I/O设备和CPU之间引入缓冲,则可
有效地缓和CPU和I/O 设备速度不匹配的矛盾
,提高CPU的利用率
,进而提高系统吞吐量。 -
最常见的缓冲区机制有:单缓冲机制、能实现双向同时传送数据的双缓冲机制、能供多个设备同时使用的公用缓冲池机制。
-
-
设备分配
- 设备分配的基本任务是
根据用户进程的I/O请求、系统现有资源情况以及按照某种设备分配策略,为之分配其所需的设备
。 - 如果在I/O设备和CPU之间还存在着设备控制器和I/O通道,则还需为分配出去的设备分配相应的控制器和通道
- 系统中会设置
设备控制表
、控制器控制表
等数据结构,用于记录设备及控制器等的标识符和状态
- 设备分配的基本任务是
-
设备处理
设备处理程序
又称为设备驱动程序
。- 用于
实现CPU和设备控制器之间的通信
,- 由 CPU 向设备控制器发出 I/O 命令,要求它完成指定的 I/O 操作;
- 由 CPU 接收从控制器发来的中断请求,并给予迅速的响应和相应的处理
1.4.4 文件管理功能
文件管理应具有对文件存储空间的管理、目录管理、文件的读/写管理以及文件的共享与保护等功能。
-
文件存储空间的管理
- 为每个文件
分配必要的外存空间
,提高外存的利用率,进而提高文件系统的存、取速度。 - 还应具有对存储空间进行
分配和回收
的功能。
- 为每个文件
-
目录管理
- 为每个文件建立一个目录项,目录项包括文件名、文件属性文件在磁盘上的物理位置等.
- 用户只需提供文件名,即可对该文件进行存取。
- 应实现文件共享,只需在外存上保留一份该共享文件的副本。
- 应提供快速的目录查询手段,以提高对文件检索的速度。
-
文件的读/写管理和保护
-
文件的读/写管理
。—— 根据用户的请求,从外存中读取数据
,或将数据写入外存
。在进行文件读/写过程:
-
系统先根据用户给出的文件名去检索文件目录,从中获得文件在外存中的位置。
-
然后,利用文件读/写指针,对文件进行读/写。
-
一旦读/写完成,便修改读/写指针,为下一次读/写做好准备。
-
-
文件保护
。——防止系统中的文件被非法窃取和破坏
以实现下述目标:- 防止未经核准的用户存取文件;
- 防止冒名顶替存取文件
- 防止以不正确的方式使用文件,
-
1.4.5 操作系统与用户之间的接口
用户接口
目的:便于用户直接或间接地控制自己的作业。
分类:
联机用户接口
。为联机用户
提供的。它由一组键盘操作命令
及命令解释程序
组成。- 当用户在终端或控制台上键入一条命令后,系统便立即转入命令解释程序,对该命令加以解释执行。
- 在完成指定功能后系统又返回到终端或控制台上,等待用户键入下一条命令。
- 用户便可通过先后键入不同命令的方式来实现对作业的控制,直至作业完成。
脱机用户接口
。为批处理作业用户
提供的。- 用户用作业控制语言JCL把需要对作业进行的控制和干预的
命令
事先写在作业说明书
上,然后将它与作业一起提供给系统。 - 当系统调度到该作业运行时,通过调用命令解释程序去对作业说明书上的命令逐条解释执行,直至遇到作业结束语句时系统才停止该作业的运行。
- 用户用作业控制语言JCL把需要对作业进行的控制和干预的
GUI图形用户接口
。图形用户接口采用了图形化的操作界面
。用户可通过菜单(和对话框)用移动鼠标选择
菜单项的方式取代命令的键入,以方便、快捷地完成对应用程序和文件的操作。
系统接口
目的:为用户程序在执行中可以访问系统资源,是用户程序取得操作系统服务的唯一途径。
组成:由一组**系统调用
**组成的,每一个系统调用都是一个能完成特定功能的子程序。
系统调用:
应用程序可以通过系统调用来**请求获得操作系统内核的服务
**
系统调用的编写
:
- 早期的系统调用都是用
汇编语言编写
的,只有在用汇编语言书写的程序中才能直接使用系统调用。- 近几年的操作系统(如UNIX等)中,系统调用用
C语言编写
,以函数形式提供
。故在用C语言编制的程序中,可直接使用系统调用。
计算机 注意 普通应用程序 可直接进行系统调用,也可使用库函数,有的库函数涉及系统调用,有的不涉及
不涉及系统调用的库函数:如的“取绝对值”的函数
涉及系统调用的库函数:如“创建一个新文件”的函数编程语言 向上提供库函数。有时会将系统调用封装成库函数,以隐藏系统调用的一些细节,使程序员编程更加方便。 操作系统 向上提供系统调用,使得上层程序能请求内核的服务 裸机
凡是与共享资源有关的操作(如存储分配、I/O操作、文件管理等),都必须通过系统调用的方式向操作系统内核提出服务请求,由操作系统内核代为完成。这样可以保证系统的稳定性和安全性,防止用户进行非法操作。
1.4.6 现代操作系统的新功能
系统安全
确保在计算机系统中存储和传输数据的保密性、完整性和系统可用性。以下技术:
-
认证技术
。如身份认证,是通过验证被认证对象的一个或多个参数的真实性和有效性 -
密码技术
。即对系统中所需存储和传输的数据进行加密,使之成为密文, -
访问控制技术
。-
①通过对
用户存取权限
的设置,如可以限定用户只能访问被允许访问的资源,限定了用户访问范围 -
②通过对
文件属性
的设置,如设置文件属性为只读时,该文件就只能被读而不能被修改等。
-
-
反病毒技术
。
网络的功能和服务
实现网络通信和资源管理,以及提供用户取得网络服务的手段。
-
网络通信
。用于在源主机和目标主机之间,实现无差错的数据传输。 -
资源管理
。对网络中的共享资源(硬件和软件)实施有效的管理,协调诸用户对共享资源的使用,保证数据的安全性和一致性 -
应用互操作
。在一个由若干个不同网络互连所构成的互连网络中,必须提供应用互操作功能,以实现信息的互通性和信息的互用性。- 信息的互通性是指在不同网络中的用户之间,能实现信息的互通。
- 信息的互用性是表示用户可以访问不同网络中的文件系统和数据库系统中的信息。
支持多媒体
接纳控制功能
。
多媒体系统为了保证多个实时任务能按时完成(比如视频播放不卡顿),需要对系统中运行的软实时任务(SRT)数量进行限制。比如限制同时运行的视频流数量或内存中驻留的任务数量。实时调度
。
多媒体系统中的任务通常是有严格时间要求的软实时任务(SRT),比如视频播放需要每40ms更新一次图像,否则会卡顿。多媒体文件的存储
。
多媒体文件(比如视频、音频)需要快速从硬盘读取并传输到输出设备(比如显示器、扬声器),以保证播放的流畅性。
1.5 OS结构设计
1.5.1传统操作系统结构
无结构的 OS(第一代)
模块化结构的 OS(第二代)
模块-接口法
:- 基于“分解”和“模块化”的原则。按功能划分为若干个具有一定独立性和大小的模块。可以再进一步将各模块细分为若干个具有一定功能的子模块。
- 各模块之间能通过接口实现交互。
独立性
:- 模块独立性越高,各模块间的交互就越少,系统的结构也就越清晰。
衡量模块的独立性有以下两个标准:内聚性
,指模块内部各部分间联系的紧密程度。内聚性越高,块独立性越强。耦合度
,指模块间相互联系和相互影响的程度。耦合度越低,模块独立性越好。
- 模块独立性越高,各模块间的交互就越少,系统的结构也就越清晰。
- 优缺点:
- 优点:
- 提高正确性、可理解性和可维护性
- 增强可适应性:更容易扩展和修改
- 加速开发过程
- 缺点:
- 接口设计难以满足实际需求
- 决策的无序性:各个模块的设计是同时进行的,没有固定的顺序。模块-接口法也被称为
“无序模块法”
。
- 优点:
分层式结构的 OS(第三代)
有序分层法
:在目标系统An和裸机系统(又称宿主系统)A0之间,铺设若干个层次的软件,使 An通过 An-1、An-2、…、A2、A1层,最终能在 A0上运行在操作系统中,常采用自底向上法来铺设这些中间层。—— 每一层仅能使用其底层所提供的功能和服务,各层之间只存在着单向的依赖关系。- 优缺点:
-
优点:易保证系统的正确性。易扩充和易维护性。
-
缺点:
系统效率降低。
由于层次结构是分层单向依赖的,必须在每层之间都建立层次间的通信机制,OS每执行一个功能,通常要自上而下地穿越多个层次。
-
1.5.2客户/服务器模式(Client/Server Model) - C/S模式
组成:
客户机
: 每台客户机都是一个自主计算机,具有一定的处理和存储能力。服务器
:通常是一台规模较大的机器,能为网上所有的用户提供一种或多种服务。
一直处于工作状态,被动地等待来自客户机的请求。一旦检查到有客户提出服务请求,便去完成客户的请求,并将结果送回客户。网络系统
:是用于连接所有客户机和服务器,实现它们之间通信和网络资源共享
。
一次完整的交互过程:
客户机发送请求消息到服务器
。客户通过客户机软件发送请求消息。服务器接收到请求消息
。根据请求信息的内容,将之提供给服务器上的相应软件进行处理。服务器回送响应消息
。在完成指定的处理后,把处理结果装配成一个响应消息发送到客户机。客户机接收响应消息
。客户机把收到的响应消息转交给客户机软件,做出适当处理后返回给该客户。
优点:
- 数据的分布处理和存储。客户机具有相当强的处理和存储能力,可进行本地处理和数据的分布存储。
- 便于集中管理。
- 灵活性和可扩充性。
- 易于改编应用软件。
缺点:
- 在系统仅有一个服务器时,一旦服务器故障,将导致整个网络瘫痪。
- 当服务器在重负荷下工作时,会因忙不过来而显著地延长对用户请求的响应时间。
如果在网络中配置多个服务器
,并采取相应的安全措施,可加以改善。
1.5.3 面向对象的程序设计(Object-Orientated Programming)技术
对象:是指在现实世界中具有相同属性
、服从相同规则
的一系列事物(事物可以是一个物理实体、一个概念或一个软件模块等)的抽象,而把其中的具体事物称为对象的实例。
基本概念:
对象
利用被封装的数据结构(变量)
和一组对它进行操作的过程(方法)
来表示系统中的某个对象的:
对象中的变量(数据)
也称为属性
,它可以是单个标量或一张表。对象中的方法
是用于执行某种功能的过程
,它可以改变对象的状态,更新对象中的某些数据值或作用于对象所要访问的外部资源。- 对象中的变量(数据)对外是隐蔽的,因而外界不能对它直接进行访问,必须通过该对象中的一组方法(操作函数)对它进行访问。
对象类
定义一组大体相似的对象。一个类同样定义了一组变量和针对该变量的一组方法,用它们来描述一组对象的共同属性和行为。类是在对象上的抽象,对象则是类的实例。
继承
- 子类自动继承父类中定义的变量和方法,并允许子类再增加新的内容。
一个父类可以定义多个子类
,它们分别是父类的某种特例,父类描述了这些子类的公共变量和方法。子类又可以定义自己的子类
,通过此途经可以生成一个继承的层次。允许一个子类有两个父类或多个父类
,它可以从多个父类获得继承,此时称为“多重继承
”
优点:
- 通过“重用”提高效率和质量:可以直接用之前已经写好的、测试过的对象或类
- 系统更容易改和扩展
封装
:封装实现了模块化设计。修改对象内部的实现细节时,不会影响外部调用者。继承
:新功能可以直接“复制”老功能的代码,不用从头写。
- 系统更稳定和安全
- 对象独立测试:每个小模块(对象)都能单独测试,确保它没问题,整个系统也就更稳定。
- 封装保护数据:把数据和方法封装起来,防止乱动或乱用,系统更安全。
1.5.4 微内核 OS 结构 - 现代结构的 OS
内核程序
:负责实现操作系统的程序
由很多内核程序组成了“操作系统内核”,或简称“内核(Kernel)
”
“
特权指令
”,如:内存清零指令。这些指令影响重大,只允许操作系统内核来使用。
应用程序只能使用“非特权指令
”,如:加法指令、减法指令等。
CPU有两种状态,“
内核态=核心态=管态
”和“用户态=目态
”
- 处于
内核态
时,说明此时正在运行的是内核程序
,此时可以执行特权指令
- 处于
用户态
时,说明此时正在运行的是应用程序
,此时只能执行非特权指令
拓展:CPU 中有一个寄存器叫
程序状态字寄存器(PSW)
,其中有个二进制位,1表示“内核态”,0表示“用户态”
内核态→用户态
切换:执行一条特权指令–修改PSW的标志位为“用户态”
,这个动作意味着操作系统将主动让出CRU使用权
用户态→内核态
切换:由“中断”引发,硬件自动完成CPU状态转换过程
,触发中断信号意味着操作系统将强行夺回CPU的使用权
特点
足够小的内核
微内核并非是一个完整的OS,而是将操作系统中最基本的部分放入微内核
,通常包含有:- 与硬件处理紧密相关的部分;
- 一些较基本的功能;
- 客户和服务器之间的通信
基于客户/服务器模式
操作系统中最基本的部分放入内核中,而把操作系统的绝大部分功能都放在微内核外面的一组服务器(进程)中实现- 用于提供对进程(线程)进行管理的进程(线程)服务器、
- 提供虚拟存储器管理功能的虚拟存储器服务器、
- 提供 I/O 设备管理的 I/O 设备管理服务器等
应用“机制与策略分离”原理
机制
,是指实现某一功能的具体执行机构。策略
,则是在机制的基础上借助于某些参数和算法来实现该功能的优化,或达到不同的功能目标。- 通常,机制处于一个系统的基层,而策略则处于系统的高层。在微内核操作系统中,通常将机制放在OS的微内核中。
采用面向对象技术
基本功能
-
进程(线程)管理
- 微内核 —— 机制:
进程(线程)调度功能
, 在进程管理中设置一个或多个进程(线程)优先级队列; 能将指定优先级进程(线程)从所在队列中取出,并将其投入执行。进程(线程)之间的通信功能
,是微内核OS最基本的功能,被频繁使用。进程的切换
、线程的调度
,多处理机之间的同步
等功能。
- 放入微内核外的进程(线程)管理服务器 —— 策略:
- 用户(进程)如何进行分类
- 进程优先级的确认方式或原则
- 微内核 —— 机制:
-
低级存储器管理
- 微内核中:只配置
最基本的低级存储器管理机
- 用于实现将用户空间的逻辑地址变换为内存空间的物理地址的页表机制和地址变换机制,是依赖于硬件的,因此放入微内核。
- 微内核外的存储器管理服务器中:
实现虚拟存储器管理的策略
,包含应采取何种页面置换算法、采用何种内存分配与回收的策略等。
- 微内核中:只配置
-
中断和陷入处理
- 微内核中:
捕获所发生的中断和陷入事件,并进行相应的前期处理
,如进行中断现场保护,识别中断和陷入的类型,然后将有关事件的信息转换成消息后,把它发送给相关的服务器
。 - 微内核外的服务器:根据中断或陷入的类型调用相应的处理程序来进行
后期处理
。
中断和异常:
“中断”是让操作系统内核夺回CPU使用权的唯一途径
内中断 - 异常、例外
:与当前执行的指令有关,中断信号来源于CPU内部终止(abort)
:
由致命错误引起,内核程序无法修复该错误
,一般不再将CPU使用权还给引发终止的应用程序,而是直接终止该应用程序。- 试图在
用户态下非法使用特权指令
- 若
当前执行的指令是非法的
,则会引发一个中断信号
- 试图在
陷阱、陷入(trap)
:
应用程序想请求操作系统内核的服务,此时会执行一条特殊的指令–陷入/trap/访管指令
,该指令会引发一个内部中断信号故障(fault)
:
由错误条件引起的,可能被内核程序修复
。内核程序修复故障后会把 CPU使用权还给应用程序,让它继续执行下去。如:缺页故障
外中断 - 中断
:与当前执行的指令无关,中断信号来源于CPU外部;每一条指令执行结束时,CPU都会例行检查是否有外中断信号时钟中断
– 时钟部件每隔一个时间片会给CPU发送一个时钟中断信号I/O中断
– 由输入/输出设备发来的中断信号
中断机制的基本原理
不同的中断信号,需要用不同的中断处理程序【中断处理程序一定是内核程序,需要运行在内核态】来处理
。当CPU检测到中断信号后,会根据中断信号的类型去查询“中断向量表
”,以此来找到相应的中断处理程序在内存中的存放位置。 - 微内核中:
优点
提高了系统的可扩展性
。
当开发了新的硬件和软件时,微内核OS只需在相应的服务器中增加新的功能,或再增加一个专门的服务器。增强了系统的可靠性
。
当某个服务器出现错误时,不会影响内核,也不会影响其它服务器。可移植性强
。
在微内核结构的操作系统中,所有与特定CPU和I/O 设备硬件有关的代码,均放在内核和内核下面的硬件隐藏层中,而操作系统其它绝大部分——各种服务器,均与硬件平台无关提供了对分布式系统的支持
。
在分布式系统中赋予所有进程和服务器唯一的标识符,在微内核中再配置一张系统映射表(即进程和服务器的标识符与它们所驻留的机器之间的对应表),在进行客户与服务器通信时,只需在所发送的消息中标上发送进程和接收进程的标识符,微内核便可利用系统映射表将消息发往目标,而无论目标是驻留在哪台机器上。融入了面向对象技术
。
存在的问题
较之早期的操作系统,微内核操作系统的运行效率有所降低
。【最主要的原因是,在完成一次客户对操作系统提出的服务请求时,需要利用消息实现多次交互和进行用户/内核模式与上下文的多次切换。】
- 早期OS —— 一般只需进行两次上下文的切换。
- 第一次: 是在执行系统调用后由
用户态
转向系统态
时; - 第二次: 是在系统完成用户请求的服务后,由
系统态
返回用户态
时。
- 第一次: 是在执行系统调用后由
- 微内核OS —— 至少需要进行四次上下文切换。
- 第一次:
客户
发送请求消息给内核
,以请求取得某服务器特定的服务; - 第二次: 由
内核
把客户的请求消息发往服务器
; - 第三次: 当
服务器
完成客户请求后,把响应消息发送到内核
; - 第四次:
内核
将响应消息发送给客户
。
- 第一次:
1.5.5 操作系统体系结构
体系结构 | 特性、思想 | 优点 | 缺点 |
---|---|---|---|
分层结构 | 内核分多层,每层可单向 调用更低一层 提供的接口 | 🌟1.便于调试和验证 ,自底向上逐层 调试验证2.易扩充和易维护, 各层之间调用接口清晰固定 | 1.仅可调用相邻低层,难以合理定义各层的边界 🌟2. 效率低 ,不可跨层调用 ,系统调用执行时间长 ❌A → D ✔️A → B→ C→ D |
模块化 | 🌟将内核划分为多个模块 ,各模块之间相互协作 内核=主模块+可加载内核模块 主模块 :只负责核心功能 ,如进程调度、内存管可加载内核模块 :可以动态加载新模块到内核 ,而无需重新编译整个内核 | 1.模块间逻辑清晰易于维护 ,确定模块间接口 后即可多模块同时开发 🌟2.支持 动态加载新的内核模块 (如:安装设备驱动程序、安装新的文件系统模块到内核),增强OS适应性🌟3.任何模块都 可以直接调用其他模块 ,无需采用消息传递 进行通信,效率高 | 1.模块间的接口定义 未必合理、实用2.模块间 相互依赖,更难调试和验证 |
宏内核(大内核) | 所有的系统功能都放在内核里 (大内核结构的OS通常也采用了“模块化“的设计思想) | 🌟1.性能高 ,内核内部各种功能都可以直接相互调用 | 🌟1.内核庞大功能复杂,难以维护 🌟2.大内核中 某个功能模块出错,就可能导致整个系统崩溃 |
微内核 | 只把中断、原语、进程通信等最核心的功能放入内核 。进程管理、文件管理、设备管理等功能以用户进程的形式运行在用户态 | 🌟1.内核小功能少、易于维护 ,内核可靠性高 🌟2.内核外的 某个功能模块出错不会导致整个系统崩溃 | 🌟1.性能低 ,需要频繁的切换 用户态/核心态。🌟2.用户态下的 各功能模块不可以直接相互调用 ,只能通过内核的”消息传递” 来间接通信 |
外核(exokernel) | 🌟内核负责进程调度、进程通信 等功能,外核负责为用户进程分配未经抽象的硬件资源 ,且由外核负责保证资源使用安全【例如:抽象-虚拟地址空间;不抽象-物理地址空间】 | 🌟1.外核可直接给用户进程分配“不虚拟、不抽象的硬件资源,使用户进程可以更灵活的使用硬件资源 🌟2. 减少了虚拟硬件资源的“映射层” ,提升效率 | 1.降低了系统的一致性 【有的进程需要抽象,有的不需要】2.使系统 变得更复杂 |
1.6 操作系统引导
操作系统引导(boot)
– 开机的时候,怎么让操作系统运行起来?
1.7 虚拟机
虚拟机
: 使用虚拟化技术,将一台物理机器
虚拟化为多台虚拟机器(VirtualMachine,VM)
,每个虚拟机器都可以独立运行一个操作系统
同义术语:虚拟机管理程序
/虚拟机监控程序
/Virtual Machine Monitor/Hypervisor
第二类VMM常用的虚拟机软件:VirtualBox、VMware
两类虚拟机管理程序(VMM)的对比
第一类VMM | 第二类VMM | |
---|---|---|
对物理资源的控制权 | 直接运行在硬件之上 ,能直接控制和分配 物理资源 | 运行在Host OS(宿主操作系统)之上 ,依赖于Host OS为其分配 物理资源 |
资源分配方式 | 在安装Guest OS时,VMM要在原本的硬盘上自行分配存储空间 ,类似于"外核"的分配方式,分配未经抽象的物理硬件 | Guest OS 拥有自己的虚拟磁盘,该盘实际上是Host OS 文件系统中的一个大文件 。Guest OS分配到的内存是虚拟内存 |
性能 | 性能更好 | 性能更差 ,需要Host OS作为“中介” |
可支持的虚拟机数量 | 更多 ,不需要和 Host OS 竞争资源 ,相同的硬件资源可以支持更多的虚拟机 | 更少 ,Host OS 本身需要使用物理资源 ,Host OS 上运行的其他进程也需要物理资源 |
虚拟机的可迁移性 | 更差 | 更好 ,只需导出虚拟机镜像文件即可迁移到另一台 Host OS 上,商业化应用更广泛 |
运行模式 | 第一类VMM中,只有第一类虚拟机管理程序运行在最高特权级(Ring 0) ,可以执行最高特权的指令。 | 第二类VMM部分运行在用户态、部分运行在内核态。Guest OS 发出的系统调用会被 VMM 截获,并转化为 VMM 对 Host OS 的系统调用 |
参考:
教材:
计算机操作系统(第四版) (汤小丹) (Z-Library).pdf
视频: