《操作系统概念(第六版)》 第四章 进程

类别:编程语言 点击:0 评论:0 推荐:
       早期的计算机只允许同时运行一个程序。这个程序完全控制计算机并能够访问所有的系统资源。当今的计算机系统允许同时将多个程序载入内存并行执行。这种发展需要更稳固的控制和对各种程序更合理的分类。这些需要造就了进程的概念,进程是执行中的程序(The process is a program in execution.)。在现代分时系统中,一个进程是一个工作单元。
  操作系统越复杂,期望它能够为用户做的事情越多。虽然它主要关注用户程序的执行,但是也需要处理内核自身之外的各种系统任务。所以系统由进程集合组成:操作系统进程执行系统代码,用户进程执行用户代码。通过CPU在进程间多路复用,所有这些进程潜在的能够并行执行。通过在进程间转换CPU,操作系统可以使计算机获得更好的性能。
  4.1 进程概念
  在讨论操作系统时所遇到的一个问题是怎样定义CPU活动。(One impediment to our discussion of operating systems is the question of what to call all the CPU activities.)批处理系统执行作业,而分时系统拥有用户程序或任务。甚至在单用户系统(如Microsoft Windows和Macintosh OS)中,一个用户也可以同时运行多个程序:一个字处理软件、网页浏览器和电子邮件包。即使用户同时只能够执行一个程序,操作系统可能需要支持其内部程序化的活动(如存储器管理)。在许多方面,这些活动是相似的,因此我们称之为进程。
  在本书中,术语“作业”和“进程”几乎是可以交换使用的。虽然我(们)个人更倾向于术语“进程”,但是在操作系统的主要活动被作为作业处理的一段时期内许多的操作系统理论和术语不断发展。使用公认的术语可以避免很多误解,这包括了单词job(如job scheduling),仅仅是因为“进程”已经取代了“作业”。
  4.1.1 进程
  非正式的,进程是运行中的程序。进程不仅仅是程序代码,有时也称之为代码段(text section)。它也包含了当前的状态,这由程序计数器和处理器中的寄存器表示。另外,进程通常包含了进程栈(process stack)(如方法参数(method parameters)、返回地址和本地变量)和一个数据段(存储全局变量)。
  我们强调程序本身不是进程;程序是静态实体(就像是存储在磁盘上的文件),进程是动态实体,它有一个程序计数器指明下一条要执行的指令,并且拥有一组相关的资源。
虽然两个进程可能会关联到同样的程序,但仍被视为两个独立的执行序列。例如,几个用户可能会同时运行主程序的不同拷贝,用户也可能会执行多个编辑程序拷贝。那么其中的每一个都是一个独立的进程,而且虽然其文本段是相同的,但是数据段不同。一个进程运行时产生多个进程也是很普遍的。我们将在4.4节讨论这些。
  4.1.2 进程状态
  在进程运行时,它会改变自身状态。进程的状态部分由该进程的当前活动定义。每个进程可能会处于下列几种状态之一:
  *新:进程正被创建。
  *运行:(进程的)指令正被执行。
  *等待:进程正在等待发生一些事件(如I/O完成或接收一个信号)。
  *就绪:进程正等待分配处理器。
  *终止:进程结束运行。
  这些状态名称是任意的,各个操作系统有着不尽相同的定义。然而可以在所有的系统中找到对状态的表示。某些操作系统更好的描述了进程状态。虽然可能有多个进程处于就绪和等待状态,但是处理器(不管是什么样的处理器)任意时刻只能执行一个进程。图4.1表示了相应的状态图。
  4.1.3 进程控制块
  操作系统通过进程控制块(PCB)表示进程,进程控制块也被称为任务控制块。图4.2描述了一个进程控制块。它存储了某一具体进程的信息,这包括:
  *进程状态:该状态可能是新、就绪、运行、等待、停止等等。
  *程序计数器:该计数器指明了该进程要执行的下一条指令的地址。
  *CPU寄存器:基于计算机体系结构,这些寄存器的数量和类型很不相同。这包括了累加器、变址寄存器、栈指针、通用寄存器,以及条件信息(condition-code information)。连同程序计数器,在中断发生时必须要保存这些状态信息,这样便于后来进程继续正确执行(图4.3)。
  *CPU调度信息:包括进程优先权、指向调度队列的指针和其它的调度参数。(第六章描述进程调度。)
  *存储器管理信息:可能包括诸如基址寄存器和界限寄存器值、页表或段表,这取决于操作系统所选用的存储系统(第九章)。
  *记账信息(accounting information):包括CPU数量和实时使用量、时间限制、账户数目、作业或进程数目等等。
  *I/O状态信息:包括分配给该进程的I/O设备的列表、打开的文件的列表等等。
    
  PCB只是存储信息,而进程间的这些信息是不同的。
  4.1.4 线程
  目前为止,进程意味着是执行单个线程的程序。例如,如果一个进程正在运行一个字处理程序,那么就会执行一个单指令线程。这个单独的控制执行序列允许进程只执行一个任务。(This single thread of control allows the process to perform only one task at one time.)例如,用户不能够在同一个进程中同时键入字符和运行拼写检查程序。许多现代操作系统扩展了进程概念,允许一个进程有多个线程。从而允许进程一次执行多个任务。第五章探讨了多线程进程(multithreaded process)。

本文地址:http://com.8s8s.com/it/it28180.htm