1.3 操作系统运行环境

操作系统的运行机制

预备知识

  • 内核程序

    “操作系统内核”(简称“内核”)是由很多内核程序组成的

    内核是操作系统的核心部分,也是最接近硬件的部分

  • 应用程序

    普通程序员编写的就是“应用程序”


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

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

在CPU设计和生产的时候就划分了特权指令和非特权指令,因此CPU执行一条指令前就能判断出其类型


CPU能判断出指令类型,但是如何区分此时正在运行的是内核程序还是应用程序呢?➡️“内核态”和“用户态”

CPU的运行模式划分为用户态目态)和核心态(又称管态、内核态
CPU处于内核态时,说明此时正在运行的是内核程序,CPU可以执行特权指令
CPU处于用户态时,说明此时正在运行的是应用程序,CPU只能执行非特权指令

拓展:CPU中有一个寄存器叫程序状态寄存器(PSW),其中有个二进制位,1表示“内核态”,0表示“用户态”

应用程序运行在用户态,操作系统内核程序运行在核心态

内核态 & 用户态 的切换

  • 内核态➡️用户态:执行一条特权指令 —— 修改PSW的标志位为“用户态”,这个动作意味着操作系统将主动让出CPU使用权
  • 用户态➡️内核态:由“中断”引发,硬件自动完成变态过程,触发中断信号意味着操作系统将强行夺回CPU使用权

中断和异常

中断的作用

“中断”是让操作系统内核夺回CPU使用权的唯一途径

如果没有中断机制,那么一旦应用程序上CPU运行,CPU就会一直运行这个应用程序

中断的类型

内中断(也称“异常”)

内中断与当前执行的指令有关,中断信号来源于CPU内部

若当前执行的指令是非法的或者执行“陷入指令”就会引发内中断(即异常)

异常不能被屏蔽,一旦出现,就应立即处理

外中断(也称“中断”)

外中断与当前执行的指令无关,中断信号来源于CPU外部

时钟中断 —— 由时钟部件发来的中断信号,表示一个固定的时间片已到,让处理机处理计时、启动定时运行的任务等

I/O中断 —— 由输入/输出设备发来的中断信号,表示设备输入/输出处理已经完成

每一条指令执行结束时,CPU都会例行检查是否有外中断信号

中断机制的基本原理

不同的中断信号,需要用不同的中断处理程序来处理

当CPU检测到中断信号后,会根据中断信号的类型去查询“中断向量表”,以此来找到相应的中断处理程序在内存中的存放位置。

在这里插入图片描述

系统调用

知识点回顾

操作系统作为用户和计算机硬件之间的接口,需要向上提供一些简单易用的服务。主要包括命令接口和程序接口,其中程序接口由一组系统调用组成

在这里插入图片描述

系统调用的概念

系统调用是操作系统提供给应用程序(程序员/编程人员)使用的接口,可以理解为一种可供应用程序调用的特殊函数,应用程序可以通过系统调用来请求获得操作系统内核的服务

系统调用和库函数的区别

在这里插入图片描述

系统调用是必须的

由于系统当中有各种各样的并发的进程,而这些并发的进程又需要共享地使用类似于打印机设备这样的打印资源,但是这些共享资源是互斥共享的,要实现对共享资源的互斥访问,就需要由操作系统内核对共享资源进行统一的管理,并向上提供“系统调用”(用户进程想要使用打印机这种共享资源,只能通过系统调用向操作系统内核发出请求,内核会对各个请求进行协调处理)

系统调用的用处

系统中的各种共享资源都由操作系统统一掌管,因此在用户程序中,凡是与资源有关的操作(如存储分配、进行I/O传输及管理文件等),都必须通过系统调用方式向操作系统提出服务请求,并由操作系统代为完成,这样可以保证系统的稳定性和安全性,防止用户进行非法操作

这些系统调用按功能大致可分为如下几类:

  • 设备管理:完成设备的请求或释放,以及设备启动等功能
  • 文件管理:完成文件的读、写、创建及删除等功能
  • 进程控制:完成进程的创建、撤销、阻塞及唤醒等功能
  • 进程通信:完成进程之间的消息传递或信号传递等功能
  • 内存管理:完成内存的分配、回收以及获取作业占用内存区大小及始址等功能

系统调用的过程

传递系统调用参数 → 执行陷入指令(用户态) → 执行相应的内请求核程序处理系统调用(核心态) → 返回应用程序

在这里插入图片描述

注意:

  1. 陷入指令是在用户态执行的,执行陷入指令之后立即引发一个内中断,使CPU进入核心态
  2. 发出系统调用请求是在用户态,而对系统调用相应的处理是在核心态下进行

小结(本节思维导图)

在这里插入图片描述


计算机操作系统】 专栏的文章 均有参考 《王道计算机考研 操作系统》 课程视频

  • 23
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值