Qin darkstone
操作系统运行环境

操作系统运行环境

操作系统运行环境

通用操作系统使用时间片轮转调度算法,必须从起始地址开始执行

输入输出指令需要中断操作,中断必须在核心态下运行

  • I/O通道实际上是一种特殊的处理器,它具有执行 I/O指令的能力,并通过执行通道程序来控制I/O操作。

    • 是一种硬件技术
  • 中断相关操作中,由操作系统完成的有

    • 初始化中断向量表
    • 执行中断服务程序,终端服务程序属于OS内核
      • 保存中断屏蔽字
      • 保存各通用寄存器的值
      • 提供与中断信号对应的中断服务
  • 中断是操作系统必须提供的功能

    • 计算机的各种错误都需要中断处理,核心态与用户态切换也需要中断处理。
  • 内核可以执行处理器能执行的任何指令,即特权指令只能由内核即操作系统使用。

  • 执行系统调用的过程如下

    • 正在运行的进程先传递系统调用参数
    • 然后由陷入(trap)指令负责将用户态转换为内核态,并将返回地址压入堆栈以备后用
    • 接下来 CPU 执行相应的内核态服务程序
    • 最后返回用户态。
  • 操作系统管理内存时,管理的是内存中的数据放在哪里、哪里可以放数据、哪里不可以放数据(内存保护)、哪里空闲等问题

    • 内存中的数据是什么、怎么读和写,都不是核心态关心的。
  • 用户程序只能执行除特权指令外的指令。

  • 中断处理流程的前三个步骤是由硬件直接实现(隐指令)的。

    • 地址映射中需要基地址(或页表)寄存器和地址加法器的支持。
    • 在时钟管理中,需要硬件计数器保持时钟的运行。
    • 进程调度由调度算法决定 CPU使用权,由操作系统实现。不需要硬件的支持。
  • 中断程序本身可能是用户程序,但是进入中断的处理程序一定是 OS程序。

  • 当中断或异常发生时,通过硬件实现将运行在用户态的 CPU立即转入核心态。中断发生时,若被中断的是用户程序,则系统将从目态转入管态,在管态下进行中断的处理;若被中断的是低级中断,则仍然保持在管态,而用户程序只能在目态下运行,因此进入中断处理的程序只能是OS程序。中断程序本身可能是用户程序,但是进入中断的处理程序一定是OS程序。

  • 计算机通过硬件完成操作系统由用户态到核心态的转换,这是通过中断机制来实现的。发生

    • 中断事件时(有可能是用户程序发出的系统调用),触发中断,硬件中断机制将计算机状态置为核心态。
  • 大多数计算机操作系统的内核包括四个方面的内容,即时钟管理、中断机制、原语和系统控制的数据结构及处理

    • 其中第4部分实际上是系统调用类的指令(广义指令)

    • 广义指令即系统调用命令,它必然工作在核心态

      • 要注意区分”调用”和”执行”
      • 广义指令的调用可能发生在用户态,调用广义指令的那条指令不一定是特权指令,
      • 广义指令存在于核心态中,所以执行一定在核心态。
  • 在核心态下,CPU可以执行指令系统除了访管指令外的全部指令

  • 关于内部异常的处理后

    • 返回点因异常类型不同而不同
      • 除数为零自行中断(INT)都会跳过中断指令
      • 所以他们不会返回到发生异常的指令继续执行
  • 在操作系统中,关中断指令是权限非常大的指令,因为中断是现代操作系统正常运行的核心保障之一,能把它关掉,说明执行这条指令的一定是权限非常大的机构(管态)

    • 发生中断时,在关中断之前系统由用户态转为内核态,而关中断是由硬件实现的,所以CPU由用户态变为内核态是由硬件实现的
      • 检测到中断后,CPU负责保存断点PC和程序状态字PSW,然后变为内核态
  • 子程序调用只需保存程序断点,即该指令的下一条指令的地址

  • 中断处理不仅要保存断点(PC 的内容),还要保存程序状态字寄存器(PSW)的内容。

    • 在中断处理中,最重要的两个寄存器是 PC和 PSWR。
    • 外部中断处理过程,PC 值由中断隐指令自动保存,而通用寄存器内容由操作系统保存。
  • 中断是指来自 CPU 执行指令以外事件的发生

    • 如设备发出的 I/O结束中断,表示设备输入/ 输出处理已经完成。希望处理机能够向设备发出下—个输入/输出请求,同时让完成输入/输出后的程序继续运行。
    • 时钟中断,表示一个固定的时间片已到,让处理机处理计时、启动定时运行的任务等。
    • 这一类中断通常是与当前程序运行无关的事件,即它们与当前处理机运行的程序无关。
  • 异常也称内中断,指源自 CPU 执行指令内部的事件

    • 如程序的非法操作码、地址越界、算术溢出、 虚存系统的缺页及专门的陷入指令等引起的事件。
Author:Qin darkstone
Link:https://qindarkstone.github.io/2023/08/18/408/操作系统/操作系统概述/操作系统运行环境/
版权声明:本文采用 CC BY-NC-SA 3.0 CN 协议进行许可