【操作系统】程序运行环境

news2024/10/6 22:26:31

目录

1.处理器运行模式

1.1特权指令

1.2非特权指令

 2.中断和异常的概念

2.1中断和异常的定义

 2.1.1外中断

2.1.2内中断(异常)

2.2中断和异常的处理过程

3.系统调用


1.处理器运行模式

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

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

1.1特权指令

特权指令,是指不允许用户直接使用的指令,如IO指令、置中断指令,存取用于内存保护的寄存器、送程序状态字到程序状态字寄存器等的指令。

1.2非特权指令

非特权指令,是指允许用户直接使用的指令,它不能直接访问系统中的软硬件资源,仅限于访问用户的地址空间,这也是为了防止用户程序对系统造成破坏。

怎么实现特权指令和非特权指令呢?

在具体实现上,将 CPU 的运行模式划分为用户态(目态)和核心态(又称管态、内核态)。可以理解为 CPU 内部有一个小开关,当小开关为0时,CPU 处于核心态,此时 CPU 可以执行特权指令,切换到用户态的指令也是特权指令。当小开关为 1 时,CPU 处于用户态,此时 CPU 只能执行非特权指令。用户自编程序运行在用户态,操作系统内核程序运行在核心态。

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

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

  1. 时钟管理
  2. 中断机制
  3. 原语
  4. 系统控制的数据结构及处理

 2.中断和异常的概念

在操作系统中引入核心态和用户态这两种工作状态后,就需要考虑这两种状态之间如何切换。操作系统内核工作在核心态,而用户程序工作在用户态。系统不允许用户程序实现核心态的功能,而它们又必须使用这些功能。因此,需要在核心态建立一些“门”,以便实现从用户态进入核心态。在实际操作系统中,CPU 运行上层程序时唯一能进入这些“门”的途就是通过中或异常。发生中断或异常时,运行用户态的 CPU 会立即进入核心态,这是通过硬件实现的(例如用一个特殊寄存器的一位来表示 CPU 所处的工作状态,0 表示核心态,1 表示用户态。若要进入核心态,则只需将该位置 0即可)。中断是操作系统中非常重要的一个概念,对一个运行在计算机上的实用操作系统而言,缺少了中断机制,将是不可想象的。原因是,操作系统的发展过程大体上就是一个想方设法不断提高资源利用率的过程,而提高资源利用率就需要在程序并未使用某种资源时,把它对那种资源的占有权释放,而这一行为就需要通过中断实现。、

2.1中断和异常的定义

中断(Interruption)也称外中断,是指来自CPU 行指外部的事件,通常用于信息输入/输出,如设备发出的 I/O 结束中断,表示设备输入/输出处理已经完成。时钟中断,表示一个固定的时间片已到,让处理机处理计时、启动定时运行的任务等。

异常(Exception)也称内中断,是指来自CPU执行指令内部的事件,如程序的非法操作码、地址越界、运算溢出、虚存系统的缺页及专门的陷入指令等引起的事件。异常不能被屏蔽,一旦出现,就应立即处理。

 2.1.1外中断

外中断可分为可屏蔽中断和不可屏蔽中断。可屏敲中断是指通过 INTR 线发出的中断请求,通过改变屏蔽字可以实现多重中断,从而使得中断处理更加灵活。不可屏蔽中断是指通过 NMI线发出的中断请求,通常是紧急的硬件故障,如电源掉电等。此外,异常也是不能被屏蔽的。

2.1.2内中断(异常)

异常可分为故障、自陷和终止。故障 (Fault) 通常是由指令执行引起的异常,如非法操作码缺页故障、除数为 0运算溢出等。自陷((Trap)是一种事先安排的“异常”事件,用于在用户态下调用操作系统内核程序,如条件陷阱指令。终止(Abort是指出现了使得 CPU 无法继续行的硬件故障,如控制器出错、存储器校验错等。故障异常和自陷异常属于软件中断(程序性异常),终止异常和外部中断属于硬件中断。

2.2中断和异常的处理过程

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

3.系统调用

所谓系统调用,是指用户在程序中调用操作系统所提供的一些子功能,系统调用可视为特殊的公共子程序。系统中的各种共享资源都由操作系统统一掌管,因此在用户程序中,凡是与资源有关的操作(如存储分配、进行 /O 传输及管理文件等),都必须通过系统调用方式向操作系统提出服务请求,并由操作系统代为完成。

通常,一个操作系统提供的系统调用命令有几十条乃至上百条之多。这些系统调用按功能大致可分为如下几类。

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

系统调用的处理需要由操作系统内核程序负责完成,要运行在核心态。

下面列举一些由用户态转向核心态的例子:

  • 1)用户程序要求操作系统的服务,即系统调用。
  • 2)发生一次中断。
  • 3)用户程序中产生了一个错误状态。
  • 4)用户程序中企图执行一条特权指令。
  • 5)从核心态转向用户态由一条指令实现,这条指令也是特权命令,一般是中断返回指令注意: 由用户态进入核心态,不仅状态需要切换,而且所用的堆栈也可能需要由用户堆栈切换为系统堆栈,但这个系统堆栈也是属于该进程的。

若程序的运行由用户态转到核心态,则会用到访管指令,访管指令是在用户态使用的,所以它不可能是特权指令。


注:文章内容借鉴王道考研,侵权速删

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/663325.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Android开发基础】手机传感器信息的获取

文章目录 一、引言二、了解1、概述2、关键 三、设计1、UI设计(1)主界面(2)适配器item 2、编码(1)获取数据(传感器信息)(2)渲染数据(初始化适配器&…

SpringBoot不在使用@Validated 做参数校验但是不想在Controller层怎么办?

目录 场景再现: 怎么做? 遇到了什么问题? 怎么实现? 场景再现: 某API接口接受加密的json字符串,接受字符串之后先进行解密处理,解密完成之后还要进行参数校验处理,如果参数不合规…

华为HCIA备考(数通) 易错题整理 PART1

1.IEEE802.1Q定义的 VLAN 帧格式中VLAN ID总共有多少bit 答:12 2.NAPT允许多个私有IP地址通过不同的端口号映射到同一个公有IP地址上,且不需要做任何关于端口号的配置。 3.IEEE802.1Q定义的VLAN帧总长度为多少字节? 答:4 4.关于…

2023亚马逊云科技中国峰会:强化学习探索—— Amazon DeepRacer

1️⃣前言 Amazon DeepRacer 是一个综合性的学习系统,可供各个水平的用户用来学习和探索强化学习以及试验和构建自动驾驶应用程序。 2️⃣Amazon DeepRacer 介绍 DeepRacer是一款小型自主驾驶车辆,它结合了深度学习、强化学习和云计算等技术&#xff0c…

Karl Guttag评Vision Pro(二):这些硬件问题不容忽视

上周,AR/VR光学专家Karl Guttag从价格、VST透视、应用、交互等方面,将Vision Pro与Quest Pro进行对比,发现Vision Pro在设计上做出更多正确决策。尽管如此,Guttag认为该头显本身在硬件部分,依然存在一些不易发现的问题…

C语言结构体计算大小结构体的对齐数,修改默认对齐数。

结构体的对齐规则 第一个成员在与结构体变量偏移量为0的地址处。剩余成员变量要对齐到对齐数的整数倍的地址处。 对齐数:编译器默认对齐数与该成员大小的较小值vs中默认对齐数为8没有默认对齐数,那么对齐数就是其本身成员大小 结构体总大小为最大对齐数…

2个小工具让你轻松解决大数据/数据库测试

目录 前言: 研究背景 工具 支持功能 支持功能 使用方法 总结 前言: 做大数据/数据库测试时,通常需要编写复杂的测试用例代码或手动操作来测试系统的正确性和稳定性。但是,有些小工具可以轻松解决这个问题,提高测试效率…

python自动化测试- 自动化框架及工具

1 概述 手续的关于测试的方法论,都是建立在之前的文章里面提到的观点: 功能测试不建议做自动化接口测试性价比最高接口测试可以做自动化 后面所谈到的 测试自动化 也将围绕着 接口自动化 来介绍。 如果你想学习自动化测试,我这边给你推…

智慧绿色档案馆之八防一体化解决系统方案

主要涉及系统: 智慧档案馆温湿度监控系统 智慧档案馆净化系统 智慧档案馆防火监控系统 智慧档案馆防盗监控系统 智慧档案馆漏水监控系统 智慧档案馆空气质量监控系统 智慧档案馆自动化恒温恒净化系统 智慧档案馆大数据云平台建设系统 (一)技…

C语言实现青蛙跳台阶问题【图解】

目录 问题分析方法1:找规律问题分析方法2:递归两种方法的代码 题目 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法? 问题分析方法1:找规律 当n1时,显然…

vue+Nodejs+Koa搭建前后端系统(六)-- 用户登录

前言 采用vue3,vue-router版本为4.x前端构建工具采用viteIDE采用VSCODE,安装了MYSQL客户端插件 前端编写 安装并使用 vue-router 如果有vue-router,就略过这一小节。 vue-router完整教程:点这里>> 第一步:n…

MySQL ⽀持哪些存储引擎?默认使⽤哪个?MyISAM 和 InnoDB 引擎有什么区别,如何选择?

💧 M y S Q L ⽀持哪些存储引擎?默认使⽤哪个? M y I S A M 和 I n n o D B 引擎有什么区别,如何选择? \color{#FF1493}{MySQL ⽀持哪些存储引擎?默认使⽤哪个?MyISAM 和 InnoDB 引擎有什么区别…

centos tomcat

利用samba共享将所用的的组件复制到/usr/java/中 并给/usr/java设置777权限 Samba配置如下 重启smb服务 进入目录开始安装jdk 在当前目录解压jdk 配置环境变量 使配置生效 查看jdk版本 创建tomcat目录 解压tomcat的安装包到当前目录 进入tomcat配置目录 启动tomcat 先关闭在启…

【微服务】微服务架构设计

文章目录 背景一、流量入口Nginx二、网关三、业务组件四、服务注册中心五、缓存和分布式锁六、数据持久层七、结构型数据存储八、消息中间件九、日志收集十、任务调度中心十一、分布式对象存储 背景 当前,微服务架构在很多公司都已经落地实施了,下面用一…

01_Linux系统安装及使用

一、安装虚拟机软件 VMware16pro 安装链接:https://note.youdao.com/ynoteshare/index.html?id5fc5ad640596a0fbb41a21413ada4dad&typenote&_time1687172973066 二、安装Ubuntu 64 位 Linux系统 安装链接:https://note.youdao.com/ynoteshar…

【动态规划】简单多状态dp问题(1)打家劫舍问题

打家劫舍问题 文章目录 【动态规划】简单多状态dp问题(1)打家劫舍问题1. 按摩师(打家劫舍Ⅰ)1.1 题目解析1.2 算法原理1.2.1 状态表示1.2.2 状态转移方程1.2.3 初始化1.2.4 填表顺序1.2.5 返回值 1.3 编写代码 2. 打家劫舍Ⅱ2.1 题…

seaborn笔记:heatmap

绘制热力图 1 基本使用方法 seaborn.heatmap(data, *, vminNone, vmaxNone, cmapNone, centerNone, robustFalse, annotNone, fmt.2g, annot_kwsNone, linewidths0, linecolorwhite, cbarTrue, cbar_kwsNone, cbar_axNone, squareFalse, xticklabelsauto, yticklabelsauto, m…

C++ 教程(16)——字符串

C 字符串 C 提供了以下两种类型的字符串表示形式: C 风格字符串C 引入的 string 类类型 C 风格字符串 C 风格的字符串起源于 C 语言,并在 C 中继续得到支持。字符串实际上是使用 null 字符 \0 终止的一维字符数组。因此,一个以 null 结尾…

Mysql的学习笔记

目录 1、rc 级别的 mvcc 和 rr 级别的mvcc 有啥区别? 2、Innodb与MyIsam的文件结构? 3、Innodb 与MyIsam的简单对比? 4、innodb,Alter table 改字段类型,底层会经历什么过程? 5、Alter table 改字段类型…

Zebec Protocol 与 PGP 深度合作,将流支付更广泛的应用薪资支付领域

随着传统机构的入局,以及相关加密合规法规的落地,加密支付正在成为一种备受欢迎的全新支付方式。加密支付基于区块链底层,不受地域、时间等的限制,能够实时到账,具备去中心化、非许可等特性。 流支付是一种具备创新性的…