操作系统学科的进程状态
上面的就是操作系统学科中,可能会提到的进程状态!当然你还可能看到诸如:就绪挂起,阻塞挂起等概念!
我们要学习的是一款具体的操作系统:linux 操作系统对进程状态的定义和实现。
linux 进程状态
为了弄明白正在运行的进程是什么意思,我们需要知道进程的不同状态。一个进程可以有几个状态(在 Linux 内核里,进程有时候也叫做任务)。
下面的状态在 linux 内核源代码里定义:
运行状态,R
在 linux 中,进程控制块 task_struct
是用双向链表链接起来的!操作系统维护了一个运行队列,凡是在运行队列中的进程就都处于运行态!被放在操作系统维护的运行队列中的是进程的控制块,即 task_struct
,当轮到某个进程的代码被 cpu
执行时,我们能够通过运行队列中的 task_strcut
找到该进程对应的代码和数据!然后开始执行!
一个正在 cpu
上运行的进程是不是一直要等到该进程的代码执行完毕才把自己从 cpu
上扒下来呢?显然这是不可能的!每一个进程都有一个叫做时间片的概念,当某个进程的时间片消耗完了,就会脱离 cpu
,换下一个进程到 cpu
上执行!由一个进程切换到另一个进程,叫做进程切换。
linux 中进程的时间片大约是:5~800ms,这就意味着一个进程每次在 cpu
上执行的时间是有限的!加上 cpu
来回地切换进程!我们就能够看到多个进程在同一时间同时运行的现象!
我们能够尝试看到运行状态嘛?因为每个进程在 cpu
上执行的时间都非常短,看到这个状态也是不容易的!
可这并不符合我们的预期哇!我们想看到的是 R
状态哇!怎么办呢?我们尝试将 printf
去掉试试!
阻塞状态,S
深度睡眠/磁盘休眠,D
暂停状态,T(t)
终止态,X
僵尸状态,Z
孤儿进程
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。