操作系统笔记(1)
一、操作系统引论
1. 操作系统的核心四特征
操作系统是管理计算机硬件与软件资源的系统软件,其运行的底层逻辑由四大核心特征支撑:
- 并发:宏观上多个程序同时推进,微观上CPU交替执行(和“并行”的物理同时执行有区别),是OS最核心的特征。
- 共享:系统资源(CPU、内存、外设等)被多个并发进程共同使用,分互斥共享(如打印机)和同时共享(如磁盘)两种模式。
- 虚拟:通过技术把物理资源转成多个逻辑资源,比如虚拟内存、虚拟CPU,让用户感觉独占整台机器。
- 异步:进程以“走走停停”的方式执行,执行速度不可预知,但初始条件相同时,最终结果一致。
2. 操作系统的五大核心功能
OS本质是资源管理者,所有功能围绕资源分配与调度展开:
- CPU管理:负责进程/线程调度,分配CPU时间片,实现多任务并发。
- 内存管理:完成内存分配/回收、地址映射、内存保护,扩充虚拟内存,保障多进程内存隔离。
- 设备管理:管理I/O设备驱动、分配、缓冲,用虚拟设备技术提升设备利用率。
- 文件管理:统筹文件存储、检索、共享、权限,管理目录结构与文件系统,实现数据持久化。
- 接口管理:给用户/应用提供命令接口、程序接口(系统调用),屏蔽硬件细节。
3. 操作系统提供的核心服务
OS为上层应用提供标准化服务,降低开发门槛:
- 程序执行:加载、调度、运行用户程序。
- I/O操作:封装硬件细节,提供统一的I/O接口。
- 文件操作:实现文件的创建、读写、删除、权限管理。
- 通信服务:支持进程间通信、网络通信。
- 错误处理:捕获异常、做故障恢复,保障系统稳定。
4. 操作系统的发展历程
从手工操作到现代云原生,OS的演进始终围绕提升资源利用率、优化用户体验展开:
手工操作 → 单道批处理 → 多道批处理 → 分时系统 → 实时系统 → 现代OS(云/虚拟化)
- 单道批处理:一次只运行一个作业,CPU利用率极低。
- 多道批处理:多作业并发执行,大幅提升CPU利用率,但无交互性。
- 分时系统:多个用户分时共享主机,具备交互性、及时性、独占性。
- 实时系统:优先保障响应时间,分硬实时(如工业控制)和软实时(如视频直播)。
5. 操作系统的分类
按应用场景分类
批处理、分时、实时、个人计算机、网络、分布式、嵌入式操作系统。
按内核架构分类
- 宏内核(单内核):所有功能(文件、内存、驱动等)都在内核态运行,效率高、扩展性差、稳定性弱(如Linux、Windows早期版本)。
- 微内核:仅核心调度、通信功能在内核态,其余服务在用户态,安全性高、扩展性强、效率略低(如QNX、鸿蒙微内核)。
- 分层/模块化内核:按功能分层,结构清晰、模块间依赖少,兼顾效率与可维护性。
6. 内核态与用户态:系统安全的核心屏障
- 内核态(管态):能执行所有指令,访问所有硬件/内存资源,是OS内核的运行状态。
- 用户态(目态):仅能执行非特权指令,无法直接访问硬件,是普通应用程序的运行状态。
- 切换触发方式:仅通过中断、异常、系统调用三种方式切换,普通函数调用不会触发态切换。
7. 中断 vs 异常:
特性 中断(Interrupt) 异常(Exception)
来源 外部硬件事件(如键盘输入、I/O完成) 内部程序错误/异常(如除零、缺页)
同步性 异步(和当前执行程序无关) 同步(由当前执行指令触发)
处理逻辑 响应外部事件,不影响原程序正常执行 处理内部错误,可能终止原程序
共同点 都会触发内核态切换,由内核统一处理
8. 系统调用:用户态访问内核的唯一入口
系统调用是用户程序请求内核服务的标准化接口,本质是通过软中断进入内核态,执行内核功能后返回用户态,比如 open() 、 read() 、 write() 都是典型的系统调用。
二、进程与线程:并发执行的核心载体
1. 进程的本质:程序的一次执行
进程是程序的一次执行过程,是系统进行资源分配的基本单位,而PCB(进程控制块)是进程的唯一标识,系统通过PCB管理所有进程。
2. 进程的三态模型与状态转换
进程有三个核心状态:就绪态、运行态、阻塞态,状态转换由事件触发,是进程调度的核心逻辑。
进程状态转换示意图进程状态转换图
状态转换规则
- 就绪 → 运行:CPU调度(时间片分配、高优先级进程抢占)
- 运行 → 阻塞:主动等待I/O事件、资源请求(如读磁盘、等待信号量)
- 阻塞 → 就绪:I/O完成、等待的事件到来、资源可用
- 运行 → 就绪:时间片用完、被高优先级进程抢占
补充:完整五态模型还包含创建态、终止态,用于进程的生命周期管理。
3. 进程的核心操作
- 创建:通过fork()等系统调用,分配PCB、分配资源,创建子进程。
- 终止:通过exit()等系统调用,释放资源、销毁PCB。
- 阻塞:进程主动放弃CPU,等待事件触发。
- 唤醒:等待的事件到来时,将阻塞态进程转为就绪态。
- 挂起:将进程移出内存,暂存到外存,释放内存空间。
4. 进程控制块(PCB)
PCB是进程存在的唯一标志,存储进程管理所需的全部信息,核心作用和包含信息如下:
- 作用:作为进程标志,提供进程管理所需信息,实现进程间的调度与切换。
- 核心信息:进程标识符、进程状态、优先级、程序计数器、CPU寄存器、内存管理信息、I/O设备信息、资源清单等。
5. 进程间通信(IPC)
进程运行在独立地址空间,需通过IPC实现数据交换与同步,主要方式:
- 共享存储:多个进程共享一块内存区域,需同步互斥(如共享内存)。
- 消息传递:通过直接/间接通信传递消息,是进程间最常用的通信方式(如管道、消息队列)。
- 管道通信:半双工通信,基于文件的通信方式,分为无名管道(父子进程)和命名管道(无亲缘进程)。
6. 线程:CPU调度的基本单位
线程是进程内的执行单元,是CPU调度的基本单位,共享进程的内存资源,开销远小于进程,可实现更高效的并发。
- 线程与进程的关系:一个进程可包含多个线程,线程共享进程的地址空间、文件描述符等资源,线程切换无需切换进程地址空间,开销更低。
