三:操作系统运行环境

操作系统运行环境

处理器运行模式

  1. 在计算机系统中,通常CPU执行两种不同性质的程序:一种是操作系统内核程序;另一种是用户自编程序(即系统外层的应用程序,或简称”应用程序”)。对操作系统而言,这两种程序的作用不同,前者是后者的管理者,因此”管理程序”(即内核程序)要执行一些特权指令,而“被管理程序”(即用户自编程序)出于安全考虑不能执行这些指令。
  2. 两类指令:
    1. 特权指令,是指不允许用户直接使用的指令,如I/O指令、置中断指令,存取用于内存保护的寄存器、送程序状态字到程序状态字寄存器等的指令。
    2. 非特权指令,是指允许用户直接使用的指令,它不能直接访问系统中的软硬件资源,仅限于访问用户的地址空间,这也是为了防止用户程序对系统造成破坏。
  3. 在具体实现上,将CPU的运行模式划分为用户态(目态)和核心态(又称管态、内核态)。
  4. 应用程序向操作系统请求服务时通过使用访管指令,从而产生一个中断事件将操作系统转换为核心态。

时钟管理

  • 在计算机的各种部件中,时钟是最关键的设备。
  • 时钟的第一功能是计时,操作系统需要通过时钟管理,向用户提供标准的系统时间。另外,通过时钟中断的管理,可以实现进程的切换。

中断机制

  • 引入中断技术的初衷是提高多道程序运行环境中CPU的利用率,而且主要是针对外部设备的。后来逐步得到发展,形成了多种类型,成为操作系统各项操作的基础。
  • 中断机制中,只有一小部分功能属于内核,它们负责保护和恢复中断现场的信息,转移控制权到相关的处理程序。这样可以减少中断的处理时间,提高系统的并行处理能力。

原语

  1. 按层次结构设计的操作系统,底层必然是一些可被调用的公用小程序,它们各自完成一个规定的操作。它们的特点如下:
    1. 处于操作系统的最底层,是最接近硬件的部分。
    2. 这些程序的运行具有原子性,其操作只能一气呵成(出于系统安全性和便于管理考虑)。
    3. 这些程序的运行时间都较短,而且调用频繁。
  2. 定义原语的直接方法是关闭中断,让其所有动作不可分割地完成后再打开中断。系统中的设备驱动、CPU切换、进程通信等功能中的部分操作都可定义为原语,使它们成为内核的组成部分。

系统技制的数据结构及处理

  1. 系统中用来登记状态信息的数据结构很多,如作业控制块、进程控制块(PCB)、设备控制块、各类链表、消息队列、缓冲区、空闲区登记表、内存分配表等。为了实现有效的管理,系统需要一些基本的操作,常见的操作有以下3种:
    1. 进程管理。进程状态管理、进程调度和分派、创建与撤销进程控制块等。
    2. 存储器管理。存储器的空间分配和回收、内存信息保护程序、代码对换程序等。
    3. 设备管理。缓冲区管理、设备分配和回收等。

中断和异常的概念

中断和异常的定义

  1. 中断(Interruption)也称外中断,是指来自CPU执行指令外部的事件,通常用于信息输入/输出,如设备发出的I/O结束中断,表示设备输入/输出处理已经完成。时钟中断,表示一个固定的时间片已到,让处理机处理计时、启动定时运行的任务等。
  2. 异常(Exception)也称内中断,是指来自CPU执行指令内部的事件,如程序的非法操作码、地址越界、运算溢出、虚存系统的缺页及专门的陷入指令等引起的事件。异常不能被屏蔽,一旦出现,就应立即处理。
  3. 区别

中断和异常的分类

  1. 外中断可分为可屏蔽中断和不可屏蔽中断。可屏蔽中断是指通过INTR线发出的中断请求,通过改变屏蔽字可以实现多重中断,从而使得中断处理更加灵活。不可屏蔽中断是指通过NMI线发出的中断请求,通常是紧急的硬件故障,如电源掉电等。此外,异常也是不能被屏蔽的。
  2. 异常可分为故障、自陷和终止。故障(Fault)通常是由指令执行引起的异常,如非法操作码、 缺页故障、除数为0、运算溢出等。自陷(Trap)是一种事先安排的“异常”事件,用于在用户态下调用操作系统内核程序,如条件陷阱指令。终止(Abort)是指出现了使得CPU无法继续执行的硬件故障,如控制器出错、存储器校验错等。故障异常和自陷异常属于软件中断(程序性异常),终止异常和外部中断属于硬件中断。

中断和异常的处理过程

  1. 中断和异常处理过程的大致描述如下:当CPU在执行用户程序的第i条指令时检测到一个异常事件,或在执行第i条指令后发现一个中断请求信号,则CPU打断当前的用户程序,然后转到相应的中断或异常处理程序去执行。若中断或异常处理程序能够解决相应的问题,则在中断或异
    常处理程序的最后,CPU通过执行中断或异常返回指令,回到被打断的用户程序的第,条指令或第i+1条指令继续执行;若中断或异常处理程序发现是不可恢复的致命错误,则终止用户程序。 通常情况下,对中断和异常的具体处理过程由操作系统(和驱动程序)完成。

系统调用

  1. 系统调用,是指用户在程序中调用操作系统所提供的一些子功能,系统调用可视为特殊的公共子程序。系统中的各种共享资源都由操作系统统一掌管,因此在用户程序中,凡是与资源有关的操作(如存储分配、进行I/O传输及管理文件等),都必须通过系统调用方式向操作系统提出服务请求,并由操作系统代为完成。
  2. 系统调用按功能大致可分为如下几类:
    1. 设备管理。完成设备的请求或释放,以及设备启动等功能。
    2. 文件管理。完成文件的读、写、创建及删除等功能。
    3. 进程控制。完成进程的创建、撤销、阻塞及唤醒等功能。
    4. 进程通信。完成进程之间的消息传递或信号传递等功能。
    5. 内存管理。完成内存的分配、回收以及获取作业占用内存区大小及始址等功能。
  3. 显然,系统调用相关功能涉及系统资源管理、进程管理之类的操作,对整个系统的影响非常大,因此必定需要使用某些特权指令才能完成,所以系统调用的处理需要由操作系统内核程序负责完成,要运行在核心态。
  4. 用户程序可以执行陷入指令(又称访管指令或trap指令)来发起系统调用,请求操作系统提供服务。
  5. 系统调用执行过程
  6. 用户态转向核心态的例子:
    1. 用户程序要求操作系统的服务,即系统调用。
    2. 发生一次中断。
    3. 用户程序中产生了一个错误状态。
    4. 用户程序中企图执行一条特权指令。
    5. 从核心态转向用户态由一条指令实现,这条指令也是特权命令,一般是中断返回指令。
  7. 由用户态进入核心态,不仅状态需要切换,而且所用的堆栈也可能需要由用户堆栈切换为系统堆栈、但这个系统堆栈也是属于该进程的.
  8. 若程序的运行由用户态转到核心态,则会用到访管指令,访管指令是在用户态使用的,所以它不可能是特权指令。

题目总结

  1. 操作系统执行程序时,必须从起始地址开始执行
  2. 当计算机提供了核心态和用户态时,输入/输出指令必须在核心态下执行。因为输入/输出操作需要中断操作,中断必须在核心态下执行。
  3. 操作系统中,通道技术是一种硬件技术。I/O通道实际上是一种特殊的处理器,它具有执行I/O指令的能力,并通过执行通道来控制I/O操作。
  4. 系统调用需要出发trap指令。
  5. 中断时操作系统必须提供的功能,因为计算机的各种错误都需要中断处理,核心态与用户态切换也需要中断处理。
  6. 内核可以执行处理器能执行的任何指令,用户程序只能执行除特权指令外的指令。所以特权指令只能由内核即操作系统使用。
  7. 进程调度由调度算法决定CPU使用权,由操作系统实现,不需要硬件支持。
  8. 计算机通过硬件中断机制完成由用户态到核心态的转换。
  9. 计算机通过硬件完成操作系统由用户态到核心态的转换,这是通过中断机制来实现的。发生中断事件时(有可能是用户程序发出的系统调用),触发中断,硬件中断机制将计算机状态置为核心态。
  10. “访管”指令仅在用户态下使用,执行“访管”指令将用户态转变成核心态。
  11. 广义指令即系统调用命令,它必然工作在核心态。
  12. 缺页处理和时钟中断都属于中断,在核心态执行;进程调度是操作系统内核进程,无须用户干预,在核心态执行;命令解释程序属于命令接口,它在用户态执行。
  13. 进程切换不可能在用户态发生。
  14. 子程序调用秩序保存程序断点,即该指令的下一条指令的地址;中断处理不仅要保存断点(pc的内容),还要保存程序状态字寄存器(PSW)d的内容。
  15. 外部中断处理过程,PC的值由中断隐指令自动保存,而通用寄存器内容由操作系统保存。
  16. 执行系统调用的过程如下:正在运行的进程先传递系统调用参数,然后有陷入(trap)指令负责将用户态转换为内核态,并将返回地址压入堆栈以备后用,接下来CPU执行相应的内核态服务程序,最后返回用户态。
  17. 当CPU检测到中断信号后,由硬件自动保存被中断程序的断点(即程序计数器PC和程序状态字寄存器PSW)

三:操作系统运行环境
https://lzyjx.github.io.git/2023/05/11/操作系统运行环境/
作者
六只羊
发布于
2023年5月11日
许可协议