论文部分内容阅读
操作系统是直接建立在硬件平台上,为用户软件提供扩展虚拟机和管理系统资源的系统软件。从上世纪五十年代以来,操作系统经历了由低级到高级、由简单到复杂的发展过程。现代操作系统种类繁多,既有用于PC机上的UNIX、WINDOWS、LINUX等系统,也有应用于大型机、图像处理、军事等领域的系统。虽然它们千差万别,但作为现代操作系统它们都具有一个共同的特点,就是对多任务的支持。多任务要求计算机在同一时间内能处理多个不同的任务。为了实现多任务的要求,计算机科学家们在操作系统中引进了进程机制,进程机制是多任务操作系统的核心和基石,也可以这样的说,没有进程机制,就没有多任务。对操作系统进程管理的分析与探讨既有利于我们对操作系统有一个完整、清晰的理解,也为我们将来开发自己的操作系统打下坚实的基础。MINIX是Andrew S.Tanenbaum教授在上世纪八十年代初期参照UNIX早期公开版本开发的运行于PC机上的多任务、多用户操作系统。笔者为何要选用MINIX作为本论文的分析对象呢?。这主要是因为MINIX具有以下特点:1.MINIX的结构先进。虽然MINIX是参照UNIX发展而来,但Tanenbaum教授却在编写MINIX时,采用了与UNIX单一结构不同的Client/Server结构,Client/Server结构使MINIX各部分封装性好,极易扩充和移植,同时也使MINIX能够采用成熟的网络协议,如TCP/IP,将其发展为分布式操作系统。2.可以利用MINIX开发出实用的操作系统。虽然Tanenbaum教授一直坚持MINIX的简单和非实用性,以满足学生的学习要求,但这并不能说明MINIX仅仅是一实验室的温室之花。前一段风靡全球的LINUX,就是根据MINIX发展而来的。3.MINIX的开放性。MINIX的作者Tanenbaum教授并不是为了商业目的而开发这一系统的。从它诞生之日起,它的源代码就是开放的。这使得全球的计算机爱好者,都可以通过对MINIX源代<WP=3>码的分析,了解到操作系统实现的真谛。今天被广泛用的WINDOWS、UNIX等系统,软件厂家只提供了目标代码,而未提供相应的源代码,这使得分析无从下手。4.MINIX能够在PC机上运行。如果它是只能运行于象IBM370这样的大型机上的操作系统,笔者根本无条件分析之,因为大型机的价格大大高于普通的PC机。5.MINIX是一多任务、多用户的操作系统。多任务、多用户是现代操作系统应具有的基本特征。MINIX并不偏爱Intel处理器,它除支持Intel公司自 8086以来的所有处理器外,还支持象Motorola的M68000、Sun的Sparc、Apple的Macintosh等非主流处理器。为何笔者要选用建立在Intel处理器上的MINIX进行分析呢?这里有以下原因:1.Intel的事实垄断地位。在今天的微处理器市场上,Intel的产品无可争议地处于事实上的垄断地位,并代表了该行业的标准,这使得用户几乎只有选择它的产品。虽然市场上有象AMD等少数公司的产品,但这些公司为了产品的通用性,在处理器的系统设计上基本与Intel公司的产品一样。笔者的机器用的就是Intel Pentium 3处理器。2.容易找到Intel处理器的资料。Intel的事实垄断地位也使得关于它的资料堆积如山,而有关象M68000等非主流处理器的资料廖若星辰。本论文将采取循序渐进的原则,一步一步地展开对MINIX进程管理系统的分析。依照进程管理本身的特性,笔者将本文分为三章:1.第一章主要讨论的是MINIX的结构。操作系统结构不但是操作系统设计中应首先考虑的问题,而且它还决定了操作系统进程管理的具体实现机制。在本章中,笔者首先通过对UNIX与MINIX的结构比较分析,介绍了MINIX的Client/Server结构;然后通过对两操作系统中由于进程管理实现机制的不同,所带来的系统调用实现的不同的具体比较分析,详细的说明了两种结构的优缺点,并表达了笔者对Client/Server结构青睐的理由。<WP=4>2.第二章主要讨论的是系统初始化过程。系统初始化过程就是为系统正常运行作准备的CPU执行流。按照系统初始化先后经历的两个阶段,笔者将本章依次分为两部分。第一部分是引导,引导是每个操作系统必不可少的,但它本身与进程管理并无直接关系,为何笔者要花很大的篇幅分析它呢?这里有以下三个理由,(1)引导把操作系统从外设装入内存中,并启动操作系统内核运行;(2)引导为系统当然包括进程管理部分建立了必要的环境,同时它还为内核进程环境初始化部分建立并传递了必要的系统环境参数;(3)对操作系统的一些改造工作,离不开对引导部分的改造。如:希望目前仅支持ISA总线的MINIX能够支持PCI总线,就离不开对引导部分的修改。在这部分中,笔者还分析了MINIX引导所特有的引导命令及其相应的词法处理机制。第二部分是内核进程环境的初始化过程,当引导结束时,它使CPU从内核进程环境初始化部分的第一条指令(也可以认为是操作系统的第一条指令)处开始执行。内核进程环境初始化部分是MINIX进程管理系统的一部分。在其执行过程中,为了操作系统的正常运行,它建立并安装了GDT(Global Descriptor Table)、IDT(Interrupt Descriptor Table)和系统中唯一的任务,并初始化内核进程控制表,另外它还在CPU执行流进入内核进程调度与切换部分之前,建立相应的CPU环境,如屏蔽外部硬中断等。笔者通过?