浙江自考网

咨询热线

15700080354 (点击在线咨询)
您现在的位置:浙江自考网>复习资料 > 正文
自考攻略

1.3操作系统运行环境

时间:2022-05-25 15:39:56 作者:储老师

自考助学

  1.3.1 处理器运行模式

      计算机系统中,通常CPU执行两种不同性质的程序:一种是操作系统内核程序;另一种是用户自编程序(即系统外层的应用程序,或简称“应用程序”)。对操作系统而言,这两种程序的 作用不同,前者是后者的管理者,因此“管理程序”(即内核程序)要执行一些特权指令,而“被管理程序”(即用户自编程序)出于安全考虑不能执行这些指令。

  1)特权指令是指不允许用户直接使用的指令,如I/O指令、置中断指令,存取用于内存保护的寄存器、送程序状态字到程序状态字寄存器等的指令。

  

  2)非特权指令是指允许用户直接使用的指令,它不能直接访问系统中的软硬件资源,仅 限于访问用户的地址空间,这也是为了防止用户程序对系统造成破坏。

  在具体实现上,将CPU的运行模式划分为用户态(目态)和核心态(又称管态、内核态)。 可以理解为CPU内部有一个小开关,当小开关为0时,CPU处于核心态,此时CPU可以执行特权指令,切换到用户态的指令也是特权指令。当小开关为1时,CPU处于用户态,此时CPU只能执行非特权指令。用户自编程序运行在用户态,操作系统内核程序运行在核心态。


  1. 时钟管理

  在计算机的各种部件中,时钟是最关键的设备。时钟的第一功能是计时,操作系统需要通过时钟管理,向用户提供标准的系统时间。另外,通过时钟中断的管理,可以实现进程的切换。例如,在分时操作系统中采用时间片轮转调度,在实时系统中按截止时间控制运行,在批处理系统中通过时钟管理来衡量一个作业的运行程度等。因此,系统管理的方方面面无不依赖于时钟。


  2. 中断机制

  引入中断技术的初衷是提高多道程序运行环境中CPU的利用率,而且主要是针对外部设备 的。后来逐步得到发展,形成了多种类型,成为操作系统各项操作的基础。例如,键盘或鼠标信息的输入、进程的管理和调度、系统功能的调用、设备驱动、文件访问等,无不依赖于中断机制。可以说,现代操作系统是靠中断驱动的软件。

  中断机制中,只有一小部分功能属于内核,它们负责保护和恢复中断现场的信息,转移控制 权到相关的处理程序。这样可以减少中断的处理时间,提高系统的并行处理能力。


  3. 原语

  按层次结构设计的操作系统,底层必然是一些可被调用的公用小程序,它们各自完成一个规定的操作。它们的特点如下:

  1) 处于操作系统的最低层,是最接近硬件的部分。

  2) 这些程序的运行具有原子性,其操作只能一气呵成(出于系统安全性和便于管理考虑)。

  3) 这些程序的运行时间都较短,而且调用频繁。

  通常把具有这些特点的程序称为原语(Atomic Operation)o定义原语的直接方法是关闭中断, 让其所有动作不可分割地完成后再打开中断。系统中的设备驱动、CPU切换、进程通信等功能中的部分操作都可定义为原语,使它们成为内核的组成部分。


  4. 系统控制的数据结构及处理

  系统中用来登记状态信息的数据结构很多,如作业控制块、进程控制块(PCB)、设备控制块、各类链表、消息队列、缓冲区、空闲区登记表、内存分配表等。为了实现有效的管理,系统需要一些基本的操作,常见的操作有以下3种:

  1) 进程管理。进程状态管理、进程调度和分派、创建与撤销进程控制块等。

  2) 存储器管理。存储器的空间分配和回收、内存信息保护程序、代码对换程序等。

  3) 设备管理。缓冲区管理、设备分配和回收等。

  从上述内容可以了解,核心态指令实际上包括系统调用类指令和一些针对时钟、中断和原语 的操作指令。

操作系统运行环境

  1.3.2 中断和异常的概念

  在操作系统中引入核心态和用户态这两种工作状态后,就需要考虑这两种状态之间如何切 换。操作系统内核工作在核心态,而用户程序工作在用户态。系统不允许用户程序实现核心态的功能,而它们又必须使用这些功能。因此,需要在核心态建立一些“门”,以便实现从用户态进 入核心态。在实际操作系统中,CPU运行上层程序时唯一能进入这些“门”的途径就是通过中断或异常。发生中断或异常时,运行用户态的CPU会立即进入核心态,这是通过硬件实现的(例如, 用一个特殊寄存器的一位来表示CPU所处的工作状态,0表示核心态,1表示用户态。若要进入 核心态,则只需将该位置0即可)。中断是操作系统中非常重要的一个概念,对一个运行在计算 机上的实用操作系统而言,缺少了中断机制,将是不可想象的。原因是,操作系统的发展过程大体上就是一个想方设法不断提高资源利用率的过程,而提高资源利用率就需要在程序并未使用某种资源时,把它对那种资源的占有权释放,而这一行为就需要通过中断实现。


  1. 中断和异常的定义

  中断(Interruption)也称外中断,是指来自CPU执行指令外部的事件,通常用于信息输入/ 输出,如设备发出的I/O结束中断,表示设备输入/输出处理已经完成。时钟中断,表示一个固定的时间片已到,让处理机处理计时、启动定时运行的任务等。

  异常(Exception)也称内中断,是指来自CPU执行指令内部的事件,如程序的非法操作码、地址越界、运算溢出、虚存系统的缺页及专门的陷入指令等引起的事件。异常不能被屏蔽,一旦岀现,就应立即处理。


  2. 中断和异常的分类

  外中断可分为可屏蔽中断和不可屏蔽中断可屏蔽终止外部中断(硬件)

  (Abort)硬件中断

  可屏蔽中断INTR

  不可屏蔽中断NMI

  中断是指通过INTR线发出的中断请求,通过改变屏蔽中断和外中断的联系与区别可以实现多重中断,从而使得中断处理更加灵活。不可

  屏蔽中断是指通过NMI线发出的中断请求,通常是紧急的硬件故障,如电源掉电等。此外,异常也是不能被屏蔽的。

  异常可分为故障、自陷和终止。故障(Fault)通常是由指令执行引起的异常,如非法操作码、 缺页故障、除数为0、运算溢出等。自陷(Trap)是一种事先安排的“异常”事件,用于在用户 态下调用操作系统内核程序,如条件陷阱指令。终止(Abort)是指出现了使得CPU无法继续执 行的硬件故障,如控制器岀错、存储器校验错等。故障异常和自陷异常属于软件中断(程序性异常),终止异常和外部中断属于硬件中断。


  3. 中断和异常的处理过程

  中断和异常处理过程的大致描述如下:当CPU在执行用户程序的第i条指令时检测到一个异常事件,或在执行第z•条指令后发现一个中断请求信号,则CPU打断当前的用户程序,然后转到 相应的中断或异常处理程序去执行。若中断或异常处理程序能够解决相应的问题,则在中断或异

  ①建议结合《计算机组成原理考研复习指导》一书中的第5章和第7章学习。

  常处理程序的最后,CPU通过执行中断或异常返回指令,回到被打断的用户程序的第Z•条指令或 第Z+1条指令继续执行;若中断或异常处理程序发现是不可恢复的致命错误,则终止用户程序。 通常情况下,对中断和异常的具体处理过程由操作系统(和驱动程序)完成。

 

  1.3.3 系统调用

  所谓系统调用,是指用户在程序中调用操作系统所提供的一些子功能,系统调用可视为特殊的公共子程序。系统中的各种共享资源都由操作系统统一掌管,因此在用户程序中,凡是与资源 有关的操作(如存储分配、进行I/O传输及管理文件等),都必须通过系统调用方式向操作系统提 出服务请求,并由操作系统代为完成。通常,一个操作系统提供的系统调用命令有几十条乃至上 百条之多。这些系统调用按功能大致可分为如下几类。

  • 设备管理。完成设备的请求或释放,以及设备启动等功能。

  • 文件管理。完成文件的读、写、创建及删除等功能。

       •进程控制。完成进程的创建、撤销、阻塞及唤醒等功能。

  • 进程通信。完成进程之间的消息传递或信号传递等功能。

  • 内存管理。完成内存的分配、回收以及获取作业占用内存区大小及始址等功能。

  显然,系统调用相关功能涉及系统资源管理、进程管理之类的操作,对整个系统的影响非常大,因此必定需要使用某些特权指令才能完成,所以系统调用的处理需要由操作系统内核程序负责完成,要运行在核心态。用户程序可以执行陷入指令(又称访管指令或trap指令)来发起系统 调用,请求操作系统提供服务。可以这么理解,用户程序执行“陷入指令”,相当于把CPU的使 用权主动交给操作系统内核程序(CPU状态会从用户态进入核心态),之后操作系统内核程序再 对系统调用请求做出相应处理。处理完成后,操作系统内核程序又会把CPU的使用权还给用户程 序(即CPU状态会从核心态回到用户态)。这么设计的目的是:用户程序不能直接执行对系统影 响非常大的操作,必须通过系统调用的方式请求操作系统代为执行,以便保证系统的稳定性和安全性,防止用户程序随意更改或访问重要的系统资源,影响其他进程的运行。

  这样,操作系统的运行环境就可以理解为:用户通过操作系统运行上层程序(如系统提供的命令解释程序或用户自编程序),而这个上层程序的运行依赖于操作系统的底层管理程序提供服 务支持,当需要管理程序服务时,系统则通过硬件中断机制进入核心态,运行管理程序;也可能是程序运行出现异常情况,被动地需要管理程序的服务,这时就通过异常处理来进入核心态。管理程序运行结束时,用户程序需要继续运行,此时通过相应的保存的程序现场退岀中断处理程序或异常处理程序,返回断点处继续执行 .

  系统调用执行过程

  在操作系统这一层面上,我们关心的是系统核心态和用户态的软件实现与切换,对于硬件层面的具体理解,可以结合“计算机组成原理”课程中有关中断的内容进行学习。

  下面列举一些由用户态转向核心态的例子:

  1) 用户程序要求操作系统的服务,即系统调用。

  2) 发生一次中断。

  3) 用户程序中产生了一个错误状态。

  4) 用户程序中企图执行一条特权指令。

  5) 从核心态转向用户态由一条指令实现,这条指令也是特权命令,一般是中断返回指令。

  注意:由用户态进入核心态,不仅状态需要切换,而且所用的堆栈也可能需要由用户堆栈切 换为系统堆栈,但这个系统堆栈也是属于该进程的。

  若程序的运行由用户态转到核心态,则会用到访管指令,访管指令是在用户态使用的,所以 它不可能是特权指令。


声明:

(一)由于考试政策等各方面情况的不断调整与变化,本网站所提供的考试信息仅供参考,请以权威部门公布的正式信息为准。

(二)本网站在文章内容来源出处标注为其他平台的稿件均为转载稿,免费转载出于非商业性学习目的,版权归原作者所有。如您对内容、版权等问题存在异议请与本站联系,我们会及时进行处理解决。

报名提醒

【考试时间:4月12-13日】

浙江自考服务中心

  • 微信公众号
  • 考生交流群
  • 微信公众号 扫一扫加关注微信公众号

    与考生自由互动、并且能直接与专业老师进行交流解答。

  • 考生交流群 扫一扫加入微信交流群

    与考生自由互动、并且能直接与专业老师进行交流解答。

关注公众号

回复“免费资料”领取复习资料

微信公众号

微信公众号

微信公众号

微信交流群

<<点击收起

在线咨询

在线咨询

APP

APP
下载

man
联系
微信
wxlogo
扫描
二维码
反馈建议
反馈
建议
回到顶部
回到
顶部
app
微信客服
 微信公众号