深入理解操作系统:从基础概念到核心管理
在计算机系统中,操作系统是至关重要的组成部分,它如同计算机的“大管家”,统筹协调着系统的各项资源与工作流程。接下来,就让我们深入了解操作系统的奥秘。
一、操作系统概述
操作系统能有效组织和管理系统中的软/硬件资源,合理安排计算机系统工作流程,控制程序执行,并为用户提供良好工作环境与友好接口。
它主要有两大作用:
一是通过资源管理提升计算机系统效率;
二是改善人机界面,提供友好的工作环境 。
操作系统具备并发性、共享性、虚拟性和不确定性4个特征
拥有进程管理、文件管理、存储管理、设备管理和作业管理五大功能。
同时,操作系统可分为批处理操作系统、分时操作系统、实时操作系统、网络操作系统、分布式操作系统和嵌入式操作系统等类型,其中分时、实时、网络、分布式和嵌入式操作系统在不同场景下发挥着重要作用。
- 分时操作系统:将CPU时间划分为时间片,轮流为多个终端用户服务,具有多路性、独立性、交互性和及时性特点。
- 实时操作系统:能快速处理外来信息并及时响应,分为实时控制系统和实时信息处理系统,与分时系统在设计目标、交互性和响应时间敏感程度上存在区别。
- 网络操作系统:方便联网计算机共享网络资源,提供多种服务,具有硬件独立性、多用户支持等特征,可分为集中模式、客户端/服务器模式和对等模式。
- 分布式操作系统:是网络操作系统的更高级形式,能对系统资源动态分配和调度,具有透明性、可靠性和高性能等特性。
- 嵌入式操作系统:运行在嵌入式智能芯片环境中,具有微型化、可定制、实时性、可靠性和易移植性等特点。
二、进程管理
进程管理即处理机管理,进程是资源分配和独立运行的基本单位,由程序、数据和**进程控制块(PCB)**组成,PCB是进程存在的唯一标志。
运行:当一个进程在处理机上运行时,则称该进程处于运行状态。
就绪:一个进程获得了除处理机外的一切所需资源,一旦得到处理机即可运行则称此进程处于就绪状态。
阻塞:也称等待或睡眠状态,一个进程正在等待某一事件发生而暂时停止运行
进程具有多种状态模型,如三态模型(运行、就绪、阻塞)、五态模型(新增新建态和终止态)以及具有挂起状态的模型(包括活跃就绪、静止就绪、活跃阻塞、静止阻塞) 。
进程是程序的一次执行。
进程是资源分配和独立运行的基本单位,进程两个基本属性:可拥有资源的独立单位;可独立调度和分配的基本单位。
进程间的同步与互斥
进程控制由操作系统内核中的原语实现,负责进程从创建到消亡的全过程控制。进程间通信涉及同步与互斥,同步是合作进程间的直接制约,互斥是申请临界资源进程间的间接制约,信号量机制和管程是实现进程同步与互斥的重要工具 。
进程调度
(1)高级调度:又称“长调度”“作业调度”或“接纳调度”,它决定处于输入池中的哪个后备作业可以调入主系统做好运行的准备,成为一个或一组就绪进程。
(2)中级调度:又称“中程调度”或“对换调度”,它决定于交换区中的哪个就绪进程可以调入内存以便直接参与对CPU的竞争。
(3)低级调度:又称“短程调度”或“进程调度”,它决定处于内存中的哪个就绪进程可以占用CPU。
低级调度是操作系统中最活跃、最重要的调度程序,对系统的影响很大。
4种常用的进程调度算法:
(1)先来先服务:有利于长作业,不利于短作业;有利于CPU繁忙的作业,不利于I/O繁忙的作业。主要用于宏观调度。
(2)时间片轮转:主要用于微观调度,通过时间片轮转提高进程并发性和响应时间特性,从而提高资源的利用率。
(3)优先级调度:让每一个进程都拥有一个优先数,数值大的表示优先级高,系统在调度时总选择优先数大的占用CPU。分为静态优先级和动态优先级两种
(4)多级反馈调度:是时间片轮转算法和优先级算法的综合与发展。优点有:第一,照顾了短进程以提高系统吞吐量,缩短了平均周转时间;第二,照顾I/O型进程以获得较好的I/O设备利用率和缩短响应时间;第三,不必估计进程的执行时间,动态调节优先级。
死锁
死锁:是指两个以上的进程互相都要求对方已经占有的资源导致无法继续运行下去的现象。
产生死锁的4个必要条件:互斥条件、请求保持条件、不可剥夺条件环路条件。
死锁的处理策略有:鸵鸟策略、预防策略、避免策略和检测与解除死锁。
死锁预防:采用某种策略限制并发进程对资源的请求。
死锁避免:如银行家算法。
死锁检测:系统定时地运行一个程序来检测是否发生死锁,若有,则设法加以解除。
死锁解除:有资源剥夺法和撤销进程法。
线程
进程两个基本属性:可拥有资源的独立单位;可独立调度和分配的基本单位。
引入线程后:线程作为调度和分配的基本单位,进程作为独立分配资源的单位。
-个进程中有多个线程,共享该进程的资源
线程分为用户级线程和内核支持线程
用户级线程不依赖于内核。该类线程的创建、撤销和切换都不利用系统调用来实现。
内核支持线程依赖于内核。该类线程的创建、撤销和切换都利用系统调用来实现。
线程是进程中的一个实体,是被系统独立分配和调度的基本单位,线程基本上不拥有资源,只拥有一点运行中必不可少的资源(如程序计数器、一组寄存器和栈),它可与同属一个进程的其他线程共享进程所拥有的全部资源
线程也具有就绪、运行和阻塞3种基本状态,由于线程具有传统进程所具有的特性,故称为’“轻型进程”传统进程称为“重型进程线o程可创建另一个线程,同一个进程中的多个线程可并发执行。
三、存储管理
基本概念
逻辑地址(虚拟地址、相对地址)程序员使用的地址只是用符号命名的一个地址,称为符号名地址,这个地址并不是主存中真实存在的地址。
物理地址(绝对地址)是主存中真实存在的地址。
设备管理是操作系统中繁杂且与硬件紧密相关的部分,不仅管理实际I/O操作设备,还管理相关支持设备,通过设备分配、缓冲区管理和物理I/O设备操作,提高设备利用率,方便用户使用 。
地址重定位
程序,没有运行时,存储在外存,程序运行时,需要装载到内存就需要把程序中的指令和数据的逻辑地址转换为对应的物理地址这个转换的过程称为地址重定位。静态重定位:在程序装入主存时已经完成了逻辑地址到物理地址的变化,在程序的执行期间不会再发生变化。
动态重定位:在程序运行期间完成逻辑地址到物理地址的变换
分区存储管理
把主存划分成若干个区域,每个区域分配给一个作业使用。这就是分区存储管理方式。分为固定分区、可变分区和可重定位分区
(1)固定分区:系统生成时已经分好区。
(2)可变分区:是一种动态分区方式,存储空间的划分是在作业装入时进行的,故分区的个数是可变的,分区的大小刚好等于作业的大小。
(3)可重定位分区:分配好的区域可以移动
分页存储管理
(1)分贡原理:将进程的地址空间划分成若干个大小相等的区域,称为页。将主存的空间也划分成与页相同大小的若干个物理块,称为块或页框在为进程分配主存时,将进程中若干页分别装入多个不相邻接的块中。
(3)页表:
·当进程的多个页面离散地分配到主存的多个物理块时,系统应能保证在主存中找到进程要访问的页面所对应的物理块,为此,系统为每个进程建立了一张页面映射表,简称页表。
分页存储管理
分段存储管理
分段存储管理
在分段存储管理中,将用户程序或作业的地址空间按内容划分为段,比如主程序一段,子程序一段,数据专门放一段,每个段的长度是不等的,但是每个段占用个连续的分区。进程中的各个段可以离散地分配到主存的不同分区中。在系统中为每个进程建立一张段映射表,简称为“段表”。
段页式存储管理
先将整个主存划分成大小相等的存储块(页框)将用户程序按程序的逻辑关系分为若干个段,然后再将段划分成页
段页式系统中同时有段表和页表:
段表:段号、页表始址、页表长度
页表:页号、物理块号。
逻辑地址:段号、段内页号、页内地址物理地址:块号、页内地址
虚拟存储管理
程序局部性原理:程序在执行时将呈现出局部性规律,即在一段时间内,程序的执行仅限于某个部分,它所访问的存储空间也局限于某个区域内。
(1)时间局限性:程序中的某条指令一旦执行,则不久的将来很有可能再次被访问;某个存储单元如果被访问,不久的将来它很可能再次被访问。
(2)空间局限性:一旦程序访问了某个存储单元,则不久的将来,其附近的存储单元也最有可能被访问。
如果我们运行程序的时候,允许将作业的一部分装入主存即可运行程序,而其余等需要的时候再装入主存。这样一来,一个小的主存部分可以暂时留在磁盘上,空间就可以运行比它大的一个作业。从用户角度看,系统具有的主存容量比实际的主存容量要大得多,称为虚拟存储器。
页面置换算法
(1)最佳置换算法:是一种理想化的算法,即选择那些是永不使用的或者是在最长时间内不再被访问的页面置换出去。
(2)先进先出置换算法(FIF0):优先淘汰最先进入主存的页面,也就是在内存中停留时间最长的页面。
(3)最近最少未使用算法(LRU):优先淘汰最近这段时间用得最少的页面。系统为每一个页面设置一个访问字段,记录这个页面自上次被访问以来所经历的时间T,当要淘汰一个页面时,选择T最大的页面。
(4)最近未用置换算法(NUR):优先淘汰最近一段时间未引用过的页面系统为每一个页面设置一个访问位,访问位为1代表访问过,为0代表没有被访问过,置换页面时选择访问位为0的置换出去。
四、设备管理
设备管理的目标主要是如何提高设备的利用率,即提高CPU与I/0设备之间的并行操作速度,并为用户提供方便、统一的界面。
为了提供设备的利用率,我们采用了“分层构造”的思想,即把设备管理软件组织成为一系列的层次。
主要分为4层:中断处理程序、设备驱动程序、与设备无关的系统软件和用户级软件
各层之间既相互独立,又彼此协作。
例:某用户进程现在需要读取硬盘中的数据。
① 与设备无关软件检査高速缓存中有没有要读的数据块,如果有,则直接从高速缓存中调取;如果没有,则调用设备驱动程序,向IO硬件发出一个请求。
②用户进程转为阻塞状态,等待磁盘操作的完成。磁盘操作完成时,硬件产生一个中断,转入中断处理程序
③ 中断处理程序检査中断的原因,认识到这时磁盘读取数据的操作已经完成,于是唤醒用户进程取回从磁盘读取的信息,此次I/0请求结束。
④用户进程得到了需要读取的数据内容,由阻塞转为就绪状态,继续运行。
设备管理采用的相关技术
1、通道技术
2、DMA技术
3、缓冲技术
4、Spooling技术
目的:缓和CPU的高速性和I/0设备的低速性之间的矛盾。
原理:Spooling技术引入了两个程序,分别实现脱机输入输出操作。预输入程序将输入设备上的数据通过输入缓冲区再传输到高速磁盘的输入井;缓输出程序将高速磁盘中输出井中的数据通过输出缓冲区传输到输出设备。CPU读写数据只需要在高速磁盘上进行,大大提高了工作效率。而且输入输出操作与CPU数据的处理同时进行,这种在联机情况下实现的输入输出与CPU工作并行的技术叫做Spooling或假脱机操作。
磁盘调度算法
磁盘调度分为移臂调度和旋转调度两类,先进行移臂调度,再进行旋转调度。磁盘调度的目标是使磁盘的平均寻道时间最少。读取磁盘数据的时间 =寻道时间 +旋转延迟 +数据传输时间
2、旋转调度算法:
(1)如果进程请求访问的是不同编号的扇区(无论是否在同一磁道则总是让首先到达磁头位置下的扇区先进行读写操作。
(2)如果进程请求访问的是相同编号的扇区(无论是否在同一磁道)旋转调度时可以任选一个扇区进行读写操作。
五、文件管理
文件的结构和组织
文件的逻辑结构:从用户角度看到的文件组织形式就是文件的逻辑行构,但实际上这些文件在内存上的存放方式可能并不是这样的。
(1)有结构的记录式文件
(2)无结构的流式文件
文件的物理结构:从实现的角度看,文件在存储器上的存放方式
(1)连续结构
(2)链接结构
(3)索引结构
(4)多个物理块的索引表
文件的目录结构
(1)一级目录结构:只有一张目录表,不允许重名,查找速度慢,不能实现文件共享。
(2)二级目录结构:由主文件目录和用户目录组成
(3)多级目录结构:我们熟悉的Windows系统,以及UNIX系统都采用这种多级目录结构。
绝对路径:是指从根目录“\”开始的完整文件名,即它是由从根目录开始的所有目录名以及文件名构成。
相对路径:是从当前工作目录下的路径名
文件存储空间的管理
在将文件保存到外存时,我们首先要知道哪些存储空间是“占用”的,哪些存储空间是“空闲”的。因此我们需要对磁盘空间进行管理
常用的空闲空间的管理方法有空闲区表、位示图、空闲块链和成组链接法。
(1)空闲区表。操作系统为磁盘的所有空闲区建立一张空闲表。它适用于连续文件结构。
(2)位示图:在外存上建立一张位示图(bitmap)记录文件存储器的使用情况。每一位对应文件存储器上的一个物理块,0表示空闲,1表示占用。
(3)空闲块链:每一个空闲物理块中设置一个指针,它指向下一个空闲物理块,所有空闲物理块构成一个链表,链表的头指针放在文件存储器的一个特定位置上(如管理块中)
(4)成组链接法。在系统中将空闲块分成若干个组,每100个空闲块为一组,每组的第一个空闲块登记了下一组空闲块的物理盘块号和空闲块总数。
六、作业管理
(1)先来先服务:按作业到达的先后顺序进行调度
(2)短作业优先:按作业运行时间的长短进行调度,即启动要求运行时间最短的作业。
(3)响应比高优先:响应比高的作业优先启动。
(4)优先级调度算法:按照系统设定的优先级或者用户指定的优先级优先级高的先调度。
(5)均衡调度算法:根据系统的运行情况和作业本身的特性对作业进行分类,力求均衡地使用系统的各种资源,即注意发挥系统效率,又使用户满意。