当前位置:   article > 正文

Linux进程状态与优先级_exit优先级

exit优先级

Ⅰ. OS进程状态的概念

进程状态反映进程执行过程的变化。这些状态随着进程的执行和外界条件的变化而转换。

  • 三态模型中,进程状态分为 运行态,就绪态,阻塞态

  • 五态模型中,进程状态分为 新建态、终止态,运行态,就绪态,阻塞态

  • 七态模型中,进程状态分为 挂起就绪态、挂起等待态、新建态、终止态,运行态,就绪态,阻塞态

系统操作原理:进程的状态和转换(五态模型)

在普遍的操作系统中,我们所遇到的进程状态有:运行、新建、就绪、挂起、阻塞、停止、挂机、死亡…等等,但是我们并不懂它们(学了等于没学),因为这是操作系统层面的说法,它的理论放到哪个操作系统中都对。所以我们要学习一个具体的操作系统来理解进程状态,而这里我们使用的当然就是Linux

进程的状态有多种,本质都是为了满足不同的运行场景!

1、运行状态

​ 常见的外设有键盘、显示器、网卡、磁盘…等,操作系统也要对这些外设进行管理。那操作系统怎么管理呢?
​ 答案是:先描述,再管理。所以,在操作系统内都包含了每一个硬件的 struct 结构体,这里比如 struct div_keybord… 等,这些结构体都包含了该硬件的所有属性,这些属性可以找到驱动上该硬件的所有匹配的方法,然后操作系统可以对硬件进行各种操作。

​ 根据冯诺依曼体系结构所有的数据结构和内部属性数据都在内存当中,因为操作系统开机就被加载到了内存中

​ 假设磁盘中有一个 bin.exe 文件要运行,它先被加载到内存里,操作系统要对该进程进行管理,要管理就要先描述,这里PCB假设是 struct task_struct {};这个进程想要在 CPU 上运行起来,就必须加入到 运行队列(runqueue) 中,这个运行队列是 CPU 为管理进程而产生的,是内核给 CPU 准备的。为什么进程运行要进行排队?因为 CPU 的资源是有限的

​ 这里假设只有单核的 CPU (一个CPU),不考虑多核的情况,一个 CPU 只有一个运行队列进程想要运行就必须加入到运行队列中,这里的运行队列假设是 struct runqueue{},这个运行队列包括了 struct task_struct head* 和 其他属性。

让进程入队列,本质是:将该进程的 task_struct 结构体对象放入到运行队列中

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/334766
推荐阅读
相关标签