操作系统复习之OS的运行环境

2023-05-16

目录

1.3.1用户态与核心态

1.3.2中断与异常

1.3.3系统调用

【例题】


1.3.1用户态与核心态

在计算机系统中,CPU通常运行两种不同性质的程序: 一种是操作系统内核程序;另一种是用户自编程序,简称用户程序或应用程序。为了避免操作系统及其关键数据(如PCB等)受到用户程序有意或无意的破坏,通常将处理器的执行状态分为:核心态和用户态。

(1)核心态

又称管态、系统态。是操作系统管理程序执行时机器所处的状态。,它具有较高的特权,能执行包括特权指令的一切指令,能方问所有寄存器和存储区。

[特权指令是指由操作系统内核使用的指令,用户程序不能执行,如I/0指令设置中断屏蔽指令、清内存指令存储保护指令设置时钟指令。]

(2)用户态

用户态又称目态,是用户程序执行时机器所处的状态,是具有较低特权的执行状态,能执行规定的指令,只能访问指定的寄存器和存储区

··区别核心态和用户态

CPU中有一个程序状态寄存器(PSW),其中有一个二进制位,1表示"核心态",0表示"用户态"

··核心态和用户态的切换

核心态–>用户态:执行一条特权指令来修改PSW的标志位为"用户态",这个动作意味着操作系统将主动让出CPU使用权

用户态–>核心态:通过执行访管指令,引发中断,硬件自动完成转态过程,触发中断信号意味着操作系统将强行夺回CPU的使用权。中断是从用户态切换到核心态的唯一方式

(3)操作系统的内核

1.3.2中断与异常

(1)中断和异常的定义

 中断也称外中断指来自CPU执行指令以外的事件的发生,中断来自外部硬件如I/O中断(由输入输出设备发出的中断,外部设备想要输入或输出数据),时钟中断(主要表现为进程的时间片轮转调度,这是实现并发的手段),这类中断通常与当前处理机运行的程序无关。

 异常也称内中断或陷人trap(应用程序自己要求进行的中断,用户程序想要调用系统调用),指源自CPU执行指令内部的事件,如程序的非法操作码地址越界算术溢出虚存系统的缺页专门的陷人指令等引起的事件。对异常的处理一般要依赖于当前程序的运行现场,而且异常不能被屏蔽,一旦出现应立即处理

(2)中断处理过程(外中断)

 ①关中断:CPU响应中断后,首先要保护程序现场状态,在保护的过程中CPU不可以响应更高优先级的中断请求。如果响应了更高优先级的程序,那低优先级的程序现场保存不完整,之后处理完中断后就不能正确的回到中断前的状态

保存断点:为保证中断服务程序执行完毕能正确的返回到原来的程序,必须将程序断点(程序计数器PC的值)保存起来

寻找中断服务程序入口地址:实质是取出中断服务程序的入口地址送入到程序计数器PC中入口地址的获取:查询"中断向量表",找到相应的中断处理程序在内存中的存放位置

进入中断服务程序,开始执行中断服务程序

保护现场和屏蔽字:进入中断服务程序后的第一件事,就是保护现场和屏蔽字,主要是保存程序状态字PSWR和某些通用寄存器的内容

开中断:允许响应更高级中断此时如果有高级中断到来,可以去执行高级中断,因为被中断程序的现场信息已经被保存,响应高级中断不会导致被中断程序在恢复时现场信息不完整

中断服务程序处理:执行中断服务程序,这也是中断的目的所在

关中断:执行完中断服务程序,在程序结束前,要恢复现场,这个操作也不可以被打断

恢复现场:中断服务程序将之前保存的相关寄存器的值恢复到原来的状态

开中断:中断服务程序即将结束,重新打开中断,允许响应其他中断

返回到断点继续执行:中断服务程序的最后一条指令通常是一条中断返回指令,使其返回到程序断点处,以便原程序继续执行

1.3.3系统调用

系统调用是用户程序获得操作系统服务的唯一途径,是操作系统提供给应用程序的一个接口,应用程序通过这个接口向操作系统申请内核服务。凡是与共享资源有关的操作(如内存分配,I/O操作,文件管理等),都必须通过系统调用的方式向操作系统内核提出服务请求,由操作系统内核代为完成。

系统调用的过程:

用户程序通过执行陷入指令(又称访管指令或trap指令)来发起系统调用请求操作系统提供服务,即用户程序执行访管指令,使CPU的状态由用户态变为核心态;

之后由操作系统内核程序再对系统调用请求做出相应处理;

处理完成后,操作系统内核程序再把CPU的使用权还给用户程序(即CPU状态会从核心态返回用户态)。

【例题】:

1.下列操作系统的各个功能组成部分中,( )可不需要硬件的支持。A

A.进程调度   B.时钟管理   C.地址映射    D.中断系统

··进程调度是由调度算法决定CPU的使用权,由操作系统实现,无需硬件的支持

··对于时钟管理,任何操作系统都需要提供一个时钟节拍,以供系统处理所有和时间有关的事件,时钟节拍由配置为中断触发模式的硬件定时器产生

··逻辑地址到物理地址的映射都是靠硬件来实现的。无论是连续分配还是段表还是页表,都是一些地址寄存器,基址寄存器记录内存片段的开始,而另一个寄存器保存长度信息等

··中断的发生会激活很多事件,这包括硬件和软件的方面的事件,所以对于整个中断事件的接收、响应和处理需要有计算机的硬件和软件两方面的配合,共同完成。硬件中断装置负责捕获中断源发出的中断请求,并以一定的方式响应中断源,然后将处理器的控制权移交给特定的中断处理程序。中断处理程序则针对对中断事件的性质而执行相应的系列操作。

2.计算机区分核心态和用户态指令后,从核心态到用户态的转换是由操作系统程序执行后

完成的,而用户态到核心态的转换则是由( )完成的。A

A.硬件      B.核心态程序      C.用户程序     D.中断处理程序

··计算机通过硬件中断机制完成用户态到核心态的转换,发生中断事件时,触发中断,硬件中断机制把计算机状态置为核心态

··核心态程序只有在操作系统进入核心态之后才执行,D中断处理程序一般也在核心态执行,无法完成用户态到核心态的转换

··若用户程序能进行转换,则用户程序就能使用核心态指令,这会危害计算机的安全。

3. [2011统考真题]下列选项中,在用户态执行的是( ) A

A.命令解释程序    B.缺页处理程序    C.进程调度程序     D .时钟中断处理程序

··命令解释程序属于命令接口,是面对用户的,在用户态执行

··缺页处理程序和时间中断处理程序都是在核心态下执行的程序

··进程调度是操作系统内核进程,用户无法干预,在核心态执行

4. [2012 统考真题]下列选项中,不可能在用户态发生的事件是( )C

A.系统调用     B.外部中断      C.进程切换      D.缺页

注意题目问的是不能在用户态发生的事件

··系统调用是操作系统提供给用户程序的接口,发生在用户态,被调用程序在核心态下执行

··外部中断是用户态到核心态的门,发生在用户态,在核心态完成中断过程

··进程切换是系统调用的执行程序事件,只能发生在核心态

··缺页产生后,在用户态发生缺页中断,进入核心态执行缺页中断服务程序

5. [2012 统考真题]中断处理和子程序调用都需要压栈以保护现场,中断处理一定会保存

而子程序调用不需要保存其内容的是( )。B

A.程序计数器PC  B.程序状态字寄存器PSWR  C.通用数据寄存器 D通用地址寄存器

··中断处理要保存断点(PC的内容)和程序状态字寄存器的内容,而子程序调用只需保存程序断点,即该指令的下一条指令地址

6. [2015 统考真题]处理外部中断时,应该由操作系统保存的是( ).B

A.程序计数器(PC)的内容B.通用寄存器的内容C.块表(TLB)中的内容D. Cache 中的内容

··外部中断处理过程,PC(程序计数器)值由中断隐指令自动保存,而通用寄存器内容由操作系统保存

7. [2015统考真题]假定下列指令已装入指令寄存器,则执行时不可能导致CPU从用户态变为内核态(系统态)的是( )。C

A. DIV RO, RI; (RO)V(R1)→R0  ··该指令有除零出现异常的可能

B. INTn; 产生软中断        ··INT为interrupt,为中断指令

C. NOT RO;寄存器RO的内容取非  ··不会出现异常所以不会出现状态转换

D. MOV RO, addr;把地址addr处的内存数据放入寄存器RO  ··可能出现缺页异常

8. [2018 统考真题]定时器产生时钟中断后,由时钟中断服务程序更新的部分内容是ABC

A.内核中时钟变量的值

B.当前迸程占用CPU的时间

C.当前进程在时间片内的剩余执行时间

··时钟中断主要是处理和时间有关的信息和决定是否执行调度程序。和时间有关的所有信息包括系统时间,进程的时间片,使用CPU的时间,各类定时器。

9. [2020统考真题]下列与中断相关的操作中,由操作系统完成的是( )。BCD

A.保存被中断程序的中断点B.提供中断服务

C初始化中断向量表     D.保存中断屏蔽字

··CPU检测到中断信号后由硬件自动保存中断程序的断点

··硬件找到中断信号对应的中断向量(中断向量统一存放在中断向量表中,表由操作系统初始化),指明中断服务程序入口地址,接下来开始执行中断服务程序,保存程序状态字,中断屏蔽字等,提供与中断信号对应的中断服务。中断服务程序属于操作系统内核。

10. [2021统考真超]下列指令中。只能在内核态执行的是 B

A. trap指令    B. I/O指令     C数据传送指令      D.设置断点指令

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

操作系统复习之OS的运行环境 的相关文章

  • win11安装Anaconda最新版本

    0 前言 xff08 废话可略过 xff1a 从题主开始学python安装anaconda xff0c 已经过去三四年了 xff0c 最近新换了电脑从头再来一遍 xff0c 想来大家学AI大都是从此一步开始的吧 xff0c 想到当初遇到了很

随机推荐

  • 常用的默认端口号

    端口号标识了一个主机上进行通信的不同的应用程序 1 HTTP协议代理服务器常用端口号 xff1a 80 8080 3128 8081 9098 2 SOCKS代理协议服务器常用端口号 xff1a 1080 3 FTP xff08 文件传输
  • Docker中安装MySQL5.7,并解决中文乱码问题

    Docker安装MySQL5 7 xff0c 并解决中文乱码问题 在Docker中安装5 7 一 安装常规步骤 在docker中安装软件大概就分为这几种 查询所需要的软件镜像pull镜像运行镜像 xff08 镜像变容器 xff09 查看容易
  • git失败

    提示 xff1a gnutls handshake failed The TLS connection was non properly terminated 先设置 export GIT SSL NO VERIFY 61 1 再重新git
  • 【解决办法】pip和python版本不一致

    1 查看pip的版本 pip V pip的版本是python3 5 2 查看python版本 python python 版本是3 8 可以看到pip和python的版本对不上 xff0c 怎么处理呢 xff1f 3 使用和python版本
  • CentOS7虚拟机 下 MySQL 5.7版本 在线详细安装配置、以及完全卸载教程

    x1f9e1 x1f49b x1f49a x1f499 x1f49c x1f90e x1f497 x1f9e1 x1f49b x1f49a x1f499 x1f49c x1f90e x1f497 感谢各位一直以来的支持和鼓励 xff0c 制
  • cuda11.2对应的tensorRT版本

    下载tensorRT的官网地址 xff1a https developer nvidia com nvidia tensorrt download 进去之后可以看到各种版本的tensorRT xff0c 但是没有找到只适用于cuda11 2
  • cmake———CXX_STANDARD is set to invalid value ‘17‘

    Q xff1a CXX STANDARD is set to invalid value 39 17 39 A xff1a 版本和cmake版本对不上 xff0c 进入CMakeLists txt xff0c 将set CMAKE CXX
  • 使用DiffusionDet在mot数据集上训练

    数据集处理 在https github com facebookresearch detectron2 detectron2 data datasets builtin py 中 xff0c 可以看到 xff0c detectron2中可以
  • 服务器挂载硬盘

    BuyVM Block Storage xff08 数据盘 xff09 挂载方法 垃圾站 cyhour com fdis l 可以查看硬盘 xff1a 1 找到数据盘之后 xff0c 格式化 mkfs ext4 F dev sdb 2 创建
  • setuptools:‘NoneType‘ object has no attribute ‘split‘

    问题 xff1a 运行 python m pip install e 或者 python setup py build develop 报错 anaconda3 envs querydet lib python3 7 site packag
  • Linux卸载pycharm

    1 确保pycharm程序全部关闭之后 xff0c 进入pycharm的安装目录 xff0c 默认在 opt 2 进入Pycharm的bin目录 xff08 我也不懂为什么 xff0c 或许知道的可以告诉一声 xff09 xff0c 我的是
  • Rust Web入门(一):TCP 和 HTTP Server

    本教程笔记来自 杨旭老师的 rust web 全栈教程 xff0c 链接如下 xff1a https www bilibili com video BV1RP4y1G7KF p 61 1 amp vd source 61 8595fbbf1
  • Rust Web入门(三):连接数据库

    本教程笔记来自 杨旭老师的 rust web 全栈教程 xff0c 链接如下 xff1a https www bilibili com video BV1RP4y1G7KF p 61 1 amp vd source 61 8595fbbf1
  • 如何进入 Windows 的 Ubuntu 子系统

    很久没有用这个 Ubuntu 子系统了 xff0c 最近是因为阿里云到期了 xff0c 又不打算续费 xff0c 所以才重新用起了它 记得原来直接按 Windows 43 R xff0c 输入 ubuntu 回车 xff0c 就能进入这个系
  • Git最新教程4——使用码云Gitee使用教程,创建项目仓库并上传代码

    此git栏目均有学习笔记以及相应的视频 xff0c 视频链接在最后 xff0c 学习笔记完全开源 xff1a https gitee com SiobhanMing Siobhan studyNote 目录 一 注册登录码云 xff0c 完
  • CentOS6.5 安装ntopng-1.2.0

    0 准备工作 安装libpcap xff1a 最好源码安装 yum install y libpcap 安装redis yum install y redis 1 安装 tar zxvf ntopng cd ntopng autogen s
  • Java编程题之四个数字组成不同且无重复的三位数

    题目 有1 2 3 4四个数字 xff0c 能组成多少个互不相同且无重复数字的三位数 xff1f 都是多少 xff1f span class token keyword int span count span class token ope
  • 联想笔记本摄像头被禁用

    联想笔记本摄像头被禁用 针对摄像头 xff08 相机 QQ视频 微信视频 xff09 能够正常打开 xff0c 但是不显示画面 xff0c 如果是找不到摄像头这种问题 xff0c 关了吧 xff0c 找其他的别看这个浪费时间 这种情况可能是
  • Zoom to learn, learn to zoom超分辨网络

    目录 论文主要贡献背景创新点一 SR RAW数据集创新点二 CoBi损失函数结果结论 论文 Zhang X Chen Q Ng R et al Zoom to learn learn to zoom C Proceedings of the
  • 操作系统复习之OS的运行环境

    目录 1 3 1用户态与核心态 1 3 2中断与异常 1 3 3系统调用 例题 1 3 1用户态与核心态 在计算机系统中 xff0c CPU通常运行两种不同性质的程序 一种是操作系统内核程序 另一种是用户自编程序 xff0c 简称用户程序或