首先我们要明白“皮之不存,毛将焉附”的道理,计算机系统是硬件与系统软件完美结合的一个有机整体。因此在学习这一部分时,特别是学习中断控制原理和系统凋用等内容时,要联系计算机组成原理的知识,这样才能对整个系统了解。
一、程序和进程
进程(process)这一术语 ,最初是在麻省理工学院(MIT)开发的MULTICS;系统以及IBM公司开发的CTSS/360系统中提出,时间是60年代初期。自那时起,进程已成为现代操作系统中最核心的概念之一。因为,操作系统的某本控制原理都是围绕进程展开的。但是,进程控制的复杂性是由操作系统的并发机制引起的。 而目前经常使用的几乎所有操作系统都支持并行或并发机制,我们先介绍并发控制,并以多道程序作为问题的切人点来引出进程的定义。
注:这里读者可能还不太理解进程到底是怎么回事?我们先把它记在心里,回过头再来看遍。
1.1 并发控制
在支持多道程序环境的通用操作系统中 ,允许一个或若十个进程在系统中并发执行, 但由于系统硬件资源的有限性, 使得并发执行的若干进程之间会出现竞争系统有限软硬件资源的现象。 这些资源包括处理器、 内存、I/0设备以及数据库等, 这就需要操作系统来协调和优化分配系统共享资源。 特别是在单处理器系统中,任一时刻 CPU 只能运行一个进程, 而其他进程只能是等待 CPU 或其他资源。为了公平合理地对待所有进程, 内核为每个进程分配一小段时间一小段时间被称为时间片。 一旦正在被运行进程的时间片用完, CPU 就立即被切换去执行另一个等待运行的就绪进程。由于 CPU 的运行速度很快, 造成若干个进程同时在运行的一 种虚拟假像。 这就是多道程序的并发控制。
1.1.1 多道程序设计与分时共享
如上所述 ,操作系统的功能是管理系统资源,以便为用户程序(应用程序)提供一个可执行环境。然而,对于初学者来说。操作系统却是以一种复杂的令人难以琢磨的方式运行。 追根溯底 ,还要从计算机系统的硬件资源讲起。
在操作系统管理的硬件资源中,根据其工作速度可分为两大类。一类是组成计算机主要功能部件的处理器CPU、高速缓存、内存以及I/O接口;而另一类则是外围设备,又叫I/O设备。包括:键盘、显示器、打印机、鼠标、软驱、硬驱、光驱和网络通信设备等。 在这两类硬件资源中, 由于构成的原材料及工作性质的不同,其运行速度有着天壤之别,处理器 CPU 、高速缓存以及内存等是由晶体半导体材料所组成;因此工作时, 其电信号的传播速度几乎为光速。而外围设备大都含有机械装置,显然依赖按键、齿轮以及杠杆传递信息,其运行速度无法与接近光速的电子器件相比。
多道程序设计就是将内存分成若干个部分,每—部分存放不同程序的执行代码。当其中—个进程需要等待外设操作完成时,CPU可以保存当前进程的所有信息,选择另—个进程来运行,但是如果多道程序中的一道是大型科学计算,在运行的数小时里不需要外设操作,那么内存中的其他若干道程序将只能等待,而拥有这些程序的用户却希望能及时得到响应。 这种需求导致了分时系统的出现。在分时系统中,系统为内存中的每一个进程分配一个时间片,当正在执行程序的时间片用完后,操作系统将把处理机分配给另一个就绪进程。对于单机系统(一个 CPU), 在某一时刻只能运行一个进程的一条指令,但是由于CPU的工作速度比人的反应快几百万倍甚至几亿倍。因此,虽然CPU在进程之间快速切换,而人的感觉却是机器在同时执行多个程序。 这就是所谓的多道程序的分时共享,这种工作方式叫做并发机制。 当然,并发控制并非不用付出代价。当操作系统从一个进程切换到另一个进程时,也要使用CPU。因此并发机制首先要保证并发设计所带来的效率要抵过由于进程切换所带来的额外开销。
并发是指在同一时间间隔内对资源的共享。即内存中的多个进程分时共享CPU、内存以及 I/O设备。显然,并发机制可以高效地使用CPU,协调高速CPU与慢速外设的矛盾。但是处理并发并不容易。在内存中同时驻留多个进程需要特殊的硬件以及软件的配合对其进行保护,以免各个进程的信息被窃取并遭到攻击。因此,现代操作系统的一个重要内容就是管理计算机的并发操作。
操作系统中的许多迫切需要解决与研究的问题都是由并发机制而引起的。例如:围绕若 “竞争条件”而引入了临界区、原子操作、同步与互斥、锁变量,等等。因此,并发控制向程序设计人员提出了新的重要的学习目标。因为并发程序并不总是按照预期的结果运行。因此调试并发程序是一件棘手的事,而且并发程序典型的不易解决的毛病是,一个并发程序编译运行后,大多数情况下运行结果都很好,但是极少数的情况下它会莫名其妙地失败,而且无法找到原因。
1.1.2 并发控制的硬件支持
操作系统要实现并发控制的设计目标,离不开硬件平台的支持。因为内核必须使用中断机制和硬件上下文切换机制,才能实现多道程序的分时共享,否则CPU无法知道某个进程的时间片已经耗尽,需要调用另一个进程运行。另外,还要考虑CPU执行进程切换的时间开销要尽可能的小,如果CPU执行进程切换的时间开销太大,则多道程序设计将失去意义。
现代计算机都有一个叫做定时器和计数器的硬时钟设备,而用于定时中断的时间测量设备,叫做可编程间隔定时器。在IBM代机上一般使用8254CMOS芯片作为硬时钟设备,操作系统可对其进行编程,编程后它可以按照人的意愿以一定的时间间隔向CPU发出定时中断。也就是当间隔定时器到时时,它便产生一个中断请求&