1. 进程
(Process)进程是一组元素的实体:
- 基本元素:程序代码,相关数据集
- 其余元素:存放在进程控制块,结构如下 | | 标识符:进程唯一ID | | :—-: | —- | | | 状态:运行/阻塞/挂起… | | | 优先级:相对执行优先顺序 | | | 程序计数器:程序要执行的下一条指令的地址 | | | 内存指针:程序代码和进程相关数据的指针,以及其他进程共享内存的指针 | | | 上下文:执行时处理器寄存器中数据 | | | IO状态信息:与IO有关信息 | | | 记账信息:处理器时间总和,使用时钟数总和,时间限制,记帐号等 | | 总结: 进程=程序代码+相关数据+进程控制块 | |
2. 进程状态
2.1 两状态模型
2.2 五状态模型
无挂起态 | 阻塞态必须先变为就绪态(👇就绪队列的限制)才能运行 | 转换:
- 空->新建
- 新建->就绪
- 就绪->运行
- 运行->退出
- 运行->就绪
- 运行->阻塞
- 阻塞->就绪
- 就绪->退出
| | :—-: | —- | | | |有挂起态: 可产生“交换”:内存中进程移动到磁盘 | | 转换: 除了内存中的就绪和阻塞,还产生了就绪/挂起和阻塞/挂起 | | —- | —- |
3. 进程描述
3.1 操作系统控制结构
操作系统维护4种表:
- 内存表:跟踪实存虚存
- IO表:管理系统的IO设备和通道
- 文件表:提供文件相关信息
- 进程表—>进程映像
3.2 进程映像
进程**映像=程序+数据+栈+属性**(属性即为控制块) 即slp中的栈帧(活动记录)
用户数据 | 用户可修改区域 | ||
---|---|---|---|
用户程序 | 待执行程序 | ||
栈 | 每个进程有一个LIFO栈,保存参数,过程调用地址和系统调用地址 | ||
进程控制块 | 进程表示 | 标识符 | |
处理器状态 | 用户可见寄存器 | ||
控制和状态寄存器:程序计数器、条件码、状态信息 | |||
栈指针 | |||
进程控制信息 | 调度和状态信息、数据结构、进程间通信、进程特权、存储、资源所有权和使用情况 |
4. 进程控制
执行模式 | 大多处理器至少支持两种执行模式,某些指令只能在特权模式下执行,且某些区域仅能在特权模式下访问 |
---|---|
非特权模式 | - 用户模式: 通常用户程序在该模式下运行 |
特权模式 | - 系统模式 - 控制模式 - 内核模式(kernel mode) |
5. 操作系统运行
两个事实:
- 操作系统同软件一样运行,就是一个程序
- 操作系统也会频繁释放控制权,依赖处理器恢复控制权
操作系统的3种运行模式
| 无进程内核(a) | 传统,古老
在所有进程外执行系统内核,当进程中断或产生系统调用,保存其上下文,把控制权交给OS内核执行系统相关功能后,再恢复进程上下文 | |
| :—-: | —- | :—-: |
| 用户进程内运行(b) | 小型PC,工作站中
在用户进程的上下文中执行操作系统软件 | |
| 基于进程的OS(c) | 把OS当作一组系统进程实现 | |