绪论
操作系统(Operating System),是配置在计算机硬件上的第一层软件,是对硬件系统的首次扩充。其主要作用是管理好这些设备,提高它们的利用率和系统的吞吐量,并为用户和应用提供一个简单的接口,便于用户使用。OS是现代计算机系统中最重要的系统软件,而其他的诸如编译程序、数据库管理系统等系统软件,以及大量的应用软件,都是直接依赖于操作系统的支持,取得它所提供的服务。事实上OS已经成为现代计算机系统、多处理机系统、计算机网络中必须配置的系统软件。
—-《计算机操作系统(第四版)》 汤小丹等,西安电子科技大学出版社
1.1 操作系统的目标和作用
操作系统的目标
-
方便性
-
有效性
-
可扩充性
-
开放性
操作系统的作用
-
OS作为用户和计算机硬件系统之间的接口
-
OS作为计算机系统资源的管理者
归纳起来可将这些资源分为四类:处理机、存储器、I/O设备和软件资源
OS的主要功能就是对这四类资源进行有效管理
-
OS实现了对计算机资源的抽象
推动操作系统发展的主要动力
- 不断提高的计算机资源利用率
- 方便用户
- 器件的不断更新换代
- 计算机体系结构的不断发展
- 不断提出新的应用需求
1.2 操作系统的发展过程
未配置操作系统的计算机系统
1.人工操作方式
1)用户独占全机
2)CPU等待人工操作。即:用户装卡带卸卡带时,CPU和内存是空闲的。 人机矛盾:CPU速度显著提高,但是I/O设备的速度却提高缓慢。
2.脱机输入/输出(OffLine I/O)
解释:事先讲装有用户程序和数据的纸带装入纸带输入机,在一些外围机的控制下,把纸带上的数据(程序)输入到磁带上。当CPU需要读取这些程序和数据是就从磁带上高速读取。
3.主要优点:
1)减少了CPU的空闲时间,这些都是在脱机情况下由外围机完成的,不占用主机时间。
2)提高了I/O速度。当CPU在运行中需要输入数据时,是直接从高速的磁带上将数据输入到内存中的。
单道批处理系统(Simple Batch Processing System)
1.处理过程
先把一批作业以脱机的形式输入到磁带上,并在系统上配上监督程序(Monitor),在它的控制下,这批作业能够一个接着一个处理。虽然系统对于作业的处理是成批进行的,但在内存中始终只保持一道作业,故称为单道批处理系统。
2.单道批处理系统的缺点
系统中的资源不能得到充分的利用。由于内存中只有一道程序,所以每逢该程序在运行中发出I/O请求后,CPU便处于等待状态,必须在其I/O完成后才继续运行。然后又因为I/O设备的低速,使得CPU的利用率显著降低。
多道批处理系统(Multiprogrammed Batch Processing System)
多道程序设计概念
在该系统中,用户所提交的作业先存在外存,并且拍成一个队列,称之为“后备队列”。然后作业调度程序按照一定的算法,在后备队列中选择若干作业调入内存,使它们共享CPU和系统中的各种资源。这样就使得CPU一直处于忙碌的状态。
多道批处理系统的优缺点
资源利用率高 | 使得多道程序交替进行,并且提高了I/O设备利用率 |
---|---|
系统吞吐量大 | 1.CPU等资源处于忙碌状态 2.仅在作业完成或进行不了后才切换,系统开销小 |
平均周转时间长 | 作业排队依次处理,所以周转时间长 |
无交互能力 | 作业一旦提交给系统,直至处理完成,用户无法与之交互 |
需要解决的问题
- 处理机争用问题。既满足各道程序运行需要,又能提高处理机利用率
- 内存分配与保护问题。要给每道程序分配必要的内存空间,不会使得某程序的异常破坏其他程序。
- I/O分配问题。既方便用户使用,又保证数据安全性
- 文件的组织和管理问题。有效组织存放在系统中的程序与数据,既便于用户使用,又能保障数据安全。
- 作业管理问题。
- 用户与系统接口问题。为了方便用户使用,OS应当提供给用户与OS之间的接口。
分时系统(Time Sharing System)
分时系统的引入
- 人-机交互:方便了程序员上机调试时独占全机直接控制,便于修改程序中的错误
- 共享主机 : 用户共享主机时,每个人都和独占一样,随时交互。
故分时系统是:在一台主机上连接了多个配有显示器和键盘的终端并由此组成的系统,该系统允许多个用户同时通过自己的终端,以交互方式使用计算机,共享主机中的资源。
分时系统实现的关键问题
必须解决的关键问题:如何使得用户能与自己的作业进行交互。
所以系统首先提供多个终端,同时给多个用户使用。然后,当用户在自己的终端上键入命令时,系统应当能及时接收,并且及时处理。然后再将这些结果返回给用户。
因此有如下要点:
1.及时接收。在系统中配置一个多路卡。
2.及时处理。需要改变原来的批处理系统运行方式,改为:
作业直接送入内存,因为作业在磁盘上无法运行。同时采用轮转运行。因为一个作业一直独占CPU的话,其他作业无法运行,于是设置时间片($e.g.$ 30 $ms$),系统就可以规定一个作业每次只能运行一个时间片的时间。时间一过就会暂停运行并且换到下一个作业。从而使得每个用户可以及时与自己的作业交互,从而请求也就得到了及时的响应。
实时系统(Real Time System)
实时系统的类型
- 工业(武器)系统
- 信息查询系统
- 多媒体系统
- 嵌入式系统
实时任务类型
1.周期性与非周期性实时任务。非周期性任务需要联系着一个截止时间(Deadline)。可分为开始与结束两种。
2.硬实时任务和软实时任务。Hard Real-time Task :系统必须满足任务对于截止时间的要求,否则可能出现难以预测的后果。 Soft Real-time Task ,它也联系着一个截止时间,对于系统产生的影响不会太大,用于信息查询系统和多媒体系统中的实时系统。
实时系统 VS. 分时系统
特征 | 分时系统 | 实时系统 |
---|---|---|
多路性 | 按分时原则为多个终端服务系统周期性 | 系统周期性对多路现场信息采集 |
独立性 | 每个终端用户与系统交互时互不干扰 | 信息的采集和对于对象的控制互不干扰 |
及时性 | 依据人能接受的时间确定 | 以控制的对象要求的截止时间确定 |
交互性 | 限于访问系统中某些特定的专用服务程序 | 也是仅限于用户发送的某些特定的指令,如开始停止快进等 |
可靠性 | 要求系统可靠 | 要求系统高度可靠,往往采取了多级容错措施保证系统和数据的安全 |
1.3 操作系统的基本特性
操作系统有四个基本特征:并发,共享,虚拟,异步
并发(Concurrence)
概念区分:并行与并发
并行指的是:多个事件同时发生。 并发指的是:多个事件在同一时间间隔内发生。
在多道程序环境中,并发就是在一段时间内宏观上有多个程序在同时运行。
引入进程(Process)
如果没有引入进程,那么属于同一个应用程序的多个程序之间必须顺序执行,比如I/O程序执行完才能执行计算程序。在引入了进程后,可以在内存中给多个程序分别建立一个进程,这样它们就能并发执行。
所谓进程,就是在系统中能独立运行并作为资源分配的基本单位,它是由一组机器指令、数据和堆栈等等组成的,是一个能够独立运行的活动实体。
多个进程之间可以并发执行并且交换信息。
共享(Sharing)
互斥共享方式
即:在一个时间段内只允许一个进程访问某个资源。这种资源也叫临界资源(Critical Resource),见第二章。
同时访问方式
即:允许一段时间内,由多个进程“同时”对其进行访问(微观上是交替进行的)。
重点:并发和共享是多用户(任务)OS的两个最基本的特征,它们是互为存在的条件。因为资源共享以进程并发为前提,而系统对于资源共享的有效管理以协调进程对其的访问也是并发有效执行的保障。
虚拟(Virtual)
时分复用
1.虚拟处理机技术
使得每个终端用户认为有个处理机只为自己服务,其实是多道程序设计技术将物理上的处理机虚拟为了多台逻辑 上的处理机。
2.虚拟设备技术
宏观上使得共享设备“同时”为多个用户服务
空分复用
即利用空间,也就是存储器的空闲空间区域存放并运行其他的程序,提高处理机效率。
于此同时,引入虚拟存储技术:本质上是内存的时分复用。如:使得一个100MB的程序每次调用一部分到30MB的内存空间中,运行完这部分就换出,使得程序各部分分时送入内存运行,看上去内存增大。
注意:如果对一个物理设备进行时分复用,假如$N$是其所对应的虚拟逻辑设备的数量,那么每台虚拟设备的平均速度必然小于等于$1/N$ 。同理,若是空分复用,平均占用空间也小于等于物理设备空间的$1/N$。
异步(Asynchronism)
由于资源等条件限制,进程的执行总是无法连续执行,会断断续续。所以进程总是以无法预知的速度推进,这叫异步性。但是只要OS中配置有完善的进程同步机制,且运行环境相同,那么作业在多次运行后依然能得到相同的结果。所以异步运行方式是允许的,也是OS的一个重要特征。
1.4操作系统的主要功能
处理机管理功能
进程控制
即进程的创建和撤销。当然在设置有线程的OS中,进程控制还包括为一个进程创建若干个进程,从而提高系统的并发性。并且还需要控制进程在运行时的状态转换。
进程同步
两种协调方式:进程互斥与进程同步。
进程互斥是对于临界资源的访问应该采用互斥的方式。
而进程同步则指的是由同步机构对于进程的执行过程进行协调。
进程通信
指的是有一组相互协作的进程完成一个共同任务时,它们之间需要交换信息。当它们处于同一个计算机系统内,则通常使用直接通信,源进程会将消息(message)直接挂到目标进程的队列上。
调度
传统OS中有作业调度和进程调度两步。
-
作业调度
从后备队列中按照算法选择若干作业,为其分配资源。将这些作业调入到内存时,又要分别为其建立进程,使他们都成为可能获得处理机的就绪进程,并将其插入到就绪队列中。
-
进程调度
从进程的就绪队列里按照一定的算法选一个进程,将处理机分配过去,为其设置运行现场,并使其投入运行。
存储器管理功能
内存分配
主要任务:
- 为每道程序分配内存空间,使得它们各得其所。
- 提高存储器利用率,减少不可用的内存碎片
- 允许运行中的程序申请附加的内存空间,以适应程序和数据动态增涨的需要。
静态分配方式:
作业的内存空间在装入的时候就是确定的,装入后的运行过程中也就不允许该作业继续申请新的内存空间,同时也不允许作业在内存中“移动”。
动态分配方式:
每个作业所要求的基本内存空间虽然是装入时就确定的,但是允许作业在运行的时候继续申请附加的内存空间,也允许作业在内存中“移动”。
内存保护
为了确保每个程序都在自己的内存区运行。
最简单方法:设置两个界限寄存器,存放正在执行的程序的上下界,从而在运行时可以对指令所要访问的地址进行check,如越界,就可以发出越界中断请求,停止程序执行。
地址映射
提供地址空间的逻辑地址到内存空间的物理地址之间的转换。
内存扩充
即借助虚拟存储技术,在逻辑上扩充内存的容量。而内存扩充机制需要实现以下功能:
- 请求调入功能,即装入部分用户数据和用户程序就能启动程序运行。
- 置换功能,即若发现内存已经不足以装入调入的程序和数据时:系统应该把内存中一些不需要的程序和数据调至硬盘上,以腾出内存空间。
设备管理功能
主要任务
- 完成用户提出的I/O请求,为用户进程分配所需的I/O设备,完成用户指定的操作。
- 提高CPU与I/O设备的使用率,并提高I/O速度。
缓冲管理
在I/O与CPU之间引入缓冲(Cache),可以有效缓和I/O与CPU速度不协调问题。OS需要负责缓冲区的管理。
设备管理
根据用户I/O请求,系统现有资源等为用户进程分配所需设备。同时设备使用完后应该要被OS及时回收。
设备处理
基本任务就是实现CPU与设备控制器之间的通信。
文件管理功能
文件存储空间管理
目录管理
建立统一的目录项
文件读/写管理与保护
根据文件名检索目录,获得文件位置然后使用文件读/写指针进行读/写。
文件保护:
- 防止未经核准的用户存取文件
- 防止冒名顶替存取文件
- 防止以不正确的方式使用文件
操作系统和用户间的接口
用户接口
联机用户接口,脱机用户接口与图形用户接口(Graphic User Interface)。
程序接口
是为用户程序在执行中访问系统资源而设置的,是用户程序取得操作系统服务的唯一途径。
现代操作系统的新功能
- 系统安全
- 网络功能与服务
- 支持多媒体
1.5 OS结构设计
传统操作系统结构
无结构操作系统
模块化操作系统
-
模块独立性:高内聚低耦合
-
优点:
提高OS设计的正确性、可理解性和可维护性 增强OS的可适应性 加速OS的开发过程 -
问题:
- 各模块间的接口很难满足在模块设计完成后对于接口的实际需要。
- OS设计阶段时各模块的设计齐头并进,无法寻找到一个可靠的决定顺序。所以这又叫做“无序模块法”。
分层式结构OS
客户/服务器模式
组成
- 客户机:通常在一个LAN网络上连接多台网络工作站(客户机)。
- 服务器:通常是一台较大的机器,平时一直工作。一旦检测到客户的服务请求便去完成客户请求
- 网络系统:用于连接上述部分。
交互
优点
- 数据的分布式处理与存储
- 便于集中管理
- 灵活,可扩充
- 已于改编应用软件
面向对象的重新设计技术
略
微内核OS结构
基本概念
-
足够小的内核,能够实现现代操作系统的最基本核心功能。
微内核中的内容 与硬件紧密相关的部分 一些基础功能 客户与服务器间的通信 -
基于客户/服务器模式
通过将操作系统的绝大部分功能都放在微内核之外的一组服务器进程中实现,从而将它们运行在用户态。而客户与服务器之间的通信则是借助微内核所提供的消息传递机制来实现信息交互的。
-
应用“机制与策略分离”原理
机制:是指实现某一功能具体执行的机构。
策略:是指在机制基础上通过某些参数以及算法从而实现对于功能的优化。
通常机制处于底层,而策略位于系统的高层
-
面向对象的技术
即:通过基于面向对象技术的“抽象“与”隐蔽“原则来控系统的复杂性。同时在进一步利用”对象“、”封装”和”继承“等概念来确保操作系统的正确性与可靠性等。
基本功能
进程(线程)管理
采用“机制与策略分离”原理以实现调度和通信。
低级存储器管理
只配置最基本的低级存储器管理机制,比如实现将用户空间的逻辑地址变换为内存空间的物理地址的页表机制和地址变换机制,因为这一部分是依赖于硬件,所以放入微内核之中。如虚拟存储器管理之类的则放入微内核外的存储器管理服务器中去实现。
中断和陷入管理
微内核由于都是是将与硬件紧密结合的部分,所以中断管理,识别中断还有陷入的类型都是其主要功能。而微内核在将其转换成消息后,把它发送给相关的服务器。
优点
提高了系统的可扩充性
增强了系统的可靠性
可移植性强
提供了对于分布式系统的资瓷
融入了面向对象的技术
存在的问题
由于采用了小的内核,所以导致运行效率下降。因为在完成了一次客户对于OS的请求之后,需要利用消息实现多次交互并且进行用户/内核模式与上下文切换。