# 深入linux内核架构——进程管理和调度(一)
2022/2/8 7:12:46
本文主要是介绍# 深入linux内核架构——进程管理和调度(一),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
0. 前言
多任务的现代操作系统
- 所有的现代操作系统都能够同时运行若干个进程。
- 内核和处理器建立了这种多任务的错觉(也就是可以并行操作)
但是,这也引入了若干问题
多任务引入的问题
- 独立:除非明确要求,进程之间不能互相干扰
- 共享:公平地共享CPU,但是其中一些程序可能更重要
由此,在内核中,需要完成以下的两个任务。
内核需要解决的任务
- 调度策略:分配多少时间?什么时候切换进程?切换到哪一个进程?
- 任务切换机制:切换之后,如何保证与上一次的上下文一致?
1. 进程优先级——长幼尊卑
在所有进程中,重要性并不是都是一致的。这就比消防员中,“救火”的任务远远高于“开锁”的任务。必需得优先执行高优先级的任务。
1.1 进程的分类
Linux内核调度器的发展历史
关于如何去调度进程,内核开发者之间有着热烈的讨论。其中的难点在于不同的工作有不同的需求,很难有一个统一的定量标准。
2. 进程生命周期——众生百态
进程因为资源等待等原因,并不总是可以运行的。而调度器在调度的时候必须知道系统的中每个进程状态。
2.1 进程可能的状态
状态 | **说明 ** |
---|---|
运行 | 此刻正在执行 |
等待 | 万事俱备只欠东风,能够运行但是没有得到许可 |
睡眠 | 进程等待一个外部事件 |
终止 | 进程退出 |
2.2 孤儿进程和僵尸进程
- 孤儿进程:父进程先于子进程结束
- 僵尸进程:子进程结束之后,父进程中没有调用wait系统调用
巨人肩膀
O(n)、O(1)和CFS调度器 (wowotech.net)
这篇关于# 深入linux内核架构——进程管理和调度(一)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-12如何创建可引导的 ESXi USB 安装介质 (macOS, Linux, Windows)
- 2024-11-08linux的 vi编辑器中搜索关键字有哪些常用的命令和技巧?-icode9专业技术文章分享
- 2024-11-08在 Linux 的 vi 或 vim 编辑器中什么命令可以直接跳到文件的结尾?-icode9专业技术文章分享
- 2024-10-22原生鸿蒙操作系统HarmonyOS NEXT(HarmonyOS 5)正式发布
- 2024-10-18操作系统入门教程:新手必看的基本操作指南
- 2024-10-18初学者必看:操作系统入门全攻略
- 2024-10-17操作系统入门教程:轻松掌握操作系统基础知识
- 2024-09-11Linux部署Scrapy学习:入门级指南
- 2024-09-11Linux部署Scrapy:入门级指南
- 2024-08-21【Linux】分区向左扩容的方法