【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>格式化</…

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

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

前端学习(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…

前端学习(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>有序列表<…

设计模式-装饰者模式

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、链接脚本的作用 我们都知道可重定位文件经过链接器链接后最…

前端学习(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…

java后端分享整理

java规范总结1. Java 常见的代码规范1.1. Java 自带的工具方法1.1.1 比较两个对象是否相等1.1.2 apache commons工具类库1.1.2.1 字符串判空1.1.2.3 重复拼接字符串1.1.2.4 格式化日期1.1.2.4 包装临时对象 &#xff08;不是特别常用&#xff09;1.1.3 common-beanutils 操作对…

SharePoint要在master page中动态显示List数据的几种方式

我们都知道&#xff0c;在SharePoint中&#xff0c;Content page继承自Page layout&#xff0c;而Page layout又继承自Master page。Master page的作用大家都知道&#xff0c;它定义了站点的的整体外观和公共元素&#xff0c;因此有了很强的页面重用性和很好的页面编辑体验&…

前端学习(179):表单元素

<!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…

【软件开发底层知识修炼】十二 C/C++语言中内嵌汇编语言(asm)

上一篇文章学习了链接脚本的语法与相关概念&#xff1a;链接脚本的概念 在继续学习链接器的内容的同时&#xff0c;先学习一个新内容&#xff1a;内嵌汇编。 GCC编译器一般支持C/C内嵌汇编语言&#xff0c;这样可以实现语言本身无法实现的内容。我们本文主要介绍C语言中的内嵌…

数据思维整理

数据思维整理分享

windows7下iis网站的.net框架版本设置

昨天下载了 VS2010 创建了一个默认的WebApplication&#xff0c;想看看在iis中运行的情况&#xff0c;虽说用了几个月的 win7 &#xff0c;但还从没有用过IIS。首先给人的感觉是IIS变化很大&#xff0c;多出了很多东西&#xff0c;让人感到很茫然。 先建个网站试试&#xff0c;…