linux内核完全剖析0.12笔记--第四章 80x86保护模式及其编程

《Linux内核完全注释》pdf v3.0 阅读详情

  这一章涉及intel8086系列cpu的保护模式编程,应该是学习内核编程,驱动编程及嵌入式编程一些基础知识。不过对于没接触过底层编程的我来说,感觉还是好复杂难过。

  不过里面也有许多以前汇编学过的东西,大部分还是能看懂的微笑。我觉得图表就能说明大部分内容了,细节东西,不能都做笔记,所以大部分笔记都是图表- -。

1,首先是关于8086cpu的各个标志寄存器,其内容如下: 

2,内存管理的寄存器,主要用于实现分段内存管理机制,GDTR是全局段描述符表寄存器,IDTR是中断向量表寄存器,TR是任务寄存器,LDTR是局部描述符表寄存器。

  其中,GDTR的内容基本上是不变的,一个系统一般只有一个全局段描述符表。LDTR则是在切换任务时重新加载,每个任务都有自己的局部描述符表。

  

3,控制寄存器,cr0~cr3,很重要的寄存器,控制cpu操作模式及当前任务的特性等等。具体各个寄存器的用法内容太多,还是看书吧 =  =.

  CR0:含有控制处理器操作模式和状态的系统控制标志。

        CR1:保留不用。。。

  CR2:含有导致页错误的线性地址,用于分页机制。

  CR3:含有页目录表物理内存地址,也被称为页目录基地址寄存器PDBR。

  

  用于操作以上寄存器的指令列表:

    

  


4,内存寻址方面,8086汇编都有讲过了。这里主要是分段管理机制与分页管理机制。

  虚拟地址:http://baike.baidu.com/view/1499823.htm

  

  

  分段机制中,每个段的大小不是固定的,因此使用段时必需通过查找段描述符表来获得段的信息。而分页机制中页的大小刚是固定的,每个页大小为4KB,。

  分页存储是实现虚拟内存的关键,没有使用分页的话,要将整个段在主存与磁盘的虚拟内存之间移动,在效率及实现上都是不可接受的,通过分页,每次移4KB的数据是较好的方式。

  由于线性地址为4GB,可分为1024*1024个页面,每个记录页表信息的页表项大小为4B,总共需要4MB的内存空间,这在早期物理内存只有可怜的几MB的计算机上是不允许的。所以又采用了二级页表的方式,通过一个4KB的页目录表可寻址到1024个页表,每个页表4KB存放1024个页表项。这样做并没有减少使用的内存总量,反而还多了4KB,之所以这样做是因为可以将二级页表整个移动到虚拟内存空间中,同一时间内只有几个活动的页表,可以节省大量的空间(对那个时候来说,0.12版只能支持最大16MB的主存 =  =)。

  没有使用分页机制的话,计算出来的线性地址将直接作为物理内存的地址。

  分段跟分页都可以有保护机制,分页的保护比分段更底层,分段保证对段的访问有正确的权限及范围,而分页由图可以看出在分段保护通过后还会再进行分页机制的保护,保护内容主要是读写及访问权限。保护有任务之间的保护,保证任务不会访问到其他任务的内存空间,还有特权级的保护,控制系统任务与用户任务之间的访问关系。

5,分段的细节:

  内容太多了,还是弄弄图就好了。

  

  

  

  

  段与段之间并不一定是完全分开的,有可能交叉甚至重叠。

  访问段,通过选择符定位找到段描述符表中的一个描述符,再通过段描述符访问具体的段。一个描述符表只有2^13=8192个描述符,所以选择符前三个位不用于定位,前两位用于表示特权级,第三位用于表示要访问的段是在全局描述符表中还是局部描述符表中。

  局部描述符表也作为一个段,其段描述符保存在全局描述符表中。


  

很详细的保护模式编程 保护模式编程一直是很多人的一个难点,文档里附有详细的代码和图示,相信会让被保护模式困惑的你马上恍然大悟 立即下载

相关推荐

[汇编]保护模式教程

要深入理解32位编程的奥秘,必须理解保护模式.这是李彦昌的保护模式教程,基本是清华出版社80X86汇编语言程序设计的保护模式部分的电子版,但修改了原书的一些错误,也加入了自己的一些体会.很好的资料,保护模式的资料本来就少,中文的的资料更少,谨以此与Asm爱好者共享.

x86的保护模式(一)

10月份就剩明天一天了,今天晚上突袭一下,写篇新博客  2017年10月30日18:13:23 BY :张飞online

张飞online博客 610

x86保护模式的介绍

x86保护模式的介绍,主要是386保护模式的介绍。

《X86汇编-从实模式到保护模式》10. 32位x86处理器编程架构

32 位模式下的 psuh 指令压入段寄存器有些特殊,在 16 位模式下,是先将 SP - 2,然后压入段寄存器,而 32 模式下,是先要将段寄存器用零扩展到 32 位,即高 16 位全为零,然后将 ESP - 4,再压入扩展到 32 位后的段寄存器。32 位模型下,有 32 根地址线,内部寄存器也是 32 位的,因此完成可以访问整个 4 GB 内存,但 IA-32 架构的处理器是基于 8086 分段模型的,因此 32 位处理器依然采用分段模型。除此外,每个段寄存器还有一个不可见的部分,称为。

XiaoLing 一直摆烂哇! 1564

80x86保护模式

NULL 博文链接:https://lingqi1818.iteye.com/blog/1577315

linux-0.12:《 Linux内核完全剖析》 linux0.12源码及实验环境

linux-0.12原始学习 参考《 Linux内核完全剖析-基于0.12内核》 linux-0.12目录为修改过的源代码,其中加入了中文注释,修改了部分代码转换能在现在的环境下编译,并支持GDB调试。 oslab为实验目录,切到oslab目录下,运行该目录下的run.sh脚本即可运行linux0.12操作系统。 一,环境建设 1.1方式一 linux用户可以通过挂载将本地项目目录挂载到容器中,windows或mac用户可以在容器内重新git clone一个(因为不区分文件名大小写会导致挂载出错)。-> docker方式 # 1. 从docker hub中拉取镜像 docker pull ultraji/ubuntu-xfce-novnc # 2. 运行容器 docker run -t -i -p 6080:6080 -v ${本地项目路径} : ${容器内项目路径} ultraji

OS实战笔记(3) -- X86 CPU三种工作模式(实模式,保护模式,长模式)

X86 CPU三种工作模式(实模式,保护模式,长模式)

vivo01的专栏 6483

【网络原理】HTTP 请求 (Request)详解

【网络原理】HTTP 请求 (Request)详解,认识URLquery string关于 URL encode, GET方法,POST 方法,GET 和 POST 的区别,User-Agent (简称 UA),Referer,Cookie

ZXT的博客 1万+

x86 CPU的保护模式——概述(一)

我们在前面已经介绍过实模式了,它是32位 CPU 的一种工作模式,模拟了16位 CPU 的工作环境,但是大多数时候 CPU 并不会处于实模式,而是保护模式,我们接下来看看实模式和保护模式有什么区别。

weixin_62515670的博客 1293

Ubuntu 26.04 本地安装 GitLab CE 完整教程(非 Docker 方式)

本文详细介绍了在Ubuntu 26.04系统上通过Omnibus包安装GitLab CE的完整流程。主要内容包括:环境准备(系统要求、依赖安装)、配置清华镜像源、执行安装命令、修改配置文件、服务管理命令以及常见问题解决方法。文章特别强调了内存要求(建议4GB以上)、首次登录密码获取、HTTPS安全配置等关键点,并提供了性能优化建议和安全设置指导。相比Docker方式,Omnibus安装具有性能更好、管理方便等优势,适合需要私有化部署GitLab的场景。

1375

从零开始:如何用PSINS工具箱构建你的第一个IMU误差模型

本文详细介绍了如何使用严恭敏教授开发的PSINS工具箱构建IMU误差模型,涵盖从基础参数设置到高级误差建模的全过程。通过imuerrset函数配置陀螺零偏、随机游走等核心参数,并结合实战案例展示消费级MEMS器件的误差建模方法,帮助用户提升惯性导航系统的精度与可靠性。

weixin_29284885的博客 323

X86实模式与保护模式简介

X86实模式与保护模式简介 X86实模式与保护模式物理地址的计算方式

qq_45577173的博客 3067

Burp Suite手工验证CORS漏洞的四步闭环法

CORS(跨域资源共享)是Web应用实现跨域通信的基础机制,其安全本质在于服务端对Origin头的校验逻辑与响应头组合的语义一致性。当服务端错误地返回Access-Control-Allow-Origin: *并配合Access-Control-Allow-Credentials: true,或采用弱校验(如字符串包含匹配)时,将导致敏感数据泄露与凭据劫持风险。该漏洞难以被自动化扫描器发现,因其依赖请求上下文、认证状态及动态策略判断。Burp Suite作为核心工具,需通过构造跨域请求、捕获预检响应、交叉验

weixin_30596343的博客 513

《Linux内核完全剖析》第4章 80x86保护模式及其编程

本章主要参考资料为:《IA-32Intel体系结构软件开发者手册》,特别是第三卷《系统编程指南》。 本章的主要内容有: 80x86基础知识 保护模式内存管理 各种保护措施 中断和异常处理 任务管理 保护模式编程的初始化 一个简单的多任务内核例子 4.1 80x86系统寄存器和系统指令 为了协助处理器执行初始化和控制系统等的操作,系统提供了一个标志寄存器和几个系统寄存器。 4.1.1 标志寄存器...

读芯术 342

Win10/Win11系统下冒险岛V128单机版一键搭建教程(含MySQL配置避坑指南)

本文提供Win10/Win11系统下冒险岛V128单机版一键搭建的详细教程,涵盖服务端部署、MySQL配置优化及常见问题解决方案。通过本指南,玩家可轻松实现单机版冒险岛的一键启动,重温经典游戏体验,同时避免常见的技术陷阱。

weixin_29261711的博客 653

RseQC实战指南:从安装到RNA-Seq数据质控全流程解析

本文提供了一份详尽的RseQC实战指南,涵盖从安装配置到RNA-Seq数据质控的全流程。文章重点解析了RseQC作为专业质控工具的核心价值,手把手指导如何通过Conda或pip完成安装,并深入讲解了bam_stat.py、geneBody_coverage.py等关键模块的使用方法与结果解读技巧,帮助用户有效评估RNA完整性、文库构建质量及链特异性,确保下游分析的可靠性。

weixin_29200741的博客 204

《linux内核完全剖析》读书笔记——第四章 80x86保护模式及其编程

第四章 80x86保护模式及其编程 本章主要内容包括:80x86基础知识,保护模式内存管理,各种保护措施,中断和异常管理,任务管理,保护模式编程的初始化。 最后的例子在这里不详细分析。。。 我在这章主要将重点知识罗列,一些我认为比较简单的知识就不进行介绍了。 80x86系统寄存器和系统指令 标志寄存器 较为简单,不做详细介绍 内存管理寄存器 包括GDTR, LDTR, IDTR

duozhoujiang2116的博客 360

PyTorch实战(30)——使用TorchScript和ONNX导出通用PyTorch模型

在本节中,我们将深入探讨使用 TorchScript 导出 PyTorch 模型。通过序列化,TorchScript 使模型与 Python 生态系统独立,从而使得模型可以在其他环境中加载,例如基于 C++ 的环境。我们还跨越 Torch 框架与 Python 生态的边界,研究机器学习通用开放格式 ONNX,该技术能帮助我们将 PyTorch 训练的模型导出至非 PyTorch 甚至非 Python 环境。

盼小辉丶的博客 3560

《Linux内核完全剖析》读书笔记(待续...)

内核基础Linux背景基本概念 GUN计划 旨在开发一个类似UNIX并且是自由软件的完整操作系统:GNU系统。 GNU项目开发的自由软件: EMACS编辑系统 Bash程序 GCC系列编译程序 GDB调试工具 …… POSIX标准 该标准描述了操作系统的调用服务接口,用于保证应用程序的源代码在多种操作系统上移植和运行。 微型计算机组成结构 微机组成原理 I/O端口寻址方式 统一编址 独立编

carver_x的博客 1140

7、复杂分布式水文模型的两阶段代理参数校准框架

本文提出了一种针对复杂分布式水文模型的两阶段代理参数校准框架,旨在解决可变入渗能力模型(VIC)在参数校准过程中计算成本高、耗时长的问题。该框架结合AdaBoost与反向传播神经网络(BPNN)构建高精度代理模型,并引入ε-NSGA II多目标优化算法加速搜索最优参数集。通过在兰江流域和湘江流域的实验验证,该方法在校准效率上提升了约20倍,同时保持了高模拟精度(NSE接近1,Bias接近0)。框架采用两阶段设计:第一阶段(SM-I)快速筛选关键参数范围,第二阶段(SM-II)进行高精度预测,显著减少了无效计

apple5的专栏 87

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

linux 0.11 内核学习路线

转载至http://tieba.baidu.com/p/4871637101 当初一开始拿到赵炯的书时是兴奋的,代码几乎每行都有注释,心想这不手到擒来的吗。但是代码看到十几行就看不下去了,没错就是十几行,操作系统的代码跟应用层的代码完全是两回事,注释再多也不明白什么意思。后来才知道需要 实模式和32位保护模式 的基础,这个是操作系统的核心知识。 这里总结一下需要的基础知识。按学习顺序: 《汇编...

linxi8693的博客 3124

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

佳作推荐之《Linux内核完全剖析—基于0.12内核》作者:赵炯

书推荐,正在学习中!感谢 赵炯 老师!那些动辄就要金币银币的人,我真鄙视你们!估计赵老师也鄙视你们!=========================================================================Linux内核完全剖析—基于0.12内核    赵炯本书对早期Linux内核(v0.12)全部代码文件进行了详细、全面的注释和说明,书中首

DoYou?'s csdn 3303

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

《linux 内核完全剖析》 chapter 4 80x86 保护模式极其编程

80x86 保护模式极其编程       首先我不得不说,看这张真的很纠结。。。看了半天,不知道这个东西能干嘛,我感觉唯一有点用的就是对于内存映射的理解。。。我如果不在底层给80x86写汇编的话,我真不知道这章能对我有什么用。。。 还是留下自己觉得重要的理解了的笔记吧。。。 4.1.1标志寄存器--EFLAGS T

Jason Leaster | Rebuilding the tower of babel 2161

<<Linux内核完全剖析 --基于0.12内核>> 学习笔记 第4章 80x86保护模式及其编程 4.1 80x86系统寄存器和系统指令

4.1 80x86系统寄存器和系统指令 4.1.1 标志寄存器 1 4.1.2 内存管理寄存器 4.1.3 控制寄存器 4.1.4 系统指令

Mathysicheman的博客 718

Linux学习笔记(linux 0.11完全注释)

第一章:概述 GNU计划:旨在开发一个类似UNIX并且是自由软件的完整操作系统。 POSIX标准:是由IEEE和ISO/IEC开发的一簇标准。该标准基于UNIX的实践和经验,描述了操作系统的调用和服务接口。用来保证编制的应用程序能在源代码一级上在多个操作系统上移植和运行。 Linux-0.11 版本发布时包括以下文件: bootimage.Z     --  具有美国键盘代码的压缩启动映像文件 rootimage.Z     --  以 1200KB 压缩的根文件系统映像文件 linux-0.1

水龙吟的备忘录 6681

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

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

Ziyang的博客 1584
上一篇: ubuntu 8.04 bochs 调试linux 0.11内核
下一篇: 例解 autoconf 和 automake 生成 Makefile 文件
AstrayLinux
博客等级 码龄15年 55粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值