操作系统概念:是计算机系统中的一个系统软件,它是这样一些程序模块的集合,它们管理和控制计算机系统中的软件和硬件资源,组织计算机的工作流程,以便有效地利用这些资源为用户提供一个有足够多的功能、使用方便、可扩展、安全和便于管理的工作环境,从而在计算机和用户之间起到接口的作用
各种操作系统
1:批处理系统:用户脱机使用计算机,成批处理,多道程序运行(宏观上并行、微观上串行)
2:多道处理系统:配置多个CPU
3:分时系统:交互性、多用户同时性、独立性
4:实时系统:即时响应和高可靠性
操作系统功能:处理机管理、存储管理、设备管理、信息管理、提供用户接口
操作系统的启动:硬件(终端信号)——触发CPU的一段代码(执行)——找到操作系统引导区位置——代码自动导入内存并执行——将操作系统程序加载到内存并初始化硬件
1:作业(在一次业务处理过程中,从输入开始到输出结束,用户要求计算机所作的有关该次业务处理的全部工作):程序、数据、作业说明书(作业基本描述、作业控制描述、资源要求描述)
作业步(在一个作业的处理过程中计算机所作的相对独立的工作)
2:两个接口界面:命令控制界面、系统调用
3:程序的并发执行
1) 多道程序系统中,由于程序执行环境的变化而引起的多道程序的并发执行
2) 在某道程序中的几个程序段中,包含着可以同时执行或顺序颠倒执行的代码
4:进程(程序对某个数据集的动态执行过程,是分配资源的基本单位)
1) 静态描述:进程控制块PCB,有关程序段和该程序段对其进行操作的数据结构集
进程控制块是系统感知进程的唯一实体(描述信息、控制信息、资源信息)
2) 进程上下文:已执行过的进程指令和数据在相关寄存器与堆栈中的内容称为上文,正在执行的指令和数据在寄存器和堆栈中的内容称为中文,待执行的指令和数据在寄存器与堆栈中的内容称为下文
3) 进程状态:初始态、执行状态、等待状态、就绪状态、终止状态
4) 进程控制:创建、撤销、阻塞、唤醒、调度
通过原语实现:机器指令级(不允许中断,是不可分割的基本单位)功能级(不允许并发执行)
5:进程的互斥(间接制约)——不允许两个以上共享该资源的并发进程同时进入临界区
临界区——不允许多个并发进程交叉执行的一段程序
互斥的实现
1) 加锁,每一个临界区有一个类名S,Key[S] = 1表示该临界区可进入,Key[S] = 0表示该临界区不可进入;是进程自己调用lock过程去测试相应的锁定位
2) 公用信号量sem ,大于等于0时代表可供并发进程使用的资源实体数,小于零时表示正在等待使用临界区的进程数;PV原语,一次P原语操作使得信号量sem减1(P原语等到该进程进入临界区才算真正结束),一次V原语操作使得信号量sem加1
1) P原语的主要动作
sem减1,若sem减1后仍大于等于0,则P原语返回,该进程继续执行;若小于等于0,则该进程被阻塞后与该信号相对应的队列中,然后转进程调度
2) V原语的主要动作
sem加1,若sem加1后大于0,V原语停止执行,该进程返回调用处,继续执行;若sem小于等于0,则从该信号的等待队列中唤醒一等待进程,然后再返回原进程继续执行或转进程调度
6:进程的同步
直接制约(各自的执行结果互为对方的执行条件,从而限制各进程的执行速度的过程成为并发进程间的直接制约)
同步——因直接制约而互相发送消息而进行互相合作、互相等待,使得各进程按一定的速度执行的过程称为进程间的同步
私用信号量——给各并发进程设置私用信号量,然后为私用信号量,最后利用PV原语和私用信号量规定各进程的执行顺序
7:生产者——消费者模型,设公用信号量mutex保证生产者进程和消费者进程之间的互斥;信号量avail为生产者进程的私用信号量,信号量full为消费者进程的私用信号量
8:进程间的通信——控制信息的传送(低级通信)、大批量数据传送(高级通信)
低级通信为了达到控制进程执行速度的作用,高级通信则是为了交换信息
单机系统的几种通信方式:主从式、会话式、消息或邮箱机制、共享存储区方式
9:死锁——各并发进程彼此等待对方所拥有的资源,且这些并发进程在得到对方的资源之前不会释放自己所拥有的资源
起因——并发进程的资源竞争,系统提供的资源个数少于并发进程所要求的该类资源数
必要条件——互斥、不剥夺、部分分配、环路
排除方法——预防、避免(动态预防)、检测与恢复
10:线程(轻权进程、轻量级进程)——为了减少进程切换和创建开销,提高执行效率和节省资源而引进的
是进程的一部分,没有自己的地址空间(进程有自己的虚地址空间),和进程内的其他线程共享分配给该进程的所有资源;有自己的线程控制表(TCB),只记录相关堆栈、寄存器的状态数据
有三个状态:执行、就绪、阻塞(无初始态和终止态,派生后直接进入就绪态,结束后直接释放资源而不存在)
五种基本操作:派生、阻塞、激活、调度、结束
处理机调度
1:作业的状态及转换
提交(处于从输入设备到外部存储设备的过程)——收容(全部输入到输入井,但没被调度)——执行状态,作业调度(从输入井到外存)——交换调度(从外存到内存)——进程调度——线程调度——执行完毕(作业调度),完成状态(资源未全部被回收)
2:四级处理机调度
1) 作业调度——对输入井中的大量作业进行选择,为其分配资源,包括内存、输入输出设备等必要的资源,并建立根进程,使其获得竞争处理机的权利;当该作业执行完毕时,还负责资源回收
概括:记录系统中各作业的状况;从后备队列中挑选出一部分作业投入执行;为被选中作业做好执行前的准备工作;在作业执行结束后做善后处理工作
2) 交换调度——将外存交换区中的就绪状态或就绪等待状态的进程调入内存,或把内存中处于就绪状态或内存等待状态的进程交换到外存交换区中
3) 进程调度——按照一定的策略和方法选取一个处于就绪状态的进程占用处理机,必须进行上下文切换以建立适合该进程的执行环境
概括:记录系统中所有进程的执行情况;选择占有处理机的进程;进行进程上下文切换
4) 线程调度
3:周转时间,从作业提交开始到作业完成,包含等待时间和执行时间;带权周转时间,周转时间与执行时间之比
4:各种调度算法
1) 先来先服务
有利于长作业,不利于短作业;有利于CPU繁忙的作业,不利于I/O频繁的作业
2) 轮转法(仅限于进程调度)
让每个进程在就绪队列中的等待时间与享受服务的时间成正比;基本概念是将CPU的处理时间分成固定大小的时间片,时间片的大小由对响应时间的要求R和就绪队列中所允许的最大进程数之比确定
只能用来调度分配那些可以抢占的资源,CPU是可以抢占的资源;但作业调度是对除了CPU之外的所有系统硬件资源的分配,其中包含有不可抢占的资源,所以作业调度不采用轮转法
3) 多级反馈轮转法
有不同的就绪队列,针对不同情况:进程时间片用完;时间片并未用完,但由于I/O请求或同步互斥关系被阻塞;新创建的进程进入就绪队列
不同的队列之间有不同的优先级,同一队列中有相同的优先级
4) 优先级法
静态优先级:由用户自己给定;由系统或用户根据作业类型给定;由系统根据资源使用情况给定
动态优先级:根据占用CPU时间的长短决定;根据就绪进程等待CPU时间的长短决定
5) 短作业优先法
优点:提高吞吐量和改善平均周转时间
缺点:对长作业非常不公平;未能依据作业的紧迫程度来划分优先级;难以准备估计作业的执行时间
6) 最高响应比优先法
R=1+W/T W表示等待时间,T表示执行时间
5:实时系统
1) 处理和控制的正确性不仅取决于计算的逻辑结果,还取决于得到结果的时间
2) 硬实时任务:要求系统必须完全满足任务的时限要求
软实时任务:允许系统对任务的时限要求有一定的延迟,其时限要求只是一个相对条件
3) 特点
1) 有限等待时间——必须在有限时间内开始任务
2) 有限响应时间——必须在有限时间内给出结果
3) 用户控制
4) 可靠性高
5) 出错处理能力强
4) 基于以上特点所要求的能力
1) 很快的进程或线程切换速度
2) 快速的中断处理能力
3) 基于优先级的随时抢占式调度策略
5) 算法分类
1) 静态表格驱动——最早时限优先法
2) 静态优先级驱动抢先式——频率单调调度算法
3) 动态计划调度算法
4) 尽力而为调度算法
存储管理
1:源程序(编译)——目标程序(CPU可执行)
有两种方法安排编译后的目标代码的地址
1) 按照物理存储器中的位置赋予实际物理地址
2) 链接到一个以0地址为起始地址的线性或多维虚拟地址空间,实际地址由虚拟地址到实际物理地址的变换得到
2:内存地址的集合称为内存空间或物理地址空间,内存空间是一维线性空间
3:实现地址重定位或地址映射的方法有两种
1) 静态地址重定位——只完成一个首地址不同的连续地址变换(难以做到数据共享);要求所有待执行的程序在执行之前完成它们之间的链接;程序一旦装入内存之后就不能再移动,并且必须在程序执行之前将有关部分全部装入
优点是不需要硬件的支持
2) 动态地址重定位——在程序执行过程中,在CPU访问内存之前,将要访问的程序和数据的地址转换成内存地址;需要依靠硬件地址变换机构完成,一个(或多个)基地址寄存器BR和一个(或多个)程序虚拟地址寄存器VR,内存地址MA=(BR)+(VR)
优点:可以对内存进行非连续分配;提供了实现虚拟存储器的基础;有利于数据的共享
4:内外存数据传输的控制
1) 用户程序控制——覆盖,对程序要求高,且程序段的最大长度仍然受到内存容量限制
2) 操作系统控制——交换方式,请求调入方式和预调入方式
5:内存的分配和回收
6:内存信息的共享与保护
硬件法(上下界(寄存器)保护法)、软件法、软硬结合法
7:分区存储管理——给每个内存中的进程划分一块适当大小的存储区(连续存储)
1) 固定分区法——固定划分为若干个大小不等的区域
有分区说明表(区号、分区大小、起始地址以及是否空闲)
2) 动态分区法
动态分区说明表
可用分区表(查找简单,占用内存) 可用分区链(查找困难,不占用内存)
请求表:描述作业或进程号以及请求的内存大小
3) 分配与回收
查找分配——更新可用表或自由链 回收合并——更新可用表或自由链
算法:最先适应法(起始地址递增顺序)、最佳适应法(分区大小从小到大)、最坏适应法(分区大小从大到小)
4) 优点:实现多道程序对内存的共享、硬件支持少、算法简单
5) 缺点:内存利用率不高、作业或进程大小受内存大小限制、无法实现信息共享
8:内存扩充技术
1) 覆盖——让那些不会同时执行的程序共享同一块内存区
要求程序员提供一个清楚的覆盖结构,程序员压力大
在同一个作业内进行
2) 交换——换入换出,主要在作业和进程间进行
9:页式管理——把各进程的虚拟空间大小划分为若干个长度相等的页,内存空间也按页大小划分为片或页面;页面间不连续
进程的虚地址:页号P和页内地址w组成
1) 静态页面管理
页表:每个进程至少拥有一个页表,页号及页面号的对应
请求表:确定作业或进程的虚拟空间的各页在内存中的实际对应位置
存储页面表:指出内存各页是否被分配以及未分配的总页数
图示法、空闲页面链
地址变换:页表地址寄存器找到页表地址——访问页表找到对应的页面号——访问实际物理地址;故至少需要两次访存(可利用寄存器存储页表)
2) 动态页式管理(请求页式管理和预调入页式管理)
(1) 扩充页表,中断位(表明该页是否在内存中),外存始址,改变位(表明该页是否曾因程序执行而修改)
(2) 在缺页调入与存放时,若内存中无空闲页面,则需要一个置换算法——随机淘汰算法、轮转法、先进先出算法、最近最久未使用页面置换算法、理想淘汰算法
(3) 抖动现象:由于置换算法选取不当,导致刚调入内存的进程又要调出,或者刚调出内存的进程又要调入
(4) Belady现象:先进先出算法中,在分配给进程的页面数少于实际要求页数时,可能导致分配页面数更多,缺页中断次数更多的情况,原因是没考虑程序执行时的动态特征
(5) 存储保护:地址越界保护、存储控制保护
(6) 优点:有效解决了碎片问题、动态页面管理实现了内外存统一管理的虚拟存储器
10:段式管理
背景:分区式和页式管理的进程地址空间都是线性的,主程序、子程序、数据区等按线性空间的一维地址顺序排序,导致不同作业和进程之间的共享非常困难
基本思想:程序按内容和过程关系分成段,每段都有自己的名字,一个用户作业或进程所包含的段对应于一个二维线性空间,也就是一个二维虚拟存储器
1) 段虚拟地址:段号s与段内相对地址w
段长不固定,可动态增长;每个段是一个首地址为零、连续的一维线性空间
2) 段表(每一个进程或作业拥有一个段表)
段号、起始地址、长度、存取方式(存取保护)、内外(表明在内存还是外存)、访问位(是否曾经被修改)
3) 地址变换过程:段地址寄存器中找到段表始地址——查找段表——该表在内存中(判断存取方式是否有错),该表不在内存中(转缺段中断处理)
故需要两次以上访存;可利用高速联想存储器存储那些经常访问的段号对应的段表项
4) 共享——使用相同的段名,并在段表中填入已存在于内存之中的段的起始地址并置以适当读写控制权
5) 保护:地址越界保护法、存取方式控制保护法
11:段页式管理
1) 虚拟地址:段号s、段内相对地址w(页号p和页内相对地址d)
2) 每段所拥有的程序或数据在内存中分开存放,从而分段大小不受内存大小限制
3) 段表(页表长度、起始地址)、页表(页号、页面号)
4) 地址变换过程:由段表地址寄存器找到段表起始地址——查找段表找到对应段的页表起始地址——查找页表得到物理地址——访问实际物理地址
故至少需要三次以上访存
12:局部性原理:CPU总是集中地访问程序中的某一个部分而不是随机地对程序所有部分具有平均访问概率
临界值:当内存分配小于这个临界值时,内存和外存之间的交换频率会急剧增加;而内存分配大于这个临界值时,再增加内存分配也不能显著减少交换次数
文件系统——把文件和数据看成文件
1:透明存取——不必了解文件存放的物理结构和查找方法等与存取介质有关的部分,只需给定一个代表某段程序或数据的文件名,文件系统就会自动地完成对与给定文件名相对应文件的有关操作
2:文件系统的工作
对磁盘等辅助存储器空间进行统一管理,实现按名存取,对文件信息的查找,完成文件的共享和提供保护功能
3:文件——赋名的相关联字符流集合或相关联记录的集合
文件系统——操作系统中与管理文件有关的软件和数据
4:逻辑结构——用户可见结构
1) 字符流式的无结构文件
2) 记录式的有结构文件
(1) 连续结构:按记录生成的先后顺序排列的逻辑结构
(2) 多重结构——先找到对应的关键字,再在对应的队列中查找记录
(3) 转置结构
(4) 顺序结构——按某种规定,把关键字按规定的顺序排列
3) 存取——找到文件内容所在的逻辑地址
(1) 顺序存取法
(2) 随机存取法
(3) 按关键字存取法
4) 搜索算法
(1) 线性搜索法
(2) 散列法——线性散列、平方散列、随机散列
(3) 二分搜索(要求关键字按顺序排列)
5:物理结构——文件在存储设备上的存储方法,决定了逻辑地址到物理地址的变换
1) 连续文件
2) 串联文件(通过指针串联起来)
3) 索引文件(为每个文件建立一个索引表,指出逻辑块号与对应的物理块号)
6:存储设备
1) 顺序存取设备——磁带
2) 直接存取设备——磁盘等
7:空闲块管理方法
1) 空闲文件目录
2) 空闲块链(按空闲大小链接、按释放先后顺序链接、成组链接)
3) 位示图法
8:文件——文件说明和文件体
文件说明:文件名、与文件名对应的内部标识、文件信息、在存取设备上第一个物理块的地址
9:文件共享:绕道法、链接法、基本文件目录表(整个系统一张)
1) BFD,包括文件的结构信息,物理块号,存取控制…并由系统赋予唯一的内部标识符
2) SFD 存放用户所给的文件名以及文件内部标识符
10:几个概念
1) 文件共享——不同的用户共同使用一个文件
2) 文件保护——防止文件的拥有者本人或者其他用户破坏文件内容
3) 文件保密——未经文件拥有者许可,任何用户不得访问该文件
11:身份验证的几个方式
1) 存取控制矩阵
2) 存取控制表(每个文件有一张)
3) 口令
4) 密码
12:磁盘定位
操作系统会将数据的逻辑地址传给磁盘,磁盘首先去读取磁盘目录,从而确定数据的物理扇区地址。然后通过寻道将磁头定位到目标磁道,通过旋转将目标扇区定位到磁头下。此时就可以通过磁头对磁盘进行数据的存取了。在磁盘读取数据时,会根据局部性原理,进行磁盘预取
设备管理
1:外围设备与内存之间的数据传送控制方式
1) 程序直接控制方式——由用户进程来控制(CPU循环测试)
CPU只能与外围设备串行工作,在一段时间内只和一台外围设备交换信息,无法发现处理由于设备和其他硬件所产生的错误
2) 中断方式——需要中断请求线、中断允许位
数据缓冲寄存器容量小,导致多次中断,可能造成CPU无法响应中断和数据丢失现象
3) DMA方式(直接存取)——在外围设备和内存之间开辟直接的数据交换通路
DMA控制器(控制状态寄存器、数据缓冲寄存器、传送字节计数器、内存地址寄存器),用于代替CPU控制内存和设备之间进行成批的数据交换
开始时需要CPU启动指令;结束时通知CPU进行善后处理
4) 通道控制方式——由专管输入输出的硬件,通道进行控制
2:中断——计算机在执行期间,系统内发生任何非寻常的或非预期的急需处理事件,使得CPU暂时中断当前正在执行的程序而转去执行相应的事件处理程序,待处理完毕后又返回原来被中断处急需执行或调度新的进程执行的过程
关中断(禁止中断)、开中断,是为了保证某些程序执行的原子性
中断屏蔽:在中断请求产生之后,系统用软件方式有选择地封锁部分中断而允许其余部分的中断仍能得到响应
1) 硬中断
外中断(中断),处理机和内存外部的中断
内中断(陷阱),处理机和内存内部的中断
内中断是当前正在执行的指令引起,且是为了当前进程所服务的,可以在指令执行期间响应中断;外中断则不然
2) 软中断
CPU或接收进程在适当的实际自动进行中断处理或完成软中断信号所对应的功能,“适当的时机”表明接收软中断信号的进程不一定正好在接收时占有处理机,而相应的处理必须等到该接收进程得到处理机之后才进行
3:设备分配
1) 设备控制表(DCT)每个设备拥有一张,包含设备标识符、设备类型、设备地址或设备号、设备状态、等待队列指针、I/O控制器指针
2) 系统设备表(SDT)包含DCT指针,正在使用设备的进程标识
3) 控制器表:反映I/O控制器的使用状态以及和通道的连接情况
4) 通道控制表