操作系统复习 2014 08 26
1. 名词解释
程序状态字PSW:计算机中一个重要的硬件寄存器
管程:代表共享资源的数据结构,以及由对该共享数据结构实施操作的一组过程所组成的资源管理程序,共同构成了一个操作系统的资源管理模块,我们称之为管程。
SPOOLing (即外部设备联机并行操作),即Simultaneous Peripheral Operation On-Line的缩写,它是关于慢速字符设备如何与计算机主机交换信息的一种技术,通常称为“假脱机技术”。
SPOOLing 技术实际上是一种外围设备同时联机操作技术,又称为排队转储技术。
操作系统:主要功能处理机、存储、文件、设备、用户的各种接口
临界资源:一次只允许一个进程使用的资源称为临界资源
2. 操作系统:
所谓计算机操作系统是指控制和管理计算机的软、硬件资源,合理组织计算机的工作流程,方便用户使用的程序集合。
Ø 用户与操作系统的接口
Ø 进程管理
Ø 存储管理
Ø 文件系统
Ø 输入输出系统(设备管理)
3. 操作系统为用户提供了两种接口:命令接口 编程接口
4. 多道程序技术:中断系统(中断机构 判断类型保护旧psw 取出新psw 中断处理程序取出旧psw装入 返回断点)、通道技术(IO处理机)
5. 多道程序妥善解决以下问题;
Ø 存储保护和地址重定位
Ø 处理机的管理和调度:运行阻塞就绪状态
Ø 资源的管理和分配
6. OS的主要特征:
处理机的管理:
进程控制
进程调度
进程同步
进程通信
存储管理:
地址重定位
存储分配
存储保护
存储扩充
设备管理:
缓冲管理
设备分
设备处理
设备独立性和虚拟设备
文件管理:
目录管理
文件读写
文件存取
文件存储空间
用户接口:命令接口 程序接口(用户获得OS服务的唯一途径) 图形接口
OS的主要特征:并发 虚拟 共享 不确定性
7. OS的结构
强内核(系统调用通过陷入内核实现)与微内核
设计模式:
客户服务器模式 对象模式 对称多处理
操作系统的分类:
单用户(微机)操作系统
批处理系统
分时系统
实时系统:实时控制系统 实时处理系统
网络操作系统
分布式操作系统
多处理机操作系统(基于共享存储 基于分布存储)
第二章 用户与操作系统的接口
接口:
程序级接口:编制程序 系统调用 应用程序接口
作业级接口:程序在计算机上运行运行 键盘控制命令和作业控制命令
包含 练级控制和脱机控制
作业:用户一次请求计算机系统为它完成任务所进行的工作总和。
作业步:处理作业的各个独立的子任务
作业流:若干作业
脱机用户接口:由一组作业控制命令或称作业控制语言组成
联机用户接口:操作系统命令 命令驱动 窗口系统与菜单驱动
管态与算态:管态(核心态) 算态(用户态)
系统调用:
通过访管指令或软中断方式中断现行程序转去执行相应的子程序
系统调用与过程调用的区别:
(1) 运行在不同的系统状态
(2) 通过软中断进入
第三章 进程管理
顺序执行:
程序的封闭性:程序一旦开始执行计算结果就只取决于程序本身
可再现性:程序重复执行时必然得到相同的结果
程序的并发执行和资源共享=互为依存条件
并发:失去了程序的封闭性
程序和机器的执行活动不再一一对应
并发间相互制约
进程:程序的一次执行,该程序可以与其他程序并发执行。
组成:程序 数据集合 进程控制块PCB(是进程存在的唯一标志)
PCB:包含进程名或标识数 位置信息状态信息进程的优先级进程的现场保护区资源清单队列指针或链接子
进程的调度状态:运行就绪阻塞
进程的控制:
原语:有若干条机器指令构成的并用于完成特定的功能的一段程序,在执行期间不可分割。
内核中的原语:进程控制原语 进程通信原语 资源管理原语
进程控制原语;进程创建 撤销 挂起机会阻塞唤醒
对于树型结构系统,被挂起的进程只能是他的子孙或其自身。
撤销:凡是属于该进程的所有子孙一律撤销。
引起进程调度的时机:
1. 正常结束或出现错误而异常结束
2. 因为某种原因如IO请求而进入阻塞状态
3. 执行P操作
4. 更高优先级进程使用处理机
5. 时间片用完
进程调度:
1. 非剥夺式 2.剥夺式
进程调度算法的选择:
优先数法
时间片轮转法
常用的进程调度算法:
1. 静态优先级法
按进程类型确定
按照作业的资源要求
按作业到达的时间确定
按用户类型和要求确定
2.动态优先级法
3. 时间片轮转法 时间确定:系统的响应时间进程数进程的转换时间处理时间改进:固定时间改为可变时间单就绪队列改为多就绪队列
4. 多队列轮转法 0.002s 0.2s 2s
作业 进程 程序之间的联系:
程序是进程的一部分,是进程的实体。
线程:线程是系统调度的基本单位 进程是资源分配的基本单位。
线程是进程的一个组成部分,每个进程在创建时通常只有一个线程,需要时这个线程可以创建其他线程。
进程的多线程都在进程的地址空间活动。
资源分配给进程 调度的基本单位是线程
线程在执行的过程中需要几步。
制约关系:来源于对资源的共享和进程的合作
1. 进程-进程的通信 直接制约关系
2. 等待资源 进程-资源-进程 间接制约关系
进程的同步
互斥 临界资源
临界区:互斥执行的程序段成为临界区或互斥段
实现临界区互斥的解法:
锁操作:w=0 锁打开 w=1 锁关闭
加锁 LOCK(w) 开锁: UNLOCK(w)
信号量的P 、V操作:是定义在信号量s上的两个操作
定义:
P(s): 1.s=s-1;
2.若是s>=0;则调用P(s)继续执行
3.若s<0;则调用P(s) 的进程被阻塞。并把它插入到等待信号量s的阻塞队列中。
V(s): 1.s=s=s+1;
2.若s>0,则调用V(s)的进程继续运行
3.s<=0,从从等待信号量s的阻塞队伍中唤醒头一个结果,然后调用v(s)的进程继续。
公用信号量常用于实现进程间的互斥,初值为1。
私用信号量一般用于实现进程间的同步,初值为0或某个整数n。
进程间互斥:
S>0 时的数值表示某类可用资源的数量,P意味着申请分配一个单位的资源。S=S-1
S的绝对值表示信号量s的阻塞队列中的进程数。
V意味着释放一个单位的资源。S=S+1
S<=0 表示仍有阻塞的进程,执行V便唤醒了队列中的第一个进程。
进程间的同步
初始值为0
s1 s2 为司机和售票员的私用向量
司机进程:
ß
正常行车
到站停车
V(s2)
P(s1)
离站开车
返回à
售票员进程
ß
售票
P(s2)
开车门
关车门
V(s1)
返回à
生产者消费者问题:
公用信号量S 初值为1,表示没有进程进入临界区,用于实现进程的互斥。
私用信号量S0表示产品的数目,初值为0;
私用信号量Sn表示可用的缓冲区数目
生产者进程
ß
生产一种产品
P(Sn)判断是否有缓冲区
P(S)
产品送入缓冲区
V(S0)
V(S)
返回à
消费者进程
ß
P(S0)判断是否有产品
P(S)
从缓冲区中取走一个产品
V(Sn)
V(S)
消耗该产品
返回à
m个生产者和k个消费者共享n个缓冲区。
每次只有一个生产者或一个消费者去访问缓冲区。生产者和消费者可以并发运行。
读者写者问题
读者与写者间、写者与写者间的互斥
S初值1
变量rc表示当前正在读的读者个数,进程去读或读结束后要改变rc的值,rc为各个进程的共享向量,互斥的修改rc。定义变量Sr。
S=Sr=1;
rc=0;
读者:
P(Sr)
Rc=rc+1;
If rc==1 then P(S)
V(Sr)
Read file
P(Sr)
rc=rc-1;
if rc==0 then V(S)
V(Sr)
读者结束
写者
P(S)
write file;
V(S)
写者结束
该程序在读者不断的读时,写进程不断延迟。
下面是写者优先的程序。
信号量S=1;用于读者和写者或写者与写者间的互斥。
信号量Sn 初值n表示最多n个进程可同时进行读操作。
S=1
Sn=n;
读进程:
P(S)
P(Sn)
V(S)
read file
V(Sn)
读进程结束
写进程
P(S)
for i=1 to n do P(Sn)
write file
for i=1 to n do V(Sn)
V(S)
写进程结束
P(s) V(S)保证了在有写者要工作时不让新的读者去读。让正在读的读者完成读后在执行写。第二个唤醒被阻塞的读写进程。
P V操作为低级通信原语,这种方式下进程间交换的信息量少而且交换的是控制信息。
高级通信原语:可在进程间传送大量数据的信息。
消息缓冲:消息组成链表 发送原语 接收原语
信箱通信:发送原语 接收原语
死锁:
产生死锁的必要条件:
1. 互斥控制
2. 非剥夺控制
3. 逐次请求
4. 环路条件
死锁采取的策略:
1. 鸵鸟策略
2. 预防策略
3. 避免策略
4. 检测和解除
死锁的预防:
1. 破坏互斥性,共享使用法。
2. 破坏非剥夺控制,采用剥夺控制,还可以规定请求使用某资源时如遭到拒绝则在进入阻塞状态时释放他的占用资源
3. 破坏逐次请求和环路条件
采用“资源静态分配法”(一次申请全部资源)和“资源顺序分配法”
申请资源按照编号增加的顺序进行。
死锁的避免
银行家算法
系统模型:系统状态图 进程资源图
死锁定理:
一个给定的进程-资源图全部化简导致同一个不可化简图。
死锁的解除
1. 删除法,按照一定的顺序逐个删除已死锁的进程
2. 剥夺法,从一些进程中剥夺足够的资源。
第四章 存储管理
1.存储分配:存储共享的各种分配算法
2.地址再定位:地址变换机构静态和动态再定位方法
静态再定位(只能连续分配 难共享)和动态再定位(通过基地址寄存器 变址寄存器)
3.存储保护:保护各类程序数据区的方法
4.存储扩充:虚拟存储器问题及各种调度算法
单段式虚拟存储器:连续的线性地址空间
多段式虚存:地址空间分为若干段,每段是一个连续线性地址空间。
早期的存储管理
1. 单一连续分配(为了保护设置界限寄存器)
2. 分区分配(满足多道程序设计的一种最简单的存储管理技术)
分为固定式分区 、 可变分区、可再定位分区、多重分区
1、固定式:主存划分若干分区 大小可以不等不能改变
2.可变式:动态划分大小,使分区的容量正好适应作业的大小。
最佳适应法:空白表按照容量递增的次序排列
(平均查找一半就可以找到最佳空白区,缺点剩余的分区都比较小。)
最差适应法:空白区按照容量递减排列
只要和x1比较就可以了,剩下的空白区较大
最先适应:空白区按照地址大小递增顺序排列
释放时如果相邻的空白区就可以合并成为较大的空白区
缺点:在低地址区域集中了许多非常小的空白区
3. 可再定位(解决碎片问题的有效方法)
移动所有被分配的区域使之成为一个连续的区域,留下较大的空白区。
靠紧和紧凑
靠拢的时机:1.作业完成2.在作业请求分区时
4. 多重分区分配(不采用靠拢的方法解决碎片问题)
通常一个作业由一些相对独立的程序段和数据段组成如主程序 子程序数据组等。
分区太多造成没有较大的空白区。管理较复杂。
分区的保护措施:
界地址寄存器
分页存储管理
分页存储就是从逻辑地址到物理地址的一种变换
逻辑地址分为相等大小的片成为快。
页面变换表PWT:逻辑地址空间和物理地址空间的转换
分页存储可以解决碎片问题。
地址变化
1. 动态地址变换机构DAT
2. 高速页面变换存储器
3. 联想存储器在地址变换机构中加入一组高速寄存器是实现地址变换。
分页存储管理:
1. 作业表
2. 存储分块表
3. 页面变换表
请求分页管理:
一个作业不把他的整个地址空间同时全部装入主存(程序的局限性)
遇到不在主存中的产生缺页中断,转入中断处理。
需要外页表:指出虚页在辅存上的位置。
反复入页和出页现象为抖动,浪费了大量的处理机时间。
页面置换算法:
1.先进先出(FIFO)淘汰停留在主存中时间最长的页面。
2最近最久未用置换算法(LRU) 程序设计的局部性
3.近似算法:在存储分块表中设置引用位,在时间T内,被访问的页面置为1,反之为0;
从程序设计的质量、页面的大小、主存的容量、页面置换算法考虑。
分段存储管理
由主程序、子程序、数组和工作区组成一个用户作业。
分段存储中作业地址由:段名和段内地址构成。
段变换表SMT
分段存储的优点:
1. 消除了碎片。
2. 提供了大容量的虚存。
3. 允许动态增加长度。
4. 便于动态装入和链接。
5. 两个作业使用同一个子程序时实存上只要一个程序副本。
6. 便于存储保护
段页式
地址:段号+页号+页内地址
变换通过段变换表+叶变换表实现
优点:
提供了大量的虚拟存储空间,有效利用主存,为多道程序运行提供了方便。
第5章文件系统
要求:
1. 存储大量信息
2. 使用信息的进程终止时,信息能保存下来。
3. 多个进程可以并发的存取信息。
文件:一个具有符号名的一组相关联元素的有序序列
文件系统由三部分组成:
文件管理相关软件、被管理的文件、实施文件管理所需的数据结构
文件的逻辑结构:
1. 有结构的记录式文件
2. 无结构的流式文件
文件的物理结构:
连续结构 文件放在相邻的物理块中
串联结构 链接结构
索引文件 每一个文件建立一个索引表指出文件逻辑结构在的物理块号。
可以方便的进行随机读取
可以按照串联的方式组织
按照多重索引的方式组织
Hash文件按照记录的键值通过计算转换成相应的地址
文件的存取方法
1. 顺序存取方法
2. 直接存取
3. 按键存取
文件目录
简单的文件目录
缺点:存在重名的问题,文件过多时目录项目就会很大。
二级目录:
多级目录:
绝对路径和相对路径
文件的目录项
文件存储空间的管理
1. 空白文件目录
2. 空白块链
3. 位视图
UNIX使用空白块成组链接法
文件的共享
目录结构的共享:
同名:使用了同一文件名(包括其路径来访问一个文件)
异名:采用的方法为文件勾连
勾连:1.允许链接到目录的任一节点上
2.只允许链接到数据文件的叶子节点上。
勾连的方法:基于索引节点的方法 不同的文件指向同一个索引节点
索引节点包含一个链接计数器
基于符号链的方法:链接类型的文件
管道文件:
相当于在两个进程间假设了一个管道,通信的一方可以将消息源源不断的写入管道,另一方可以读出。
管道的构成:外存的索引节点
相应的内存索引节点
两个系统打开文件表
文件的存取控制
存取控制矩阵
存取控制表
用户权限表
文件的安全性:
全量转存 增量转存
第六章 输入/输出系统
独占设备
共享设备
虚拟设备
I/O控制方式:
1. 循环IO测试方式
2. 程序中断方式
3. DMA方式
缓冲技术:
缓冲明显的提高CPU和外设的并行程度,提高系统的处理能力和设备的利用率。
双缓冲
缓冲池
磁盘调度:
移臂算法
先来先服务
最短查找时间优先
扫描法
电梯调度算法