【进程】进程流程
进程执行的整个流程涉及多个阶段,以下是该流程的一个概述:
一、进程创建
- 申请空白PCB:进程控制块(PCB)是进程存在的唯一标识,创建进程首先需要为其申请一个空白的PCB。
- 分配存储空间:为进程分配必要的存储空间,用于存放进程的程序代码、数据和进程控制信息等。
- 初始化PCB:
- 初始化标识信息,如进程名、进程号等。
- 初始化处理机状态信息,如程序计数器指向程序的入口地址,栈指针指向栈顶等。
- 初始化处理机控制信息,将进程的状态设置为就绪状态,并通常将其插入到就绪队列的末尾(或根据优先级插入到适当位置)。
二、进程就绪
- 等待调度:进程在就绪队列中等待操作系统的调度。调度算法会根据进程的优先级、时间片等因素来决定哪个进程将被分配到处理机。
- 准备执行:当进程被选中执行时,操作系统会将其从就绪队列中移除,并为其分配处理机资源。
三、进程执行
- 加载程序:将进程的程序代码和数据加载到内存中的指定位置,以便处理机执行。
- 执行指令:处理机按照程序计数器中的指令地址,逐条取出指令并执行。执行过程中,会涉及到数据的读取、存储、运算等操作。
- 上下文切换:
- 在多进程环境中,当当前进程的时间片用完或遇到其他需要暂停执行的情况时,操作系统会进行上下文切换,将当前进程的上下文(包括寄存器内容、程序计数器、栈指针等)保存到其PCB中,并腾出处理机资源。
- 然后,操作系统会选择另一个就绪进程,将其上下文加载到处理机中,并使其开始执行。
四、进程阻塞
- 等待事件:进程在执行过程中,可能会遇到需要等待的事件(如I/O操作、资源申请等)。此时,进程会进入阻塞状态。
- 保存状态:操作系统会将进程的当前状态保存到其PCB中,并将其从执行队列中移除。
五、进程唤醒
- 事件完成:当进程等待的事件完成时(如I/O操作完成、资源被释放等),操作系统会将其从阻塞队列中唤醒。
- 重新就绪:被唤醒的进程会重新变为就绪状态,并被插入到就绪队列中等待调度。
六、进程终止
- 结束执行:进程完成其任务后,会调用终止原语来结束执行。
- 释放资源:操作系统会回收进程所占用的所有资源(包括内存、文件、设备等)。
- 删除PCB:最后,操作系统会删除进程的PCB,并将其从系统中彻底移除。
综上所述,进程执行的整个流程包括进程创建、进程就绪、进程执行、进程阻塞、进程唤醒和进程终止等多个阶段。这些阶段共同构成了进程在操作系统中的完整生命周期。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)