码迷,mamicode.com
首页 >  
搜索关键字:一个操作系统的实现    ( 40个结果
一个操作系统的实现(11)-让操作系统进入保护模式
这节首先介绍了突破引导扇区只有512字节的原理,然后介绍了FAT12文件系统,最后通过实验加载loader并将控制权交给loader来实现突破512字节的束缚。 突破512字节的限制 前面所用的引导扇区只有512字节。然而实际上操作系统在启动过程需要做的事情是很多的。所以需要通过某种方法突破512字节的限制。 那么如何突破512字节的限制呢?一种方法是再建立一个文件,通过引导...
分类:其他好文   时间:2016-06-16 14:42:22    阅读次数:311
一个操作系统的实现(9)-中断和异常
这节讲了中断与异常的一些基本概念。然后通过代码实现一个显示字符的中断和时钟中断。 实模式与保护模式下的中断有区别 保护模式下的中断与实模式下的中断有几点不同。 实模式下的中断向量表在保护模式下被IDT取代实模式下可以使用BIOS中断,而保护模式下不能用 这里面出现了一个新的名词IDT,接下来就介绍什么是IDT。 中断描述符表(IDT,Interrupt Des...
分类:其他好文   时间:2016-06-10 11:09:30    阅读次数:316
一个操作系统的实现(5)-关于特权级
这节讲述IA32分段机制中的特权级。包括CPL、DPL、RPL的介绍以及代码实现不同特权级之间的转换。 IA32的分段机制有四种特权级别,从高到低分别是0、1、2、3。数字越小表示的特权级越大。 处理器引入特权级的目的是为了保护核心代码和数据。核心的代码和数据会被放在较高的层级中。从而避免低特权级(外层)的任务在不被允许的情况下访问位于高特权级(内层)的段。 在开始之前,首先...
分类:其他好文   时间:2016-05-30 15:29:04    阅读次数:151
一个操作系统的实现(7)-获取机器内存并进行合理分页
在前面的程序中,我们用了4MB的空间来存放页表,并用它映射了4GB的内存空间,而我们的物理内存不见得有这么大,这显然是太浪费了。如果我们的内存总数只有16MB的话,只是页表就占用了25%的内存空间。而实际上,如果仅仅是对等映射的话,16MB的内存只要4个页表就够了。所以,我们有必要知道内存有多大,然后根据内存大小确定多少页表是够用的。而且,一个操作系统也必须知道内存的容量,以便进行内存管理。 ...
分类:其他好文   时间:2016-05-30 14:54:18    阅读次数:353
一个操作系统的实现(6)-初识分页机制
这节仍然是从实现的角度来讲述分页机制。 为什么要引入分页机制。我们都知道分段机制是为了提供保护机制,那么为什么还要引入分页机制呢? 为什么引入分页机制 想象一下这样一种情况:假设我们用的计算机物理内存是4GB,但是我们的程序大小是5GB。那么这个时候我们无法将程序全部放到内存中,也就无法运行程序。分页机制引入的原因之一就是为了解决这个问题。分页机制的引入实现了虚拟存储器的机制...
分类:其他好文   时间:2016-05-30 14:54:08    阅读次数:304
一个操作系统的实现(8)-进一步体会分页机制
上面的两篇文章中,我们对可用内存进行了统计,并且合理的分配了页表的大小。这节中,我们来看看分页的好处 在此之前不知道你有没有注意过一个细节,如果你写一个程序(在Linux或Windows下均可),并改个名复制一份,然后同时调试,你会发现,从变量地址到寄存器的值,几乎全部都是一样的!而这些“一样的”地址之间完全不会混淆起来,而是各自完成着自己的职责。这就是分页机制的功劳,下面我们就来模拟一...
分类:其他好文   时间:2016-05-30 14:49:35    阅读次数:265
一个操作系统的实现(4)-认识LDT
看到这里,你应该已经很了解GDT了,如果还不了解GDT。请看这篇文章:OS:一个操作系统的实现(2)-认识保护模式,认识保护模式那篇文章的最后详细介绍了由16位寻址升级到32位寻址而引入的GDT。 LDT(Local Descriptor Table):从名字上面就可以看出来它与GDT(Gobal Descriptor Table)的区别。GDT是全局描述符表,LDT是局部描述符表(相对...
分类:其他好文   时间:2016-05-27 12:42:24    阅读次数:244
读一个操作系统的实现 部分目录
写操作系统 利益于分页(19) 写操作系统 中断门(20) 写操作系统 中断实例:时钟中断(21) 写操作系统 FAT12文件系统(22) 写操作系统 加载Loader.bin(23) ...
分类:其他好文   时间:2016-05-26 18:25:08    阅读次数:134
一个操作系统的实现(1)-准备工作
今天开始看《Orange’S:一个操作系统的实现》一书。这里是ubuntu 16.04下开发环境的搭建以及实现一个最小的操作系统(准确地说应该是一个引导扇区)。 工欲善其事,必先利其器。自制一个操作系统需要的工具如下: 汇编编译器NASM虚拟机算计Bochs软盘绝对扇区读写工具(这里直接使用强大的dd) 现在就来安装这些工具 安装NASM 通过源代码安装,官网下载...
分类:其他好文   时间:2016-05-18 19:41:05    阅读次数:251
一个操作系统的实现(2)-认识保护模式
今天开始学习intel处理器的保护模式。书的第二章 这节讲述的是如何从实模式进入保护模式。用的例子是在保护模式下向屏幕上输出字符P 如何进入保护模式呢?主要步骤如下: 0. 进入保护模式的步骤 准备GDT用lgdt加载gdtr打开A20置r0的PE位位1跳转,进入保护模式 下面是书的例子: 1. 进入保护模式实例 ; ===================...
分类:其他好文   时间:2016-05-18 19:23:04    阅读次数:197
40条   上一页 1 2 3 4 下一页
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!