操作系统之进程
概念
进程是程序的一次执行过程,是动态的。程序则是存放在磁盘上的可执行文件,属于静态。进程是程序的实体运行过程,是系统进行资源分配和调度的独立单位。
组成
-
进程控制块(PCB):
- PID:进程标识符,用于唯一标识一个进程。
- UID:用户标识符,标识创建该进程的用户。
- 进程控制和管理信息:用于进程的管理信息。
- 资源分配清单:记录当前进程所分配的资源。
- 处理机相关信息:当前进程的CPU寄存器状态等信息。
-
程序段:
包含程序代码。 -
数据段:
进程运行过程中产生的数据。
特征
- 动态性:进程在创建、运行和终止的过程中状态不断变化。
- 并发性:多个进程可以并发执行。
- 独立性:进程之间独立运行,互不干扰。
- 异步性:进程的执行顺序不固定,可以通过调度机制进行控制。
- 结构性:进程具有特定的结构,包含代码段、数据段等。
状态
-
三种基本状态:
- 运行状态:进程占有CPU并执行。
- 就绪状态:进程等待CPU分配。
- 阻塞状态:进程等待某些资源(如I/O操作)。
-
创建状态:进程被创建,操作系统分配资源并初始化PCB。
-
终止状态:进程执行结束,撤销PCB并回收资源。
状态转换
状态转换由PCB中的
state
字段表示。
状态转换详细描述
- 创建 -> 就绪:进程被创建并准备好执行,但还未获得CPU时间。
- 就绪 -> 运行:进程被调度到CPU上执行。
- 运行 -> 阻塞:进程因等待某些资源(如I/O)进入阻塞状态。
- 阻塞 -> 就绪:阻塞条件解除,进程重新回到就绪状态。
- 运行 -> 就绪:进程被中断,返回到就绪状态等待下一次调度。
- 就绪 -> 终止:进程正常结束或因异常退出,进入终止状态。
组织方式
- 链接方式:通过指针形成队列。
- 索引方式:使用索引表。
这两种方式都由操作系统进行管理。
进程控制
进程控制的主要功能是有效管理系统中的所有进程,提供创建、撤销、状态转换等功能。通过原语实现这些操作,包括:
- 创建原语
- 撤销原语
- 阻塞原语
- 唤醒原语
- 切换原语
阻塞和唤醒原语是成对出现的,原语通过“关中断指令”和“开中断指令”实现原子性。
过程
- 更新PCB中的信息。
- 将PCB插入合适的队列。
- 分配或回收资源。
进程通信(IPC)
- 定义:进程间通信(Inter-Process Communication, IPC)是指两个进程之间的数据交互。
- 原因:由于进程是资源分配的单位(包括内存地址空间),各个进程之间的内存空间若不独立访问,容易出现安全问题,因此进程间不能直接访问彼此的地址空间。
方式
-
共享存储:
- 基于数据结构的共享:低级通信方式。
- 基于存储区的共享:高级通信方式。
-
信息传递:
- 直接通信方式:进程之间直接进行数据传输。
- 间接通信方式:通过中介(如消息队列)来传输数据。
-
管道通信:
- 半双工通信:在某一时间段内只能单向传输数据。
- 实现双向通信需要设置两个管道。
- 管道写满时,写进程会阻塞;管道读空时,读进程会阻塞。
进程的调度策略
- 先来先服务(FCFS):按照进程请求的顺序进行调度,简单但可能导致长进程阻塞短进程(即“吃豆腐”现象)。
- 短作业优先(SJF):优先调度估计运行时间较短的进程,能提高系统吞吐量,但可能导致长进程饥饿。
- 轮转调度(Round Robin):为每个进程分配固定的时间片,轮流执行,适合时间共享系统。
- 优先级调度:根据进程的优先级来进行调度,高优先级进程优先执行,可能导致低优先级进程饥饿。