程序状态字(PSW)
为了解决处理器当前工作状态的问题,所有的处理器都有一些特殊寄存器,用以表明处理器当前的工作状态。比如用一个专门的寄存器来指示处理器状态,称为程序状态字(PSW);用程序计数器(PC)这个专门的寄存器来指示下一条要执行的指令。
处理器的状态字(PSW)通常包括以下状态代码。
1)CPU的工作状态代码—指明当前处理器的工作状态是管态还是目态,用来说明当
前在处理器上执行的是操作系统还是一般用户,从而决定其是否可以使用特权指令或拥有其
他的特殊权力。 2)条件码——反映指令执行后的结果特征。 类的器容,
3)中断屏蔽码——指出是否允许中断。
不同机器的程序状态字的格式及其包含的信息都不同。现以微处理器 Pentium
Pro、PentiumⅡ和 Pentium II的对应程序状态字寄存器(
EFLAGS)中包含若干标志位为例,来介绍程序状态字PSW。
下面介绍图中的某些标志位 CF:进位标志位。 ZF:结果为零标志位。
SF:符号标志位。 OF:溢出标志位
几乎所有的微型计算机的PW中都有与这4个标志位类似的标志位。有时称这4种标志位为标准条件位。
TF:陷阱标志位。 ...
1.管态和目态
处理器有时执行用户程序,有时执行操作系统的程序。在执行不同程序时,根据运行程序对资源和机器指令的使用权限而将此时的处理器设置为不同状态。
多数系统将处理器工作状态划分为管态和目态。前者一般指操作系统管理程序运行的状态,具有较高的特权级别,又称为内核态、特权态(特态)、系统态;后者一般指用户程序运行时的状态,具有较低的特权级别,又称为用户态、普通态(普态)。另外,还有些系统将处理器工作状态划分为多个系统状态,例如核心状态、管理状态和用户程序状态(又称目标状态)三种,它们具体含义与前面的双状态分级大同小异。
作为一个实例,英特尔公司出品的x86系列处理器都支持4个处理器特权级别(特权环:R0、R1、R2和R3)。从RO到R3特权能力依次降低,RO相当于双状态系统的管态R3相当于目态,而R和R2则介于两者之间,它们能够运行的指令集合具有包含关系:IR0⊇IR1⊇IR2⊇IR3处理器在各个级别下的保护行检查(例如地址校验、L0限制)以及特权级别之间的转换方式也不尽相同。这4个级别被设计成运行不同类别的程序:RO运行操作系统核心代码;R1运行关键设备驱动程序和0处理例程;R2运行 ...
对于一个单用户、单任务方式下使用的微型计算机系统,普通的非系统用户通常都可使用该计算机指令系统中的全部指令。但是在多用户或多任务的多道程序设计环境中,则它的指令系统中的指令必须区分成两部分:特权指令和非特权指令。
所谓特权指令是指:在指令系统中那些只能由操作系统使用的指令。这些特权指令是不允许一般的用户使用的,因为如果允许用户随便使用这些指令(如设置程序状态字、启动某设备、设置中断屏蔽、设置时钟指令、清内存指令和建立存储保护指令等等),就有可能使系统陷入混乱。
所以一个使用多道程序设计技术的计算机的指令系统中的指令必须区分为特权指令和非特权指令用户只能使用非特权指令,只有操作系统才能使用所有的指令(包括特权指令和非特权指令)。如果一个用户程序需要使用特权指令,一般将引起一次处理器状态的切换,这时处理器通过特殊的机制,将处理器状态切换到操作系统运行的特权状态,然后将处理权移交给操作系统中的一段特殊代码。这一个过程通常形象地称为陷人(Trap)。
如果在某种计算机的指令系统中不能区分特权指令和非特权指令,那么在这样的硬件环境下,要设计出一个具有多道程序运行的操作系统是相当困难的。至于处理器 ...
处理器一般由运算器、控制器、一系列的寄存器以及高速缓存构成。其中运算器实现指令中的算术和逻辑运算,是计算机计算的核心。控制器负责控制程序运行的流程,包括取指令、维护处理器状态、处理器与内存的交互等。寄存器是一种暂时存储器件,用于处理器执行指令的过程中暂存数据、地址以及指令信息。在计算机的存储系统中,寄存器具有最快的访问速度。寄存器为处理器本身提供了一定的存储能力,它们的速度比内存储器快得多,但是因为寄存器集成在微处理器芯片中,所以它的造价较高,存储容量一般也比小。
1.处理器中的寄存器
在处理器内通常有两类寄存器:一类称为用户可见寄存器。对于高级语言来说,编译器通过一定的算法分配并使用这些寄存器,以最大限度地减少程序运行时访问内存储器的次数,这对程序的运行速度影响很大。第二类称为控制和状态寄存器,它们用于控制处理器的操作,一般由具有特权的操作系统代码使用,以控制其他程序的执行。
通常用户可见寄存器对所有程序都是可用的,由机器语言直接引用。它一般包括数据寄存器(
Data Register)、地址寄存器( Address
Register)以及条件码寄存器数据寄存器有时又称为通用寄存器, ...
常见的操作系统结构有整体式结构、层次式结构、微内核(客户/服务器)结构等。下面对这些常见的操作系统结构做简要的介绍。
整体式结构
这是早期操作系统设计中所采用的方法,即首先确定操作系统的总体功能,然后将总功能分解为若干个子功能,实现每个子功能的程序称为模块。再按照功能将上述每个大模块分解为若干个较小的模块,如此下去,直至每个模块仅包含单一功能或紧密联系的小功能为止,即分解为最基本的模块为止。最后通过接口将所有模块连接起来形成一个整体。我们把这种操作系统的结构称之为模块组合结构。它的主要优点是,结构紧密,接口简单直接,系统效率较高。此时,操作系统是一个有多种功能的系统程序,可以看成是一个整体模块,也可看成是由若干个模块按一定的结构方式组成的。模块组合法(或称无序模块法、模块接口法等)中,系统中的模块不是根据程序和数据本身的特性而是根据它们完成的功能来划分的,数据基本上作为全程量使用。在系统内部,不同模块的程序之间可以不加控制地互相调用和转移,信息的传递方式也可以根据需要随意约定,因而可能造成模块间的循环调用。
模块组合法的缺点有以下三点。
第一,模块间转接随便,各模块互相牵连,独立性差, ...
任何事物都有其内部的结构。结构是构成一个事物内部的各种基本成份以及这些基本成份之间的关系。
软件同样有内部结构。为了设计和掌握一个复杂的大型软件系统,设计者总是要将它分解成若千个小的相对独立的成份。这样,对每一个成份就比较容易掌握,而且这种分解往往使得各个成份之间的联系较为简单。
软件结构研究的对象主要是组成软件的各部分划分的原则以及它们之间的关系(即通信),简言之,就是软件的构成法则和组合方法。对软件结构的探讨是从
Dijkstra提出的结构化程序设计思想开始的,经过了若干年的研究及实践已经取得了很大进展。
操作系统结构设计的重要性
如何把一个大型软件划分成若干较小的模块,以及这些模块之间怎样接口。操作系统是一个具有并发特性的大型程序,模块间的接口是相当复杂的,信息交换也是十分频繁的、因而对结构的研究就显得更加重要了。而任何一个软件开发出来投入运行之后,就进入了系统维护阶段。只有易读、易懂,维护人员才能真正了解操作系统的结构和工作原理,从而做好系统维护工作。
所谓操作系统的结构,是指操作系统各部分程序的存在方式及相互关系。若操作系统的各部分程序以程序模块方式存在,相互之间通过调用建立 ...
操作系统是计算机系统的重要组成部分,是计算机系统工作时经常起作用的程序。同时,它又是一种复杂程度高的大型程序,为使计算机系统可靠而有效地工作,必须配置一个高质量的操作系统。
一个高质量的操作系统应具有可靠性、高效性、易维护性、易移植性、安全性和简明性等特征。
可靠性
可靠性包含了正确性和健壮性两个方面的含义。
操作系统是计算机系统中最基本、最重要的软件。随着计算机应用范围的日益扩大,对操作系统的可靠性要求也越来越高。可靠性差的操作系统将严重影响使用效果。例如,用于导弹控制的操作系统必须绝对可靠,否则所造成的后果将不堪设想。
影响操作系统正确性的因素有很多,最主要的是并发、共享以及随之带来的不确定性。
并发使得系统中各条指令流的执行次序可以任意交叉;而共享导致进程对系统资源的竞争,使不同的指令执行序列之间产生直接和间接的相互制约;以上两点原因又会引起系统的不确定。这种不确定性要求系统能动态地应付随时发生的各种内部和外部事件。因此,研究操作系统的结构是相当必要的。
可靠性除了正确性这一基本要求外,还应包括能在预期的环境条件下完成所期望的功能的能力。在发生硬件故障或某种意外的环境下,操作系统 ...
操作系统的设计过程一般可分为三个部分:功能设计、算法设计和结构设计。操作系统的三方面设计是互相渗透的,不能截然分开。在任何一个方面中,其总的目标是不变的,即要求能够设计出一个具有好结构、高功效,又具有所需要功能的操作系统。
功能设计
功能设计指的是根据系统的设计目标和使用要求,确定所设计的操作系统应具备哪些功能以及操作系统的类型。
算法设计
算法设计是根据计算机的性能和操作系统的功能,来选择和设计满足系统功能的算法和策略,并分析和估算其效能。
结构设计
结构设计则是按照系统的功能和特性要求,选择合适的结构,使用相应结构设计方法将系统逐步地分解、抽象和综合,使操作系统结构清晰、简明、可靠、易读、易修改,而且使用方便,适应性强。
我们已经知道,操作系统是一个极其复杂和庞大的软件系统,操作系统本身以及它所管理的对象都是并发的系统,因而操作系统设计有着不同于一般应用系统设计的特征。那么一个操作系统的设计开发会有什么问题呢?本文就操作系统的设计开发所面临的问题、操作系统的设计阶段、设计目标以及操作系统的结构设计做一些探讨,对操作系统的设计开发问题的探讨,有助于读者全面地理解掌握操作系统的本质。
首先讨论在操作系统设计过程中,面临的主要困难。在操作系统设计的过程中主要困难有:设计复杂程度高、正确性难以保证和研制周期长等问题。下面分别进行简要的分析。
设计复杂程度高
操作系统的复杂程度主要表现在:程序长,有的功能模块包含数百万条指令;接口信息多,各个组成部分之间的信息交换很多,而且错综复杂;动态性强,程序本身包含较多的动态部分;并行性强,不同部分之间可以同时操作。下面我们简要地叙述操作系统可能面临的各种复杂问题。
操作系统是一个很大的程序,现代的UNIX操作系统有超过100万行的代码,Windows
2000有超过2900万行的代码。在操作系统中,各种子系统,如文件系统与内存系统之间的相互作用是不可预测的。操作系统必须处 ...
将大量的计算机通过网络连结在一起,可以获得极高的运算能力及广泛的数据共享。这样一种系统称作为分布式系统(Distributed
System)。为分布式系统配置的操作系统称为分布式操作系统(Distributed Op
ting System)。
分布式操作系统是网络操作系统的更高级形式,分布式操作系统除了保持了网络操作系统的各种功能之外,还具备如下的特征
分布式操作系统是一个统一的操作系统,在系统中的所有主机使用的是同一个操作系统。
实现资源的深度共享。在网络操作系统中,由于各个主机使用不同的操作系统,不能随意地将一个计算任务从一台主机迁移到另一台主机执行。而在分布式系统中,通过统一的操作系统的调度,在某台主机上的一个计算任务可以迁移到另一台主机上执行,真正实现了处理器资源的共享。
透明性。即在用户眼里整个分布式系统像是一台具有强大功能的计算机系统。用户并不知道该分布式系统运行在多少台计算机上,各个主机地理位置上的差异对用户来讲是透明的,分布式操作系统屏蔽了这种差异。相应地,在网络操作系统中,用户能够清晰地感觉到本地主机和非本地主机之间的区别。
自治性。即处于分布式系统中的各个主机 ...
