【OS学习笔记】十三 保护模式一:全局描述符表(GDT)

上一篇文章,我们大致领略了现代处理器的结构和特点。点解链接查看上一篇文章:现代处理器的结构和特点

本篇文章开始,学习保护模式下的的各种机制。什么是保护模式呢?

一般来说,操作系统负责整个计算机软硬件的的管理,它做任何事情都是可以的。但是用户程序就应当有所限制,用户程序它只能访问自己的数据自己的代码,即使是转移,也只允许在自己的各个代码段之间进行转移。

但是,在本篇文章之前,我们学习的各种机制下,用户代码对内存的访问是非常自由的,没有人管!它想访问哪里就访问哪里。如果一不小心,访问到了操作系统的代码段或者操作系统的数据段,并将其修改,那么就会发生无法预测的错误!

在多用户,多任务时代,内存中会存在很多的用户程序在运行。此时我们应该让他们彼此之间有一个间隔,让他们彼此不会因为不小心修改了彼此的代码或者数据而导致出错。那么如何实现?

其实就是我们即将要学习的保护模式的内容了。

1、全局描述符表(GDT)

在进入保护模式之前。首先来介绍一下,全局描述符表(Global Descriptor Table,GDT)。

在实模式下,处理器将内存分为逻辑上的段,在访问内存时,在指令中,使用段内偏移地址。这在之前的文章学习的很深刻了。

在保护模式下,就不太一样了。对内存的访问,依然使用段地址加偏移地址,但是,在每个段能够进行访问之前,必须先进行登记。

为什么进行登记呢?我们上面有一个疑问就是如何让各个用户程序彼此隔开,说白了就是让它们不要访问彼此的代码与数据以防造成混乱。 那么在这里,我们对各个用程序的段,进行登记,并记录各个段是属于哪个用户程序啊,各个段的大小以及属性啊之类的,对这些信息进行登记,当一个程序想要访问一个地址的时候,我们首先查看这个段是否是这个用户程序能够访问的,如果不能,就产生一个段错误之类的信息给用户,这样的话,看起来可以达到我们的目的:让各个用户程序隔离。

那么,和一个段有关的信息,需要8字节来描述,称为段描述符。每个段都需要一个描述符。为了存放这些描述符,需要在内存中开辟一段内存空间用于存放各个段的描述符。这些集中存放在一起的描述符构成了描述附表。

最主要的描述符表示全局描述符表(Global Descriptor Table,GDT),所谓全局,意味着该表是为整个软硬件系统服务的。对应的还有一个局部描述符表(LDT),这在后面会进行学习。

因为在进入保护模式之后,处理器立即需要按新的内存访问模式工作,所以必须在进入保护模式之前,就定义好GDT。但是由于在实模式下,只能访问1M以下的内存,所以如下图,在进入保护模式前,我们定义的GDT大致就是在下图中的位置:
在这里插入图片描述

上面的GDT放在1M以下指示为了兼容实模式。在进入保护模式后,可以修改全局描述符表的位置。

上述的GDTR是什么?

为了跟踪全局描述符表,处理器内部有一个48位的寄存器,称为全局描述符表寄存器(GDTR)。该寄存器分为两部分,分别是32位的线性地址和16位的边界。如下图所示:
在这里插入图片描述

  • GDTR的32位线性地址部分八寸的是全局描述符表在内存中的位置
  • GDTR的16位边界部分保存的是 全局描述符表的边界(界限),其在数值上等于表的大小(总字节数)减一。

因为GDT的界限值是16位的,所以该表最大是216字节,也就是65536字节(64KB)。又因为一个描述符占用8字节,故最多可以定义8192个描述符。

2、总结

循序渐进,本文只记录学习全局描述符表。理解GDT与GDTR。

笔记记得不是很全,如果有不懂的可以加我联系方式一起交流。

学习探讨加个人:
qq:1126137994
微信:liu1126137994

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

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

相关文章

众多SEO专家集体盛赞

《SEO实战密码》将给你思路、眼界和方法的拓展之道。选一个适宜阅读的角落,一杯咖啡,一支笔,听Zac系统地讲SEO知识、见解和经验分享吧。我们都知道,你的竞争对手也会是Zac的粉丝。 葛小飞(天真)&#xff0c…

前端学习(173):格式化文本二

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/ html4/strict.dtd"> <html><head><meta http-equiv"content-type" content"text/html; charsetutf-8"><title>格式化</…

线程安全-常用的模式

线程安全-常用的模式1.对象安全发布的几种方式2. 线程安容器3.使用静态初始化器 发布安全对象4. 扩展4.1 名词解释4.2 互斥的理解4.3 同步的理解4.4 安全发布1.对象安全发布的几种方式 安全发布一个对象&#xff0c;对象的引用和对象的状态&#xff0c;必须是对其他对象可见的。…

【OS学习笔记】十四 保护模式二:段描述符

上一篇文章初步进入保护模式的学习。首先学习了全局描述符表GDT。点击链接查看上一篇文章&#xff1a;全局描述符表 本篇文章继续学习&#xff0c;GDT中存放的条目&#xff1a;描述符&#xff0c;确切的说是段描述符。学习段描述符的作用以及段描述符的格式。 1、段描述符的格…

11月最流行的笑话

我说这位大哥&#xff0c;我又不是草船&#xff0c;你的贱用不着总往我这儿乱发&#xff01; 如果我的人生是一部电影&#xff0c;你就是那弹出来的广告。 别跟姐问东问西&#xff0c;baidu比姐懂的多&#xff0c;有问题找他去&#xff01; 没有谁瞧不起你&#xff0c;因为别人…

前端学习(174):图片热区链接

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/ html4/strict.dtd"> <html><head><meta http-equiv"content-type" content"text/html; charsetutf-8"><title>超链接——图…

软件基础思维导图

软件基础1.进程和线程的多种状态2.软件基础1.进程和线程的多种状态 2.软件基础

【OS学习笔记】十五 保护模式三:保护模式下的内存访问机制

上一篇文章学习了段描述符与段描述符各个标志位的含义&#xff1a;段描述符 本篇文章学习如何进入保护模式&#xff0c;并学习如何在保护模式下进行内存访问。 1、如何进入保护模式 假设我们已经用汇编语言将段描述符安装到GDT中&#xff08;具体的汇编代码在后面的文章中会…

前端学习(175):弹窗

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/ html4/strict.dtd"> <html><head><meta http-equiv"content-type" content"text/html; charsetutf-8"><title>超链接——J…

存储过程里调用另一个存储过程的值

第一种: USE [WMS]GO DECLARE return_value int EXEC return_value [dbo].[Sys_GetSysNo] NoCode ND001 SELECT Return Value return_value GO 第二种:创建一个临时表 create proc GetUserNameasbegin select UserNameend Create table #tempTable (userName nvarchar(…

【OS学习笔记】十六 保护模式四:进入保护模式与在保护模式下访问内存的汇编代码

本文记录的是之前四篇文章所对应的汇编代码。四篇文章分别是&#xff1a; 【OS学习笔记】十二 现代处理器的结构和特点【OS学习笔记】十三 保护模式一&#xff1a;全局描述符表&#xff08;GDT&#xff09;【OS学习笔记】十四 保护模式二&#xff1a;段描述符【OS学习笔记】十…

前端学习(176):列表元素

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/ html4/strict.dtd"> <html><head><meta http-equiv"content-type" content"text/html; charsetutf-8"><title>有序列表<…

RDLC报表---自定义数据集

//连接字符串stringconnstr "Data Source.;Initial CatalogWWALMDB;User IDsa;Passwordsqlsql";//新建连接SqlConnection connection newSqlConnection(connstr);//查询命令SqlCommand command newSqlCommand(textBoxSQL.Text, connection);//适配器SqlDataAdapter a…

设计模式-装饰者模式

1. 场景 很经典的一个场景 咖啡类型 espresso&#xff08;意大利咖啡&#xff09;&#xff0c;shortblack,LongBlack(美食咖啡)&#xff0c;Decaf(无因咖啡)调料 Milk ,Soy(豆浆)&#xff0c;Chocolate费用 不同的咖啡价格是不同的&#xff0c;而且有 咖啡调料的类型组合 每个咖…

【OS学习笔记】十七 保护模式五:保护模式下如何进行内存保护 与 别名段的意义与作用

上一篇文章学习了如何进入保护模式&#xff0c;以及如何在保护模式下进行内存访问。点击链接查看上一篇文章&#xff1a;进入保护模式与在保护模式下访问内存 首先说明本片文章有对应的汇编代码&#xff0c;点击链接查看&#xff1a;点击查看 本篇文章接着学习。我们已经知道…

前端学习(177):定义列表

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/ html4/strict.dtd"> <html><head><meta http-equiv"content-type" content"text/html; charsetutf-8"><title>定义列表<…

oracle 数据库工作总结思维导图

oracle 数据库工作中使用总1. oracle 数据库 工作中使用总结思维导图2 解析oracle执行计划1. oracle 数据库 工作中使用总结思维导图 2 解析oracle执行计划 执行计划树的基本规则如下&#xff1a; 执行计划将包含一个根&#xff0c;没有父&#xff08;操作&#xff09; 父&…

【软件开发底层知识修炼】十一 链接器-链接脚本

上一篇文章学习了链接器之-main函数不是第一个执行的函数:main函数不是第一个执行的函数 今天继续学习链接器&#xff0c;学习链接是如何动作的&#xff0c;从而引入链接脚本的概念。本文就学习链接脚本的概念。 1、链接脚本的作用 我们都知道可重定位文件经过链接器链接后最…

as3 physaxe 2d 物理引擎

http://drawlogic.com/2008/04/06/physaxe-2d-flash-physics-kit-for-haxe-and-list-of-flash-flex-actionscript-physics-engines-for-as3/转载于:https://www.cnblogs.com/vilyLei/archive/2010/11/30/1892298.html

前端学习(178):表格元素

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/ html4/strict.dtd"> <html><head><meta http-equiv"content-type" content"text/html; charsetutf-8"><title>表格</ti…