- 博客(7)
- 资源 (3)
- 收藏
- 关注
原创 自己动手写操作系统80x86保护模式(4)--分页机制
80x86保护机制除了分段机制、特权等级机制、门机制之外还有分页机制。分页机制主要实现了线性地址到物理地址转换,涉及的内容主要有PDE、PTE、cr3,机制如下:转换使用两级页表,第一级叫做页目录,大小为4KB,存储在一个物理页中,每个表项4字节长,共有1024 个表项。每个表项对应第二级的一个页表,第二级的每一个页表也有1024个表项,每一个表项对应一个物 理页。页目录表的表
2015-10-26 08:57:23 682
原创 80x86保护模式(3)
前面的两节里面仅仅简单的实现了从实模式进入到保护模式然后又返回实模式,而且特权等级都是在Ring0层的。保护模式之所以有保护作用,除了前面的分段机制,保证段不会越界之外。特权等级机制,也是起了很关键的作用。关于特权等级的知识,在《一个操作系统的实现》读书笔记--第三章---不同特权级代码段之间的跳转 一文中有比较详细的解释。关于RPL、CPL、DPL的区分也做了比较详细的区分。现在先看结果
2015-10-22 16:23:07 373
原创 80x86保护模式(2)
在80x86保护模式(1)中,简单实现了在DOS系统下,由实模式转入保护模式,但是最后却是死循环了。既然可以由实模式转入保护模式,那必然可以由保护模式在转入实模式。下面上代码:;/*;nasm boot.asm -o boot.com;*/;; 描述符; usage: Descriptor Base, Limit, Attr; Base: dd; L
2015-10-21 14:35:32 425
原创 80x86保护模式(1)
在IA32模式下,CPU有两种工作模式:实模式和保护模式。实际上,当CPU加电时是工作在实模式下的,通过某种机制后才进入保护模式。在保护模式下,通过分段机制实现逻辑地址到线性地址的转换,通过分页机制实现线性地址到物理地址的转换。具体是怎么转换的呢?1、在了解怎么转换之前,实模式下是怎么寻址的呢?8086CPU是16位的CPU,拥有16位的寄存器,16位的数据总线,20位的地址总
2015-10-20 13:55:28 495
原创 Linux内核加载过程
Linux内核大致加载过程:第一步--加载BIOS稍有计算机基础的人都应该听过BIOS(Basic Input/Output System),可以看做是记录在ROM中的软件。也都清楚系统加电会执行BIOS中的程序,这种机能是如何实现的呢?看下图:这是早期DOS系统内存空间分配情况,可以借来理解。如图在0x400的位置有一段BIOS数据区,我们可以理解为ROM
2015-10-14 15:05:06 4281
原创 用户空间和内核空间、进程上下文与中断上下文
最近在学习Linux内核,对于用户空间和内核空间、进程上下文与中断上下文有点混淆,在此好好整理一番。一、CPU特权级别CPU的所有指令中,有些指令是非常危险的,如果错用就会导致系统崩溃。所以,CPU将指令分为特权指令和非特权指令,不同的指令有不同的操作权限。于是便有了CPU的4个特权级别,ring0~ring3。ring0最高,ring3最低。Linux系统仅仅使用了ring0和ring3
2015-10-13 16:34:18 432
linux内核源码V0.12
2014-07-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人