X86平台:多任务操作系统在X86保护模式下两种内存模型下的工作模式及其设计
作者:@罗一
本文为作者原创,转载请注明出处:https://www.cnblogs.com/luoyicode/p/17169719.html
本文于2023/3/2,开始写作,因为内容太多了,所以暂时只能拟出标题,我可以根据这个标题进行复习,学习过相关知识的同学也可以根据题目复习。
自学了李忠老师的《X86汇编语言:从实模式到保护模式》这本书,除了了解到X86保护模式的汇编语法和汇编程序设计思想之外,更重要的是学到了X86保护模式下的各种工作模式,以及不同工作模式下,操作系统如何进行任务管理。
1 X86保护模式支持的系统结构
1.1 内存管理与多任务管理
1.1.1 段式内存管理
1.1.1.1 分段:内存按段的定义分配和使用,控制依赖于段的定义
1.1.1.2 段描述符与段界限检查
1.1.1.3 段选择器、段选择子、ds缓存与段间控制跳转(通过目标段的‘门’)
1.1.1.4 段的PL机制、PL种类与PL检查、通过调用门执行高特权过程
1.1.1.5 任务的全局空间与局部空间、GDTR和LDTR及两种寄存器的区别
1.1.1.6 设置CR0启用保护模式(X86强制分段)
1.1.1.7 控制转移时的栈切换、压栈保护现场
1.1.1.8 任务切换的LDT切换和TSS保护恢复现场
1.1.1.9 多段模型简介
1.1.2 层次式分页的段页式内存管理
1.1.2.1 段页式:页表按段的定义分配页,按段地址索引物理地址,每个页目录表体系都是一个单独的虚拟地址空间
1.1.2.2 地址计算:线性地址求物理地址
1.1.2.2.1 利用线性地址:求页表页号、物理页页内偏移
1.1.2.2.2 利用页表页号:求物理页首地址
1.1.2.2.3 地址计算:物理页首地址+物理页页内偏移
1.1.2.3 页目录表
1.1.2.3.1 页目录表的定义
1.1.2.3.2 页目录表的表项也是物理页号
#注意:页目录表和页表分别由PDBR和物理页定义,没有映射到虚拟地址空间,只存在于物理地址空间。
1.1.2.4 CR3/PDBR:寄存当前任务的页目录表
1.1.2.5 设置CR0开启分页
1.1.2.6 任务切换时的PDBR的切换与TSS保存恢复现场
1.1.2.7 平坦模型简介
1.2 中断与多任务调度
1.2.1 中断、中断处理与中断控制跳转
1.2.2 中断描述符表、中断门、陷阱门
1.2.3 中断处理程序
1.2.4 多任务环境、任务门与任务切换
1.2.5 TSS与保存恢复现场
1.2.6 TCB与TCBL
1.2.7 利用TCBL和中断实现任务调度
2 X86保护模式的两种内存模型
X86保护模式下主要有两种内存模型,分别是:段式的多段模型和段页式的平坦模型。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!