1. 进程
- 定义:
- 一个正在执行的程序实例;
- 能分配给处理器并执行的实体;
- 一组由命令、当前状态、数据、一组相关的系统资源表征的活动单元。
- 由进程控制块来表示,包括:程序代码、标识符、状态、优先级、程序计数器、内存指针、上下文数据、I/O状态信息、记账信息。
2. 进程状态
- 五状态模型:运行、就绪、阻塞、新建、终止。
- 挂起态: 当进程被交换至磁盘中,设置为挂起态,这样能够拓展内存,让更多的进程并发运行,提高效率。挂起时也会有状态变化:阻塞/挂起态——I/O完成——变成就绪/挂起态。
3. 进程描述
- 为了实现整个调度过程,还需维护多个表:内存表、I/O表、文件表、进程表。
- 为了管理进程,需要特定的数据结构来描述一个进程的状态、资源等信息。
- 通常,进程的属性集合被称为进程控制块(Process Control Block),进程的程序、数据、栈和属性的集合称为进程映像(Process Image)。进程表给出了每个进程映像的位置。
- PCB中有三类信息:
- 进程标识信息:进程标识符。
- 进程状态信息:用户可见寄存器、控制和状态寄存器、栈指针。
- 进程控制信息:调度和状态信息包括:状态、优先级、调度信息、事件等。父子关系、进程间通信、存储管理、持有资源。
- PCB的作用:操作系统中的进程调度、资源分配、中断控制、性能监控等模块都需要访问或更改PCB
4. 进程控制
- CPU执行模式:一般都至少支持两种模式,用户模式和内核模式。为了保护操作系统和重要的操作系统表。由PSW中的一个bit来标识。
- 进程创建: 1.为新进程分配一个PID;2.为进程分配空间; 3.初始化进程控制块; 4.将进程放置在合理的队列中; 5.创建或扩充其他数据结构,比如记账信息等。
- 进程切换:
- 何时切换:在操作系统从当前运行进程获取控制权的时候。时钟中断:时间片到达。I/O中断:发生I/O活动,高优先级调度。系统调用:显示请求系统服务。
- 模式切换:处理器在检查到中断后,会将模式切换至内核模式,然后执行中断处理程序。
- 进程切换步骤:
- 保存当前进程处理器上下文、寄存器、PC等;
- 更新进程PCB;
- 移动至相应队列;
- 选择另一进程运行;
- 更新所选进程PCB;
- 载入PC和其他寄存器的值。
5. 操作系统的运行
- 无进程内核: 操作系统在所有进程之外,是一个整体运行,较为传统的老操作系统。
- 在用户进程内执行: 在用户进程的上下文内执行所有操作系统的软件功能。操作系统作为用户调用的一组例程。不需要切换进程,只需要保存上下文并切换模式,然后执行操作系统功能,再返回。
- 基于进程的操作系统: 把操作系统作为一组系统进程来实现。主要的内核功能被组织为独立的进程。在所有进程外,会有一些切换进程的代码。
6.UNIX SVR4的进程管理
- 有9种状态。
- 进程0产生进程1,进程1是系统中所有其他进程的祖先。
- 进程描述比较复杂,由用户级上下文、寄存器上下文、系统级上下文三部分表示一个进程。
- 进程创建由父进程调用 fork() 函数来实现。子进程与父进程代码一样、执行点一样,fork函数的返回值不同来区分。
7. 总结
- 现代操作系统最基本的构件是进程。操作系统要让每个进程分配到处理器时间,协调他们的活动、管理冲突的请求、分配资源。
- 操作系统要维护进程的描述或进程映像。包括进程地址空间和进程控制块。PCB有操作系统管理进程所需的所有信息。
- 进程总是在不同状态之间切换。
- 运行的进程会被中断或者系统调用打断。处理器会发生一次模式转换,将控制权交给操作系统的例程。例程处理完成后,会返回或者切换进程。