第2章 计算机系统结构简介

2.1 计算机系统结构

2.1.1 层次结构

现代的通用计算机系统是由硬件和软件组成的一种层次式结构。最内层是硬件系统,最外层是使用计算机系统的人,人与硬件系统之间是软件系统。

硬件系统主要由中央处理器(CPU)、存储器、输入/输出控制系统和各种输入/输出设备组成。

软件系统包括系统软件、支撑软件和应用软件三部分。

系统软件是计算机系统中与硬件结合最紧密的软件,也是计算机系统中必不可少的软件。例如,操作系统、编译系统都是系统软件。操作系统的功能是实现资源的管理和控制程序的执行。编译系统的功能是把用高级语言所写的源程序翻译成计算机可执行的由机器语言(指令)表示的目标程序。

支撑软件是可支持其他软件的开发和维护的软件。例如,数据库、各种接口软件、软件开发工具等都是支撑软件。

应用软件是按特定领域中的某种需要而编写的专用程序。例如,财务管理、人口普查等专用程序均属应用软件。

2.1.2 系统工作框架

任何一个计算机系统都有“引导程序”(或称初启程序),当操作员接通计算机电源或重新启动系统时,计算机系统立即自动执行该引导程序。引导程序首先进行系统初始化的工作,然后把操作系统中的核心程序装入主存储器,并让操作系统的核心程序占用处理器执行。

2.2 硬件环境

2.2.1 CPU与外设的并行工作

在现代的通用计算机系统中,都是通过输入/输出控制系统完成外围设备与主存储器之间的信息传送。各种外围设备连接在相应的设备控制器上。这些设备控制器又通过通道连接在公共的系统总线上。

2.2.2 存储体系

在计算机系统中用来存放程序和数据的部件是存储器。现代计算机系统都采用多级存储体系,它包括寄存器、主存储器、高速缓冲存储器和辅助存储器。

1. 寄存器

寄存器是处理器的组成部分,用来存放处理器的工作信息。

(1) 通用寄存器。存放参加运算的操作数、指令的运算结果等。

(2) 指令寄存器。存放当前从主存储器读出的命令。

3) 控制寄存器。存放控制信息以保证程序的正确执行和系统的安全。常用的控制寄存器有程序状态字寄存器、中断字寄存器、基址寄存器、限长寄存器等。

程序状态字寄存器:存放当前程序执行时的状态。

中断寄存器:记录出现的事件。

基址寄存器:设定程序执行时可访问的主存空间的开始地址。

限长寄存器:设定程序执行时可访问的主存控件的长度。

2. 主存储器

在计算机系统中,任何程序和数据都必须在装入主存储器之后才能对其进行操作。主存储器以“字节”为单位进行编址。若干个字节可组成一个“字”。

3. 高速缓冲存储器

位于处理器和主存储器之间的cache起到了缩短存取事件和缓冲存储的作用,故称其为高速缓存存储器。

4. 辅助存储器

磁盘和磁带是最常用的辅助存储器。辅助存储器的优点是容量大且能永久地保存信息,但它们不能被中央处理器直接访问。

2.2.3 保护措施

下面介绍硬件的部分保护措施,在后面的章节里讲看到操作系统是怎样与硬件合作来实现对用户程序的保护。

1. 特权指令

为保证计算机系统能正确可靠地工作,硬件把由中央处理器执行的指令分为两类:特权指令和非特权指令。不允许用户程序中直接使用的指令称为特权指令,其余的称为非特权指令。例如,“启动I/O”、设置时钟、设置控制寄存器等一类可能影响系统安全的指令都属于特权指令。

特权指令只允许操作系统程序使用,用户程序不得使用特权指令。

2. 管态和目态

中央处理器设置了两种工作状态:管态和目态。当中央处理器处于管态时可执行包括特权指令在内的一切机器指令,当中央处理器处于目态时不允许执行特权指令。

3. 存储保护

每个程序在主存中占一个连续的存储空间。硬件设置两个寄存器:一个称为“基址寄存器”,另一个称为“限长寄存器”,用来限定用户程序执行时可以访问的主存空间范围。

2.3. 操作系统结构

2.3.1 设计目标

操作系统的设计应追求下列目标。

1. 正确性

2. 高效性

3. 维护性

4. 移植性

所谓移植性,是指能否方便地把操作系统从一个硬件环境移植到另一个新的硬件环境之中。

2.3.2 操作系统的层次结构

操作系统结构的设计方法有无序模块法、内核扩充法、层次结构法、管程设计法等。

2.3.3 UNIX系统的结构

UNIX是一个交互式的分时操作系统。从结构上看,UNIX可以分成内核层和外壳层两部分。

内核层是UNIX操作系统的核心,它具有存储管理、文件管理、设备管理、进程管理等功能,以及为外壳层提供服务的系统调用。外壳层为用户提供各种操作命令(UNIX把它们称为shell命令)和程序设计环境。外壳层由shell解释程序、支持程序设计的各种语言(如CPASCALBASIC等)、编译程序、解释程序、实用程序和系统库等组成。

UNIX系统不允许外壳程序直接访问和干扰内核程序。因此,UNIX系统提供两种程序运行环境,即用户态和核心态。外壳层的程序在用户态运行,内核层的程序在核心态运行。UNIX把在用户态运行的程序称为用户程序,把在核心态运行的程序称为系统程序。

2.4 操作系统与用户的接口

操作系统为用户提供两种类型的使用接口,一种是操作员级的接口,另一种是程序员级的接口,以便用户与操作系统建立联系。操作员级的接口是一组操作控制命令,它们供用户提出如何控制作业执行的要求。程序员级的接口是一组系统功能调用,它们为用户程序提供服务功能。

2.4.1 操作控制命令

操作系统提供了让联机用户(操作员一级)表示作业执行步骤的手段:操作控制命令。

2.4.2 系统调用

操作系统编制了许多不同功能的子程序(例如,读文件子程序,写文件子程序,分配主存空间子程序,启动I/O子程序等),供用户程序执行中调用。这些由操作系统提供的子程序称为系统功能调用程序,简称系统调用。

系统调用应是在管态下执行的程序。

现代计算机系统的硬件系统都有一条“访管指令”。这是一条可在目态下执行的指令。

不同的操作系统提供的系统调用不全相同。大致上可分为如下几类。

1.文件操作类

这类系统调用有打开文件、建立文件、读文件、写文件、关闭文件、删除文件等。

2.资源申请类

用户调用系统功能请求分配主存空间、归还主存空间、分配外围设备、归还外围设备等。

3.控制类

执行中的程序可以请求操作系统中止其执行或返回到程序中的某一点再继续执行。操作系统要根据程序中止的原因和用户的要求作出处理。因而这类系统调用有正常结束、异常结束、返回断点/指定点等。

4.信息维护类

例如,设置日历时间、获取日历时间、设置文件属性、获取文件属性等。

2.5 UNIX的用户接口

2.5.1 shell命令

UNIX提供操作控制命令称为shell命令,一组shell命令组成了shell命令语言。

UNIX是一个多用户的分时操作系统。每个用户在使用shell命令前必须先在系统中注册登录,以便系统识别和区分使用系统的每个用户,并且能保证每个用户的程序和数据不被其他用户破坏。

Shell解释程序以交互方式为用户服务。每当做好接收一条命令的准备时,就会显示一个提示符,对于不同版本的UNIX系统提供的shell命令会有差异,故它们采用不同的提示符来区分。例如,Bourne shell的提示符是$C shell的提示符是%.

UNIX规定,只要在请求后台执行的命令末尾输入字符“&”,系统在执行命令时,若发现末尾有“&”符号,则就把实现这条命令功能的程序转入后台执行。

UNIX系统允许用户把若干条shell命令编辑成一个文件,来表示一组命令的执行顺序,用shell命令编辑成的文件称为shell文件。

2.5.2 UNIX系统调用

UNIX的内核为外壳层的用户程序提供了一组系统调用。它们是外壳的用户程序请求UNIX为其服务的唯一形式。

UNIX中,规定用户用“trap”指令(UNIX中的访管指令)来请求系统调用。

由于用户程序在用户态运行,系统调用处理程序是在核心态允许,而在用户态和和心态运行的程序分别占用不同的存储空间,所以,在进行系统调用处理时必须把用户程序提供的参数从用户态的存储区域(用户数据区)传送到核心态的存储区域(系统工作区)。

UNIX设置了一张“系统调用程序入口表”。该表中每个表项的内容都包含有系统调用编号、系统调用所带参数个数、系统调用程序入口地址、系统调用名称。

猜你喜欢

转载自bsr1983.iteye.com/blog/1480959