操作系统概述
操作系统的发展
操作系统的发展历史
操作系统的分类
题目·:什么是分布式操作系统?主要特点是什么?
分布式系统是指把多个处理机通过线路互联而构成的系统, 此系统的处理和控制分布在各个处理机上。
主要特点:分布性、自治性、模块性、并行性。
题目: 下列操作系统强调交互性的系统是:
- 批处理系统
- 分时系统
- 实时系统
- 网络操作系统
题目:试述分布式操作系统有哪些功能, 它与网络操作系统的区别是什么?
分布式操作系统的功能:
- 进程迁移
- 分布式进程同步
- 任务分配
- 资源管理
分布式OS与网络OS的主要区别是:
通信资源方面, 分布式OS的透明性强, 系统中任意两个节点之间无主从之分, 都可以共享系统中的全部资源, 多个节点机可以共同写作完成一个任务, 可靠性高。若某一个节点机出现故障,系统仍然可以正常工作, 只是降价使用, 而网络OS是共享服务器的资源, 服务器是系统互联的瓶颈问题。
批处理系统:windows里的bat文件,类似linux里的sh脚本。
实时操作系统:RTOS, 一般用于飞机火箭响应要求高的。
分时操作系统:每个用户轮流使用时间片,包括抢占式和非抢占式。
网络操作系统:建立在主机操作系统基础上,用于管理网络通信和共享资源,协调各主机上任务的运行,并向用户提供统一的、有效的网络接口的软件集合。
分布式操作系统:把多个处理机通过线路互联而构成的系统,此系统的处理和控制分布在各个处理机。主要特点是分布性、自治性、模块性、并行性。
作业管理和用户接口
程序的状态
操作系统运行的状态称为管态或者系统态
用户程序运行的状态称为算态或者目态
特权指令:
- 传送程序状态字指令
- 启动、测试和控制外设指令
- 存取特殊寄存器的指令
系统功能调用
访管指令本身不是特权指令,其基本功能是“自愿进管”,能引起访管中断。
系统功能调用就是用户在程序中用访管指令调用由操作系统提供的子功能集合。
系统调用与普通过程调用区别
- 普通过程调用都处在统一状态,要么都在用户态,要么都在系统态。系统调用出现状态切换。
- 通过软中断进入。访管指令所引起的中断属于软中断。
- 返回问题。 这里的解释不明白。
进程管理
题目:高级调度和低级调度的主要任务是什么? 为什么要引入中级调度?
高级调度就是作业调度:
- 将作业调入内存
- 分配资源
低级调度就是进程调度:
- 给进程分配CPU
中级调度:将挂起的进程调出内存
- 提高内存利用率
- 提高系统吞吐量
线程与进程
题目:什么是线程,它与进程的区别是什么?
线程是进程运行的基本单位。一个进程由至少多个线程组成。线程共享进程的资源,如代码,数据和部分管理信息,但是每个线程都有自己的程序计数器、堆栈等。
线程与进程的区别:
- 切换频率:线程切换频率高,进程切换频率低。
- 资源共享:线程间互相共享资源,进程间不互相共享资源。
- 通信:进程间可以通过IPC通信,线程间可以通过直接读写数据段来通信, 但是需要同步和互斥手段的辅助,以保证数据的一致性。
进程调度
先来先服务(FCFS, First Come First Service)
短作业优先(SJF, ,Shortest Job First)
- 非抢占式的短作业有限调度算法
- 抢占式的短作业优先调度算法—最短剩余时间优先算法(STRN,Shortest Remaining Time Next)
高响应比优先算法(HRRN,Highest Response Ratio Next)
题目: 响应比高者优先作业调度算法是通过计算时间和等待时间来实现的。
\[周转时间 = 完成时间 - 到达时间\] \[等待时间 = 周转时间 - 运行时间\]时间片轮转调度(RR,Round_Robin)
优先级调度算法
多级反馈队列调度算法
死锁
题目:简叙合理的资源分配图应满足的条件, 并加以解释。
- 资源$R_j$给各进程$P_i$分配的资源数目不能大于该类资源总数$W_j$, 即对各资源$R_j$的分配满足:
- 任何一个进程$P_i$对某类资源$R_j$的申请量和已分配数量之和, 不应大于该类资源的总数$W_j$, 即:
产生死锁的4个必要条件
- 互斥使用(资源独占)
- 非剥夺控制(不可强占)
- 零散请求(请求与保持):进程可以根据需要逐次申请资源,而不是一次性集中性一次请求所有资源
- 循环等待:等待资源的进程形成了一个封闭的链。
以上都是必要条件,并非充分条件,如果破坏其中之一,就可以预防死锁的产生。
Spooling技术(假脱机技术)
题目:Spooling系统的描述错误的是:
- 不需要独占设备
- 加快了作业执行的速度
- 使独占设备变成了共享设备
- 利用处理器与通道并行工作的能力(×)
SPOOLing技术:利用高速共享设备(通常是磁鼓或者是磁带)将低速的独享设备模拟为高速的共享设备,这样,从逻辑上讲,计算机系统为每一个用户都分配了一台独立的高速独享设备。
输入输出井
它们是在磁盘上开辟的两大存储区。输入井是模拟脱机输入时的磁盘,用于收容输入设备输入的数据;输出井是模拟脱机输出时的磁盘,用于收容用户程序的输出数据。
输入缓冲区和输出缓冲区
它们是在主存中开辟的两个缓冲区。输入缓冲区用于暂存由输入设备送来的数据,以后再传送到输入井;输出缓冲区用于暂存从输出井送来的数据,以后再传送给输出设备。
输入进程和输出进程
输入进程模拟脱机输入时的外围控制机,将用户要求的数据从输入设备,通过输入缓冲区送到输入井。当CPU需要数据时,直接从输入井读入主存;输出进程模拟脱机输出时的外围控制机,把用户要求输出的数据,先从主存送到输出井,待输出设备空闲时,再将输出井中的数据,经过输出缓冲区送到输出设备上。
请求打印队列
由若干张请求打印表所形成的队列,系统为每个请求打印的进程建立一张请求打印表。
产生死锁的实例
P、V操作不当引起死锁
进程申请顺序不当引起死锁
同类资源分配不当引起死锁
例子1:
比如有4个同类资源,系统中的并发进程数是3, 每个进程的最大需求数是2。
解:
先每个 进程分配一个资源,再将剩下的一个资源分配给某一个进程,该进程得到满足,释放资源,不会造成死锁。
例子2:
比如有4个同类资源,系统的并发进程数是3, 每个进程的最大需求数是3.
解:
先每个进程分配一个资源,将剩下一个资源无论分配给谁,都无法满足,造成死锁。
进程通信引起死锁
存储管理
概述
地址重定位
可执行文件的建立过程是:源程序→编译→目标模块(多个目标模块或程序库)→链接→可执行文件。当程序执行时由操作系统装入内存而成为进程。
当程序被装入内存时,程序的逻辑地址被转换成内存的物理地址,称为地址重定位。
绝对装入(absolute loading):在可执行文件中记录内存地址,装入时直接定位于上述内存地址的方式称为绝对装入(或者称为固定地址再定位)。
可重定位装入(relocatable loading):定位装入方式是指在可执行文件中,列出各个需要重定位的地址单元和相对地址值,装入时再根据所定位的内存地址去修改每个重定位地址项,添加相应的偏移量。
有相对地址空间的程序装入到物理地址空间时,由于两个空间不一致,就需要进行地址变换,或称地址映射,即地址的再定位。
地址再定位有两种方式:静态再定位和动态再定位。
静态地址再定位是把作业装入内存时完成地址变换。
动态地址再定位在作业执行期间(访问到指令或数据)才进行地址变换。
分区存储管理方案
可变分区
题目: 在可变分区管理方案中,若采用“最佳适应”分配算法, 通常将空闲区按容量递增排列
- 最先适应算法(first-fit):从前往后找,找到一个能插进去的块就插进去。
- 循环最先适应算法(next-fit, 下次适应算法):从上一次插完的地方继续往后找,找到第一个能插进去的块插进去。
- 最佳适应算法(best-fit):将块从小到大排好, 找最合适的一个插进去
虚拟存储
虚拟存储管理的基础是程序的局部性原理
程序的局部性原理的基本含义是:程序执行时对内存访问的不均匀性。
局部性原理:
- 时间局部性
- 空间局部性
页式存储管理
把作业的虚拟地址空间划分成若干个长度相等的页(pages),也可以称为”虚页”。 主存也划分成若干个与虚页长度相等的页框(page frame), 也称为页面或实页。
程序在虚拟地址空间是连续的,但却要映射到物理内存中不连续的空闲frame中,所以需要系统在内存中开辟一个页表区来建立每一个作业的虚页号到物理内存的frame 号之间的映射关系, 这个表格就叫做页变换表(page management table), 也叫页表。
页表中的内容分为三部分:页号、块号和页内偏移量。
文件管理
文件分为流式文件(无结构文件) 和 记录式文件(有结构文件)
文件物理结构:
- 连续结构
- 链式结构
- 索引结构
FCB,文件控制块, 也是文件目录项
FCB包括文件名和文件描述信息
因为在检索目录时,只需要匹配对应的文件名,文件的其他描述信息不会用到,也不需要调入内存。
因此, 有些系统(如Unix),将文件名和文件描述信息分开, 文件描述信息单独形成一个称为索引节点的数据结构, 简称i节点。
文件目录中的每个目录项仅由文件名和指向索引节点的指针组成。
文件目录
题目:文件系统实现按名存取的功能是通过查找文件目录来实现的。
为了实现“按名存取”, 系统为每个文件设置用于描述和控制文件的数据结构,这个数据结构被称为文件控制块FCB、
设备管理
SDT(系统设备表)和DCT(设备控制表)一对多
DCT(设备控制表)和COCH(控制器控制表)一一对应
COCH(控制器控制表)和CHCT(通道控制表)多对一
与设备管理有关的技术
DMA技术
缓冲技术
题目:()不是设备管理中引入缓冲机制的原因
- 缓和CPU和I/O设备间速度不匹配的问题
- 减少对CPU的中断频率, 放宽对中断响应时间的限制
- 提高CPU和I/O设备之间的并行性
- 节省系统内存(×)
题目: 缓冲区的作用是什么?试述UNIX为块设备设置多缓冲的目的是什么?
缓冲区的作用:
- 缓和CPU与I/O设备速度不匹配的问题
- 减少CPU的中断频率, 放宽对中断响应时间的限制
- 提高CPU与I/O设备之间的并行性
UNIX为块设备设置多缓冲的目的:
为了提高基本速率相差较大的块设备之间的吞吐量, 并减少对CPU的中断次数。