1. 多道编程
为了提高计算机 CPU 执行的效率(或者说系统的吞吐量),需要多道编程的编程,于是人们在操作系统中引入了进程的概念。
如果一个进程有 20% 的时间使用 CPU 进行计算,另外 80% 的时间用来进行 I/O:
- 如果是单道编程,CPU 的利用率只有 20%;
- 如果同时运行两个一样的进程,即所谓的 2 道编程,则 CPU 利用率将提高为 36%(对立事件,1-0.8*0.8=0.36)
- 三道编程:1-0.8^3 ⇒ 48.8%
- 四道编程:1-0.8^4 ⇒ 59%
如上图所示,随着多道编程的度的增加,CPU 的利用率将逐步提升,但提升的幅度则逐步降低,直到某个临界点时为止,这个临界点就是多道编程的极限。对于上文所述的系统来说,多道编程的度达到 12 以后,CPU 的利用率已经达到 94%,之后 CPU 利用率的提升空间就很小了,而此时因为进程切换所带来的系统消耗则变得非常明显。
2. 多用户环境
多用户环境下,操作系统调度程序需要决定在若干进程中运行哪个进程。