一步步编写操作系统 58 门、调用门与RPL序 3

接前文:

并不是任何当前特权级都可以使用门结构, 在使用门结构之前,处理器要例行公事做特权级检查,参与检查的不只是CPL和DPL,还有RPL,为了说清楚这个检查过程,咱们得先介绍下RPL。

RPL,即请求特权级,为了解释清楚,咱们得多花点工夫好好说道说道。

我们本节始终在说特权级转移,处理器从一个特权级转移到另一个特权级,任意时刻处理器所处的特权级称为当前特权级。重复叙述的目的是强调当前特权级是对处理器而言的概念,并不是对代码段而言。当前特权级CPL是指处理器任意时刻的身份地位,其变化的原因是处理器从某一特权级的代码段转移到另一特权级的代码段上运行,代码段的特权级DPL是未来处理器的CPL。

各种门结构存在的目的就是为了让处理器提升特权级,这样处理器才能够做一些低特权级下无法完成的工作。比如,当用户程序想读取硬盘文件时,由于处理器在执行用户程序时所处的特权级为3,一般情况下操作系统不允许用户程序操作硬盘。此时必须由用户代码指挥处理器使用某种门结构(如调用门)进入0特权级,在提升了处理器的CPL之后才能控制硬盘、读取文件。是不是说的有些抽象?其实就是用户程序进行系统调用使处理器进入内核态执行内核服务。

当处理器提升为0特权级时,任何事情都能做,是最强大同时也是最危险的状态,如果用户程序通过某种门结构使处理器进入到0特权级,它很有可能会被3特权级的用户程序利用,这样用户程序就有机会访问0特权级下的数据。

调用门是一个描述符,称为门描述符,其中记录的是内核服务程序所在代码段的选择子及在代码段中的偏移地址。门描述符是定义在全局描述符表GDT和局部描述符表LDT中,所以,要想使用调用门,就要通过门描述符的选择子,这一点和访问数据段类似,总之,保护模式下离不开描述符,有描述符就离不开选择子。

我们平时很少有人直接和调用门打交道,大多数程序员甚至都不知道调用门是怎么回事,所以在接触调用门时通常会感到有些吃力,这是由三方面造成的:

  1. 我们大多数情况下是用高级语言编程,编译器或集成开发环境为我们做了太多的工作,大大方便了我们的编码方式,而调用门是在汇编语言下使用的方法,不做底层开发的话我们根本就碰不到它。
  2. 调用门是用来实现系统调用的,但为了兼容等原因,我们平时接触的操作系统很少有使用调用门实现系统调用,如Linux就是用中断门代替。我们顶多听说过中断门,对调用门了解少之又少。
  3. 调用门一般在过去多段模型下使用,大多数情况下需要为调用门指定段选择子。而现在操作系统为了方便,早已经采用了平坦模型,所有用户进程共享几个选择子,比如用户代码段选择子和用户数据段选择子各一个,由所有用户进程共享,用户进程不需要再提供选择子,所以调用门可以用中断门代替了。

综上所述,调用门是在汇编语言中使用,能发挥其特长的场所是多段模型,若没有此方面的编程经验,大家先提前有个印象,也没什么复杂的,仅仅是大家很少接触而已。

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

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

相关文章

详解车道线检测数据集和模型 VIL-100: A New Dataset and A Baseline Model for Video Instance Lane Detection

本文介绍一个新的车道线数据集 VIL-100 和检测模型 MMA-Net,论文已收录于 ICCV2021,重点是理解本文提出的 LGMA 模块,用于聚合局部和全局记忆特征。 论文链接:https://arxiv.org/abs/2108.08482 项目链接:https://gi…

【HDU - 6081】度度熊的王国战略(SW算法,全局最小割)

题干: Problem Description 度度熊国王率领着喵哈哈族的勇士,准备进攻哗啦啦族。 哗啦啦族是一个强悍的民族,里面有充满智慧的谋士,拥有无穷力量的战士。 所以这一场战争,将会十分艰难。 为了更好的进攻哗啦啦族&#…

七天入门图像分割(1):图像分割综述

最近在研究自动驾驶视觉语义地图构建,因为要使用到语义分割技术,趁此机会学习了百度飞桨的图像分割课程,课程蛮好的,收获也蛮大的。 课程地址:https://aistudio.baidu.com/aistudio/course/introduce/1767 1. 课程简要…

一步步编写操作系统 59 cpu的IO特权级1

在保护模式下,处理器中的“阶级”不仅体现在数据和代码的访问,还体现在指令中。 一方面将指令分级的原因是,有些指令的执行对计算机有着严重的影响,它们只有在0特权级下被执行,因此被称为特权指令(Privile…

重读经典:《ImageNet Classification with Deep Convolutional Neural Networks》

9年后重读深度学习奠基作之一:AlexNet【下】【论文精读】这两天偶然间在B站看了李沐博士对AlexNet论文的重新解读,收获满满。AlexNet是当今深度学习浪潮奠基作之一,发表在2012年。在视频中,李沐博士主要是分享了他的三步法快速读论…

一步步编写操作系统 60 cpu的IO特权级2 什么是驱动程序

用户程序可以在由操作系统加载时通过指定整个eflags设置,操作系统如何设置自己的IOPL呢,即使内核IOPL为0也得写进去eflags寄存器中才生效。可惜的是,没有直接读写eflags寄存器的指令,不过可以通过将栈中数据弹出到eflags寄存器中来…

详解惯性导航论文 RINS-W: Robust Inertial Navigation System on Wheels

本文介绍一篇惯性导航定位论文 RINS-W,论文发表于 IROS2019。在本论文中作者提出了仅使用一个IMU进行长时间惯性导航的方法。方法主要包括两个部分: 检测器使用循环神经网络来检测IMU的运动状况,如零速或零横向滑移;使用Invarian…

【HDU - 5988】Coding Contest(网络流费用流,改模板)

题干: A coding contest will be held in this university, in a huge playground. The whole playground would be divided into N blocks, and there would be M directed paths linking these blocks. The i-th path goes from the uiui-th block to the vivi-t…

一步步编写操作系统 61 任务状态段 TSS

I/O位图是位于TSS中的,它可以存在也可以不存在,它只是用来设置对某些特定端口的访问,没有它的话便默认为禁止访问所有端口。正是由于它可有可用,所以TSS的段界限TSS limit(即实际大小-1)并不固定。当TSS中不…

重读经典:《Deep Residual Learning for Image Recognition》

ResNet论文逐段精读【论文精读】这是李沐博士论文精读的第二篇论文,这次精读的论文是ResNet。ResNet 是 CVPR2016 的最佳论文,目前谷歌学术显示其被引用数已经达到了90000。 ResNet论文链接为:https://arxiv.org/abs/1512.03385。 1.第一遍 …

【CodeForces - 1131F 】Asya And Kittens(并查集,思维)

题干: Asya loves animals very much. Recently, she purchased nn kittens, enumerated them from 11 and nn and then put them into the cage. The cage consists of one row of nncells, enumerated with integers from 11 to nn from left to right. Adjacent…

关于Xldown和Xlup的用法(Excel VBA)

Xldown和xlup是一对组合,用于寻找某个区间中的非空单元格。 首先我们在单元格的前7行填入如下数据: A1单元格: A2单元格:2 A3单元格:3 A4单元格:4 A5单元格: A6单元格:6 A7单元格&am…

详解道路标记数据集 CeyMo: See More on Roads -- A Novel Benchmark Dataset for Road Marking Detection

本文介绍一个新的道路标记检测数据集,论文收录于 WACV2022。Ceymo数据集总共包含2887张图片,标注了11类共4706个道路标记实例,图片分辨率为 192010801920\times108019201080。其中,对于每一个道路标记实例,作者采用了三…

VBA类之一(初识类)

第一章 开头篇 ——认识类 Visual Basic是基于对象的编程(注:本文所有的代码和讨论将都以VB为基础模型,不过我会尽量使用一些大家在VBA中常见的例子来做说明的。),所以我们常见的一些东西其实都与类有关。不…

【HDU - 5009】Paint Pearls(dp,链表优化dp)

题干: Lee has a string of n pearls. In the beginning, all the pearls have no color. He plans to color the pearls to make it more fascinating. He drew his ideal pattern of the string on a paper and asks for your help. In each operation, he sele…

动手学无人驾驶(7):车道线检测

最近在研究视觉语义地图,需要进行车道线检测,发现这篇车道线检测论文效果蛮好的 (Ultra Fast Structure-aware Deep Lane Detection)。论文作者在知乎上已经介绍过了:https://zhuanlan.zhihu.com/p/157530787&#xff…

Coursera自动驾驶课程第16讲:LIDAR Sensing

在第15讲《Coursera自动驾驶课程第15讲:GNSS and INS Sensing for Pose Estimation》 我们学习了自动驾驶定位中常用的两种传感器:IMU(惯性测量单元) 和GNSS(全球导航卫星系统)。 本讲我们将学习自动驾驶汽…

DB、ETL、DW、OLAP、DM、BI关系结构图

在此大概用口水话简单叙述一下他们几个概念: (1)DB/Database/数据库——这里一般指的就是OLTP数据库,在线事物数据库,用来支持生产的,比如超市的买卖系统。DB保留的是数据信息的最新状态,只有一…

Tarjan 算法 常用模板

可以求每个点属于第几个强连通分量&#xff1a;https://blog.csdn.net/dellaserss/article/details/8267192 int Tarjan(int u){int v;dfn[u]low[u]Index;stack[Top]u;Instack[u]1;for(int i0;i<G[u].size();i){vG[u][i];if(!dfn[v]){Tarjan(v);low[u]min(low[u],low[v]);}…

【HDU - 5012】Dice(模拟,bfs)

题干&#xff1a; There are 2 special dices on the table. On each face of the dice, a distinct number was written. Consider a 1.a 2,a 3,a 4,a 5,a 6 to be numbers written on top face, bottom face, left face, right face, front face and back face of dice A. S…