概述#
操作系统自上而下可分为 4 部分:硬件、操作系统、应用程序、用户。
操作系统的特征#
- 并发 指两个或多个事件在同一时间间隔内发生, 并行性是指系统具有同时进行运算或操作的特性。
- 共享
- 互斥共享方式 一个时间段内只允许一个进程访问该资源
- 同时访问方式 允许一个时间段内由多个进程“同时”对它们进行访问
- 虚拟
- 时分复用技术
- 空分复用技术
- 异步
并发和共享是操作系统的两个最基本的特征
发展历程#
手工操作阶段
缺点
- 用户独占主机,虽然不会出现因资源已被其他用户占用而等待的现象,但资源利用率低
- CPU 等待手工操作,CPU 的利用不充分
批处理阶段
单道批处理系统
- 自动性
- 顺序性
- 单道性
多道批处理系统
- 多道
- 宏观上并行
- 微观上串行
分时操作系统
- 同时性
- 交互性
- 独立性
- 及时性
实时操作系统
运行环境#
处理器运行模式#
- 核心态(管态、内核态) 此时执行的是内核程序,可以执行特权指令和非特权指令
- 用户态(目态) 此时执行的是应用程序,只能执行非特权指令
包含
- 时钟管理
- 中断机制
- 原语 Atomic Operation
- 处于操作系统的最底层,是最接近硬件的部分
- 这些程序的运行具有原子性,其操作只能一气呵成
- 这些程序的运行时间都较短,而且调用频繁
- 系统控制的数据结构及处理
- 数据结构 作业控制块、进程控制块、设备控制块、各类链表、消息队列、缓冲区、空闲登记区等
- 操作 进程管理、存储器管理、设备管理
中断和异常#
- 内部异常
- 软件中断
- 故障 Fault
- 自陷 Trap
- 硬件中断
- 终止 Abort
- 软件中断
- 外部中断(硬件)
- 可屏蔽中断 INTR
- 不可屏蔽中断 NMI
系统调用#
- 设备管理
- 文件管理
- 进程管理
- 进程通信
- 内存管理
操作系统结构#
分层法#
模块化#
宏内核#
系统的主要功能模块都作为一个紧密联系的整体运行在核心态,从而为用户程序提供高性能的系统服务。
微内核#
内核只保存最基本的功能,其他移到用户态,从而降低内核的设计复杂度。
基本功能
- 进程(线程)管理
- 低级存储器管理
- 中断和陷入处理
特点
- 扩展性和灵活性
- 可靠性和安全性
- 可移植性
- 分布式计算
外核#
操作系统引导#
- 激活 CPU
- 硬件自检
- 加载带有操作系统的硬盘
- 加载主引导记录 MBR
- 扫描硬盘分区表
- 加载分区引导记录 PBR
- 加载启动管理器
- 加载操作系统
进程与线程#
进程#
程序段、相关数据段和 PCB(进程控制块 Process Control Block) 三部分构成了进程实体(又称进程映像)
进程的状态与转换#
graph LR; A((新建)) --创建--> B((就绪)) B --调度--> B1((运行)) B1 --时间到--> B B1 --事件等待--> B2((阻塞)) B2 --事件发生--> B B2 --退出--> C((终止))
组织#
PCB 包含的内容
进程描述信息 | 进程控制和管理信息 | 资源分配清单 | 处理机相关信息 |
---|---|---|---|
进程标识符(PID) | 进程当前状态 | 代码段指针 | 通用寄存器值 |
用户标识符(UID) | 进程优先级 | 数据段指针 | 地址寄存器值 |
代码运行入口地址 | 堆栈段指针 | 控制寄存器值 | |
程序的外存地址 | 文件描述符 | 标志寄存器值 | |
进入内存时间 | 键盘 | 状态字 | |
处理机占用时间 | 鼠标 | ||
信号量使用 |
- 进程描述信息
- 进程标识符:标志各个进程,每个进程都有一个唯一标识号。
- 用户标识符:进程归属的用户,用户标识符主要为共享和保护服务。
- 进程控制和管理信息
- 资源分配清单
- 处理机相关信息
进程的通信#
- 共享存储
- 低级方式:基于数据结构的共享
- 高级方式:基于存储区的共享
- 消息传递
- 直接通信方式
- 间接通信方式
- 管道通信
线程#
TCB 线程控制块
处理机的调度#
调度的目标
- CPU 利用率
- 系统吞吐量
- 周转时间
- 周转时间 = 作业完成时间 - 作业提交时间
- 平均周转时间 = (1周转时间 + 2周转时间 + … + n周转时间) / n
- 带权周转时间 = 作业周转时间 / 作业实际运行时间
- 等待时间
- 响应时间
同步与互斥#
死锁#
调度的实现#
调度程序
- 排队器
- 分派器
- 上下文切换器
进程调度方式
- 非抢占调度方式(非剥夺方式),当一个进程正在处理机执行时,即使有更紧迫的进程,也要等待该进程进入阻塞态。
- 抢占调度方式(剥夺方式)
内存管理#
大端序和小端序#
大端序(Big Endian):高位字节存入低地址,低位字节存入高地址。例:0x1234 [0x12, 0x34]
小端序(Little Endian):低位字节存入低地址,高位字节存入高地址。例:0x1234 [0x34, 0x12]
网络协议也都是采用 Big Endian 方式传输数据的,所以有时也把 Big Endian 方式称为网络字节序