概述
操作系统(OS,Operating System):能有效地组织和管理系统中的各种软硬件资源,合理地组织计算机系统工作流程,控制程序的执行,并且向用户提供一个良好的工作环境和友好的接口。4个特征是
并发性、共享性、虚拟性和不确定性(异步性)
- 管理系统的硬件、软件、数据资源
- 控制程序运行
- 人机之间的接口
- 应用软件与硬件之间的接口
- 操作系统位用户提供了两类接口:操作一级的接口和程序控制一级的接口
- 操作一级接口:包括操作控制命令、菜单命令
- 程序控制一级接口:包括系统调用

分类
- 批处理操作系统
- 分时操作系统:将 CPU 的工作时间划分为许多很短的时间片
- 实时操作系统
- 网络操作系统
- 分布式操作系统
- 微型计算机操作系统
功能
- 进程管理(Process Management):负责创建、调度、终止进程,并处理进程间通信(IPC)
- 存储管理(Memory Management):对主存储器空间进行管理,主要包括储存分配与回收、储存保护、地址映射(变换)和主存扩充
- 设备管理(Device Management):负责管理计算机的I/O设备,如磁盘、键盘、显示器等
- 文件管理(File Management):主要包括文件存储空间管理、目录管理、文件的读写管理和存取控制
- 作业管理
进程管理
进程是程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单元。它由程序块(描述进程做什么)、*
进程控制块*
(PCB:是进程存在的唯一标志。内容包含进程标识符、状态、位置信息、控制信息、队列指针(链接同一状态的进程)、优先级、现场保护区等)和**
数据块(存放进程执行时所需数据)**三部分组成
- 进程是可拥有资源的独立单元
- 进程是可独立调度和分配资源的基本单位
进程 vs 程序
- 区别:进程是程序的一次执行过程,没有程序就没有进程
- 程序是一个静态的概念,而进程是一个动态的概念,它由创建而产生,完成任务后因撤销而消亡
- 进程是系统进行资源分配和调度的独立单元,而程序不是
进程 vs 线程

- 线程只能被独立调度,不可分配资源
- 多个线程可共享进程中的某些资源(内存地址空间、代码、数据、文件等)
- 线程中的程序计数器、寄存器、栈都是独立的
进程状态

三态图
1. 就绪(Ready)
- 进程已获得除 CPU 之外的所有必要资源,等待 CPU 调度。
- 进程在 就绪队列 中排队,等待 CPU 运行。
2. 运行(Running)
- 进程正在 CPU 上执行。
- 在单处理器系统中,每个时刻只有一个进程处于运行状态。
3. 阻塞(Blocked / Waiting)
- 进程在等待某些事件(如 I/O 操作完成),无法执行,即使 CPU 空闲也无法运行。
- 进程进入 等待队列,直到所需事件发生。
状态转换
进程在运行过程中会在这三种状态之间进行转换:
- 就绪 → 运行:进程获得 CPU,并开始执行。
- 运行 → 就绪:进程因时间片用完或被更高优先级进程抢占而暂停执行。
- 运行 → 阻塞:进程等待 I/O 操作完成或某个事件发生,无法继续执行。
- 阻塞 → 就绪:等待的事件发生,进程重新进入就绪队列,等待 CPU 调度。
进程同步 & 互斥
- 临界资源:各进程间需要以互斥方式对其进行访问的资源。Case:打印机、缓冲区
- 临界区:每个进程中访问临界资源的那段代码称为临界区
- 互斥:多个进程都要访问同一资源(临界资源),使用时需要加锁,使用完后需要解锁。由于临界资源问题,多个进程之间是间接
制约关系 - 同步:多个任务可以并发执行,只不过有速度上的差异,在一定情况下停下等待,不存在资源是否单独或共享的问题。多个进程之间是
直接制约关系。先后顺序的影响 - 信号量 S:一种特殊的变量。全局变量。表示资源数量或者排队进程数(S < 0 时,排队进程数 =
),S 初值表示资源个数
- 互斥信号量:对临界资源采用互斥访问,使用互斥信号量后其他进程无法访问。初值为1
- 同步信号量:对共享资源的访问控制,初值一般是共享资源数量
PV操作
- P操作:申请资源。对资源(S)加锁(占用资源)之后会检查资源是否充足,如果不足(S<0)就会进入阻塞队列
- V操作:释放资源。对资源(S)解锁(释放资源)之后检查是否有阻塞队列(S<=0),如果有则唤醒阻塞进程
- PV操作一定是成对存在的

前驱图 PG(Precedence Graph)
用于表示进程或事务之间的执行依赖关系。它是一种有向无环图,其中 节点(Node) 代表进程或事务,有向边(Edge)
代表执行的先后顺序(即前驱-后继关系)。可以体现直接制约(同步)关系。
- 箭头流出对应V操作
- 箭头流入对应P操作
死锁
如果一个进程在等待一件不可能发生的事,则进程就死锁了。而如果一个或多个进程产生死锁,就会造成系统死锁

存储管理
页式存储
将程序和内存均划分为同样大小的块,以页为单位将程序调入内存。程序使用逻辑地址(逻辑地址 = 页号 + 页内地址),内存使用*
物理地址(物理地址 = 页帧号(物理块号) + 页内地址),两者使用页表*一一对应。
- 优点:利用率高,碎片小,分配及管理简单
- 缺点:增加了系统开销;可能产生抖动现象

页面淘汰原则:状态位1 & 访问位0 & 修改位0
段式存储
按用户作业中的自然段来划分逻辑空间,然后调入内存,段的长度(段长)可以不一样。 逻辑段地址 = (段号, 段内偏移量)。物理地址 =
基址 + 段内偏移量
- 优点:多道程序共享内存,各段程序修改互不影响
- 缺点:内存使用率低,内存碎片浪费大
段页式存储
段式和页式的综合体。先分段,再分页。一个程序中有若干个段,每个断中可以有若干页,每个页大小相同,但每个段的大小不同。*
段页式地址 = 段号 + 页号 + 页内地址*
- 优点:空间浪费小、存储共享容易、存储保护容易、能动态链接
- 缺点:由于管理软件的增加,复杂性和开销也随之增加,需要的硬件以及占用的内容也有所增加,使得执行速度大大下降
文件管理
- 顺序结构
- 链式结构
- 索引结构
| 结构 | 访问方式 | 速度 | 存储连续性 | 适用场景 |
|---|---|---|---|---|
| 顺序结构 | 直接计算偏移 | 最快 | 必须连续 | 大文件、顺序读写 |
| 链式结构 | 顺序查找指针 | 慢 | 无需连续 | 日志、存储小文件 |
| 索引结构 | 直接查索引表 | 快 | 无需连续 | 数据库、大型文件系统 |
索引结构
- UNIX 默认有13个索引结点(地址指向,物理块号)
- 0-9号是直接索引方式。索引结点直接指向物理块,物理块直接保存了文件的逻辑页或数据(0到9号逻辑页)
- 10号索引结点是一级间接索引方式。索引结点指向一级间接索引表(10到
一级间接索引表个数 + 9号逻辑页) - 11号索引结点是二级间接索引方式。经过两次间接查找才能确定物理块号
- 12号索引结点是三级间接索引方式。经过三次间接查找才能确定物理块号
- 文件在逻辑上一定是连续的,在物理上可以是分散的
空闲空间管理
空闲空间管理用于追踪磁盘上的空闲存储块,以便分配给新文件或释放已删除文件占用的空间
| 方法 | 主要思想 | 优点 | 缺点 |
|---|---|---|---|
| 空闲区表法 | 记录每个空闲区域的起始地址和大小 | 适合存储连续大文件,存取快 | 可能导致碎片化 |
| 位示图法 | 用二进制位(0/1)表示磁盘块是否空闲 | 结构简单,占用空间小 | 查找连续空闲块可能较慢 |
| 链式空闲表法 | 用链表存储空闲块地址 | 易于动态管理 | 访问速度较慢 |
| 成组链接法 | 结合链式和块存储,提升效率 | 查找快,减少遍历 | 需要额外的存储块存索引 |
| 索引空闲表法 | 用索引表管理空闲块 | 支持快速查找 | 需要额外存储索引表 |
位示图法
用二进制位表示磁盘块是否空闲:
- 0:表示该块空闲
- 1:表示该块已占用

树形目录结构
- 文件属性
- R:只读文件属性
- A:存档属性
- S:系统文件
- H:隐藏文件
- 文件名组成:驱动器号 + 路径 + 主文件名 + 扩展名
- 绝对路径:是从盘符开始的路径
- 相对路径:是从当前目录开始的路径