进程控制
进程控制是操作系统的核心功能之一,它负责对进程的生命周期进行管理和控制,包括进程的创建、撤销、阻塞、唤醒、挂起、激活以及进程的调度等操作。以下是对进程控制相关内容的详细介绍:
进程创建
- 步骤
- 申请空白PCB:操作系统从PCB集合中选取一个空白的PCB,并为其分配唯一的进程标识符(PID)。
- 为新进程分配资源:根据进程的需求,为其分配内存空间、打开文件、分配I/O设备等资源。
- 初始化PCB:将进程的初始状态设置为就绪状态,填写PCB中的各项信息,如进程优先级、程序计数器、CPU寄存器状态等。
- 将新进程插入就绪队列:将初始化后的PCB插入到就绪队列中,等待操作系统的调度。
进程撤销
- 步骤
- 根据PID找到对应的PCB:操作系统通过进程标识符(PID)在PCB集合中查找要撤销的进程的PCB。
- 回收进程占用的资源:释放进程所占用的内存空间、关闭文件、归还I/O设备等资源。
- 将进程从所在队列中移除:如果进程处于就绪队列、阻塞队列或其他队列中,将其从相应队列中删除。
- 释放PCB:释放PCB所占用的内存空间,标志着该进程在系统中不再存在。
进程阻塞与唤醒
- 阻塞
- 原因:当进程需要等待某个事件发生,如等待I/O操作完成、等待信号量释放、等待其他进程的消息等,就会主动调用阻塞原语将自己阻塞。
- 操作:操作系统将进程的状态从就绪或运行状态改为阻塞状态,并将其PCB插入到相应的阻塞队列中。同时,保存进程当前的处理机状态信息,以便在事件发生后能够恢复执行。
- 唤醒
- 原因:当进程所等待的事件发生时,由相关的事件处理程序调用唤醒原语来唤醒阻塞的进程。
- 操作:操作系统从相应的阻塞队列中找到该进程的PCB,将其状态改为就绪状态,并将PCB插入到就绪队列中,等待调度执行。同时,恢复进程之前保存的处理机状态信息。
进程挂起与激活
- 挂起
- 原因:当系统资源紧张或需要对进程进行特殊管理时,操作系统可能会将某些进程挂起,以减少内存占用或便于系统调度。
- 操作:将进程的状态从当前状态改为挂起状态,并将其PCB从原来的队列(就绪队列或阻塞队列)中移除,放入挂起队列。进程被挂起后,它所占用的部分资源可能会被暂时回收或标记为可被其他进程使用。
- 激活
- 原因:当系统资源满足进程的需求或进程的挂起条件解除时,需要将挂起的进程激活,使其能够继续执行。
- 操作:将进程的PCB从挂起队列中取出,恢复其原来的状态(就绪或阻塞),并将其重新插入到相应的队列中。如果进程原来处于就绪状态,那么激活后就可以再次参与调度;如果原来处于阻塞状态,则需要等待相关事件发生才能变为就绪状态。
进程调度
- 定义:根据一定的调度算法,从就绪队列中选择一个进程,将处理机分配给它,使其能够占用处理机运行。
- 调度算法:常见的进程调度算法有先来先服务(FCFS)、短作业优先(SJF)、优先级调度算法、时间片轮转调度算法等。不同的调度算法具有不同的特点和适用场景,例如FCFS算法简单公平,但可能导致长作业等待时间过长;SJF算法可以提高系统的吞吐量,但难以准确预测作业的运行时间;优先级调度算法能够优先处理重要或紧急的进程,但可能导致低优先级进程饥饿;时间片轮转调度算法能保证每个进程都有机会及时执行,适用于交互式系统。
进程控制通过这些操作,有效地管理了进程的生命周期,使得多个进程能够在操作系统的控制下有序地运行,提高了系统资源的利用率和系统的整体性能。
#牛客创作赏金赛##秋招的第一个offer,大家都拿到了吗##一觉醒来,秋招难度下降一万倍……##牛友故事会##设计人的面试记录#操作系统I 文章被收录于专栏
操作系统(Operating System,简称 OS)是管理计算机硬件与软件资源的核心程序,是用户与硬件之间的桥梁,也是计算机系统的核心组成部分。