操作系统概述

操作系统可存储、处理及检索信息,参与许多有价值的活动,若无操作系统计算机基本上是废铁一块。

计算机软件大致分为两类:管理计算机操作的系统程序,以及执行用户需求的应用程序。

最基础的系统程序是操作系统,控制计算机的资源,为编写应用程序提供基础。

设计原则

minix3模型说明操作系统设计原则和实现方案。

现代计算机系统包括一或多个处理器,内存、磁盘、打印机、键盘、显示器,网络接口和其他输入/输出设备,是一个复杂的系统。

编写程序跟踪这些组件并正确使用它们,是一项极困难的工作更不用说最佳。

若每个程序员都必须关注磁盘驱动器的工作方式,还要考虑读取磁盘时可能出现的问题,那么,根本不可能编写大量程序。

须找到一些方法来保护程序员免受硬件复杂性的侵害,后来,逐渐发展成在裸硬件之上放置一层软件,管理系统的所有部分,并向用户提供更易于理解和编程的接口,这层软件就是操作系统。

操作系统地位如下图所示:

minix3介绍

图1-1,计算机系统由硬件、系统程序和应用程序组成。

计算机系统

底部是硬件,通常,硬件本身由两层或两层以上构成。

最底层是物理设备,包括集成电路芯片、电线、电源、阴极射线管和类似物理设备。

如何构建及工作,是电气工程师关心的问题。

接着是微体系结构级别,物理设备被组合在一起形成功能单元,通常,该级别包含CPU内部的寄存器和包含算术逻辑单元的数据路径。

每个时钟周期中,从寄存器中取出一或两个操作数,在算术逻辑单元中组合(如,通过加法或布尔AND),结果存储在一或多个寄存器中。

在某些机器上,数据路径的操作由软件控制,称为微程序。在一些机器上由硬件电路直接控制。

数据路径的目的是执行一些指令集。

其中一些可在一个数据路径周期中执行,其他可能需要多个数据路径周期。

这些指令可能使用寄存器或其他硬件设备。

汇编程序员可见的硬件和指令一起形成ISA(指令集架构),这个级别通常称为机器语言。

机器语言通常有50~300条指令,主要围绕机器移动数据、进行算术运算和比较数值。

在这个级别中,通过将值加载到特殊设备寄存器来控制输入/输出设备。如,通过将磁盘地址、主存储器地址、字节计数和方向(读或写)的值,加载到其寄存器中来命令磁盘读取。

实际上需要更多参数,且在操作之后驱动器返回的状态可能很复杂。

此外,对于许多I/O元器件,时序在编程中发挥着重要作用。

操作系统主要功能是隐藏这些复杂性,为程序员提供更方便的指令集。 操作系统之上是系统软件的其它部分,这里可看到命令解释器(shell),桌面系统、编译器、编辑器,及类似独立于应用的程序。

重要的是要意识到这些程序,绝对不是操作系统的一部分,即它们通常由计算机制造商预先安装。

这一点至关重要,但又很微妙。

操作系统是以内核模式(kernel mode)或管理员模式(supervisor mode)运行的软件,能防止硬件被用户篡改。

编译器和编辑器以用户模式运行,用户若不喜欢指定的编译器,可编写自己的编译器。

但不能编写自己的时钟中断处理程序,因为,它是操作系统的一部分,通常受硬件保护,防止用户尝试修改它。

在嵌入式系统(可能没有内核模式)或解释系统(如:java语言系统)中,这种区别有时是模糊的。

对于传统计算机,操作系统是在内核模式下运行。

在minix3中文件系统以用户模式运行。

最后,在系统程序之上是应用程序,用户购买(或编写)这些程序是为解决特定问题,如:文字处理、电子表格、工程计算或将信息存储到数据库中。