简单介绍一下操作系统的处理器

本节叙述处理器的基本工作原理,首先介绍处理器的构成与基本工作方式,然后介绍特权指令非特权指令处理器工作状态,最后介绍程序状态字(PSW)

操作系统作为一个程序要在处理器上执行。如果一个计算机系统只有一个处理器,我们称之为单机系统,如果有多个处理器则称之为多处理器系统。

每个计算机微处理器都有自己的指令系统。早期的处理器,它的指令系统的功能相对来说比较简单。随着大规模集成电路技术的飞速发展,当代的微处理器的结构和指令系统已经变得丰富和复杂起来

一、处理器的构成与基本工作方式

处理器一般由运算器、控制器、一系列的寄存器以及高速缓存构成。其中运算器实现指令中的算术和逻辑运算,是计算机计算的核心控制器负责控制程序运行的流程,包括取指令、维护处理器状态、处理器与内存的交互等寄存器是一种暂时存储器件,用于处理器执行指令的过程中暂存数据、地址以及指令信息。在计算机的存储系统中,寄存器具有最快的访问速度。寄存器为处理器本身提供了一定的存储能力,它们的速度比内存储器快得多,但是因为寄存器集成在微处理器芯片中,所以它的造价较高,存储容量一般也比较小。

1、处理器中的寄存器

在处理器内通常有两类寄存器:一类称为用户可见寄存器。对于高级语言来说,编译器通过一定的算法分配并使用这些寄存器,以最大限度地减少程序运行时访问内存储器的次数,这对程序的运行速度影响很大。第二类称为控制和状态寄存器,它们用于控制处理器的操作,一般由具有特权的操作系统代码使用,以控制其他程序的执行。

通常用户可见寄存器对所有程序都是可用的,由机器语言直接引用。它一般包括数据寄存器( Data Register)、地址寄存器( Address Register)以及条件码寄存器

数据寄存器有时又称为通用寄存器,主要用于各种算术逻辑指令和访存指令。地址寄存器用于存储数据及指令的物理地址、线性地址或者有效地址,用于某种特定方式的寻址。条件码寄存器保存处理器操作结果的各种标记位,例如算术运算产生的溢出、符号等,这些标记在条件分支指令中被测试,以控制程序指令的流向。

处理器中有很多寄存器用于控制处理器的操作,这些寄存器大部分对于用户是不可见的,但可以在某种特权状态下访问,由操作系统使用。最常见的控制和状态寄存器有程序计数器( Program counter,PC),它记录了将要取出的指令的地址;指令寄存器( InstructionRegister,IR),包含了最近取出的指令;程序状态字( Program Status Word,PSW),它记录了处理器的运行模式信息等。

2、指令执行的基本过程

最简单的处理指令方式包括两个步骤:首先,处理器每次从存储器中读取一条指令,并在取指令完成后,根据指令类别自动将程序计数器的值变成下一条指令的地址,通常是自增1;其次,取到的指令被存储在处理器的指令寄存器中,处理器于是解释并执行这条指令。一个这样的单条指令处理过程称为一个指令周期。程序的执行就是由不断取指令和执行指令的指令周期组成的。仅仅当机器关机、发生某些未发现的错误或者遇到停机相关的指令时,程序才会停止。

指令大致可以分成五类:访问存储器指令,它们负责处理器和存储器之间的数据传送;I/O指令,它们负责处理器和IO模块之间的数据传送和命令发送;算术逻辑指令,有时又称为数据处理指令,用以执行有关数据的算术和逻辑操作;控制转移指令,这种指令可以指定一个新的指令的执行起点;处理器控制指令,这种指令用于修改处理器状态,改变处理器工作方式等。

二、特权指令和非特权指令

对于一个单用户、单任务方式下使用的微型计算机系统,普通的非系统用户通常都可使用该计算机指令系统中的全部指令。但是在多用户或多任务的多道程序设计环境中,则它的指令系统中的指令必须区分成两部分:特权指令和非特权指令

所谓特权指令是指:在指令系统中那些只能由操作系统使用的指令。这些特权指令是不允许一般的用户使用的,因为如果允许用户随便使用这些指令(如设置程序状态字、启动某设备、设置中断屏蔽、设置时钟指令、清内存指令和建立存储保护指令等等),就有可能使系统陷入混乱。所以一个使用多道程序设计技术的计算机的指令系统中的指令必须区分为特权指令和非特权指令。

用户只能使用非特权指令,只有操作系统才能使用所有的指令(包括特权指令和非特权指令)。如果一个用户程序需要使用特权指令,一般将引起一次处理器状态的切换,这时处理器通过特殊的机制,将处理器状态切换到操作系统运行的特权状态,然后将处理权移交给操作系统中的一段特殊代码。这一个过程通常形象地称为陷入(Trap)

如果在某种计算机的指令系统中不能区分特权指令和非特权指令,那么在这样的硬件环境下,要设计出一个具有多道程序运行的操作系统是相当困难的。至于处理器如何知道当前运行的是操作系统还是一般应用软件,则有赖于处理器状态的标识。

三、处理器的工作状态

1、管态和目态

处理器有时执行用户程序,有时执行操作系统的程序。在执行不同程序时,根据运行程序对资源和机器指令的使用权限而将此时的处理器设置为不同状态。

多数系统将处理器工作状态划分为管态和目态。前者一般指操作系统管理程序运行的状态,具有较高的特权级别,又称为内核态、特权态(特态)、系统态;后者一般指用户程序运行时的状态,具有较低的特权级别,又称为用户态、普通态(普态)。另外,还有些系统将处理器工作状态划分为多个系统状态,例如核心状态、管理状态和用户程序状态(又称目标状态)三种,它们具体含义与前面的双状态分级大同小异。

作为一个实例,英特尔公司出品的x86系列处理器都支持4个处理器特权级别(特权环:R0、R1、R2和R3)。从R0到R3特权能力依次降低,R0相当于双状态系统的管态,R3相当于目态,而R1和R2则介于两者之间,它们能够运行的指令集合具有包含关系:R0包含R1包含R2包含R3,处理器在各个级别下的保护行检查(例如地址校验、I/O限制)以及特权级别之间的转换方式也不尽相同。

这4个级别被设计成运行不同类别的程序:R0运行操作系统核心代码;R1运行关键设备驱动程序和L0处理例程;R2运行其他受保护的共享代码,例如语言系统运行环境;R3运行各种用户程序。不过现有的基于x86处理器的操作系统,包括多数的UNIX系统、Linx以及 Windows系列大都只用到了RO和R3两个特权级别。

这4个特权级别可以考虑安排运行不同类型的程序,R0运行最关键的代码,比如操作系统的内核代码;较外部的特权环运行其他一些相对来说不是关键的代码。

当处理器处于管态时全部指令(包括特权指令)可以执行,可使用所有资源,并具有改变处理器状态的能力。当处理器处于目态时,就只有非特权指令能执行。不同处理器状态之间的区别就在于赋予运行程序的特权级别不同,可以运行的指令集合也不相同,一般说来,特权级别越高,可以运行的指令集合也越大,而且高特权级别对应的可运行指令集合包含低特权级别。

2、处理器工作状态的转换

在操作系统运行过程中,处理器的状态是动态改变的,时而运行于管态,时而运行于目态,即管态和目态这两种状态可以相互转换。

(1)目态到管态的转换

转换的唯一途径是通过中断。中断响应时交换中断向量,新的中断向量中的PSW的处理器状态位标志为管态。

(2)管态到目态的转换

可通过设置PSW指令(修改程序状态字),实现从操作系统向用户程序的转换

当中央处理器处于管态时可执行包括特权指令在内的一切机器指令;当中央处理器处于目态时不允许执行特权指令。系统启动时,处理器的初始状态为管态,然后装入操作系统程序。操作系统退出执行时,让用户程序在目态执行。

3、限制用户程序执行特权指令

用户程序中不能使用特权指令。所以,当用户程序占用处理器时,应让处理器在目态下作。若此刻取到了一条特权指令,则处理器将拒绝执行该指令,并形成一个“非法操作”事件。中断机制识别到该事件后,转交给操作系统去处理,由操作系统通知用户:“程序中有非法指令”。

四、程序状态字(PSW)

为了解决处理器当前工作状态的问题,所有的处理器都有一些特殊寄存器,用以表明处理器当前的工作状态。比如用一个专门的寄存器来指示处理器状态,称为程序状态字(PSW);用程序计数器(PC)这个专门的寄存器来指示下一条要执行的指令。

处理器的状态字(PSW)通常包括以下状态代码。

1)CPU的工作状态代码—指明当前处理器的工作状态是管态还是目态,用来说明当前在处理器上执行的是操作系统还是一般用户,从而决定其是否可以使用特权指令或拥有其他的特殊权力。

2)条件码——反映指令执行后的结果特征

3)中断屏蔽码—指出是否允许中断。

不同机器的程序状态字的格式及其包含的信息都不同。现以微处理器 Pentium pro、PentiumⅡ和 PentiumⅢ的对应程序状态字寄存器( EFLAGS)中包含若干标志位为例,来介绍程序状态字PSW,如图2-1所示。

下面介绍图2-1中的某些标志位。

CF:进位标志位。

ZF:结果为零标志位

SF:符号标志位。

OF:溢出标志位。

几乎所有的微型计算机的PSW中都有与这4个标志位类似的标志位。有时称这4种标志位为标准条件位。

TF:陷阱标志位

IF:中断使能(中断屏蔽)标志位。

VIF:虚拟中断标志位。

VIP:虚拟中断待决标志位。

这里VF和VP用于支持对一类可屏蔽的硬件中断处理。

IOPL:IO特权级别,它的作用在前面已有叙述。

在图2-1中,还有其他许多标志位,从这些众多的标志位的设计,也可看出 Pentium系列微处理器的功能是非常强的。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值