处理器的运行模式

【操作系统】操作系统运行环境——处理器的运行模式_特权指令

导读

大家好,很高兴又和大家见面啦!!!

在上一篇内容中我们介绍了操作系统的发展史,操作系统从诞生到发展主要经历了手工操作阶段、批处理阶段、分时操作系统阶段、实时操作系统阶段、网络操作系统和分布式计算机系统阶段以及个人计算机操作系统这6个阶段。我们可以将其归纳为以下4个阶段:

  1. 无操作系统阶段——手工操作阶段:在这个阶段计算机的使用还停留在人工操作上,对于程序的转入、运行、结果的输出等都需要人工干预,因此这个阶段并没有操作系统。在这个阶段中存在几个突出的缺点:
  • 用户独占全机,计算机资源利用率地。
  • CPU等待手工操作,CPU的利用不充分。
  • 人工操作的低速与计算机运行的高速形成了尖锐的矛盾。
  1. 操作系统雏形阶段——批处理阶段:在这个阶段下,操作系统的雏形开始出现。
  • 为了解决手工阶段中存在的人机矛盾以及CPU和I/O设备之间速度不匹配的问题,出现了单道批处理系统。这个系统主要有三个特征——1.自动性、2.顺序性、3.单道性。但是还是存在资源利用率低以及系统吞吐量少的问题;
  • 为了提高资源的利用率和系统的吞吐量,出现了多道批处理系统。这个系统的特点是——多道、宏观上并行、微观上串行。多道批处理系统的基本特征有——1.制约性、2.间断性、3.共享性。但是多道批处理系统并不能进行人机交互,用户响应的时间较长;
  1. 操作系统完善阶段——在这个阶段下出现了分时操作系统与实时操作系统。
  • 为了解决多道批处理系统中存在的问题,于是引入了分时技术——把处理器的运行时间分成了很短的时间片,按时间片轮流把处理器分配给各联机作业使用。分时操作系统的出现让计算机有了4个主要特征——同时性、交互性、独立性与及时性。
  • 虽然分时操作系统很好的解决了人机交互和用户响应的问题,但是在分时操作系统中,任务的执行是依次交替执行,这就导致了系统无法对外部的信息在规定时间内作出处理,实时操作系统便应运而生。实时操作系统的主要特征为及时性和可靠性。
  1. 操作系统发展阶段——在这个阶段下,操作系统进一步发展,最终促使了个人计算机操作系统的诞生。

对于操作系统的一个发展历程,我们已经有了一定的了解。但是对于操作系统的底层是如何运行的我们并不清楚,从今天开始我们就将进入操作系统的底层知识点的学习。在今天的内容中,我们将会学习操作系统的一个运行机制,下面我们就直接进入今天的主题吧!!!

一、内核程序和应用程序

在计算机系统中,通常CPU执行两种不同性质的程序:一种是操作系统的内核程序;另一种是用户自编程序(即系统外层的应用程序,或简称“应用程序”)。

内核程序指的是操作系统的底层程序,操作系统是基于内核程序才得以实现的,就比如Linux系统,Linux作为一款开源的操作系统,它的内核程序我们可以在https://mirrors.edge.kernel.org/pub/linux/kernel/上进行下载,如下所示:

【操作系统】操作系统运行环境——处理器的运行模式_内核程序_02

应用程序指的就是装载在操作系统上的程序,也就是我们平时所使用的各种APP。

【操作系统】操作系统运行环境——处理器的运行模式_应用程序_03

在我的电脑上就装载有QQ、微信、Google Chrome……这些应用程序。

二、特权指令与非特权指令

对于操作系统而言,这两种程序的作用不同,前者是后者的管理者,因此“管理程序”(即内核程序)要执行一些特权指令,而“被管理程序”(即用户自编程序)处于安全考虑不能执行这些指令。

  • 特权指令:是指不允许用户直接使用的指令,如I/O指令、置中断指令,存储用于内存保护的寄存器、送程序状态字到程序状态字寄存器等的指令。
  • 非特权指令:是指允许用户直接使用的指令,他不能直接访问系统中的软硬件资源,仅限于访问用户的地址空间,这也是为了防止用户程序对系统造成破坏。

当我们在通过高级语言编写程序时,往往都会通过代码来命令计算机实现一些功能。比如通过C语言输出"hello world!!!",或者在Linux命令行中输入指令whoami来让计算机输出目前的登录用户。

不管是高级语言也好还是命令行中输入的指令也好,这些内容计算机是无法直接识别的。对于一台计算机而言,它能够识别的内容只有电信号,对应的就是机器语言。因此当我们想要通过代码来实现各种功能时,代码需要经过编译和链接两个过程,最后才能生成可执行程序。

在编译和链接的过程中,我们编辑的代码和指令就是被翻译成一条条的机器指令,最终CPU在接收到对应的机器指令后才能执行对应的操作。

因此这里我们所说的特权指令与非特权指令都是指的由机器语言编制的机器指令。

三、用户态与核心态

在具体实现上,将CPU的运行模式划分为用户态(目态)和核心态(又称管态、内核态)。

在计算机的CPU中有一个程序状态字寄存器(PSW),这个寄存器的作用就是来存储此时的CPU对应的运动模式的。

  • 当寄存器中的标志位的二进制为0时,此时的CPU处于核心态,在核心态的状态下,CPU可以执行特权指令;
  • 当寄存器中的标志位的二进制为1时,此时的CPU处于用户态,在用户态的状态下,CPU可以执行非特权指令;

在我们正常开启一台计算机时,此时PSW处于核心态,因此计算机首先会运行操作系统的内核程序来启动操作系统,在正常开机后,当我们开始运行计算机上装载的应用程序时,PSW会自动转变为用户态。

当有一个应用程序中的一行代码所对应的是特权指令时,CPU在运行到该指令后由于此时的PSW为用户态,并不能执行该条指令,这时CPU就会发出中断信号,同时该程序的运行也会发生中断,PSW在接收到中断信号后,会被强制变为核心态,然后由CPU运行处理中断信号的内核程序。这个中断信号会帮助操作系统夺回对CPU的控制权。在问题处理完之后,CPU的控制权才会被交给其他的应用程序。

四、内核

在软件工程思想和结构化程序设计方法影响下诞生的现代操作系统,几乎都是分层式的结构。从挨揍系统的各项功能分别被设置在不同的层次上。一些与硬件关联较紧密的模块,如时钟管理、中断管理、设备驱动等处于最底层。其次是运行频率较高的程序,如进程管理、存储器管理和设备管理等。这两部分内容构成了操作系统的内核。这部分内容的指令操作工作在核心态。

内核是计算机上配置的底层软件,它管理着操作系统的各种资源,可以看做是连接应用程序和硬件的一座桥梁,大多数操作系统的内核包括4个方面的内容。

4.1 时钟管理

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

4.2 中断机制

引入中断技术的初衷是提高多道程序运行环境中CPU的利用率,而且主要是针对外部设备的。后来逐步得到发展,形成了多种类型,成为操作系统各项操作的基础。例如,键盘或鼠标信息的输入、进程的管理和调度、系统功能的调用、设备驱动、文件访问等,无不依赖于中断机制,可以说,现代从挨揍系统是靠中断驱动的软件。中断机制中,只有一小部分功能属于内核,它们负责保护和回复中断现场的信息,转移控制权到相关的处理程序。这样可以减少中断的处理时间,提高系统的并行处理能力。

4.3 原语

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

  1. 处于操作系统的最底层,是最接近硬件的部分。
  2. 这些程序的运行具有原子性,其操作只能一起呵成(出于系统安全性和便于管理考虑)。
  3. 这些程序的运行时间都较短,而且调用频繁。

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

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

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

  1. 进程管理。进程状态管理、进程调度和分派、创建与撤销进程控制块等。
  2. 存储器管理。存储器的空间分配和回收、内存信息保护程序、代码对换程序等。
  3. 设备管理。缓冲区管理、设备分配和回收等。

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

结语

在今天的内容中我们介绍了操作系统中处理器的两种可执行程序——内核程序和应用程序。

在处理器执行这两种程序时会分别处于两种状态:

  • 内核态可执行内核程序;
  • 用户态可执行应用程序;

处理器这两种状态的转换是通过程序状态字寄存器(PSW)来实现的:

  • 当PSW中的标志位为0时,表示此时的CPU处于核心态;
  • 当PSW的标志位为1时表示此时的CPU处于用户态;

在操作系统的内核程序中,主要包括4个方面的内容:

  • 时钟管理
  • 中断机制
  • 原语
  • 系统控制的数据结构及处理

今天的内容到这里就全部结束了,在下一篇内容中我们将介绍中断与异常的相关知识点,大家记得关注哦!如果大家喜欢博主的内容,可以点赞、收藏加评论支持一下博主,当然也可以将博主的内容转发给你身边需要的朋友。最后感谢各位朋友的支持,咱们下一篇再见!!!