• 正文
  • 相关推荐
申请入驻 产业图谱

飞凌嵌入式ElfBoard-进程之进程状态

03/28 10:46
401
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

Linux系统中,进程状态对于系统调度、资源分配和管理非常重要,因为它表示了进程当前的执行状况和资源使用情况。在Linux 系统中使用ps -aux 命令可观察到进程的当前状态,在 STAT 列中,会列出进程当前的状态代码;

也可以通过/proc/PID/status查看State行了解到单个进程的状态,例如:

cat /proc/1/status

Linux 是一个多用户多任务的操作系统,可以同时运行多个用户的多个程序,就必然会产生多进程,而每个进程会有不同的状态。Linux 的进程通常有以下 6 种状态。

⚫R (Running/Ready):进程处于运行态或就绪状态,只有在该状态的进程才可能在 CPU 上运行。而同一时刻可能有多个进程处于可执行状态;根据是否在CPU上运行,进一步细分成RUNNING和READY两种状态。处于READY状态的进程表示,它们随时可以投入运行,只不过由于CPU资源有限,调度器暂时并未选中它运行

⚫S (Sleeping):可中断的睡眠状态,处于这个状态的进程因为等待某种事件的发生而被挂起,一般来说可以通过信号来唤醒;

⚫D (Deep Sleep):不可中断的深度睡眠状态,处于这种状态的进程不能响应异步信号(无法被信号唤醒),只能等待相应的条件成立才能结束睡眠状态;

⚫T (Stopped):暂停状态或跟踪状态,一般可通过信号将进程暂停,如 SIGSTOP信号;处于暂停态的进程是可以恢复进入到就绪态的,如收到 SIGCONT 信号;

⚫Z (Zombie):退出状态,进程成为僵尸进程,僵尸态进程其实指的就是僵尸进程,指该进程已经结束、但它的父进程还没有通过系统调用 wait() 或 waitpid() 来回收其退出状态信息。

⚫X (Exit):退出状态,进程即将被销毁,其资源正在被回收。在这个状态下,进程的所有资源(如内存、文件描述符等)会被释放。

进程状态转换:进程是动态的活动的实例,这就意味着进程的状态之间可以发生转换;进程在其生命周期中会经历不同的状态,这些状态反映了进程当前的执行情况。由于操作系统需要有效管理资源和调度任务,进程的状态会根据不同的事件和条件发生变化。每次状态的变化都是由于外部条件或内部逻辑的影响。

就绪 → 运行:当调度程序选择一个就绪进程并分配 CPU 资源时,该进程进入运行状态。

运行 → 就绪:当前正在运行的进程如果时间片耗尽,或被其他高优先级进程抢占,则会回到就绪状态。

运行 → 阻塞:当进程请求 I/O 操作或其他资源时,它会进入阻塞状态,等待相应的事件。

阻塞 → 就绪:一旦所等待的事件发生,进程会从阻塞状态转回就绪状态,等待再次被调度。

运行 → 终止:进程正常完成任务或因错误而被强制终止,转入终止状态,系统清理其资源。

就绪 → 终止:如果进程在就绪状态下长时间未被调度,可能会被系统终止。

运行 → 暂停:通过信号(如 SIGSTOP)可以将进程暂停,进入暂停状态。

暂停 → 就绪:当进程收到恢复信号(如 SIGCONT),它会回到就绪状态,准备再次执行。

僵尸 → 终止:当父进程调用 wait() 收回子进程的状态信息后,僵尸进程会被清理,进入终止状态。

飞凌嵌入式

飞凌嵌入式

保定飞凌嵌入式技术有限公司,创建于2006年,是一家专注嵌入式核心控制系统研发、设计和生产的高新技术企业,是国内较早专业从事嵌入式技术的企业之一。 经过十几年的发展与积累,公司拥有业内优秀的软硬件研发团队,在北京及保定建立两大研发基地,在苏州、深圳设有华东、华南技术服务中心,并在北美、欧洲以及亚太等其他国家和地区拥有国际业务网络。公司研发的智能设备核心平台广泛应用于物联网、工控、轨道交通、医疗、电力、商业电子、智能家居、安防、机器人、环境监测等诸多领域。

保定飞凌嵌入式技术有限公司,创建于2006年,是一家专注嵌入式核心控制系统研发、设计和生产的高新技术企业,是国内较早专业从事嵌入式技术的企业之一。 经过十几年的发展与积累,公司拥有业内优秀的软硬件研发团队,在北京及保定建立两大研发基地,在苏州、深圳设有华东、华南技术服务中心,并在北美、欧洲以及亚太等其他国家和地区拥有国际业务网络。公司研发的智能设备核心平台广泛应用于物联网、工控、轨道交通、医疗、电力、商业电子、智能家居、安防、机器人、环境监测等诸多领域。收起

查看更多

相关推荐