在这一章里,我们讨论操作系统提供给用户的最基本的抽象之一:进程。进程的定义非常简单:一个进程就是一个运行的程序。程序自身是静态的:它只是驻留在磁盘上,有一堆等着去执行的指令。是操作系统获取并运行这些字节,使程序变得有用。
一个人经常想一次运行多个程序。比如,在您的台式机或者笔记本电脑上,您可能希望运行浏览器、邮件程序、游戏、音乐播放器等。事实上,一个典型的系统可能同时运行几十个甚至几百个进程。这样使得系统容易使用,因为用户就简单地运行程序,永远不需要关心系统是否有可用的CPU。
对物理CPU进行抽象时,面对的核心问题是:
虽然仅有干个个可用的CPU,但操作系统是如何提供一种假象:有近乎无限的可用的虚拟CPU?
操作系统通过对CPU虚拟化来提供这种假象。
通过运行进程A、然后停止进程A并运行另一个进程B,操作系统可提供一种假象:虽然仅有若干个物理CPU,但是存在许多虚拟CPU。
这种基本的技术就是CPU时间共享技术:允许用户并发运行任意数量的进程。注意,这里的潜在开销是性能降低,因为CPU是被共享的,所以每个程序会比之前运行地慢。
为了实现CPU虚拟化,且很好地实现,操作系统不仅需要底层机制,而且需要策略。
这里的底层机制就是实现某块所需功能的底层协议或者方法。比如上线文切换机制,就是一种时间共享机制,给予操作系统在给定CPU上停止运行一个程序,开始运行另一个程序的能力。
这里的策略指的是操作系统用来做决定的算法。比如,假定有一些待运行的程序,操作系统里的调度策略,就是使用历史信息(在过去的一分钟内哪一个程序运行地更多等)、作业负载知识(运行的是什么类型的程序等)、性能指标(优化系统是为了交互性能还是为了吞吐量等)等来做决定运行哪一个程序。
网友评论