操作系统最重要的一个方面是能够运行多个程序,因为一个程序通常不能使CPU或I/O设备一直处于忙碌状态。此外,用户通常希望同时运行多个程序。通过组织程序,使CPU始终有一个可执行的程序,多道程序设计[Multiprogramming]提高了CPU利用率,并使用户满意。在多道程序系统中,正在执行的程序被称为进程。

其思想如下:操作系统同时在内存中保存多个进程(图1.12)。操作系统选择并开始执行其中一个进程。最终,流程可能不得不等待一些任务完成,比如I/O操作。在非多道程序设计系统中,CPU会出于空闲状态的。在多道程序设计系统中,操作系统只是切换,并执行另一个进程。当该进程需要等待时,CPU会再次切换到另一个进程,以此类推。最后,第一个进程完成等待,并取回CPU。只要至少有一个进程需要执行,那么CPU就不会空闲。

这种想法在生活中也很常见。例如,律师一次只为一个客户工作。当一个案件等待审判或打印文件时,律师可以处理另一个案件。如果她有足够的客户,这个律师就不会因为缺乏工作而无所事事。(游手好闲的律师往往会成为政客,因此让律师忙于工作具有一定的社会价值。)

多任务处理[Multitasking]是多道程序设计[Multiprogramming]的逻辑扩展。在多任务系统中,CPU通过在多个进程之间进行切换来执行多个进程,但是切换经常发生,为用户提供了快速响应时间。考虑当一个进程执行时,它通常只执行很短的一段时间,然后才完成,,或者执行很短时间以后需要执行I/O。I / O可能会有互动;也就是说,输出指向用户的显示,输入来自用户键盘、鼠标或触摸屏。由于交互式I/O通常以“人员速度”运行,因此完成它可能需要很长时间。例如,输入可能受用户输入速度的限制;7个字符每秒对人们来说是快的,但对电脑来说却是慢得难以置信。操作系统将快速地将CPU切换到另一个进程,而不是让CPU在交互输入发生时处于空闲状态。

同时在内存中有几个进程,需要某种形式的内存管理,我们在第9章和第10章中对此进行了介绍。此外,如果多个进程同时准备运行,系统必须选择下一步运行哪个进程。做出这个决定的是CPU调度,这在第5章中讨论。最后,同时运行多个进程需要在操作系统的所有阶段(包括进程调度、磁盘存储和内存管理)中限制它们相互影响的能力。我们在整个文本中讨论这些考虑。

在多任务系统中,操作系统必须确保合理的响应时间。一种常见的方法是虚拟内存,这种技术允许不完全在内存中执行进程(第10章)。该方案的主要优点是,它允许用户运行大于实际物理内存的程序。此外,它将主内存抽象为一个大型的、统一的存储数组,将用户看到的逻辑内存与物理内存分开。这种安排使程序员不必担心内存存储限制。

多道程序设计[Multiprogramming]和多任务系统还必须提供一个文件系统(第13章、第14章和第15章)。文件系统位于辅助存储器;因此,必须提供存储管理(第11章)。此外,系统必须保护资源不被不当使用(第17章)。为了确保有序的执行,系统还必须提供进程同步和通信的机制(第6章和第7章),它可以确保进程不会陷入僵局(即死锁),永远彼此等待(第8章)。

results matching ""

    No results matching ""