learning cpu
文章平均质量分 94
activesys
做好开源做好软件做好产品
展开
-
Protection 2 ---- Limit Checking
这篇文章中主要描述了CPU在运行过程中对于表限和段限的检查,这里描述检查机制都是在相同权限级别条件下进行的,这里的示例代码都运行在ring 0下。文章中并没有给出全部的代码,只是给出了关键的部分,这些代码都是根据上篇文章《Protection 1》中的代码修改的,同样这篇文章中涉及到的代码也都托管在github上,可以到https://github.com/activesys/learning_c原创 2013-08-19 21:48:34 · 888 阅读 · 0 评论 -
Protection 6 ---- Page-Level Protection
页级别的保护类型#PF异常例子参考原创 2013-12-05 14:39:35 · 1219 阅读 · 0 评论 -
32-Bit Paging
分页分页是将线性地址转换成物理地址的机制,当关闭分页的时候线性地址直接映射成物理地址,开启分页之后线性地址要经过一系列的转换才能获得物理地址。分页的好处很多,有了分页,OS可以对页面进行调度,这样OS可以实现虚拟内存以及多任务。将线性地址转换成物理地址的过程中主要关心下面这些方面:线性地址宽度。物理地址宽度。页大小。访问权限。被缓存的能力。Intel CPU支持很多种分原创 2013-11-11 14:57:20 · 1474 阅读 · 0 评论 -
PAE Paging
PAE Paging与32-Bit Paging的区别PAE Paging与32-Bit Paging的不同点在于PAE Paging可将32-Bit的线性地址转换成最高52位的物理地址,不过受到线性地址宽度的限制,最高可访问的线性地址空间还是4G。还有就是PAE Paging使用4个PDPTE寄存器进行地址转换,CR3寄存器保存这4个PDPTE寄存器的物理地址。这样在地址转换时可以使用更多的原创 2013-11-20 21:53:45 · 2319 阅读 · 0 评论 -
Protection 5 ---- Priviliege Level Checking 2
CPU不仅仅在程序访问数据段和堆栈段的时候进行权限级别检查,当程序控制权转换的时候也会进行权限级别检查。程序控制权转换的情况很多,各种情况下检查的方式以及涉及到的检查项都是不同的。这篇文章主要描述了各种代码控制权转换过程中涉及到的各种检查并且配以相应的示例,示例代码是根据《Task》中的代码修改的,托管在https://github.com/activesys/learning_cpu/tree/原创 2013-08-29 16:31:33 · 866 阅读 · 0 评论 -
Learning CPU
这是Learning CPU系列文章的开篇,这些文章是为了学习Intel CPU的体系结构及编程,记录学习历程、遇到的问题、心得与体会等。文章中涉及到的代码全部开源,托管在github上https://github.com/activesys/learning_cpu/tree/master/x86。原创 2013-08-17 16:52:54 · 427 阅读 · 0 评论 -
Protection 1
保护模式下CPU会对其资源和运行的程序进行保护,当发现违规行为的时候产生异常,这篇文章的目的是为后续学习保护机制搭建一个代码的框架。CPU的保护机制很复杂,保护的内容也很多,我们通过研究每种保护机制来学习它,这篇文章中的代码提供了这样的一个代码框架,在后续的保护机制学习的时候可以修改相应的代码来验证不同的保护机制。中断和异常处理程序为了实现保护机制,CPU在执行的过程中会对各种指令原创 2013-08-17 16:23:37 · 967 阅读 · 0 评论 -
Protection 4 ---- Priviliege Level Checking 1
特权级为了提供保护,CPU识别4个特权级,0~3级,数字越小表示的特权级越高,数字越大表示的特权级越小。访问数据段时候的特权级检查示例加载SS寄存器时的特权级检查参考原创 2013-08-27 14:49:29 · 848 阅读 · 0 评论 -
Learning MBR
PC启动过程BIOS中断BIOS内存布局BIOS中断大全openbiosgas/nasm对比gas和nasm语法比较gas和nasm语法比较中文版用dd命令写磁盘实例遇到的问题gas生成了带elf格式的输出,但是实际需要的无格式的二进制文件。as生成的.o文件是带有elf格式,要是用objcopy -O binary 提取原创 2013-07-19 00:20:06 · 892 阅读 · 0 评论 -
Task
CPU通过任务管理的方式提供了基于硬件的多任务,为了实现多任务CPU提供了一下额外的数据结构和寄存器。这篇文章并不打算详细的介绍任务管理的结构和原理,因为Intel官方文档关于任务管理的章节描写的非常清楚,我只是想通过一个例子来理解整个任务管理的机制。任务管理结构多任务就是要实现多个任务之间的并行之行,就会涉及到任务之间的切换,既然要切换就要保证任务在切换回来之后还能够顺利的继续执原创 2013-08-25 20:53:02 · 1026 阅读 · 0 评论 -
Switching to Protected-Mode
保护模式的作用实模式下CPU只提供了部分资源和功能供我们使用,但是在保护模式下CPU的全部资源和功能都可以供我们使用,同时CPU还提供了对于不同内存段的基于权限级别的保护方式,这样代码运行起来更安全,寻址方面,保护模式下可以寻址4G的地址空间。保护模式下的分段管理保护模式下也采用分段管理的方式将逻辑地址转换成线性地址,但是分段管理的基址是不同的,保护模式的分段管理更复杂,下面一原创 2013-08-13 23:23:09 · 1089 阅读 · 0 评论 -
Real-Address Mode
当Intel CPU启动或者RESET#引脚有效的时候就进入了实地址模式或者叫实模式(Real-Address Mode)。实模式是Intel 8086/8088的运行模式,所以这种模式下的使用的资源是受限的,例如使用20位的地址总线寻址1M的地址空间等等。实模式下的执行环境实模式下CPU提供的执行环境包括:支持1M的物理地址空间。8位或者16位的操作数。8个16位的通原创 2013-08-08 15:20:53 · 1203 阅读 · 0 评论 -
Protection 3 ---- Type Checking
CPU的保护机制不仅仅表现在对于表限和段限的检查,还要进行各种各样的Type Cheking。类型检查的种类繁多,检查的时机以及涉及到的结构和寄存器也很多,这篇文章中仅仅介绍以前学习过的结构和寄存器的检查,像LDT,TSS这样的结构和寄存器的检查会在后面继续学习。CPU在不同的时机进行类型检查,这些时机主要有:将段选择子加载到段寄存器中指令通过段寄存器访问段运行一个带有段选择子的操原创 2013-08-20 18:39:36 · 779 阅读 · 0 评论 -
8259A
8259A中断响应命令字例子参考原创 2013-12-23 21:28:26 · 7640 阅读 · 2 评论