xuetangx os 笔记 4.7

本文深入解析了80386处理器的控制寄存器,包括CR0、CR2、CR3的功能及其在分页机制中的作用。详细介绍了PE、PG、MP等位的含义,以及CR2在页异常处理中的应用和CR3在页目录表中的角色。

一、cli,cld指令

与cli、cld相对的,还有sti和std指令。查找资料并总结如下:
cli: Clear Interupt
sti: Set Interupt
cld: Clear Director flag
std: Set Director flag

cli,sti

cli和sti用于屏蔽和恢复中断,在cli到sli之间发生的新中断会被屏蔽,以免引发意料之外的错误。

cld,std

cld和std用于设置方向标志位。其中,cld置DF标识为0并且si、di增加;std则置DF标识为1并且si、di减小。
参考:
1:汇编指令
2:复习8086汇编中的 CLI STI CLD STD指令

二、in,out指令

in指令和out指令是汇编中的I/O操作指令,用于向特定的端口读写数据。
inb a, b:表示从a端口读入一个字节到b寄存器。
outb a, b:表示从b寄存器输出一个字节到a端口。

三、控制寄存器

以下是引用控制寄存器原文:

控制寄存器
(控制寄存器(CR0,CR1,CR2,CR3)用于控制和确定处理器的操作模式以及当前执行任务的特性。)
从上表可见,80386有四个32位的控制寄存器,分别命名位CR0、CR1、CR2和CR3。但CR1被保留,供今后开发的处理器使用,在 80386中不能使用CR1,否则会引起无效指令操作异常。CR0包括指示处理器工作方式的控制位,包含启用和禁止分页管理机制的控制位,包含控制浮点协处理器操作的控制位。CR2及CR3由分页管理机制使用。CR0中的位5—位30及CR3中的位0至位11是保留位,这些位不能是随意值,必须为0。
控制寄存器CR0的低16位等同于80286的机器状态字MSW。
1.CR0中的保护控制位
控制寄存器CR0中的位0用PE标记,位31用PG标记,这两个位控制分段和分页管理机制的操作,所以把它们称为保护控制位。PE控制分段管理机制。 PE=0,处理器运行于实模式;PE=1,处理器运行于保护方式。PG控制分页管理机制。PG=0,禁用分页管理机制,此时分段管理机制产生的线性地址直接作为物理地址使 用;PG=1,启用分页管理机制,此时线性地址经分页管理机制转换位物理地址。由此可知,如果要启用分页机制,那么PE和PG标志都要置位。
下表列出了通过使用PE和PG位选择的处理器工作方式。由于只有在保护方式下才可启用分页机制,所以尽管两个位分别为0和1共可以有四种组合,但只有三种组合方式有效。PE=0且PG=1是无效组合,因此,用PG为1且PE为0的值装入CR0寄存器将引起通用保护异常。需要注意的是,PG位的改变将使系统启用或禁用分页机制,因而只有当所执行的程序的代码和至少有一部分数据在线性地址空间和物理地址空间具有相同的地址的情况下,才能改变PG位。
2.协处理器控制位
控制寄存器CR0中的位1—位4分别标记为MP(算术存在位)、EM(模拟位,用于选择与协处理器进行通信所使用的协议,即指明系统中是用的是80386还是80286协处理器)、TS(任务切换位) 和ET(扩展类型位),它们控制浮点协处理器的操作。
当处理器复位时,ET位被初始化,以指示系统中数字协处理器的类型。如果系统中存在 80387协处理器,那么ET位置1;如果系统中存在80287协处理器或者不存在协处理器,那么ET位清0。EM位控制浮点指令的执行是用软件模拟,还是由硬件执行。EM=0时,硬件控制浮点指令传送到协处理器;EM=1时,浮点指令由软件模拟。TS 位用于加快任务的切换,通过在必要时才进行协处理器切换的方法实现这一目的。每当进行任务切换时,处理器把TS置1。TS=1时,浮点指令将产生设备不可用(DNA)异常。 MP位控制WAIT指令在TS=1时,是否产生DNA异常。MP=1和TS=1时,WAIT产生异常;MP=0时,WAIT指令忽略 TS条件,不产生异常。
在系统刚上电时,处理器被复位成pe=0,pg=0(即实模式状态),以允许引导代码在启用分段和分页机制之前能够初始化这些寄存器和数据结构。对于这类寄存器的使用是在实模式下方可使用。
3.CR2和CR3
控制寄存器CR2和CR3由分页管理机制使用。
CR2用于发生页异常时报告出错信息。当发生页异常时,处理器把引起页异常的线性地址保存在CR2中。操作系统中的页异常处理程序可以检查CR2的内容,从而查出线性地址空间中的哪一页引起本次异常。
CR3 用于保存页目录表页面的物理地址,因此被称为PDBR。由于目录是页对齐的,所以仅高20位有效,低12 位保留供更加高级的处理器使用。向CR3中装入一个新值时,低12位必须为0;但从 CR3中取值时,低12位被忽略。每当用MOV指令重置CR3的值时,会导致分页机制高速缓冲区的内容无效,用此方法,可以在启用分页机制之前,即把PG 位置1之前,预先刷新分页机制的高速缓存。CR3寄存器即使在CR0寄存器的PG位或PE位为0时也可装入,如在实模式下也可设置CR3,以便进行分页机制的初始化。在任务切换时,CR3要被改变,但是如果新任务中CR3的值与原任务中CR3的值相同,那么处理器不刷新分页高速缓存,以便当任务共享页表时有较快的执行速度。_____________________________________________________________
状态和控制寄存器组除了EFLAGS、EIP ,还有四个32位的控制寄存器,它们是CR0,CR1,CR2和CR3。 这几个寄存器中保存全局性和任务无关的机器状态。 CR0中包含了6个预定义标志,0位是保护允许位PE(Protedted Enable),用于启动保护模式,如果PE位置1,则保护模式启动,如果PE=0,则在实模式下运行。1位是监控协处理位MP(Moniter coprocessor),它与第3位一起决定:当TS=1时操作码WAIT是否产生一个“协处理器不能使用”的出错信号。第3位是任务转换位(Task Switch),当一个任务转换完成之后,自动将它置1。随着TS=1,就不能使用协处理器。CR0的第2位是模拟协处理器位 EM (Emulate coprocessor),如果EM=1,则不能使用协处理器,如果EM=0,则允许使用协处理器。第4位是微处理器的扩展类型位 ET(Processor Extension Type),其内保存着处理器扩展类型的信息,如果ET=0,则标识系统使用的是287协处理器,如果 ET=1,则表示系统使用的是387浮点协处理器。CR0的第31位是分页允许位(Paging Enable),它表示芯片上的分页部件是否允许工作。 CR1是未定义的控制寄存器,供将来的处理器使用。 CR2是页故障线性地址寄存器,保存最后一次出现页故障的全32位线性地址。 CR3是页目录基址寄存器,保存页目录表的物理地址,页目录表总是放在以4K字节为单位的存储器边界上,因此,它的地址的低12位总为0,不起作用,即使写上内容,也不会被理会。 这几个寄存器是与分页机制密切相关的,因此,在进程管理及虚拟内存管理中会涉及到这几个寄存器,读者要记住CR0、CR2及CR3这三个寄存器的内容

<think>好的,用户想找关于天机学堂的学习笔记和考试相关的信息,特别是IT课程和教程。首先,我需要查看已有的引用内容,看看里面有没有相关的信息。 引用1提到天机学堂踩坑笔记的项目地址,里面可能包含学习笔记和常见问题的解决方案。引用2进一步说明这个项目是分享技术问题和解决方案的,帮助学习者高效学习。这应该符合用户的需求,尤其是学习笔记部分。 引用3讨论了学习进度统计的问题,涉及学习计划和进度管理,这可能和考试相关,比如如何跟踪学习进度,完成课程和考试的状态。这里还提到视频播放超过50%标记为已学习,考试提交后视为完成,这些细节可能在考试相关的笔记中有用。 引用4提到天机学堂微服务的开发流程,包括产品原型、数据库设计等,这可能属于IT课程内容的一部分,特别是后端开发相关的教程。 引用5关于Spring Security的集成,属于技术实现细节,可能在学习笔记中有记录,特别是认证授权功能,这对IT课程中的安全模块有帮助。 接下来,需要整理这些信息,分点回答用户的问题。可能需要分为学习笔记和考试信息两部分,每个部分下引用相关的资料。同时要确保按照系统指令正确使用LaTeX格式,并生成相关问题。 在回答中,要引用正确的引用编号,比如学习笔记部分引用1、2、4、5,考试信息引用3。同时要生成的相关问题需要围绕用户的需求,可能涉及如何获取笔记、如何设计学习进度、技术实现问题等。 最后检查是否符合所有系统指令,特别是LaTeX格式是否正确,回答结构是否清晰,是否有自然添加引用标识。</think>### 天机学堂学习笔记与考试相关信息整理 #### 一、学习笔记资源 1. **开源项目《天机学堂踩坑笔记》** 该项目专注于记录技术学习过程中的常见问题及解决方案,涵盖IT课程开发、微服务架构设计、Spring Security集成等内容,例如: - 技术学习中的错误案例与调试方法[^1] - SpringBoot集成Spring Security的认证授权实现细节[^5] - 微服务开发流程(需求分析→接口设计→数据库设计→自测联调)[^4] **项目地址**:https://gitcode.com/Resource-Bundle-Collection/b0198 2. **课程设计核心内容** - **学习计划管理**:用户购买课程后可自定义学习计划,系统自动生成本周进度与预计完成时间[^3] - **技术实现案例**:如视频播放进度超过50%标记为“已学习”,考试提交后自动完成状态更新[^3] --- #### 二、考试相关设计 1. **考试状态判定规则** - 考试类小节需提交答卷后标记为完成 - 视频类小节首次播放进度≥50%即标记为已学 $$ \text{状态更新条件} = \begin{cases} \text{已学} & \text{if } \text{首次播放且进度} \geq 50\% \\ \text{未学} & \text{otherwise} \end{cases} $$ 2. **学习进度统计逻辑** - 结合Redis记录实时播放进度,MySQL持久化最终状态 - 关联学习计划中的“本周进度”计算,支持断点续学 --- #### 三、IT课程技术栈参考 | 技术方向 | 关键技术点 | 应用场景案例 | |----------------|---------------------------|---------------------| | 微服务架构 | Spring Cloud Alibaba | 课程管理模块开发[^4] | | 安全认证 | Spring Security + JWT | 用户权限控制[^5] | | 数据持久化 | MySQL + MyBatis-Plus | 学习计划存储 | | 实时统计 | Redis + 定时任务 | 播放进度跟踪 | ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值