从实模式到保护模式

操作系统学习与实践6:由实模式切换到保护模式 保护模式应该提供内存保护。通过定义内存的使用方式,我们可以确保某些内存位置不能被修改或作为代码执行。80x86 处理器根据全局描述符表 (GDT) 映射内存区域。。如果不遵循 GDT,处理器将生成一般保护故障 (GPF) 异常。因为我们没有设置中断处理程序,所以这会导致三重错误。(3)全局描述符表 (GDT)全局描述符表 (GDT) 定义全局内存映射。它定义了哪些内存可以被执行(代码描述符),以及哪些区域包含数据(数据描述符)。就 GDT 而言,它描述了起始地址和基地址、段限制,甚至虚拟内存。 阅读详情

计算机启动之后,BIOS会初始化计算机,然后计算机开始自动读取磁盘,磁盘读取一个扇区(512字节),当读到某个磁盘0磁道1扇区扇区的最后的结束地址是0xaa55,BIOS就会认为它是一个引导扇区,然后就会把这512字节的内容装载到内存地址0000:7c00处,然后跳转到0000:7c00处将控制权交给这段引导代码,这样BIOS的任务就结束了,操作系统也成功被引导起来了。作为一个引导扇区,它至少有这样3个条件:1.大小只能为512字节(少了可以填充成0,多了则不行)。2.结束地址为0xaa55。3.加载到0000:7c00处。

在IA32下计算机启动之后,CPU有两种工作模式:实模式、保护模式。在实模式下,物理地址=段值x16+偏移,并且段值和偏移都是16位的,从这个公式可以看出段值是具有实际意义的,它作为了地址的一部分。因为实模式下的数据总线只有16位,也就是一次最多能取2^16=64KB,这就是为什么实模式下每个段最大只有64KB,并且它的地址总线为20位,因此能寻址的能力是2^20=1MB,既然有1MB的寻值能力,但是一次只能读取64KB的数据,所以才引入了分段机制。

但是在保护模式下,段值虽然还是16位,但是意义发生了改变,它变成了一个索引,指向一个数据结构的表项,表项中存着段的起始地址、界限和属性等信息,这个数据结构的名字叫GDT(Global Descriptor Table),表项被称为描述符。GDT提供了段式存储机制,由段寄存器和描述符共同实现,而每个描述符都对应了一个段。段寄存器需要对应到相应的段,只需要通过选择子就可实现,选择子其实就是一系列描述符的索引,在段寄存器中存储对应的索引就行了,它的存储结构如图所示。
这里写图片描述在保护模式下,寻址的能力得到了极大的提升,图中RPL占2位,表示段选择子的特权级,TI表示是全局描述符GDT还是局部描述符LDT,索引值有13位,也就是有2^13=8192个段描述符,TI又分GDT和LDT,也就是一共有8192*2=16384个段描述符,可以指定16384个段,每个段的偏移地址值为32位,一个段能达到2^32=4GB,所有段加上就能达到16384*4GB=64TB这么大的寻址能力。

总之,保护模式下的寻址和实模式下有点类似,只是保护模式下的段值指向了GDT中的描述符,通过描述符定位到相应的段,再通过偏移,转换成线性地址,如果没有分页机制,那么该线性地址就是真正的物理地址。

从实模式要转到保护模式,需要以下几个步骤:

第一步就要初始化准备好GDT;

接下来,需要把GDT的物理地址加载到寄存器gdtr中;

然后关闭中断,这是因为保护模式和实模式的中断处理机制不相同;

接着将寄存器cr0的PE位置1,0表示实模式,1表示保护模式;

最后跳转到保护模式。

具体代码参见《ORANGE‘S:一个操作系统的实现》

从零开始搭建环境编写操作系统 AT&T GCC (二)从实模式到保护模式 上午有时间,继续上一篇文章,本篇的主要内容是如何启动保护模式,这样我们可以利用更大的内存来编程了。一、我们创建一个顶层Makefile文件,方便之后我们的编译调试OBJ := system.o loader.o TOP_DIR := $(PWD) OBJ_DIR := $(TOP_DIR)/obj BIN_DIR := $(TOP_DIR)/bin BIN := system.img SUB_DIR 阅读详情

相关推荐

X86汇编语言深入指南:从实模式到保护模式

本文还有配套的精品资源,点击获取 简介:《X86汇编语言:从实模式到保护模式》详细介绍了X86架构处理器从实模式到保护模式的演进过程,包含汇编语言基础、内存管理、中断处理和系统级编程等内容。书中解释了实模式下的内存访问和中断机制,以及保护模式如何通过分页和分段机制提供高级内存管理和保护。作者提供了丰富的汇编代码示例,通过"booktool"工具,读者可以实践和调试代码,加深...

weixin_33608403的博客 1554

从实模式迈向保护模式

实模式转保护模式

qq_40127118的博客 1144

X86从实模式到保护模式 源代码

X86从实模式到保护模式 源代码。

【操作系统】从实模式进入保护模式

从实模式进入到保护模式(不知道为什么要进入的保护模式的可以参考文章:【操作系统】CPU的保护模式与实模式的区别),我们需要进行以下几个步骤: 为什么要打开就不在此赘述了,详细可以查看之前写过的文章:【计算机组成】实模式/保护模式下地址分段(基段地址+偏移地址)的原因,总的来说是旧的CPU(8086/8088之类的)在实模式下地址线为20位(A0~A19),最大寻址空间为0xFFFFF,超出部分会被地址回卷到0重新开始。但是进入到保护模式下我们需要去访问更大的内存空间,所以需要将“地址回卷”这个功能关闭掉

师兄怎么办 2041

《从实模式到保护模式》配书源码和工具

《x86汇编语言:从实模式到保护模式》主要讲述INTEL x86处理器的16位实模式、32位保护模式,至于虚拟8086模式,则是为了兼容传统的8086程序,现在看来已经完全过时,不再进行讲述。《x86汇编语言:从实模式到保护模式》的特色之一是提供了大量典型的源代码。 本资源就是配书工具和源代码

x86汇编语言从实模式到保护模式(完整版)更新过

x86汇编语言从实模式到保护模式,包括后三章,网上大部分缺少后三章。文件太大包内是网盘地址和提取码。之前的过期,已更新。《x86汇编语言:从实模式到保护模式》采用开源的NASM汇编语言编译器和VirtualBox虚拟机软件,以个人计算机广泛采用的Intel处理器为基础,详细讲解了Intel处理器的指令系统和工作模式,以大量的代码演示了16/32/64位软件的开发方法,介绍了处理器的16位实模式和32位保护模式,以及基本的指令系统。, 《x86汇编语言:从实模式到保护模式》是一本有趣的书,它没有把篇幅花在计算一些枯燥的数学题上。相反,它教你如何直接控制硬件,在不借助于BIOS、DOS、Windows、Linux或者任何其他软件支持的情况下来显示字符、读取硬盘数据、控制其他硬件等。《x86汇编语言:从实模式到保护模式》可作为大专院校相关专业学生和计算机编程爱好者的教程。

操作系统从实模式到保护模式

保护模式与分页机制解析 本文介绍了x86架构下的实模式和保护模式特点。实模式使用16位地址直接访问物理内存,存在安全隐患;而保护模式通过GDT表、分页机制和特权级实现了内存隔离和保护。关键内容包括: 实模式到保护模式的转换过程,包括A20地址线启用和CR0寄存器设置 GDT表结构,每个8字节的描述符定义段属性 分页机制原理,通过虚拟地址映射实现大内存空间效果 中断处理流程,包括PIT定时器设置、PIC重映射和IDT初始化 分页机制如何通过虚拟地址空间、按需分配和页面交换实现比物理内存更大的运行空间

qq_45720531的博客 844

【数字电源/MATLAB+PLECS】如何进行 Buck 数字电源仿真(二)PLECS 搭建开环 Buck 功率级

本文介绍了如何在PLECS中搭建开环Buck功率级模型,验证数字电源设计的基本思路。重点内容包括: 明确开发顺序:先开环验证功率级,再闭环设计控制器 搭建关键组件:输入电源、PWM模块、MOSFET开关、续流二极管、LC滤波电路及负载 设置初始参数:24V输入、12V输出、200kHz开关频率、22μH电感、100μF电容 测量关键波形:MOSFET Vds验证开关动作、电感电流纹波和输出电压稳态值 提供完整仿真模型和GitHub资源,便于读者复现验证 文章强调通过开环测试先确保功率级正确性,为后续闭环控制

weixin_43234123的博客 1218

从实模式到保护模式跳转的详解

从实模式到保护模式跳转的详解三年前拿到《自己动手写操作系统》第一版的时候,虽然很有兴趣,但是没有时间详细地看进去,直到前段时间又看到它的第二版出来,兴趣又提上来了。正好此时的工作之余可以深入地研究一下。 第一遍看这段代码,没懂(我承认是个很不聪明的人),只看懂了下面中文描述,说是从实模式跳到保护模式的。 第二遍看这段代码,似乎懂了一些,大约20%吧。 第三遍,第四遍,第五遍........

诗剑书生的专栏 8834

PMF5.0计算

EPA PMF5.0 计算步骤

nuistsy的博客 4534

ESP32-CAM+STM32实战:5步搞定无线图像传输到TFT屏(附完整代码)

本文详细介绍了如何利用ESP32-CAM和STM32实现无线图像传输到TFT屏幕的完整方案。通过5个关键步骤,包括硬件连接、ESP32-CAM配置、STM32数据接收、TFT屏幕驱动及系统优化,开发者可以快速构建高效的图像传输系统。特别介绍了RGB565格式的处理技巧,并提供了完整的代码实现,适用于智能家居、工业监控等多种应用场景。

weixin_30316097的博客 483

x86从实模式到保护模式 pdf_【自制操作系统04】从实模式到保护模式

通过前三章的努力,我们成功将控制权转交给了 loader.asm 这个程序。具体说就是 bios 通过加载并跳转到 0x7c00(IMB大叔们定的) 把控制权转交给了我们操作系统的第一个汇编程序 mbr.asm,然后 mbr.asm 里做的事就是通过加载 loader 程序并跳转到 0x900(这个是我们自己定的)把控制权转交给了 loader.asm 程序,目前这个程序里还只是向屏幕输出一行字符...

weixin_39765697的博客 492

CAN收发器选型避坑指南:TJA1051T与TJA1051T/3的硬件兼容性问题实录

本文详细解析了CAN收发器TJA1051T与TJA1051T/3的硬件兼容性问题,通过实测数据和故障案例揭示了VIO引脚的关键差异及其对系统的影响。提供从选型到验证的完整防坑方案,帮助开发者避免常见设计错误,确保CAN总线通信的稳定性。

weixin_42715608的博客 457

Linux 0.11——从实模式到保护模式

本文章主要讲解保护模式的寻址机制与setup.s中的从实模式到保护模式的切换部分

Ziyang的博客 1582

kivy--入门(一)(Windows)python

从零开始学习kivy 由于课程需要写一个app,还要写报告,这就很愁人,头秃,脑壳大。 虽然学过Android,但是小编对于Java就像对牛弹琴似的,不能说完全不懂,只能说Java这个语言不太适合我,不学还不行,还是先利用python的kivy编写一个吧。 在各大网站搜索开发app,发现适合写手机app的除了Android还有kivy,所以还是先学习如何使用吧! 文章目录从零开始学习kivy前言一、安装二、添加按钮+标签三、文本输入(TextInput)总结 前言 首先推荐这篇博客kivy的安装和使用

刘念卿的博客 9968

别再乱删文件了!修复Print Spooler服务自动停止的3个关键检查点(附Win10/Win11实测)

本文深入解析Windows系统中Print Spooler服务自动停止的常见原因及修复方法。从第三方驱动冲突、权限与服务依赖关系到打印队列积压,提供3个关键检查点的详细排查步骤,帮助用户彻底解决打印服务异常问题,适用于Win10/Win11系统。

weixin_31569671的博客 672

5.从实模式进入保护模式

本文接上一篇博文,在 loader.S中干点正事儿。进入保护模式。 1.什么是保护模式? 最经典的 8086CPU 是只有实模式的。实模式下有很多的不足,所以有了保护模式。 实模式的缺点: 操作系统和用户程序处于同一特权级。 用户程序所引用的地址都是指向真实的物理地址。 用户程序可以自行修改段基址,可以访问所有内存。 访问超过 64KB 的内存区域要切换段基址。 一次只能运行一个程序。 共 20...

keep coding 929

Oracle EBS 中美国销售税的实现方式

Oracle EBS通过eBTax引擎实现美国销售税管理,需配置税务管辖区、税率及规则等要素,基于收货地址和商品分类计税。系统支持免税交易和使用税处理,但因美国税率复杂多变,建议集成Vertex等第三方服务自动更新税率。关键配置包括创建USSales Tax制度、维护地点层级及物料税务分类,同时需管理客户免税证书。对于跨国业务,系统也支持欧盟VAT等其他国家税制配置。

金牌架构师 296

如何从实模式到保护模式?

实模式到保护模式,如何进入保护模式 在还是16位CPU的天下时,并没有实模式这一说。直到CPU发展到32位,推出保护模式后,为了区别两种模式,便将之前的模式称为实模式。处于向下兼容的考虑,现代的CPU依然保持对16位模式的兼容,刚开机时,32位的CPU是先处于16位的实模式的,而后再进入保护模式。 一、实模式 1. 实模式的特点 1、地址总线只使用了20根,寻址范围为220B=1MB。 2、寄存器只使用了16位,所以如果只用单一的寄存器来寻址的话只能访问到216B=64KB的空间。 3、分段,访问内存采用

weixin_46645613的博客 1665

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Freedos在运行时从实模式进入保护模式

台风夜基本是不会睡觉的,写点有意思的。此时,2019年8月10日 2:20. 酷爱历史,于是在主音吉他手的推荐下,在历史的垃圾堆里找到了Freedos。这个从1994年开始的dos兼容开源操作系统。实际上,它就是dos,可以说它是MS-DOS的续命者。 非常令人震惊,2016年至今,这个Freedos竟然依然活跃。我以前竟然不知道这个。 我一直以为1994年和现在的201X年对于计算机这个特定的领...

TCP/IP 4836

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

【读书笔记】从实模式到保护模式

用电表示数据寄存器的作用:具有记忆功能的器件。锁存可以通过下面的开关控制,平时开关为空,按下开关之后,将输入锁存起来。锁存之后右面灯泡就就不会变化了,除非再次按下锁存开关。下面的开关是关着的,有间隙,是上下按的。带有寄存器的加法机如何工作:每次输入/数字后存入寄存器,而不是多组线进行输入。再入加减乘除就是多了其他控制开关,上面的加减乘除是每个开关,其他控制的地方也可以用一组01值来表示各类操作。

努力充实,远方可期 1550

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

从实模式跳入保护模式0

编译器:nasm 虚拟机:bochs 操作系统:macosx 两个汇编程序boot.s和init.s boot.s模拟引导程序,写入启动盘的0磁道,1扇区(512字节)中,在操作系统启动时,被bios加载进0x7c00处,并从这开始执行,它负责把init.s读入内存0x10000处,然后拷贝到0x0处,到这为止操作系统都运行在实模式下 (实模式的寻址方式是段地址<<4 +...

fxnfk 700
上一篇: 线程同步(互斥锁、读写锁、条件变量、信号量)
下一篇: ARP协议:地址解析协议
UKey_
博客等级 码龄10年 258粉丝 186原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值