前言
本系列为Linux内核系列是不断更新不可能一章博客更新完成的尽量每周更新一小结
UNIX操作系统简单而一致,但只有天才(至少程序员)才能领会并欣赏其简单性。
——Dennis Ritchie
引入
所有的现代操作系统都可以同时运行多个进程。大多数用户都是这样认为的。但骗不了我(^▽^)。但是真理是,一个CPU只可以运行一个进程,多个CPU可以真正并行运行多个进程数目。有人要说了“为啥我电脑可以同时运行QQ,微信等软件”这个问题我们后面会说的。
但是我们为什么会觉得我们的电脑会是多任务的错觉?并行?——是因为以一个极短的时间(纳秒)在操作系统运行的进程在不停的切换从而做到的。这才使用户感知不到,从而认为我的电脑可以运行多个进程。
但是这样的管理方式出现一下几种问题。这是内核必须解决的问题
-
进程之间的相互干预。比如我的QQ崩溃了不可以影响得到我的微信或腾讯视频。
-
因为Linux是一个多用户的操作系统如何防止A用户跑去改B用户的东西?否则要出大问题我没有隐私┭┮﹏┭┮
-
CPU时间必须在各个进程中保持相对的公平共享CPU,但是有些进程更加重要。但目前我们只讲内核共享CPU时间的方法,以及如何在进程之间切换。
-
内核必须决定为各个进程分配时长,何时才切换到下一个进程?
-
在内核从进程A切换到B时,如何保障B在执行时运行时的数据?列如:处理器的寄存器的内容和虚拟地址空间的结构必须与之前相同。
这周为引入下一周为进程的优先级