80386保护模式编程模型

80386保护模式编程深入指南 本文还有配套的精品资源,点击获取 简介:80386处理器在保护模式下为现代操作系统提供了基础,实现了内存保护、多任务处理和虚拟内存等特性。本文深入探讨保护模式的概念、80386架构及其保护模式编程,包括启动保护模式、内存管理机制、内存保护、多任务处理、中断与异常处理、编程实践和系统调用等方面。 1. 保护模式概念 1.1 保护模式的定义 保护模式是x8... 阅读详情

一、概述

所谓的保护模式就是在此模式下,CPU利用对虚拟地址的支持为系统资源(内存,I/O等)提供不同的权限级别,操作系统和用户程序的权限不同,所能访问的资源也不同,同时虚拟地址也进程资源共享,进程管理提供了有力支持。

二、保护模式下的段机制

2.1、段寻址

保护模式下的段机制和实模式下是大相径庭的,在保护模式下,虚拟地址也以段来管理,举例如下:

mov eax fs:[12345678h]的含义是寻址fs对应的段的偏移量为12345678h的双字,其实这里的fs寄存器里的值并不是实模式下的段基址的意义,而是一个段描述符表中的索引值和其他信息,称作段选择子,段选择子结构见下图:

* INDEX,寻址段描述符在段描述表中的索引

* TI=0,表示段描述符在全局描述符表中,1表示在局部描述附表中

* RPL,表示此段的权限,当此段为代码段时,RPL就是CPL,值越小权限越大(操作系统内核0级,操作系统其他部分1级,中间层2级,用户程序3级)

* 描述符的查找有高速缓冲支持。

2.2、段描述

段描述表分为全局描述附表GDT(描述操作系统等全局共享的段)和局部描述符表LDT(任务私有的段),描述符表中的每一项都占用8个字节,描述符表中占用的段分为3中,系统段,存储段及门。

◆ 系统段和存储段有着相同的描述结构,见下图:

* 如上图所示,段基址和段界限以及粒度(G)设定了段的起始地址,大小,当G=1时表示粒度为4KB,段的大小可以是4GB,段基址用32位表示是没有粒度要求的。

* DT=1时表示此段是存储段,是程序可以直接访问的段,DT=0是表示此段是操作系统维护的段。

* DPL表示段的访问权限

* P=1时表示此段无效

* AVL,Intel未规定,软件可利用

* D在存储段的情况下,又分为如下3中情况(此位在系统段中不使用):

   ** 当此段是可执行段时,D=1标志指令默认工作在32位模式,否则工作在16位模式。

   ** 当此段是向下扩展段时,D=1表示段的上部边界为4GB,否则为64K。

   ** 当此段是SS指向的段时(堆栈段),D=1表示PUSH,POP工作在32位模式,否则工作在16位模式。

*TYPE

  **存储段的访问属性,见下图。

**系统段和门的属性见下图:

◆ 门段的结构图如下所示:

2.3、段访问

◆ 控制寄存器如下图所示:

* CRO

PG=0,PE=0时,实模式

PG=0,PE=1时,保护模式,无分页机制(虚拟地址直接对应物理地址)

PG=1,PE=0时,非法

PG=1,PE=1时,保护模式,启用分页机制

* CR1 保留

* CR2 页故障线性地址

* CR3 的高20位是也目录表起始地址,低20位为0。

GDTR保存全局描述符表的起始地址和界限,粒度为字节。

IDTR保存中断描述符秒的起始地址和界限,粒度为字节

LDTR保存局部描述符表在GDT中的段选择子,有高速缓冲支持。

TR保存任务状态段在GDT中的段选择子,有高速缓冲支持。

三、保护模式下的页机制

参见本博客的80x86的内存组织

保护模式下的80386及其编程 扫描版 pdf 保护模式下的80386及其编程 pdf,扫描版的 立即下载

相关推荐

笔记_保护模式下的80386编程.pdf

笔记_保护模式下的80386编程

80386的寄存器 摘

 80386的寄存器可以分为8组:通用寄存器,段寄存器,指令指针寄存器,标志寄存器,系统地址寄存器,控制寄存器,调试寄存器,测试寄存器,它们的宽度都是32位的。本篇主要介绍80386的寄存器。    A1.General Register(通用寄存器)    EAX,EBX,ECX,EDX,ESI,EDI,ESP,EBP,它们的低16位就是8086的AX,BX,CX,DX,SI,DI,SP,BP,

nature 649

深入80386 保护模式编程之学习笔记.pdf

深入80386 保护模式编程之学习笔记,对保护模式有较为详细的讲解。

《Programming the 80386》与《保护方式下的80386及其编程》

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33923148的博客 1661

保护方式下80386及其编程

超星pdg<br><br>保护方式下80386及其编程<br><br>

保护方式下的80386及其编程.rar

保护方式下的80386及其编程.rar

intel386中文译稿(转)

hzqt210的专栏 1240

保护方式下的80386及其编程

介绍x86保护模式编程的一本难得的好书。 本书全面地介绍了80386的结构。首先是80386实模式和保护模式下的寄存器集和指令集,接着从保护模式下的虚存管理、保护级、多任务支持、中断和异常等方面深入地剖析386的强大功能,再接着提供几个典型的编程实例以及一个完整的从386加电初始化开始到形成一个有基本的多任务和虚拟存储能力的系统的例子并作了详细解释,最后还清楚地说明了80386与8086/80286的兼容性和差别。本书的特点是严谨深入,对CPU各种条件下的动作和反应用形式化的微程序讲解得十分清楚,尤其适合系统程序员阅读。

Chapter 2 Basic Programming Model

<br />Chapter 2 Basic Programming Model<br />────────────────────────────────────────────────────────────────────────────<br />This chapter describes the 80386 application programming environment as<br />seen by assembly language programmers when the proce

woshizhk的专栏 386

保护模式下的80386及其编程

一本老书,介绍了在保护模式下intel的x86架构编程的一些知识,还是有实用价值的

制造业与工业知识图谱应用

在全球数字化转型背景下,制造业面临创新周期缩短、质量管控精细化等挑战。知识图谱技术通过结构化表示工业知识,为智能制造提供关键技术支撑。工业知识图谱具有专业性强、多源异构数据融合、实时性要求高等特点,其构建流程涵盖本体设计、知识抽取与整合等环节。研究显示,知识图谱与大模型结合可提升工业场景的智能化水平,在设备故障诊断、供应链优化等领域具有显著应用价值。该技术有望成为制造业数字化转型的核心驱动力。

分享一些感兴趣的技术方面 1435

80386保护模式总结

大学也上过微机原理,但那个时候整天玩PHP,VC++,C# .net...数据库管理系统...没有意识到她是一门非常重要的课。于是上这些基础课的时候都在下面看那些xxx从入门到精通之类的书了或者干脆翘了去图书馆看(当然我不会否认正是因为这些书让我玩计算机的兴趣坚持了下去)。大学毕业同学都把书卖了。我当时感到像微机原理组成原理之类的书可能以后有用,于是没有卖(因为我知道自己的兴趣所在)。 毕业后

※旅程※ 5848

Plot3d 网格数据格式

PLOT3D是一个计算机图形程序,旨在可视化计算流体力学的网格和解决方案。PLOT3D文件可以是ASCII, 也可是Fortran unformatted 或 C binary形式。PLOT3D文件分为网格文件(XYZ 文件), 空气动力学结果文件 (Q 文件)和通用结果文件(函数文件 + 函数名称文件)。网格文件中可加入所谓的IBlank参数。

weixin_62592231的博客 3720

Intel 80386的保护模式

<br />1. 实地址模式<br /> <br />当CPU通电或RESET时,cr0的PE位置0, 进入实地址模式。这里不在赘述。<br /> <br />2. 保护模式<br /> <br />80386提供分段和分页两种存储管理模式<br /> <br />●分段管理的特点:对存储空间的逻辑划分,优点:对模块化(结构化)程序设计方式提供了很好的支持;缺点:①段长可变不固定, 管理更复杂、②空间碎片较多、③访问字节数∕传输字节可能很小<br /> <br />●分页管理的特点:对存储空间的物理划分,优

云(存储),松(耦合) 1919

java modbus通讯协议_Modbus通 讯 协 议

电磁流量计Modbus通 讯 协 议(版本号:9000-K V9.1.1)2020年01月01日通讯协议针对KFD电磁流量计工业应用设计,版本:9000-K V9.1.1,该版本主要用于实时数据采集、流量测量、流量累计控制及部分参数的修改。一、主机系统通讯部件要求1.国际标准RS-485通讯接口部件,不小于11Bytes 的通信缓冲区(FIFO),支持1200、2400、4800、96...

weixin_39956612的博客 1010

龙虾 Skill 技能库|OpenClaw+Hermes 全集成 一键调用所有 AI 技能

龙虾 Skill 技能库、OpenClaw、Hermes Agent、AI 技能集成、本地 AI 自动化、办公工具、数字员工

weixin_42219287的博客 624

80386保护模式段式寻址

前言:X86段式寻址写的人多了,我综合了网上多个版本和多本正版盗版书籍,加上自己的一点点领悟,终于貌似(之所以加个貌似,是因为可能以后还有修改)搞清楚了,特此记录。 本文特点:理论结合实践,有图有代码从而有真相。 说到X86平台,不得不说80386,因为很多操作系统原型都是基于这个平台写的,所以学习操作系统应该把这个平台搞清楚。关于硬件结构特点的介绍此处省略很多字。对于本篇文章,有两点很重要,

Leav 1519

大学计算 - NumPy库的矩阵运算 实训答案

本文介绍了三个NumPy矩阵操作的实验练习。第一关练习ndarray类型操作,包括矩阵构造、元素平方和计算、矩阵乘积运算和逆矩阵行列式计算;第二关针对matrix类型,涉及绝对值最大值获取、特定矩阵乘积运算和转置矩阵特征值计算;第三关实现Moore-Penrose伪逆矩阵计算,并与NumPy内置pinv函数结果比较误差。实验涵盖了NumPy核心矩阵操作,展示了从基础运算到高级矩阵分解的应用,帮助掌握科学计算中的矩阵处理技巧。

2403_89314916的博客 308

80386保护模式的运行

linux 0.0.0 ------80386保护模式的运行                        版权归原作者所有 ----ljhhh0123 2009-10-3    在www.oldlinux.org 网上赵炯博士做出的假想的linux 0.00操作系统,功能就是两个不同的任务交替输出A和B两个字母.我用最简单的工具-----nasm汇编器 翻译之.能够在虚拟机qemu manage

Li Junhui的专栏 992

ollama使用CPU安装qwen-coder模型_并在eclipse中使用ai coder插件_配置本地qwen-coder模型_ollama常用操作记录---AI大模型应用探索0002

文章摘要:作者分享了在Windows 10上安装和使用Ollama模型的过程。尝试了不同规模的qwen-coder模型(7b、1.5b和0.5b),发现7b模型响应极慢(需35分钟),而1.5b模型表现较好(3秒响应)。最终选择1.5b版本用于代码开发辅助,支持多语言自动补全。同时提到在最新版Eclipse中的AIcoder配置问题。文章重点比较了不同模型规模在CPU环境下的实际使用体验和响应速度差异。

添柴程序猿的专栏 681

PyRoki 入门教程(二)安装与使用

PyRoki是一个用于机器人运动学优化的Python库,具有模块化设计、可扩展性和跨平台支持等特点。它支持逆运动学、轨迹优化和动作重定位等任务,采用Levenberg-Marquardt优化器提高效率。主要功能包括:基于URDF的可微分正向运动学模型、自动生成碰撞基元、通用成本因子和自定义成本函数等。PyRoki支持CPU、GPU和TPU运行,适用于从单机器人到大规模并行处理场景。目前存在一些限制,如仅支持软约束、静态形状和特定关节类型等。官方提供了多个应用示例,包括基础逆运动学、碰撞检测、轨迹优化和手部/

机器人控制与仿真应用 1251

80386保护模式

实地址模式 当CPU通电或RESET时,cr0的PE位置0, 进入实地址模式。这里不在赘述。 保护模式 80386提供分段和分页两种存储管理模式 ● 分段管理的特点:对存储空间的逻辑划分,优点:对模块化(结构化)程序设计方式提供了很好的支持; 缺点:① 段长可变不固定, 管理更复杂、② 空间碎片较多、③ 访问字节数 ∕传输字节 可能很小 ● 分页管理的特点:对存储空间的物理划分,优点:① 页面长度固定,管理机构简单、② 访问字节数/传输字节通常更大; 缺点:① 一个页面内的程序或数据可能不具有完整意..

下次再说的博客 448

AutoJs调用DeepSeek大模型接口实战教程 AutoJs接入DeepSeek、 DeepSeek API调用 、 手机脚本接入大模型

通过这篇文章,我们用 AutoJs 成功接入了 DeepSeek Chat API。使用发送请求在 Header 里正确携带 API Key从里拿到最终返回结果这样一来,你就可以在 AutoJs 里实现一个智能助手脚本,甚至做更复杂的 AI 自动化工具。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 465

80286 与 80386,实模式与保护模式切换编程

学习自 狄泰软件 1 EAX与AX不是独立的,EAX是32位的寄存器,而AX是EAX的低16位。 2 or 对两个操作数进行逻辑(按位)或操作 80286 虽然有了保护模式,但其依然是 16 位的 CPU ,其通用寄存器还是 16 位宽,但其与 8086 不同的是其地址线由 20 位变为了 24 位,即寻址空间变成了 24 次方,等于 16MB 大小。虽然80286可以将地址线变成了24位,可以访问16MB的内存,但是其用来寻址的通用寄存器还是16位的,也没有突破一个寄存器只能访问64kb空间的限制,如

奶牛养殖场小马 1321

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

上一篇: 80386实模式编程模型
下一篇: 补码的由来
codesnail
博客等级 码龄18年 113粉丝 46原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值