概述
作用:协调软硬件资源(CPU/内存/外设/文件),提供程序执行环境。高效资源利用、可靠稳定、用户友好易用。
- 特性:
- 虚拟性:虚拟性是一种管理策略,它通过“欺骗”应用程序,让它们认为自己拥有独立且充裕的硬件资源,而实际上这些资源正在被多个应用程序共享。其根本目的是提高资源利用率和方便用户使用。
- 并发性:单核CPU系统中,多个任务交替执行。由于CPU切换速度极快,宏观上看起来这些任务在同时前进,但微观上任何一个瞬间,CPU只执行一个任务。它强调的是“处理多个任务的能力”。
- 共享性:共享性是并发性的必然结果。正是因为系统中有多个任务在并发执行,它们才需要共享系统的硬件和软件资源。根据资源属性不同,共享方式主要分为互斥访问和共享访问两种
- 异步性:程序执行速度不可预测(如I/O阻塞时CPU切换任务),但结果(单线程结果)需确定
功能
- 进程管理:对进程的执行进行时间管理,将CPU的时间合理的分配给每个任务,主要包括进程控制(创建/终止/挂起/唤醒进程)、进程同步(协调并发进程执行顺序)、进程通信(进程间数据交换)和进程调度(分配CPU时间片)
- 文件管理:文件的读写、存取、空间、目录等管理
- 存储管理:对主存储器空间进行管理,包括存储分配、回收、存储保护(隔离进程内存空间)、地址映射(逻辑地址 → 物理地址转换)和主存扩充。
- 设备管理:对硬件设备管理。
- 作业管理:人机交互、图形界面、语音控制、虚拟现实等。
分类
- 批处理操作系统: 自动执行作业队列,无交互。分为单道批处理和多道批处理(主机和外设可并行)
- 分时操作系统:时间片轮转,多用户交互式使用
- 实时操作系统:能够对外来信息以足够快的速度进行处理。并且要在指定的时间范围内做出快速反应,要求高可靠性。分为硬实时和软实时。
- 网络操作系统:基于网络对用户方便和有效的共享网络资源。分为集中模式、客户端/服务器模式、对等模式。
- 分布式操作系统:多个分散的计算机经连接而成的计算机系统,通过通信交换信息。多机透明协作。
- 嵌入式操作系统:轻量化、低功耗、实时性
嵌入式操作系统
嵌入式操作系统是针对特定场景设计和优化的软件,与通用计算机相比,具备一些特点。
- 微型化:精简代码体积,最小化资源占用,裁减不必要的功能,采用高效的内核设计。
- 可定制:从减少成本和缩短研发周期的角度考虑,要求嵌入式操作系统具备高度的灵活配置能力以适应多样化的硬件平台和应用需求。
- 实时性:嵌入式操作系统主要用在需要快速响应的场合,所以对实时性要求较高,如过程控制、数据采集等关键要害领域。
- 可靠性:系统构件、模块和体系结构必须达到应用的可靠性,对关键应用还要提供容错和防故障措施。
- 易移植性:采用硬件抽象层和板级支撑包来提高系统的易移植性,方便的将操作系统移植到不同的硬件平台。
嵌入式系统初始化过程
嵌入式系统按照自底向上进行初始化。
- 片级初始化:初始化处理器芯片本身。
- 板级初始化:初始化主板上的关键外设和资源。
- 系统初始化:启动操作系统核心,完成操作系统的环境构建和应用程序加载。
进程
进程组成:进程控制块PCB(唯一标识)、程序(进程执行的操作)、数据(存放进程运行需要的数据)。

前趋图
用来表示表示任务间的执行顺序与并行关系,
典型场景
* A → B → C
* A,B → C

进程资源图
用来表示 进程和资源之间的分配和请求关系

P代表进程,R代表资源(框内圆球数量代表资源实例数量),
资源指出箭头表示已分配的资源,指入箭头表示请求资源
阻塞节点:进程所请求的资源已全部分配完毕,无法获取该所需资源
非阻塞节点:进程请求的资源仍有剩余,可以继续分配给该进程使用。
当一个进程资源图所有进程节点均为阻塞节点,陷入死锁状态。
进程同步和互斥
- 临界资源:需互斥访问的共享资源,如打印机。
- 临界区:操作临界资源的代码段,如打印函数。
- 互斥:同一时间仅允许一个进程访问的资源,如打印机、文件写入。
- 同步:协调多进程执行时序,无资源独占性,如管道通信。
- 互斥信号量:控制临界资源访问,初值是1。
- 同步信号量:管理共享资源分配,初值是资源的数量。
P(S)操作:申请资源,S = S - 1 ,如S ≥ 0,则执行P操作的进程可以继续向下执行,若S < 0,则无可用资源分配,加入阻塞队列
V(S)操作:释放资源,S = S + 1,若 S > 0,则执行该V操作的进行继续向下执行,若S <= 0,则从阻塞队列唤醒一个阻塞进程到就绪状态。

生产者和消费者问题
三个信号量: 互斥信号量S0(仓库的独立使用权,=1),同步信号量S1(仓库空闲个数,=N),同步信号量S2(仓库商品个数=0)。
| 生产者流程 | 消费者流程 |
|---|---|
| 生产商品 | P(S0) |
| P(S0) | P(S2) |
| P(S1) | 取出商品 |
| 商品存入仓库 | V(S1) |
| V(S2) | V(S0) |
| V(S0) |
进程调度
决定如何分配CPU资源给多个就绪进程
调度触发时机
- 当前进程结束或者阻塞
- 有更高优先级的进程到来
基于优先级的调度方式
- 可剥夺是指当有更高优先级的进程到来时终止低优先级进程的CPU分配给高优先级进程,
- 不可剥夺是指高优先级进程必须等待正在执行的进程自动释放CPU。
调度层级
在某些操作系统中,一个作业从提交到完成需要经过高中低三级调度,
- 高级调度:又称长调度、作业调度、接纳调度。决定输入池中哪个后备作业可以调入主系统做好运行准备,成为一组就绪进程,一个系统中一个作业只需要经过一次高级调度
- 中级调度:中程调度、对换调度,决定就绪队列的哪个进程可以调入内容,获取CPU的竞争资格
- 低级调度:短程调度或进程调度,决定处于内存的哪个就绪进程可以占用CPU,低级调度是操作系统重最活跃的部分。对系统影响很大。
调度算法
- 先来先服务FCFS:按照就绪队列的先后顺序分配CPU
- 时间片轮转: 为就绪进程分配固定的时间片,进程使用完时间片之后剥夺CPU,并放入进入队列末尾。
- 优先级调度:每个进程都拥有一个优先级,优先调度高优先级。
- 多级反馈调度:时间片轮转和优先级结合,设置多个优先级队列1,2,3,4,N。每个队列赋予不同的优先级、不同的时间片长度,新进程先进入最高优先级队列的末尾,按照FCFS,执行队列1的时间片长度,如时间片到了之后未执行完毕,则进入次优先级队列的末尾…如此重复
死锁
当一个进程在等待被另外一个进程占用,且无法被释放的资源,就会产生死锁,若系统中多个进程处于死锁状态,就会造成系统死锁。
死锁产生的四个必要条件:资源互斥、每个进程占用资源并等待其他资源、系统不能剥夺进程资源、进程资源图是一个环路。
- 资源互斥:资源只能同时被一个进程独占使用。
- 占用并等待:进程持有资源的同时,又在等待获取其他进程占用的资源。
- 不可剥夺:进程在未使用完资源之前,不能被系统强制剥夺,只能由进程主动释放。
- 循环等待:存在进程资源的循环等待链,P0(持有R0,需要R1),P1(持有R1,需要R2),P2(持有R2,需要R3),Pi(持有Ri,需要Ri+1)…Pn(持有Rn,需要R0)
死锁处理策略
- 死锁预防:在设计应用时,限制并发进程对于资源的请求,破坏死锁产生的四个条件之一,使系统任何时刻都不满足死锁的条件。
- 死锁避免:一般采用银行家算法来避免,提前计算出一条不会死锁的资源分配方法才分配资源,否则不分配资源。
- 死锁检测: 允许死锁产生,但系统定时运行一个检测死锁的程序,若检测到系统中发生死锁,则设法加以解除
线程
进程是拥有独立资源(内存、文件等)和可独立调度执行的基本单位
进程在创建、撤销和切换设计到资源关系,开销较大,限制了系统可高效运行的进程数量。
为了解决进程切换开销大的问题,将进程的两个核心属性分离:
- 进程:保留独立拥有资源的职责。
- 线程:作为独立调度和分配CPU时间片的基本单位,显著的降低了多任务并发执行时上下文切换的开销。
线程的资源特性
- 私有资源:每个线程运行必须的最小资源,包括程序计数器(PC),寄存器组和私有栈空间(用于局部变量、函数调用)。
- 共享资源:同一进程内的所有线程共享该进程的代码段、数据段(全局变量)、堆、打开的文件等资源
分区存储管理
早期管理内存的技术,将物理内存划分为若干连续的区域,每个分区容纳一个完整的用户程序。允许多个程序同时驻留内存。
- 固定分区:内存预先划分为多个固定大小的分区,由于大小固定,程序需要的大小不同,所以会产生较多内部碎片(分区内未被使用的空间)。
- 可变分区:根据作业需求动态划分大小,这样就不会产生内部碎片,但是内存会被切割为很多块,产生外部碎片(内存被切割为不连续的小块)
- 首次适应法:从头顺序查找,找到第一块满足大小空间分区。
- 最佳适应法:分配与需求大小最接近的空闲分区(易产生细小碎片)
- 最差适应法:分配最大的空闲分区(减少细小碎片)
- 循环首次适应法:和首次适应法不同的是,从上一次查找结束位置继续搜索,减少从头开始检索的开销。
- 可重定位分区:移动已分配区域来合并碎片,只有外部作业请求空间无法满足时执行
分页存储管理
为了解决程序需要的内存大小不一、内存容易碎片化的问题。通过非连续映射实现逻辑地址到物理地址的转换(逻辑地址连续、物理地址不连续)。
- 程序的逻辑地址空间划分为若干个大小相等的片段,称为页
- 物理内存空间划分为同样大小的片段,称为页框或物理块。
操作系统为每个运行的程序创建一个页表。页表维护了页号和物理块号的映射。需要查询页面才能知道对应的物理块号。
程序执行使用的地址是逻辑地址(页号+页内偏移),内存管理单元负责将逻辑地址转换为物理地址(物理块号+页内偏移)。
分页解决了内存碎片问题,管理比较简单,可以按需加载部分内容,提供连续的逻辑地址空间,编程简单。
但 页表占用额外内存,地址转换增加系统开销,频繁缺页可能导致抖动。

缺页中断
分页是虚拟内存的基础机制。
当CPU访问一个不在内存中的页时,就会触发缺页中断,操作系统会从磁盘中(虚拟内存/Swap)中找到那一页,加载到内存中。扩展了程序可用的内存空间。
页面置换算法
- 最优算法OPT:淘汰未来最长时间不被访问的页面,理论最优,无法实际实现。
- 先进先出FIFO:淘汰最早进入内存的页面,会产生抖动现象。
- 最近最少使用LRU:淘汰最久未被访问的页面,根据局部性原理,效率较高。
- 淘汰原则:优先淘汰最近未被访问的,其次淘汰最近未被修改的。
快表(TLB)
小型高速缓存(相联存储器)。存储近期频繁访问的页表。
用于加速地址转换(减少访问内容中的页表)。
分段存储管理
将进程的逻辑地址空间划分为若干逻辑段(如:代码段、数据段、堆段、栈段)。
段内连续存储,段与段之间物理内存不连续。
操作系统为每个进程维护段表,记录每个段的物理内存信息。
段表结构:
| 段号 | 基址 | 段长 | 其他标志位(如RWX权限等) |
|---|---|---|---|
| 1 | 0x5000 | 0x1000 | R-X |
| 2 | 0x8000 | 0x2000 | RW- |
| … |
地址转换流程: 根据段号去查询段表,逻辑地址= 段号+段内偏移,如果段内偏移超过段长,则地址非法越界。根据段号获取基址,物理地址= 基址 + 段内偏移。
优点:
- 逻辑性强:符合程序自然结构(代码、数据分离)
- 易于共享和保护:以段为单位设置权限
- 支持动态链接:运行时按需加载段(如动态链接库)
缺点: - 外部碎片:段长度可变,内存分配/释放会产生碎片。
- 内促利用率低:需要连续存放整个段、大段分配困难
段页式存储管理
对进程的地址空间 先分段,再分页。
- 进程地址空间按逻辑划分为 段
- 每个段再划分为固定大小的页
- 内存按页分配物理内存。
结构: | 段号 | 页号 | 页内偏移 |

需访问两次内存(段表+页表)
优点:
- 空间利用率高
* 页式管理消除外部碎片
* 仅最后一页存在内部碎片 - 逻辑性与保护:保留分段逻辑结构,支持段级权限控制。
- 动态链接支持:以段为单位加载共享库。
缺点: - 管理开销大:需维护段表+多个页表,额外占用内存
- 访问速度慢:至少两次访问内存(段表 → 页表 → 数据),TLB未命中效率明显降低
- 硬件复杂度高:需要专门硬件支持多级地址转换
设备(外设)管理
设备是计算机和外部世界进行输入/输出(I/O)交互的物理或虚拟工具
负责管理设备和协调输出/输出的机构成为I/O系统。I/O系统由设备、控制器、通道、总线和I/O软件组成,设备管理是操作系统的五大基本管理功能之一(处理器、存储、文件、设备、进程)。
设备分类
按数据组织方式分类
- 块设备:以固定大小的数据块为单位进行读写,支持随机访问。(硬盘、光盘等)
- 字符设备:以字符流为单位进行顺序读写,通常不支持随机访问。(键盘、鼠标、串口、打印机)
按照设备功能分类 - 输入设备:向计算机输入信息(键鼠、摄像头、扫描仪)。
- 输出设备:显示计算机输出的信息(显示器、打印机等)
- 存储设备:长期存储或临时存储数据(硬盘、光盘),兼具输入/输出功能
- 网络设备:实现计算机间的通信(网卡、路由器、调制解调器)
- 供电设备:为系统提供电能,不严格归于I/O设备。
资源分配特性
- 独占设备:一段时间内只能被一个进程使用,使用完释放才能被其他进程使用,容易引起阻塞
- 共享设备:允许多个进程并发访问(如磁盘、网络设备),
- 虚拟设备:通过技术手段,将物理独占设备模拟为虚拟设备,供多个设备共享使用(如虚拟打印机)
数据传输速率分类 - 低速设备:键盘鼠标等,
- 中速设备:打印机
- 高速设备:磁盘,网卡
设备管理作用
- 目标:高效、公平、安全的管理计算中的各种I/O设备,为上层(用户、进程)提供统一、方便的设备使用接口
- 作用:
- 跟踪设备状态:动态掌握记录系统中所有设备的状态(空闲、忙碌、故障)。
- 设备分配和回收:进程竞争使用设备时,按照特定策略(防止死锁、公平性、高效性)进行设备分配和回收。
- 设备控制:根据上层请求,向设备控制器发送命令,启动、控制设备的具体操作(读、写、控制等)。
- 缓冲管理:利用缓冲区缓解CPU与设备之间速度不匹配的问题。
- 中断处理:响应设备完成操作或其他事件发送的中断信号,进行必要的处理。
- 错误处理:检测、报告、并尝试从I/O错误中恢复】
- 提供统一接口:为应用程序提供简单且统一的I/O操作接口。
I/O软件组成
| I/O请求↓ | 层次 | I/O应答↑ | I/O功能 | 特性 |
|---|---|---|---|---|
| ↓ | 用户进程 | ↑ | 进行I/O调用,格式化I/,Spooling | 应用程序视角的I/O接口 |
| ↓ | 设备无关软件 | ↑ | 统一接口层:设备命名与保护;提供统一API;设备无关缓存;设备分配策略;错误报告 | 设备无关性,屏蔽硬件差异 |
| ↓ | 设备驱动程序 | ↑ | 设备驱动层:将设备无关请求转化为具体设备命令;初始化设备;检查设备状态;设置设备寄存器 | 设备相关,硬件厂商提供 |
| ↓ | 中断处理程序 | ↑ | 中断响应层:当I/O完成或错误时,响应硬件中断;唤醒等待的驱动程序 | 最底层软件,与硬件寄存器直接交互 |
| ↓ | 硬件 | ↑ | 执行I/O操作 | 物理执行层面 |
Spooling
独占设备只能同时被一个进程所使用,其他进程只能等待,浪费了外设的工作效率。
Spooling(外围设备联机操作)技术,利用高速共享设备(通常是磁盘)作为缓存,实现独占设备的虚拟化共享,
- 输入井:预先存储来自慢速设备输入的数据
- 输出井:用于存储用户进程发送给慢速设备的数据
提高设备利用率:物理设备持续工作,提供系统吞吐量和用户响应时间,
文件管理
文件是具有符号名(文件名)的,在逻辑上具有完整意义的一组相关信息项的集合。
信息项是构成文件内容的基本单位,
- 可以是一个字符,
- 也可以是一个记录,记录可以等长,也可以不等长。
一个文件包含文件体和文件说明。 - 文件体:文件的实际内容,
- 文件说明:操作系统管理文件需要的信息,如文件名、文件内部标识、文件类型、文件存储地址、文件长度、访问权限、建立时间和访问时间等。
文件管理系统
操作系统中实现文件统一管理的一组软件和相关数据集合,专门负责管理和存取文件信息的软件机构,简称文件系统。文件系统的功能包括按名存取;统一的用户接口;并发访问和控制;安全性控制;优化性能;差错恢复。
文件的类型:
- 按文件性质和用途:系统文件、库文件、用户文件。
- 按保存期限:临时文件、档案文件、永久文件。
- 按文件的保护方式:只读、读/写、可执行和不保护文件。
- UNIX文件系统划分方式:普通文件、目录文件、设备文件。
文件结构
文件的逻辑结构分为:有结构的记录式文件;无结构流式文件。
- 有结构的记录式文件:文件由若干物理记录组成,如数据库表文件。
- 无结构的流式文件:文件是字节或者字符组成的连续无结构的字节流,最常见的类型,如文本文件,源代码,图像,可执行程序
文件的物理结构是指文件在物理存储设备上的存放方式:
- 连续结构(顺序结构):逻辑上连续的文件信息依次存放在连续编号的物理块上。
- 链接结构(串联结构):逻辑上连续的文件信息存放在不连续的物理块上,每个物理块通过指针来指向下一个物理块。
- 索引结构:逻辑上连续的文件信息存放在不连续的物理块上,系统为每个文件建立一张索引表,索引表记录了文件信息所在逻辑块号对应的物理块号,并将索引表的起始地址放在与文件对应的文件目录项中。
多级索引结构:如当前有一张索引表,索引表有13个节点,0-9为直接索引,直接指向了存储文件的物理块,假设每个物理块4k,则可以存储40k数据,10-11为一级间接索引,存放的是索引表的地址,每个一级间接索引表是4K,假设每个地址占用4B,则可以存储2 * 1024 * 4k = 8M的数据,12号为二级间接索引,即一级间接索引存储的也是一个索引表的地址,一个二级间接索引可以存储 1024 * 1024 * 4k = 4G数据 - 多个物理块的索引表:索引表是文件创建时由系统自动建立的并与文件一起存放在同一文件卷上,根据文件大小不同,索引表占用的物理块个数不同,一般占用一个或者几个物理块。
文件目录
文件控制块FCB
FCB是操作系统管理文件的核心数据结构,一个FCB包含以下三部分
- 基本信息类:例如文件名、文件的物理地址、文件长度和文件块数等。
- 存取控制信息类:文件的存取权限,UNIX文件分为文件所属用户,同组用户和一般用户。控制这三类用户的RWX(读、写、运行)权限。
- 使用信息类:文件的创建日期、修改日期、访问日期、当前使用信息等。
文件控制块的有序集合成为文件目录
- 相对路径:从当前路径开始的路径
- 绝对路径:从根路径开始的路径
- 全文件名:绝对路径+文件名
文件存储空间管理
空闲区表
磁盘上一块连续的未分配的区域称为空闲区,操作系统为磁盘上所有的空闲区建立一张空闲表,每个表对应一个空闲区,用于连续文件结构
| 序号 | 第一个空闲块号 | 空闲块数 | 状态 |
|---|---|---|---|
| 1 | 18 | 5 | 可用 |
| 2 | 29 | 8 | 可用 |
| 3 | 105 | 19 | 可用 |
| 4 | - | - | 未用 |
位示图
在磁盘上建立一张位示图,记录文件存储器的使用情况
每一位对应文件存储器上的一个物理块,0空闲,1占用
| 第0字节 | 1 | 0 | 1 | 0 | 0 | 1 | 1 | … | 0 | 1 |
| 第1字节 | 0 | 1 | 1 | 1 | 0 | 0 | 1 | … | 1 | 1 |
| 第2字节 | 0 | 1 | 1 | 1 | 1 | 0 | 0 | … | 1 | 0 |
| 第3字节 | 1 | 0 | 1 | 0 | 0 | 1 | 1 | … | 0 | 1 |
| … | ||||||||||
| 第n-1字节 | 1 | 0 | 1 | 0 | 0 | 1 | 1 | … | 0 | 1 |
空闲块链
每个空闲物理块中有指向下一个空闲物理块的指针,所有空闲块构成一块链表,链表的头部存放在文件存储器的特定位置,不需要磁盘分配表,节省空间
成组链接法
将多个物理块组成一个组,每个组的第一个物理块中存放指向下一组的指针和空闲块数,如果指向0,则表示该组为最后一组。
745

被折叠的 条评论
为什么被折叠?



