系统引导
小灰马
爱生活,爱读书,爱挑战!
展开
-
操作系统实践(1)——从引导开始
第一段引导代码boot.asm org 07c00h mov ax,cs mov ds,ax mov es,ax call DispStr jmp $DispStr: mov ax,BootMessage mov bp,ax mov cx,16原创 2015-04-24 15:18:24 · 695 阅读 · 0 评论 -
操作系统实践(4)——从保护模式返回实模式
好吧,一开始我觉得从保护模式应该就是设置一下cr0然后jmp一下就回到实模式了,这个没必要去实践。不过看到书中里面有些代码觉得有些冗余,然后里面有段话也是没看明白,动手实践才恍然大悟。于渊在书中写这个例子的思路大概是这样的: 1. 从实模式中跳转进入保护模式。(参考前面几篇) 2. 在保护模式下,访问一个地址偏大点的(实模式寻址范围之外)内存块进行读写,验证一下保护模式寻址范围是不是比实模式寻原创 2015-05-08 16:38:51 · 1675 阅读 · 0 评论 -
操作系统实践(3)——火箭助推器
本次实践的目的:打破开机引导程序512字节的限制,并从实模式切换到保护模式。 我们知道,bios开机自检、找到启动设备后,把启动设备的第一个扇区加载内存0x7c00位置开始执行。前两次实践中,我们的引导程序小于512字节,这没造成什么问题。如果我们的引导程序超过512字节怎么办呢?我的第一个想法就是,利用加载到内存的这512字节,写个程序,把启动盘中真正的引导程序继续加载到内存中。看到《Ora原创 2015-04-26 23:24:33 · 931 阅读 · 0 评论 -
操作系统实践(5)——关于LDT
LDT与GDT类似,为局部描述符表。使用LDT有几个步骤: 1.在GDT中加一个表项,并增加一个描述符,假设为SelectorLDT; 2.像配置GDT表那样,配置好LDT表自己的描述符,并设置好相应的ldt的选择子,选择子有一位标识是ldt还是gdt; 3.加载LDT,使用lldt指令; 4.直接jmp ldt里面的选择子。跳转到LDT里的代码段,跟用GDT跳转代码段一样,都是通过 j原创 2015-06-01 23:10:44 · 1309 阅读 · 0 评论 -
操作系统实践(8)——从Loader到内核
到目前为止,我们写的代码都是用汇编写的,汇编的缺点就是,第一遍写完了,回头再过来看,又忘了,晦涩难懂。其实我感觉,写汇编的好处,就是能让自己去多了解一下cpu还有其它硬件的结构。硬件的的架构,决定软件的实现方式,硬件就好比基因,软件就是一个个的动物个体。本次实践涵盖的内容包括《orange’s一个操作系统的实现》书中的第三章末尾、第四章、第五章。因为这些东西比较紧凑。捋一下思路: 1. 中断与异原创 2015-08-26 11:22:04 · 1373 阅读 · 2 评论 -
操作系统实践(7)——分页机制
为什么分页,分页有什么好处从苦逼码农的角度,用一个租房的例子来说,原来分段机制,就好比房子整租,当租客不想租的时候,就整个房子退还给房东,房东再找其它人整租,这样有个缺点,在北京,整租一套房子,很贵,而且很多租客都是一个人或者两个人,用不着租那么大,于是一方面房东如果找不到租客,房子就空闲着,一方面要是租客咬咬牙租下整套房子,很多房间也是很浪费。于是,下面要讨论的分页机制,就是现在市场上各种单间出租原创 2015-08-12 19:00:20 · 1274 阅读 · 0 评论