操作系统
1、操作系统的类型与结构
操作系统是计算机系统中最基本的系统软件。
操作系统的基本类型有:批处理操作系统、分时操作系统和实时操作系统。从资源管理的角度看,操作系统主要是对处理器、存储器、文件、设备和作业进行管理
操作系统为用户提供的接口表现形式一般为:命令、菜单、窗
口之类的,而操作系统为应用程序提供的接口为 API。
2、进程管理
为了动态地看待操作系统,则以进程作为独立运行的基本单位,以进程作为分配资源的基本单位,从进程的角度来研究操作系统。因此,处理机管理也被称为进程管理。
2.1 进程的状态转换
就绪状态:
当进程已分配了除 CPU 以外的所有必要的资源后,只要能再获得处
理机,便能立即执行,把这时的进程状态称为就绪状态。在一个系统中,可以有多个进程同时处于就绪状态,通常把它们排成一个队列,称为就绪队列。
执行状态:
指进程已获得处理机,其程序正在执行。在单处理机系统中,只能有一
个进程处于执行状态
阻塞状态:
指进程因发生某事件(如请求 I/O、申请缓冲空间等)而暂停执行时的
状态,亦即进程的执行受到阻塞,故称这种暂停状态为阻塞状态,有时也称为“等待”状态,或“睡眠”状态。通常将处于阻塞状态的进程排成一个队列,称为阻塞队列。
2.2 进程同步
系统中有些资源可以供多个进程同时使用,有些资源则一次仅允许一个进程使用,将一次仅允许一个进程使用的资源称为临界资源
把一个进程访问临界资源的那段程序代码称为临界区,有了临界区的概念,进程间的互斥就可以描述为:
禁止两个或两个以上的进程同时进入访问同一临界资源的临界区。为此,必须有专门的同步机构来协调它们,协调准则
- 空闲让进。无进程处于临界区时,若有进程要求进入临界区则立即允许其进入;
- 忙则等待。当已有进程进入其临界区时,其他试图进入各自临界区的进程必须等
待,以保证诸进程互斥地进入临界区; - 有限等待。有若干进程要求进入临界区时,应在有限时间内使一进程进入临界区, 即它们不应相互等待而谁也不进入临界区;
- 让权等待。对于等待进入临界区的进程必须释放其占有的 CPU。信号量可以有效
地实现进程的同步和互斥。
在操作系统中,信号量是一个整数。当信号量大于等于 0 时,代表可供并发进程使用的资源实体数,当信号量小于零时则表示正在等待使用临界区的进程数。
对信号量只能施加特殊的操作:P 操作和 V 操作。P 操作和 V 操作都是不可分割的原子操作,也称为原语。因此,P 原语和 V 原语执行期间不允许中断发生
2.3 前趋图
前趋图是一个由结点和有向边构成的有向无循环图
在前趋图中,执行先后顺序的制约关系可分为两种:直接制约和间接制约
直接制约通常是指一个操作中,多个步骤之间的制约关系,也可以说是“同步的进程之间的制约关系”。如图 2-4 所示,A1、B1、C1 是一条指令的取指、分析、执行的三个步骤,所以它们之间的关系是直接制约
间接制约通常是指多个操作之间相同步骤的制约关系,也可以说是“互斥的进程之间的制约关系”。如图 2-4 所示,A1、A2、A3 之间就存在间接制约的关系。
2.4 进程调度与死锁
进程调度即处理器调度(又称上下文转换),它的主要功能是确定在什么时候分配处理器,并确定分给哪一个进程,即让正在执行的进程改变状态并转入就绪队列的队尾,再由调度原语将就绪队列的队首进程取出,投入执行
进程调度的算法是服务于系统目标的策略,对于不同的系统与系统目标,常采用不同的调度算法
- 先来先服务(First Come and First Serverd,FCFS)调度算法,又称先进先出(First In and First Out,FIFO)。就绪队列按先来后到原则排队。
- 优先数调度。优先数反映了进程优先级,就绪队列按优先数排队。有两种确定优
先级的方法,即静态优先级和动态优先级。静态优先级是指进程的优先级在进程开始执行前确定,执行过程中不变,而动态优先级则可以在进程执行过程中改变。 - 轮转法(Round Robin)。就绪队列按 FCFS 方式排队。每个进程执行一次占有处理器时间都不超过规定的时间单位(时间片)若超过,则自行释放自己所占有的 CPU 而排到就绪队列的末尾,等待下一次调度。同时,进程调度程序又去调度当前就绪队列中的第一个进程。
当若干个进程互相竞争对方已占有的资源,无限期地等待,不能向前推进时会造成“死锁”。死锁是系统的一种出错状态,它不仅会浪费大量的系统资源,甚至还会导致整个系统的崩溃,所以死锁是应该尽量预防和避免的
死锁的必要条件是:互斥条件、保持和等待条件、不剥夺条件和环路等待条件
解决死锁的策略:
一种是在死锁发生前采用的预防和避免策略;另一种是在死锁发
生后采用的检测与恢复策略
死锁的预防主要是通过打破死锁产生的 4 个必要条件之一来保证不会产生死锁
死锁避免策略,则是在系统进行资源分配时,先执行一个死锁避免算法(典型的如银行家算法),以保证本次分配不会导致死锁发生
3、存储管理
存储器由内存和外存组成。内存是由系统实际提供的存储单元(常指字节)组成的一个连续地址空间,处理器可直接存取。外存(辅存)是指软盘、硬盘、光盘和磁带等一些外部存储部件,常用来存放暂不执行的程序和数据。
存储管理主要是指对内存储器的管理,负责对内存的分配和回收、内存的保护和内存的扩充。存储管理的目的是尽量提高内存的使用效率。存储管理的机制经历了多次变迁,由以前的单一连续区管理到分区存储管理再发展为段页式管理
3.1、页式存储管理
分页的基本思想是把程序的逻辑空间和内存的物理空间按照同样的大小划分成若干页面,并以页为单位将程序调入内存。在页式存储管理中,系统中虚地址是一个有序对(页号,位移)。系统为每一个进程建立一个页表,其内容包括进程的逻辑页号与物理页号的对应关系、状态等
常用的页面调度算法
- 最优(OPT)算法。选择不再使用或最远的将来才被使用的页,这是理想的算法,
但是难以实现,常用于淘汰算法的比较。 - 随机(RAND)算法。随机地选择被淘汰的页,开销小,但是可能选中立即就要访
问的页。 - 先进先出算法。选择在内存驻留时间最长的页似乎合理,但可能淘汰掉频繁使用的页。另外,使用 FIFO 算法时,在未给予进程分配足够的页面数时,有时会出现给予进程的页面数增多,缺页次数反而增加的异常现象。
- 最近最少使用(Least Recently Used,LRU)算法。选择离当前时间最近的一段时间内使用得最少的页。这个算法的主要出发点是,如果某个页被访问了,则它可能马上就要被访问;反之,如果某个页长时间未被访问,则它在最近一段时间也不会被访问。
3.2、段式存储管理
段式存储管理与页式存储管理相似。分段的基本思想是把用户作业按逻辑意义上有完整
意义的段来划分,并以段为单位作为内外存交换的空间尺度
3.3、段页式存储管理
4、设备管理
设备管理的主要任务之一是控制设备和内存或 CPU 之间的数据传送
外围设备和内存之间常用的数据传送控制方式主要有以下几种:
- 程序控制方式。处理器启动数据传输,然后等设备完成。
- 中断方式。程序控制方式不能实现并发。中断方式的数据传输过程是这样的,进
程启动数据传输(如读)后,该进程放弃处理器,当数据传输完成,设备控制器产生中断请
求,中断处理程序对数据传输工作处理之后,让相应进程成为就绪状态。以后,该进程就可
以得到所需要的数据。 - 直接存储访问(Direct Memory Access,DMA)方式。指外部设备和内存之间开辟
直接的数据交换通路。除了控制状态寄存器和数据缓冲寄存器外,DMA 控制器中还包括传
输字节计数器、内存地址寄存器等。DMA 方式采用窃取(或挪用)处理器的工作周期和控
制总线而实现辅助存储器和内存之间的数据交换。有的 DMA 方式也采用总线浮起方式传输
大批量数据。 - 通道方式。通道又称为输入/输出处理器(Input/Output Processor,IOP),可以独
立完成系统交付的输入/输出任务,通过执行自身的输入/输出专用程序(称通道程序)进行
内存和外设之间的数据传输。主要有 3 种通道:字节多路通道、选择通道和成组多路通道。
5、文件管理
文件管理的功能包括:建立、修改、删除文件;按文件名访问文件;决定文件信息的存
放位置、存放形式及存取权限;管理文件间的联系及提供对文件的共享、保护和保密等。允
许多个用户协同工作又不引起混乱。
5.1 文件的逻辑结构
文件的结构是指文件的组织形式,从用户角度所看到的文件组织形式,称为文件的逻辑结构。
文件的逻辑组织是为了方便用户使用。一般文件的逻辑结构可以分为两种:无结构的字符流文件和有结构的记录文件。
无结构文件:文件内部的数据就是一系列二进制流或字符流组成。又称“流式文件”。如Windows操作系统中的.txt 文件
有结构文件:由一组相似的记录组成,又称“记录式文件”。
顺序文件:文件中的记录一个接一个地顺序排列(逻辑上),记录可以是定长的或可变长的。各个记录在物理上可以顺序存储或链式存储。
索引文件: 索引表本身是定长记录的顺序文件。因此可以快速找到第i个记录对应的索引项。
索引顺序文件:
5.2 文件的物理结构
文件的物理结构是指文件在存储设备上的存放方法。文件的物理结构侧重于提高存储器的利用效率和降低存取时间