操作系统中的特权级检查

这里涉及到的几个概念:DPL、RPL、CPL

DPL:存在于段描述符中,描述访问此段的最低特权级,即访问此段的进程CPL和RPL必须大于等于此段的DPL

RPL:存在于段选择符中的最低两位,成为请求特权级即进程的请求权限,这个可以由程序员自己设置但是其功能受到CPL的制约

CPL:存在于cs和ss寄存器中的最低两位,是当前执行程序或者任务的特权级。

一个段描述符的DPL为0表示只允许内核层的进程访问,为3表示允许任意进程访问。

在实模式下,由于段寄存器是16位的,地址线有20根,当时的寻址是通过段寄存器中的值左移4位然后加上一个16位的地址值

而在保护模式下,32根地址线,段选择符中的作用就是使用其高13位作为段索引,指向GDT或者LDT中的某一项,第三位就表示在GDT还是在LDT。

而GDT和LDT的基址都有专门的寄存器保存。

时间: 2024-10-26 14:08:37

操作系统中的特权级检查的相关文章

操作系统学习(九) 、访问数据段时的特权级检查

为了访问数据段中的操作数,数据段的段选择符必须被加载进数据段寄存器(DS,ES,FS或GS)或堆栈段寄存器(SS)中.可以使用指令MOV.POP.LDS.LES.LFS.lGS和LSS来加载段寄存器. 在把一个段选择符加载进段寄存器之前,处理器会进行特权级检查,它会把当前运行程序或任务的CPL.段选择符的RPL和段描述符的DPL进行比较.只有当段的DPL数值大于或等于CPL和RPL时,处理器才会把选择符加载进段寄存器中.否则就会产生一个一般保护异常,并且不加载段选择符. 访问数据段时的特权级检查

第十七课 保护模式中的特权级(下)

问题: 使用调用门如何实现不同特权级代码之间的跳转(如:从高特权级到低特权级)? 不幸的事实: 调用门只支持从低特权级到高特权级执行 无法利用调用门从高特权级到低特权级执行 从高特权级的代码段通过return  far可以返回到低特权级的代码段执行.这时return  far是一个跳转指令,完成从高特权级到低特权级的跳转,这正是我们想要的. return的本质是做跳转的,而不是我们根深蒂固的做返回的.只是最常用的方式是做返回使用. 思路整理: 调用门的特权级跳转: 1.通过远调用(call  f

第16课 - 保护模式中的特权级(中)

一种新的描述符:门描述符(Gate Descriptor) 通过门描述符在不同特权级的代码间进行跳转 根据应用场景的不同,门描述符分为: 调用门(Call Gates) 中断门(Interrupt Gates) 陷阱门(Trap Gate) 任务门(Task Gate) 门描述符的内存结构 每一个门描述符占用8字节内存 不同类项门描述的内存含义不同 调用门描述符(Call Gates)的定义 调用门描述符的工作原理 调用门描述符的使用 汇编小贴士 汇编语言中的跳转方式 段内跳转:call,jmp

保护模式下的特权级检查

http://weibo.com/oA53NcVF=05Gp/1001604186124800122428蝗史录颂窗DHJ灾杏匾却 http://weibo.com/38w6WQw0=qZGp/1001604186124863037468右赘列焉寐CTU期倨挛婆 http://weibo.com/Uq14g91D=5gXp/1001604186124816899756忱阶反豪头TSK夯忻眉呀 http://weibo.com/065JmsW1=2qZp/100160418612503500875

任务和特权级保护

本文为<x86汇编语言:从实模式到保护模式> 第14章笔记 任务的隔离和特权级保护 任务, 任务的LDT和TSS 程序是记录在载体上的指令和数据, 总是为了完成某个特定的工作, 其正在执行中的一个副本, 叫做任务(Task). 这句话的意思是说, 如果一个程序有多个副本正在内存中运行, 那么, 它对应着多个任务, 每一个副本都是一个任务. 为了有效的在任务之间实施隔离, 处理器建议每个任务都应当具有自己的描述符表, 称为局部描述符表LDT, 并且把属于自己的那些段放到LDT中. 和GDT一样,

任务的隔离和特权级保护

任务,任务的LDT和TSS ??程序是记录在载体上的指令和数据,其正在执行的一个副本,叫做任务(Task).如果一个程序有多个副本正在内存中运行,那么他对应多个任务,每一个副本都是一个任务.为了有效地在任务之间进行隔离,处理器建议每个任务都应该具有他自己的描述符表,称为局部描述符表LDT(Local Descriptor Table).LDT和GDT一样也是用来储存描述符的,但是LDT是只属于某个任务的.每个任务是有的段,都应该在LDT中进行描述,和GDT不同的是,LDT的0位也是有效的,也可以

《一个操作系统的实现》读书笔记--第三章---不同特权级代码段之间的跳转

http://blog.csdn.net/begginghard/article/details/7262901 1.特权级 2.一致代码段和非一致代码段 3.DPL.RPL.CPL分别代表的含义,存储在什么位置,以及它们之间的关系 4.不同特权级数据段之间的访问规则 5.不同特权级代码段之间的转移 6.代码段之间的转移对堆栈的影响 7.结合pmtest5.asm来见证不同特权级代码段之间的跳转 一.特权级在IA32的分段机制下,特权级总共有4个特权级别,从高到低分别是0.1.2.3.数字越小表

保护模式特权级概述

在IA32的操作系统中,段被分为了4个特权级,分别为0-3级,有时候我们也叫做ring0-ring3,其中,数值越小特权级越高.如下图所示: 图中,核心代码和数据所在的段的特权级都比较高,一般在ring0,而用户程序所在的段的特权级较低,一般在ring3.当低特权级的任务试图在未被允许的情况下访问高特权级的段时,将会产生常规保护错误. 而处理器是如何区分所在段的特权级,进而对其进行保护的呢?这就不得不提到CPL.DPL和RPL三者了.但是在开始之前,我们需要先了解一下一致代码段和非一致代码段.

Linux操作系统中FastDFS部署手册

关于Linux操作系统中FastDFS部署手册 1.       部署环境 关于本次FastDFS_3.11版本的部署实验环境如下表所示: FastDFS部署环境 类别 OS FastDFS 机器台数 备注 版本 RedHat_Linux.5.4-x86_64 FastDFS_v3.11 2 表格 1 2.       组件和包安装 安装开发工具和所需的开发包 配置yum升级服务或安装系统时选择安装相关的依赖组件,这里使用yum对包进行安装,如下所示: yum groupinstall-y "d