操作系统概述
计算机软件通常分为系统软件和应用软件,操作系统是系统软件。
操作系统定义及作用
能有效的组织和管理系统种的各种软/硬件资源,合理的组织计算机系统工作流程,控制程序的执行,并且向用户提供一个良好的工作环境和友好的接口。
操作系统有两个重要的作用:一是通过资源管理提高计算机系统的效率;第二,改善人机界面向用户提供友好的工作环境。
操作系统特征与功能
操作系统的四个特征是并发性、共享性、虚拟性和不确定性。
从传统计算机资源管理的观点来看,操作系统的功能可分为:
· 进程管理:多道程序等技术来分配CPU时间片
· 文件管理:文件存储空间管理、目录管理、文件的读写管理和存取控制
· 存储管理:存储分配与回收、存储保护、地址映射和主存扩充
· 设备管理:对硬件设备的管理
· 作业管理:任务、界面管理、人机交互、图形界面、语音控制和虚拟现实
操作系统分类与特点
批处理操作系统
分为单道批处理和多道批处理
单道的含义是可以提交多个作业,但是每次只能有一个作业能装入内存执行,执行完后会自动执行下一个作业,节省了人工干预的时间
多道批处理操作系统允许多个作业装入内存执行,可以同时执行,需要计算机资源会由CPU进行分配,有三个特点:多道,宏观上并行运行,微观上串行运行
分时操作系统
一个计算机系统与多个终端连接,将CPU工作时间划分成许多小时间片给每个终端,这样就能对每个用户程序做出及时的应对。有四个特点:多路性、独立性、交互性和及时性
实时操作系统
实时指对外来信息能以足够快的速度进行处理,并在被控对象允许的时间范围内做出快速反应,对于交互能力要求不高。
实时系统可以分为实时控制系统和实时信息处理系统,
实时系统与分时系统主要有以下三点区别:系统的设计目标不同、交互性的强弱不同、响应的敏感时间不同
网络操作系统
网络操作系统的主要功能包括:高效可靠的网络通信、对网络中共享资源的有效管理、提供电子邮件、文件传输、共享硬盘和打印机服务、网络安全管理、提供互操作能力。
一个典型的网络操作系统的特性包括硬件独立性、多用户支持、提供目录服务、多种客户端支持、支持多种增值服务
网络操作系统可以分为如下三类:集中模式、客户端/服务器模式、对等模式
分布式操作系统
是由多个分散的计算机经连接而成的计算机系统,系统中的计算机没有主次之分,为分布式计算机系统配置的系统称为分布式操作系统。
分布式操作系统能动态分配系统中的各种资源,并为用户提供一个统一的界面和接口,操作使系统中若干计算机相互协作完成任务,并向系统提供统计、有效的接口的软件。
分布式操作系统是网络操作系统的更高级形式,它保持网络系统所拥有的全部功能,同时又有透明性可靠性和高性能的特点。
微型计算机操作系统
简称微机操作系统,常用的有windows、mac os、linux。
嵌入式操作系统
运行在嵌入式智能芯片环境中。
主要特点如下:微型化、可定制、实时性、可靠性、易移植性
操作系统的发展
三个因素:硬件的升级以及新的硬件的出现需要操作系统提供更多的支持;新的服务需求;修补操作系统自身的错误
进程管理
基本概念
程序与进程
顺序执行的主要特点:顺序性、封闭性和可再现性
并发执行的特征:失去了程序的封闭性、程序和机器的执行程序的活动不再一一对应、并发程序间的相互制约性。
进程的组成
进程是程序的一次执行,进程通常是由程序、数据和进程控制块(PCB)组成。
PCB是进程存在的唯一标志,内容:进程标识符、状态、位置信息、控制信息、队列指针、优先级、现场保护区、其他。
程序描述了进程需要完成的功能。
数据部分包括程序执行时所需的数据及工作区。
进程的状态及其状态的切换
三态模型:运行——阻塞——就绪
五态模型:新建——就绪——运行——阻塞——终止
挂起状态:系统资源特别是主存资源已经不能满足进程运行的要求,就需要将某些进程挂起,放到磁盘对换区,暂时不参加调度,以平衡系统负载。有五个状态:活跃状态、静止就绪、活跃阻塞、静止阻塞
进程的控制
为了实现进程间的同步互斥或者避免死锁等问题,就需要一套控制机构。进程是由操作系统内核中的原语实现的。
内核是计算机系统硬件的首次延伸,是基于硬件的第一层软件扩充。
原语是指若干条机器指令组成的,用于完成特定功能的程序段。原语的特点是执行时不能分割,即原子操作。
进程间的通信
同步与互斥
同步是合作进程间的直接制约问题,互斥是申请临界资源间的间接制约问题。
临界区管理的原则:有空即进、无空则等、有限等待、有权等待。
信息量机制
整型信号量与PV操作
信号量可以分为两种:公用信号量(实现进程间的互斥)、私用信号量(实现进程间的同步)。
信号量S的物理意义:S>=0表示某资源的可用数,若S<0,则其绝对值表示阻塞队列中等待该资源的进程数。
P操作的定义:S:=S-1,若S>=0,则执行P操作的进程继续执行,否则,置该进程进入阻塞状态。
V操作的定义:S:=S+1,若S>0,则执行V操作的进程将继续执行;否则,则从组赛状态中唤醒一个进程,并将其插入就绪队列,然后执行V操作的进程继续。
利用PV操作实现进程间的互斥
利用PV操作实现进程间的同步
高级通信原语
进程通信是指进程之间的信息交换,PV操作属于低级通信方式。
为了提高通信的效率,传递大量数据,降低程序编制的复杂度,系统引入了高级通信方式:
共享存储方式:共享某些数据结构(或存储区)实现进程之间的通信。
消息传递方式:金成进的数据交换以消息为单位,直接利用系统提供的原语来是实现通信。
管道通信:管道,指连接一个读进程和一个写进程,以实现他们之间通信的共享文件。
管道,管道的引入
如果用信号量来解决进程的同步与互斥问题,需要在适当的位置设置PV操作,否则会造成死锁错误,编程会变得很困难。
因此,提出了另一种同步机制——管程。其基本思路:采用资源集中管理的方法,将系统中的资源用某种数据结构抽象的表示出来。采用这种方法,就可以借助数据结构及再其上实施操作的若干过程来对共享资源进行管理。
进程调度
三级调度
高级调度(我理解成从新建到就绪的过程)、中级调度(从交换区的就绪进程调入主存)、低级调度(就绪进程占用CPU)
调度算法
先来先服务:按照作业提交或者成为就绪状态的现后次序分配CPU。有利于CPU繁忙的作业(长作业),不利于I/O繁忙的作业。
时间片轮转:给每个进程分配时间片,可以提高资源利用率。
固定时间片(分配时间片固定)、可变时间片(变化)
优先级调度:根据进程所具有的优先级来分配,总是(一般来说是概率比较大)优先数大的占用CPU
静态优先级(优先级不会改变)、动态优先级(会改变,例如每分配一次优先级就会降低)
多级反馈调度:是时间片轮转算法和优先级算法的综合与发展
进程优先级确定
对于I/O型进程,让其进入最高优先级队列
对于计算型进程,每次执行完时间片后都进入更低级队列。最终采用最大时间片来执行,以减少调度次数。
死锁
死锁产生的原因及4个必要条件:
竞争资源:当系统中多个集成所共享的资源不足以同时满足他们的要求是,将引起他们对资源的竞争导致死锁。
进程推进顺序非法:指进程在运行过程中请求和释放资源的顺序不当,导致进程死锁。
必要条件:互斥条件、请求保持条件、不可剥夺条件和环路条件
死锁的处理
死锁预防:预先静态分配法、资源有序分配法
死锁避免:银行家算法(每次分配资源前都要检测分配后会不会进入不安全状态)
死锁检测:系统定时运行一个死锁检测程序,如果检测到死锁就设法加以解除
死锁解除:资源剥夺法、撤销进程法
线程
传统的线程有两个基本的属性:可拥有资源的独立单位;可独立调度和分配的基本单位。
线程基本上不拥有资源,只拥有一点运行中必不可少的资源,它可以与同属一个进程的其他线程共享进程所拥有的全部资源。
线程可分为用户级线程和内核支持线程。
进程和线程本质上不同。
存储管理
存储器管理的主要功能包括主存空间的分配和回收、提高主存的利用率、扩充主存、对主存信息实现有效保护。
基本概念
存储器的结构
寄存器-主存-外存
寄存器-缓存-主存-存储组织的功能外存
虚拟地址:对于程序员来说,数据的存放地址是由符号决定的,故称符号名地址或者名地址,也叫虚拟地址。因为这个地址在主存中不是真实存在的。
地址空间:把程序中成为符号名的空间称为名空间
存储空间:逻辑地址空间(简称地址空间)是逻辑地址的集合,物理地址空间(简称存储空间)是物理地址的集合
地址重定位
地址重定位是指将逻辑地址变换成主存物理地址的过程
静态重定位:程序装入主存时已经完成了逻辑地址到物理地址的变换,优点是无需硬件地址变换机构的支持。缺点是必须给作业分配一个连续的存储区域。
动态重定位:动态重定位是指在程序运行期间完成逻辑地址到物理地址的变换。优点:可以把主存中的碎片集中起来,以充分利用空间;不必给程序分配连续的空间,可以较好的利用较小的主存块;可以实现共享。
存储管理方案
分区存储管理
基本思想是把主存的用户区划分成若干个区域,每个区域分配给一个用户作业使用且只能在自己的区域运行。
固定分区:是一种静态分区方式,缺点是已分配区中存在未用空间,可能会导致一些碎片空间不能使用
可变分区:动态分区方式,分区的个数是可变的,分区的大小刚好等于作业的大小。有四种算法:最佳适应算法,最差适应算法,首次适应算法,循环适应算法。
可重定位分区:移动所有已经分配好的分区,使之称为连续区域。
分区保护:防止未经核准的用户访问分区,常用如下两种方式:采用上界/下界寄存器保护;采用基址/限长寄存器保护
分页存储管理
将一个进程的地址空间划分成若干个大小相等区域,称为页。相应的,将主存空间划分成与页相同大小的若干个物理块,称为块或者页框。在位进程分配主存时,将进程中若干页分别装入多个不相邻接的块中。
地址结构:页号/块号+页内地址
当进程的多个页面分配到主存的多个物理块时,系统应能保证在主存中给找到页面对应的物理块,因此每个进程建立了疫彰页面映射表,简称页表(页号-块号)。
快表:在地址映射机构中增加一个小容量的联想存储器,联想存储器由一组高速存储器组成,称为快表。联想存储器存放的只是当前进程最活跃的少数几页的物理块号。
两级页表机制:第一级是页目录表,存放着某个页表的物理地址;第二级是页表,其中每个表目所存放的是页的物理块号。
分段存储管理
作业的地址空间按自身的逻辑关系划分成若干个程序段,每个段是一组完整的逻辑信息,每个段都有自己的段名,且有一个段号。段号从0开始,每一段也从0开始编址,段内地址是连续的,各段长度不等。
进程中各个段可以离散的分配到主存中不同的分区中,因此需要系统为每个进程建立一张段映射表,简称为“段表”。
分段系统的地址变换:系统设置了段表寄存器,用于存放段表基址和段表长度。段是信息的逻辑的单位,因此分段系统的一个突出优点是易于实现段的共享,而且对段的保护也十分方便。
段页式存储管理
结合了分段存储管理和分页存储管理的优点,克服了两者的缺点。
先将整个主存划分成大小相同的存储块,将用户程序按程序的逻辑关系分成若干个段,并未每个段赋予一个段名,再将每个段划分成若干个页,以页架位单位离散分配。
地址结构:段号S+段内页号P+页内地址W三部分。
虚拟存储管理
如果一个作业只部分装入主存便可开始运行,其余部分暂时留在磁盘上,在需要时再装入主存,这样可以有效的利用主存空间。从用户角度看,该系统所具有的主存容量将比实际主存容量大得多。
程序局部性原理
时间局限性:如果一个程序中的某条指令一旦执行,则不久的将来该指令可能再次被执行。
空间局限性:一旦程序访问了某个存储单元,则在不久的将来其附近的存储单元也最有可能被访问
虚拟存储器的实现
虚拟存储器是具有调入功能和置换功能,能仅把作业的一部分装入主存便可运行作业的存储器系统,能从逻辑上对主存容量进行扩充的一种虚拟的存储器系统。
请求分页系统:是在分页系统的基础上增加了请求调页功能和页面置换功能所形成的页式虚拟存储系统。以页面为单位。
请求分段系统:同上,请求调段功能……段式虚拟存储系统。
请求段页式系统:同上。
请求分页管理的实现
因为有些页面可能在磁盘上,因此需要再页表中再添加若干项()共程序再换进、换出时参考。
请求分页系统还在分页系统的地址变换机构的基础上增加了某些功能,如产生和处理缺页中断、从主存中换出一页实现虚拟存储。
页面置换算法
在进程运行中,如果发生缺页,此时主存中又无空闲块时,就需要从主存中调出一页程序或数据送磁盘的对换区。这里需要一定的页面置换算法来确定。置换算法的好坏直接影响系统的性能,不适当的算法会导致系统发生“抖动”
最佳(optional)置换算法:很难实现,选择最长时间内不会使用的页面置换出去,一般用来评价其他置换算法的性能。
先进先出(FIFO)置换算法:选择主存中滞留时间最久的页面予以淘汰。它是一种最直观的、性能最差的算法。
最近最少(LRU)使用算法:该算法是选择最近最少未使用的页面予以淘汰。
最近未用(NUR)置换算法:NUR算法将最近一段时间未引用过的页面换出,这是一种LRU的近似算法。
工作集
缺页率的高低与每个进程所占用的物理块数目相关,究竟为每个进程分配多少个物理块才能把缺页率保持在一个合理的水平上,为了解决这个问题,引入了工作集理论。
设备管理
设备管理概述
设备常称为外部设备(外设)。在计算机系统中,将负责管理设备和输入/输出的机构称为I/O系统。因此,I/O系统由设备、控制器、通道、总下和I/O软件组成。
设备的分类
按数据组织分类:块设备、字符设备
按设备的功能分类:输入设备、输出设备、存储设备、网络联网设备、供电设备等等。
从资源角度分类:独占设备、共享设备、虚拟设备
按数据传输率分类:低速设备、中速设备、高速设备
设备管理的目标和任务
目标是如何提高设备的利用率,为用户提供方便统一的界面。
在设备管理中主要利用的技术有中断技术、DMA技术、通道技术和缓冲技术
设备管理的主要功能是动态的掌握并记录设备的状态、设备分配与释放、缓冲区管理、实现物理I/O设备的操作、提供设备使用的用户接口的访问与控制。
I/O软件
设备管理软件的设计水平高低的那个了设备管理的效率。I/O软件基本思想是分层构造,把硬件与较高层次的软件隔离开来,最高层的软件则向应用提供一个友好的、清晰且统一的接口。
一般分4层:中断处理程序、设备驱动程序、与设备无关的系统软件和用户级软件。
设备管理采用的相关技术
通道技术
设置通道后,CPU只需向通道发出I/O命令,通道收到命令后,从主存中取出本次I/O要执行的通道程序并执行,仅当通道完成了I/O任务后才向CPU发出中断信号。根据信息交换方式的不同,将通道分为多字节通道,数组选择通道和数组多路通道三类。
DMA技术
是指数据与主存与I/O设备间直接成块传送,不需要CPU的任何干涉。实际操作由DMA硬件直接执行完成,CPU在此期间可以做别的事情。
缓冲技术
缓冲技术可以提高外设利用率,尽可能使外设处于忙状态。
缓冲技术可以采用硬件缓冲和软件缓冲。
引入缓冲的主要原因:缓和CPU与I/O设备间速度不匹配的矛盾;减少对CPU的中断频率;提高CPU和I/O设备之间的并行性
Spooling技术
simultaneous peripheral operations on line(外围设备联机操作)。
所谓的spooling技术,实际上是用异类物理设备模拟另一类物理设备的技术,是使独占使用的设别变成多台虚拟设备的一种技术,也是一种速度匹配技术。
磁盘调度
磁盘可以被多个进程共享,因此为了保护信息地安全,每一时刻只允许一个进程启动磁盘进行I/O操作,其 余的进程只能等待。因此,操作系统应采用一种适当的调度算法,使各进程对磁盘的平均访问时间最小。磁盘调度分为移臂调度(先)和旋转调度(后)两种。磁盘调度的目标是使磁盘的平均寻道时间最少。
磁盘驱动调度
先来先服务:最简单的磁盘调度算法,根据进程请求访问磁盘的顺序进行调度
最短寻道时间优先:要求访问的磁道与当前磁头所在磁道距离最近
扫描算法:不仅考虑到要访问的磁道与当前磁道的距离,更优先的考虑到是磁头当前移动方向。
单项扫描调度算法:规定磁头只做单向移动
旋转调度算法
移动臂定位后,有多个进程等待访问该柱面,如何决定这些进程的访问顺序就是旋转调度算法要考虑的问题。
文件管理
文件与文件系统
文件是具有符号名的、在逻辑上具有完整意义的一组相关信息项的集合。
信息项是构成文件内容的基本单位。
文件是一种抽象机制,它隐藏了硬件和实现细节,提供了将信息保留在磁盘上而且便于以后读取的手段。
操作系统根据文件名对其进行控制。
文件系统
所谓文件管理系统,就是操作系统中实现文件统一管理的一组软件和相关数据的集合,专门负责管理和存取文件信息的软件机构,简称为文件系统。
文件系统的功能包括:按名存取;统一的用户接口;并发访问和控制;安全性控制;优化性能;差错恢复
文件的类型
按文件性质和用途:系统文件、库文件、用户文件
按信息保存期限:临时文件、档案文件、永久文件
按文件的保护方式:只读文件、读写文件、可执行文件、不保护文件
UNIX系统:普通文件、目录文件、设备文件
文件的结构和组织
从用户角度看到的称为文件的逻辑结构,从实现的角度看,文件在文件存储器上的存放方式称为文件的物理结构。
文件的逻辑结构
有结构的记录式文件
所有的记录都是描述一个实体集的,有相同或不同的数据项,记录的长度可分为定长和不定长两类
定长记录
文件中所有记录的长度相同。
变长记录
指文件中所有记录的长度不相同。
无结构的流式文件
文件体为字节流,不划分记录。
文件的物理结构
文件的物理结构是文件的内部组织形式,即文件在物理存储设备上的存放方法。
连续结构
也称为顺序结构,将逻辑上连续的文件信息依次存放在连续编号的物理块上。为了解决增删操作的不便,可以采用连续结构的文件配置一个运行记录文件或称为事务文件,例如每4个小时,将运行记录文件与原来的文件合并。
链接结构
链接结构也称为串联结构,它将逻辑上连续的文件信息存放在不连续的物理块中,每个物理块设有一个指针指向下一个物理块。
索引结构
将逻辑上连续的文件信息存放在不连续的物理块中,系统为每个文件建立一张索引表。
多个物理块的索引表
根据一个文件的大小不同,其索引表占用的物理块的个数不同。
文件目录
系统必须为每个文件设置用于描述和控制文件的数据结构,它至少要包括文件名和存放文件的物理地址,这个数据结构称为文件控制块(FCB),文件控制块的有序集合称为文件目录。
文件控制块
基本信息类、存取控制信息类、使用信息类
目录结构
一级目录结构:整个系统中只需建立一张目录表,系统为每个文件分配一个目录项
二级目录结构:由主文件目录和用户目录组成,主文件目录存放用户目录。
多级目录结构:也称为树型目录结构,linux或者windows用的就是这个。
存取方法和存储空间的管理
文件的存取方法
是指读取读写文件存储器的一个物理块的方法,通常有顺序存取和随机存取两种方法。
文件存储空间的管理
将文件保存到外部存储器上必须知道有哪些空闲空间,因此文件系统必须对磁盘空间进行管理。外存空闲空间管理的数据结构通常称为磁盘分配表。常用的空闲空间的管理方法有空闲区表、位示图、空闲块链和成组链接法
空闲区表
将外存空间上的一个连续的未分配区域称为“空闲块”,每个表项表示一个空闲区。空闲表中包括序号、空闲区的第一块号、空闲块的块数和状态等信息。
位示图
在外存上建立一张位示图,记录文件存储器的使用情况。每一位对应文件存储器上的一个物理块
空闲块链
每个空闲物理块有指向下一个空闲物理块的指针
成组链接法
UNIX系统采用此方法,例如在实现时系统将空闲块分成若干组,每100个空闲块为一组,每组的第一个空闲块登记了下一组空闲块的物理盘块号和空闲块总数。
文件的使用
为了文件安全和保护起见,操作系统为每个文件建立和维护关于文件主、访问权限等方面的信息。为此操作系统在操作级(命令级)和编程级(系统调用和函数)向用户提供文件的服务
操作系统在操作级项用户提供的命令有:目录管理类指令、文件操作类命令(如复制)、文件管理类命令(如设置权限)
文件的共享和保护
文件的共享
指不同用户进程使用同一文件,减少由于文件复制而增加的访问外存的次数。采用文件名和文件说明分离的目录结构有利于实现文件共享。
硬链接
指两个文件目录表指向同一个索引节点的链接,也就是说不同的文件名于同一个文件实体的连接。文件硬链接不利于文件主删除它所拥有的文件,必须首先删除所有的硬链接。
符号链接
符号链接建立新的文件或目录,并与原来文件或目录的路径名进行映射,当访问一个符号链接时,系统通过该映射找到原文件的路径,并对其进行访问。
文件的保护
文件系统对文件的保护常采用存取控制方式进行,所谓存取控制,就是不同的用户对文件的访问规定不同的权限,以防止被未经文件主同意的用户访问。
存取控制矩阵
它是一个二维矩阵,一维列出计算机的全部用户,另一维列出系统中的全部文件,矩阵中的每个元素表示存取权限,有可读R,可写W,可执行X,以及它们的组合。要占据很大的空间。
存取控制表
按用户对文件的访问权力差别进行分类。,因为一个文件往往只与少数几个用户有关,因此这种分类方法可使存取控制表大大简化。
用户权限表
以用户或用户组为单位将用户可存取的文件集中起来存入表中,这称为用户权限表。
密码
在创建文件时,由用户提供一个密码,在文件中存入磁盘是用改密码对其进行加密
系统的安全与可靠性
一般从4个级别上对文件进行安全性管理:系统级(不允许未经授权的用户进入系统)、用户级(例如UNIX中将用户分为文件主、组用户和其他用户)、目录级(规定只有系统核心才有写目录的权利)和文件级(对文件属性的设置来控制用户对文件访问)。
文件的可靠性
文件系统的可靠性是指系统抵抗和预防各种物理性破坏和人为性破坏的能力。
转储与恢复
日志文件
文件系统一致性
作业管理
作业是为完成一个用户的计算任务(或一次事务处理)所作的工作总和。在操作系统中用来控制作业进入、执行和撤销的一组程序称为作业管理程序。操作系统可以进一步为每个作业创建作业步进程,完成用户的工作。
作业与作业控制
作业控制
脱机控制:作业运行的过程无须人工干预,因此用户必须用作业控制语言(JCL)编写成作业说明书,连同作业一起提交给计算机系统。
联机控制:操作系统向用户提供了一组联机命令,用户可以通过终端输入命令以控制作业的运行过程。
作业由程序、数据和作业说明书3个部分组成。
作业状态及转换
作业状态分为4种:提交、后备、执行和完成
作业控制块和作业后备队列
作业控制块(JCB)是记录与改作业有关的各种信息的登记表。JCB是作业存在的唯一标志,包括用户名、作业名和标志状态等信息。
通常将作业控制块排成一个或多个队列,而这些队列称为作业后备队列。
作业调度
作业调度算法
常用的作业调度算法如下:
先来先服务:作业达到的先后次序
短作业优先:要求运行的时间长短
响应比优先:响应比:=作业响应时间/作业执行时间; 作业响应时间:=作业等待时间+作业执行时间
优先级调度算法:设定优先级
均衡调度算法:轮流从不同类别作业中挑选作业执行,力求均衡的使用系统的各种资源。
作业调度算法性能的衡量指标
用户界面
用户界面是计算机种实现人与计算机通信的软/硬件部分的总称,也成为用户接口或者人机界面
硬件部分:输入数据或命令的输入装置、输出装置
软件部分:通信协议、操纵命令及其处理软件
用户界面可分为如下阶段
控制面板式用户界面
字符用户界面
图形用户界面
新一代用户界面