进程的概念
进程
进程的概念
进程是一个具有一定独立功能的程序在一个数据集合上一次动态执行的过程。是可执行文件运行在处理器上的一次执行过程。
ps:可执行文件的运行过程
可执行文件 --> 运行
1、操作系统找到并打开可执行文件,检查是否为ELF文件格式。
2、读取文件程序头(Program Header)包含了需要加载到内存中各个段的信息,比如数据段.data、代码段.text等。
3、操作系统为程序分配虚拟内存。
4、把从可执行文件中获取到的各个段映射到虚拟内存空间。
5、操作系统为进程创建和维护页表。
6、CPU需要执行程序时,操作系统将所需段从磁盘加载到物理内存供CPU读取指令和数据并执行。
补充:通过页表和TLB(用于缓存页表条目,以加速虚拟地址到物理地址的转换)将虚拟地址转换为物理地址(使程序认为它拥有连续且独立的内存空间)
进程的组成
进程一般由PCB、代码段、数据段组成。
PCB:进程在创建之后,操作系统都会为进程分配一块内存来记录进程的各项参数信息,这块内存称为PCB(Processing Control Block)
数据段:进程对应的程序原始数据和执行过程产生的中间数据,供代码段指令处理。
代码段:提供指定处理指令,处理数据段中的数据。
进程标识符
每个进程都有系统分配的唯一的PID进程标识符,用于区分系统中的其他进程,也供用户通过PID发起控制进程的操作。
进程状态
创建态
进程正在被创建,但是系统还没有为进程准备好资源。
就绪态
系统已经申请好进程PCB需要的内存空间,并在PCB中填写好了关于进程的管理信息,系统分配好了进程运行需要的资源。
执行态
进程已经获得了其他资源和CPU分配的资源,并正在被CPU执行的状态。
睡眠态
睡眠态是由于进程主动等待某个事件而进入的状态,通常是等待资源或者I/O操作。
睡眠态的进程在等待的事件发生后(如I/O完成或信号到来)会自动恢复执行。
暂停态
暂停态是由于接收到特定的信号(如 SIGSTOP 或 SIGTSTP)而进入的状态,通常是用户或其他进程的干预。
暂停态的进程需要收到 SIGCONT 信号才能恢复执行
僵尸态
进程结束但资源还未被释放的状态。
结束态
进程正常退出或者由于其他问题中断退出运行。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)