OS 概述
OS 的定义
操作系统是计算机系统的一个系统软件,它是这样一些程序模块的集合 ——它们能有效地组织和管理计算机系统中的硬件及软件资源,合理地组织计算机工作流程,控制程序的执行,并向用户提供各种服务功能,使得用户能够灵活,方便,有效地使用计算机,并使整个计算机系统能高效地运行.
OS 的特性
并发性
共享性
随机性
OS 的功能
进程管理
存储管理:内存分配,地址映射,内存保护,内存扩充;
文件管理:文件存储空间的管理,文件操作的一般管理,目录管理,文件的存取控制;
设备管理:缓冲区管理,设备分配,设备驱动,设备无关性;
作业管理
其他功能
OS 的发展历史
OS 的分类
批处理操作系统
分时操作系统:将一台计算机很好的提供给多个用户同时使用,提高计算机的利用率.
实时操作系统:是计算机系统可以立即对用户程序要求或者外部信号作出反应的系统,它可以分为硬实时系统和软实时系统.
嵌入式操作系统
个人计算机操作系统
OS 硬件环境
特权指令
特权指令是指在指令系统中那些只能由操作系统使用的指令.
处理器工作状态划分成:管态和目态
管态
操作系统管理程序运行的状态,具有较高的特权级别,又称为特权态,系统态.
目态
用户程序运行时的状态,具有较低的特权级别,又称为普通态,用户态.
程序状态字
程序状态字是指
指示处理器状态的寄存器
PSW 通常包括以下状态代码
CPU 的工作状态码:
指明管态还是目态,用来说明当前在CPU上执行的是操作系统还是一般用户.
条件码:
反映指令执行后的结果特征.
中断屏蔽码:
指出是否允许中断.
多级存储体系
计算机存储系统的设计主要考虑三个问题:容量,速度,成本.
多级存储体系. png
沿着层次下降时,每比特的价格将下降,容量将增大,速度将变慢,处理器的访问频率下降!
用户接口与作业管理
作业的概念
用户在一次计算过程中,或一次事务处理过程中,要求计算机系统所做工作的总称.
用户与操作系统之间的接口分为:作业级接口和程序级接口
作业级接口
操作系统为用户对作业运行全过程控制提供的功能.
联机接口(交互式)
脱机接口(批处理)
程序级接口
系统为用户在程序一级提供有关服务而设置的,由一组系统调用命令组成.
负责管理和控制运行的程序.
并在这些程序与系统控制的资源和提供的服务间实现交互作用.
JCB
作业控制块是批处理作业存在的标志,其中保存有系统对于作业进行管理所需要的全部信息,它们被保存于磁盘区域中.
记录系统管理作业所需要的全部信息
作业控制块是批处理作业存在的标志
位于磁盘固定区域中(长度固定)
作业的状态及转换
个作业从进入系统到运行结束经历四个不同的状态
作业的状态及转换. png
"进入状态"
"后备状态"
"执行状态"
"完成状态"
作业调度算法
先来先服务算法(FCFS:First Come First Serve)
最短作业优先算法(SJF:Shortest Job First)
最高响应比优先算法(HRN:Highest Response Ratio Next)
响应比 R
= 作业周转时间 / 作业处理时间
=(作业处理时间 + 作业等待时间)/ 作业处理时间
= 1 +(作业等待时间 / 作业处理时间)
系统调用
用户在程序中调用操作系统提供的一些子功能.
一种特殊的过程调用,由特殊的机器指令实现(每种机器的机器指令集中都有一条系统调用指令——访管指令)
系统调用是操作系统提供给编程人员的唯一接口
从目态转入管态
系统调用是一个低级过程,只能由汇编语言直接访问
利用系统调用,动态请求和释放系统资源,完成与硬件相关的工作以及控制程序的执行等
进程管理
程序顺序执行的特点
顺序性
处理机严格按照程序所规定的顺序执行,即每个操作必须在下一个操作开始之前结束.
封闭性
程序一旦开始执行,其计算结果不受外界的影响,当程序的初始条件给定之后,其后的状态只能由程序本身确定,即只有本程序才能改变它.
可再现性
程序执行的结果与初始条件有关,而与执行时间无关.即只要程序的初始条件相同,它的执行结果是相同的,不论它在什么时间执行,也不管计算机的运行速度.
多道程序并发执行的特点
程序并发执行(定义)
若干个程序段同时在系统中运行,这些程序的执行在时间上是重迭的,一个程序段的执行尚未结束,另一个程序段的执行已经开始,即使这种重迭是很小的,也称这几个程序段是并发执行的.
程序并发执行. png
多道程序环境具有以下特点
独立性
随机性
资源共享性
进程的概念
进程是具有独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的独立单位.
进程的状态及变迁
进程的状态及变迁. png
进程调度算法
先进先出进程调度算法(FIFO):按照进程就绪的先后次序来调度进程.
基于优先数的调度(HPF—Highest Priority First):优先选择就绪队列中优先级最高的进程投入运行.
时间片轮转程序调度算法:把 CPU 划分成若干时间片, 并且按顺序赋给就绪队列中的每一个进程,进程轮流占有 CPU,当时间片用完时,即使进程未执行完毕,系统也剥夺该进程的 CPU,将该进程排在就绪队列末尾.同时系统选择另一个进程运行.
进程控制
原语:创建,撤消进程以及完成进程各状态之间的转换,由具有特定功能的原语完成.
创建进程原语
撤消进程原语
阻塞原语
唤醒原语
挂起原语
激活原语
进程撤销
收回进程所占有的资源,撤消该进程的 PCB.
进程阻塞
处于运行状态的进程,在其运行过程中期待某一事件发生,如等待键盘输入,等待磁盘数据传输完成,等待其它进程发送消息,当被等待的事件未发生时,由进程自己执行阻塞原语,使自己由运行态变为阻塞态.
阻塞是因为要等待某个资源而无法运行
.
进程唤醒
一个正在运行的进程会因等待某事件(例如,等待打印机)的发生,由运行状态转换成阻塞状态,当它等待的事件发生后,这个进程将由阻塞状态转换成就绪状态.这种转换由进程唤醒操作完成.
进程挂起
挂起则是可以运行,但被临时置为睡眠.
※ 进程的互斥
一组并发进程中的一个或多个程序段,因共享某一公有资源而导致它们必须以一个不允许交叉执行的单位执行.
※ 临界资源
一次仅允许一个进程使用的资源称为临界资源.
※ 临界区
在每个进程中,访问临界资源的那段程序,称为临界区或临界段.
※ 信号量
信号灯是一个确定的二元组(s,q),s 是一个具有非负初值的整型变量,s 是信号量,q 是一个初始状态为空的队列.
信号量 s 代表资源实体或并发进程的状态,初值只能为0或正整数.
S>0,代表可供并发进程使用的资源个数(临界资源则只有 1 个).
S=0,空闲资源数为0.
S<0,代表有 | s | 个进程等待临界资源以进入临界区.
S 的值只能由 p,v 原语改变;其他改变 s 值的指令均为非法.
※ PV 操作
p,v 操作用以改变信号量的值;
是通过 PV 原语来完成的:p(s) 和 v(s).
p(s):使信号量 s 的值减1;
v(s) :使信号量 s 的值加1;
既,P 减 V 加
p(s)操作的主要动作如下
- s值减1
- 若相减结果大于或等于0,则进程继续执行
- 若相减结果小于零,该进程被封锁,并将它插入到该信号灯的等待队列中,然后转进程调度程序
v(s)操作的主要动作如下
- s值加1
- 若相加结果大于零,进程继续执行
- 若相加结果小于或等于零,则从该认号灯的等待队列中移出一个进程,解除它的等待状态,将其转变为就绪状态,并将其加入就绪队列,然后使本操作的进程继续执行.
※ 进程的互斥与同步
互斥——间接制约,共享临界资源引发的并发进程间的制约.
同步——直接制约,并发进程间相互共享对方私有资源引发的.
※ 生产者 - 消费者问题
生产者——把系统中释放某一类资源的进程统称为生产者.
消费者——把系统中使用某一类资源的进程统称为消费者.
生产者——消费者问题:一个长度为 n 的有界缓冲区被一组生产者和一组消费者共享,形成生产者消费者问题.
进程间通信
又称高级通信;进程之间直接以较高的效率传送较多的数据的信息交换方式称为进程间通信.
常用的进程通信方式有管道,共享内存,消息机制.
线程
进程内一个相对独立的,可独立调度和指派的执行单元;是进程中的一个执行路径.
进程与线程的区别与联系
进程是资源分配和处理机调度的基本单位.
线程与资源分配无关;一个进程内的多个线程共享该进程的资源.
进程具有完整独立的虚地址空间,而线程则只能继承和共享这个空间.
一个进程可以包含一个以上的线程
一个进程可以包含一个以上的线程. jpg
存储管理
存储管理的目的
充分利用内存,为多道程序并发执行提供存储基础.
尽可能方便用户使用,即用户程序中不必考虑硬件细节.
解决程序比实际内存大的问题.
解决内存保护与安全.
解决共享问题.
存储管理任务
▼ 内存空间的管理,分配与回收
▼ 存储共享
▼ 存储保护
▼ 内存扩充
▼ 地址映射
逻辑地址(相对地址,虚地址)
用户程序经过汇编或编译后形成目标代码,目标代码通常采用相对地址的形式,其首地址为 0,其余指令中的地址都相对于首地址而编址.不能用逻辑地址在内存中读取信息.
物理地址(绝对地址,实地址)
内存中存储单元的实际地址,可直接寻址.
地址映射
逻辑地址转换为运行时由机器直接寻址的物理地址,这一过程称为地址映射.
静态地址转换
当用户程序被装入内存时,一次性实现逻辑地址到物理地址的转换,以后不再转换,一般在装入内存时由软件完成.
动态地址转换
在程序运行过程中要访问数据时再进行地址变换.
虚拟存储器
程序,数据,堆栈的大小可以超过内存的大小,操作系统把程序当前使用的
部分保留在内存
,而把其它部分保存在磁盘上,并在需要时在内存和磁盘之间动态交换.得到一个
容量很大的"内存"
,这就是虚存.
目的
提高内存利用率
1. 分区式存储管理
系统把内存用户区划分为若干分区,分区大小可以相等,也可以不等.一个进程占据一个分区.
固定分区
预先把可分配的内存空间分割成若干个连续区域,每一区域称为分区.
每个分区的大小可以相同也可以不同,分区大小固定不变,每个分区装一个且只能装一个作业.
缺点:内存利用率不高
可变分区
内存不是预先划分好的,作业装入时,根据作业的需求和内存空间的使用情况来决定是否分配,若有足够的空间,则按需要分割一部分分区给该进程;否则令其等待内存空间.
内存管理
空闲块表——记录了空闲区起始地址和长度.
已分配区表.
内存分配
三种分配算法:首先适应分配算法,最佳适应分配算法,最坏适应分配算法
内存回收
当某一块归还后,前后空间合并,修改内存空闲块表.考虑:上邻,下邻,上下相邻,上下不相邻.
"碎片" 问题
经过一段时间的分配回收后,内存中存在很多很小的空闲块.它们每一个都很小,不足以满足分配要求;但其总和满足分配要求.这些空闲块被称为碎片.
分区存储管理缺点
分区式作业必须连续存储.
分区式方式下当作业的地址空间大于内存可用分区空间时,作业不能马上运行,必须等到空闲分区和其他分区释放后融合成为更大的空闲分区后才能全部载入内存.
碎片问题 (外碎片),内存利用率不高,受实际内存容量限制.
2. 分页式存储管理
页是信息的物理单位,进行分页是出于系统管理的需要;段是信息的逻辑单位,分段是出于用户的需要.
基本思想(工作原理)
用户程序划分
把用户程序按逻辑页划分成大小相等的部分,称为页.从 0 开始编制页号,页内地址是相对于 0 编址.
页表
OS 为每个进程建立的一张表,存放在主存的固定区域中,也有可能放在高速缓冲存储器,或部分放在主存,部分放在高速缓存中,最简单的页表只包含两方面的信息:页号,页面对应的块号.
页表始址寄存器
用于保存正在运行进程的页表的始址
页表长度寄存器
用于保存正在运行进程的页表的长度
逻辑地址:(虚地址)
分页式存储管理逻辑地址. png
内存空间
按页的大小划分为大小相等的区域,称为内存块(物理页面,页框).
内存分配
以页为单位进行分配,并按进程的页数多少来分配.逻辑上相邻的页,物理上不一定相邻.
缺页中断处理
在地址映射过程中,在页表中发现所要
访问的页不在内存
,则产生缺页中断.操作系统接到此中断信号后,就调出缺页中断处理程序,根据页表中给出的外存地址,将该页调入内存,使作业继续运行下去.
如果内存中有空闲块,则分配一页,将新调入页装入内存,并修改页表中相应页表项目的驻留位及相应的内存块号.
若此时内存中没有空闲块,则要淘汰某页,若该页在内存期间被修改过,则要将其写回外存
页式存储管理地址变换过程
页式存储管理地址变换过程. png
页式管理的优缺点
优点
实现了作业或进程的非连续存放,有效解决了碎片问题.
实现了内外存统一管理的虚存方式,用户可利用的存储空间大大增加.
缺点
硬件开销加大(地址变换,缺页中断等).
增加了系统开销(缺页中断处理).
抖动现象.
每个作业或进程的最后一页总有一部分空间得不到利用.
页面置换(淘汰)算法
理想置换算法—最佳页面算法(OPT)
淘汰以后不再需要的或最远的将来才会用到的页面.
最近未使用页面置换算法(NRU——Not Recently Used)
选择在最近一段时间内未使用过的一页并淘汰之.
先进先出页面置换算法(FIFO)
选择在内存中驻留时间最长的页并淘汰之.
3. 段式存储管理
基本思想(工作原理)
用户程序划分
按程序自身的逻辑关系划分为若干个程序段,每个程序段都有一个段名,且有一个段号.段号从 0 开始,每一段也从 0 开始编址,段内地址是连续的.
逻辑地址
分段式存储管理逻辑地址. png
内存划分
内存空间被动态的划分为若干个长度不相同的区域,称为物理段,每个物理段由起始地址和长度确定.
内存分配
以段为单位分配内存,
每一个段在内存中占据连续空间
(内存随机分割,需要多少分配多少),但
各段之间可以不连续存放
.
段式虚拟地址是二维的,包括(段号,段内地址).OS 为每个段指定一个唯一的段号,段号与段号之间无顺序关系.
段式地址变换
段表
包括段号,段长,段首址.
段表始址寄存器
用于保存正在运行进程的段表的始址.
段表长度寄存器
用于保存正在运行进程的段表的长度.
段式存储管理地址变换过程. png
段式存储管理的优缺点
优点
实现了内,外存统一管理的虚拟存储.
段长可以动态增长.
便于信息的共享.
缺点
更多的硬件开销.
出现碎片.
段长受内存可用区大小限制.
段的置换过程中出现抖动现象.
段式存储管理,页式存储管理的比较
段式存储管理按程序逻辑结构划分,页式存储管理按内,外存物理结构划分.
段式存储管理的程序地址是二维的,页式存储管理的程序地址是一维的.
段式存储管理面向用户,页式存储管理面向系统.
段长由用户决定,可能不相等;页长由系统决定,一定相等.
4. 段页式存储管理
基本思想(工作原理)
在段式存储管理中结合分页式存储管理技术,在一个分段内划分页面,即形成段页式存储管理.具体而言,将程序按内容或过程(函数)关系分成段,每个分段有自己的段名,每个
段再划分成若干大小相等的页
;内存以与页相等的大小划分成若干块;用户程序的一页装入到内存的一块中,如此,一个段可以装入到若干个不连续的内存块中,段的大小不再受内存可用的限制了.
段页式地址空间
段页式用户虚拟地址仍然是二维的,按段划分;地址结构由段号,段内页号,页内偏移地址组成;用户使用的仍然是段号和段内偏移地址,由地址变换机构将段内偏移地址解释成页号和页内偏移地址.
存储管理中的快表是指联想存储器
颠簸(抖动)
在虚存中,页面在内存与外存之间频繁调度,以至于调度页面所需时间比进程实际运行的时间还多,此时系统效率急剧下降,甚至导致系统崩溃.这种现象称为颠簸或抖动
原因
页面置换算法不合理.
分配给进程的物理页面数太少
局部性原理
程序局部性原理
在一段时间内一个程序的执行往往呈现出高度的局部性,表现在时间与空间两方面
时间局部性
一条指令被执行了,则在不久的将来它可能再被执行.
空间局部性
若某一存储单元被使用,则在一定时间内,与该存储单元相邻的单元可能被使用.
覆盖与交换的技术
交换技术与覆盖技术的共同点
进程的程序和数据主要放在外存,当前需要执行的部分放在内存,内外存之间进行信息交换
交换技术与覆盖技术的不同点
与覆盖技术相比,交换技术不要求用户给出程序段之间的逻辑覆盖结构,交换发生在进程或作业之间,而覆盖发生在同一进程或作业内.覆盖只能覆盖那些与覆盖段无关的程序段.
文件系统
文件的概念
一组带标识的在逻辑上有完整意义的信息项的序列,这个标识为文件名.
信息项
构成文件内容的基本单位.
长度
单个字节,或多个字节.
文件系统的概念
操作系统中统一管理信息资源的一种软件,管理文件的存储,检索,更新,提供安全可靠的共享和保护手段,并且方便用户使用.
文件的分类
1. 按文件性质和用途分类
系统文件(关 OS 及有关系统所组成文件)
用户文件
库文件(标准子程序及常用应用程序组成文件,允许用户使用但不能修改
)
2. 按信息保存期限分类
临时文件
永久文件
档案文件
3. 按文件的保护方式分类
只读文件
读写文件
可执行文件
4. 按文件的逻辑结构分类
流式文件
记录式文件
5. 按文件的物理结构分类
顺序文件
链接文件
索引文件
文件的逻辑结构
指从用户观点看到的文件组织形式
流式文件
构成文件的基本单位是字符,文件是有逻辑意义的,无结构的一串字符的集合.
文件:一个无结构字节序列.
好处:提供很大的灵活性.
记录文件
文件是由若干个记录组成,每个记录有一个键,可按键进行查找.
记录式文件是有结构的文件.
文件:一个固定长度记录的序列,每条记录有其内部结构.
文件的存取方法
顺序存取
最后一次存取总是在前一次存取的基础上进行,不必给出具体的存取位置.
随机存取
在请求对某个文件进行存取时要指出具体的存取位置(如记录号,字符序号等).
文件的物理结构
顺序结构
文件的信息存放在若干连续的物理块中.
优点
简单.
支持顺序存取和随机存取.
顺序存取速度快.
所需的磁盘寻道次数和寻道时间最少.
缺点
文件不能动态增长.
不利于文件插入和删除.
外部碎片问题.
链接结构
一个文件的信息存放在若干不连续的物理块中,各块之间通过指针连接,前一个物理块指向下一个物理块.
优点
提高了磁盘空间利用率,不存在外部碎片问题.
有利于文件插入和删除.
有利于文件动态扩充.
缺点
存取速度慢,不适于随机存取.
可靠性问题,如指针出错.
更多的寻道次数和寻道时间.
链接指针占用一定的空间.
索引结构
一个文件的信息存放在若干不连续物理块中,系统为每个文件建立一个专用数据结构 -- 索引表,并将这些块的块号存放在一个索引表中.一个索引表就是磁盘块地址数组, 其中第 i 个条目指向文件的第 i 块.
优点
保持了链接结构的优点,又解决了其缺点.
即能顺序存取,又能随机存取.
满足了文件动态增长,插入删除的要求.
能充分利用外存空间.
缺点
较多的寻道次数和寻道时间.
索引表本身带来了系统开销.
UNIX 文件系统采用的是多级索引结构 (综合模式)
每个文件的索引表为 15 个索引项,每项 2 个字节.最前面 12 项直接登记存放文件信息的物理块号(直接寻址).
如果文件大于 12 块,则利用第 13 项指向一个物理块,该块中最多可放 256 个文件物理块的块号(一级索引).对于更大的文件还可利用第 14 和第 15 项作为二级和三级索引.
UNIX 多级索引结构. png
文件目录
把所有的 FCB 组织在一起,就构成了文件目录,即文件控制块的有序集合.
FCB
文件控制块(File Control Block)
:是操作系统为管理文件而设置的数据结构,存放了为管理文件所需的所有有关信息(文件属性).
文件控制块是文件存在的标志
.
多级目录结构
一级目录结构
为所有文件建立一个目录文件(组成一线性表).
优点
简单,易实现.
缺点
限制了用户对文件的命名.
文件平均检索时间长.
限制了对文件的共享.
二级目录结构
为改变一级目录文件目录命名冲突,并提高对目录文件检索速度而改进.
目录分为两级
一级称为主文件目录,给出用户名,用户子目录所在的物理位置.
二级称为用户文件目录(又称用户子目录),给出该用户所有文件的 FCB.
优点
解决了文件的重名问题问题 —— 用户名 | 文件名.
查找时间降低.
缺点
增加了系统开销.
多级目录结构(树型目录)
优点
层次结构清晰,便于管理和保护.
有利于文件分类.
解决重名问题.
提高文件检索速度.
能进行存取权限的控制.
缺点
查找一个文件按路径名逐层检查,由于每个文件都放在外存,多次访盘影响速度.
文件的共享
文件的共享是指不同的用户同时使用一个文件.
有三种文件的共享形式
文件被多个用户使用,由存储权限控制.
文件被多个程序使用,但分别使用自己的读写指针.
文件被多个程序使用,但共享读写指针.
文件共享的目的:节省时间和存储空间,减少用户工作量,进程间通过文件交换信息.
文件的保护
文件的保护是用于提供文件安全性的特定的一种操作系统机制.
文件系统的安全
确保未经授权的用户不能存取某些文件.
安全性的两个重要方面
数据丢失.
入侵者.
设备管理
设备的分类
1. 按功能特性分
存储型设备
输入输出型设备(交互型设备)
数据通信设备
2. 按数据组织分
块设备
以数据块为单位存储,传输信息;传输速率较高,可寻址(随机读写).
字符设备
以字符为单位存储,传输信息;传输速率低,不可寻址.
3. 按资源分配角度分
独占设备
在一段时间内只能有一个进程使用的设备,一般为低速 I/O 设备(如打印机,磁带等).
共享设备
在一段时间内可有多个进程共同使用的设备,多个进程以交叉的方式来使用设备,其资源利用率高(如硬盘).
虚设备
在一类设备上模拟另一类设备,常用共享设备模拟独占设备,用高速设备模拟低速设备,被模拟的设备称为虚设备.
目的:将慢速的独占设备改造成多个用户可共享的设备,提高设备的利用率.(实例:SPOOLing 技术,利用虚设备技术——用硬盘模拟输入输出设备).
设备管理的功能
设备管理的主要任务是控制设备和 CPU 之间进行 I/O 操作.
虚拟设备技术
是在一类物理设备上模拟另一类物理设备的技术,是将独占设备转换成共享设备的技术.
SPOOLing 技术
是一个虚拟设备,一个资源转换技术(用空间,如输入,输出等换取 CPU 时间).
解决问题:在进程所需物理设备不存在或被占用时使用该设备.
设备独立性
用户在编制程序时使用的设备与实际使用的设备无关.
缓冲技术及缓冲的种类
缓冲技术的引入
最早引入:CPU 与 I/O 设备之间凡是数据到达和离去速度不匹配的地方均可采用缓冲技术.
目的
缓解 CPU 与 I/O 设备之间速度不匹配的矛盾.
提高 CPU 与 I/O 设备之间的并行性.
减少了 I/O 设备对 CPU 的中断请求次数,放宽 CPU 对中断响应时间的要求.
缓冲区设置
硬缓冲
由硬件寄存器实现(例如:设备中设置的缓冲区).
软缓冲
在内存中开辟一个空间,用作缓冲区.
缓冲区管理
单缓冲
当用户进程发出 I/O 请求时,操作系统在内存的系统空间为该操作分配一个缓冲区,可以实现预读和滞后写.
双缓冲
可以实现用户数据区—缓冲区之间交换数据和缓冲区—外设之间交换数据的并行.
缓冲池
缓冲区的设置可分为单缓冲 ,双缓冲,和缓冲池. 其中关于缓冲池的操作有提取输入,提取输出,收容输入和收容输出.
死锁
死锁
一组进程中,每个进程都无限等待被该组进程中另一进程所占有的资源,因而永远无法得到的资源,这种现象称为进程死锁,这一组进程就称为死锁进程.
产生死锁的四个必要条件
互斥条件
不可剥夺条件
请求和保持条件
循环等待条件
通道
是一块能控制一台或多台外围设备与 CPU 并行工作的硬件.
来源: http://www.jianshu.com/p/35963a909533