操作系统
jj_chen_lian
这个作者很懒,什么都没留下…
展开
-
用虚拟机软盘启动自己的磁盘镜像文件
经过一个月的挣扎,我决定还是静下心的来学习汇编和操作系统,然后进一步的巩固自己的底层知识。虽然这一块的工作确实不太好找,所以近期的任务就是读<<自制操作系统一书>>,另外就是继续完善自己的C服务器。所以以后的内容会围绕<<30天自制操作系统>>一书和<<x86汇编-从实模式到保护模式>>一书来记录。当然这里只是记录自己...原创 2013-07-28 14:25:01 · 887 阅读 · 0 评论 -
于渊-动手写操作系统4
操作系统版本五学习内容:现在我们开始从实模式到保护模式的跳跃了。下面我们先来说说什么是保护模式。之前我们的实模式的寄存器只有16位,那么它的寻址范围就是 段地址(16位)*16+偏移地址(16位),所以它的寻址能力是非常有限的,那么假如切换到保护模式去的话CPU就有巨大的寻址能力,那么有人就会问Intel为什么不设计32位的段寄存器呢,那是Intel想向下兼容以前那些采用16位寄存器设...原创 2013-08-14 17:06:58 · 179 阅读 · 0 评论 -
于渊-动手写操作系统3
我们之前已经通过boot.asm成功的把loader.bin加载内存0900h:0100处了,那么我们现在就要来写真正的loader.asm了。loader.asm完成一下三件事:第一件事与boot.asm一样,通过遍历根目录区条目找到我们后面自己写的操作系统内核,即我们的kernel第二件事就是从实模式切换到保护模式第三件事就是启动分页机制第四件事就是把我们的kernel...原创 2013-08-14 15:29:21 · 150 阅读 · 0 评论 -
于渊-动手写操作系统2
既然我们能够通过根目录条目找到DIR_FstClus了,这个字段告诉了我们文件开始的簇号,它告诉我们文件存放在磁盘的什么位置,从而让我们可以找到它。其实准确来说,这里应该是它告诉了我们文件存放在磁盘数据区的什么位置。需要注意的是,数据区的第一个簇的簇号是2,而不是0或者1.也就是说,如果我们在根目录条目中发现了一个文件,该文件的开始簇号是2,那么就是说,该文件的数据开始于数据区的第一个簇。...原创 2013-08-14 12:34:41 · 129 阅读 · 0 评论 -
于渊-动手写操作系统1
总感觉小日本的书有点敷衍的感觉,很多重要的知识点的没有讲,后面发现国内也有一本不错的操作系统书,于渊写的,还不错,理论知识讲解的也很周到。所以下面打算先看于渊的书先。好了,先贴代码,加注释分析;%define _BOOT_DEBUG_ ; 做 Boot Sector 时一定将此行注释掉!将此行打开后用 nasm Boot.asm -o Boot.com 做成一个.COM文件易于调试...原创 2013-08-13 22:17:37 · 224 阅读 · 0 评论 -
从你的u盘启动:30天自制操作系统第四天u盘启动学习笔记
文章转载自 http://blog.csdn.net/h397916230/article/details/9732425暑假学习小日本的那本书:30天自制操作系统更多学习中的问题、资料,群里分享developing environment:ubuntu 关于u盘启动自己做的操作系统的原因: 我想大部分分的学习者和写Os的人都有这样的想法,为什么现在大部分的...原创 2013-08-04 09:22:05 · 191 阅读 · 0 评论 -
gas汇编改写
现在,我们来看看在linux平台上面怎么对之前实现的功能进行改写了。当然这里先说启动区加载程序跟在win下面是一样的代码的,不同的就是C调用汇编程序代码和汇编调用C代码这里不同。以及剩下的就是一些makefile文件的不同。我们重点放在C于汇编之间的调用,当然我们这里先不讲汇编是怎么调用C的,因为这一部分我也暂时还没看,我就先用米油给的一个entry.S来直接使用了,后面才对这一部分进行分析...原创 2013-08-01 22:15:16 · 229 阅读 · 0 评论 -
画面显示
今天尝试将操作系统的开发移到linux平台过来,因为感觉在win下面做的很不爽。参与了米油的一些代码,总算成功了。那么下面开始今天的内容。1,用C语言实现内存写入往naskfunc.nas里添加的一个新的函数 _write_mem8: ;void write_mem8(int addr,int data); MOV ECX, [ESP+4] ;[ESP + 4]中存放的是地...原创 2013-08-01 21:45:53 · 132 阅读 · 0 评论 -
启动程序装载器
下面开始我们新的一章的学习了。在这章开头,我先要吐槽一下这本书,我觉得这本在第三章,也就是第三天这里,感觉有些地方作者讲的很含糊,有的地方需要深入的讲解却没有,但是有很多所谓的“风趣”的话,但是我倒不觉得有多风趣,纯属吐槽。好了下面开始进入正文,在进入正文之前先讲解几个重要的概念启动区:(boot sector)软盘第一个的扇区成为启动区,就是0面0道1扇区。那么什么是扇区呢?计算...原创 2013-07-31 14:54:51 · 240 阅读 · 0 评论 -
第一个hello world例子
上代码先:; hello-os; TAB=4 ORG 0x7c00 JMP entry DB 0x90 DB "HELLOIPL" DW 512 DB 1 DW 1 DB 2 DW 224 DW 2880 DB 0xf0 ...原创 2013-07-28 21:50:35 · 336 阅读 · 0 评论 -
X86分段机制
内存分段机制有很多好处,不仅方便程序的重定位以及方便内存管理等等的好处,我们就从内存的重定位来分析分段机制的作用。指令和指令集:简单地说,处理器的设计者用某些数来指示处理器所进行的操作,这成为指令,或者叫机器指令,因为只有处理器才认得他们。比如,指令F4H表示让处理器停机,当处理器取到并执行这条指令后,就停止工作。指令是集中存放在内存里的,一条接着一条,处理器的工作是自动按顺序取出并加...原创 2013-07-28 18:05:30 · 210 阅读 · 0 评论 -
于渊-动手写操作系统5
下面进行分页机制的实现,这里我们先来说说为什么要进行分页?我们看到分段机制已经提供了很好的保护机制,那为什么还要加上分页管理机制呢?其实它的主要目的在于实现虚拟存储器,线性地址中任意一个页都能映射到物理地址中的任何一个页,这无疑使得内存管理变得相当的灵活。逻辑地址------采用分段机制-------线性地址-------采用分页机制---------物理地址从上面看出如果有开启分页机...原创 2013-08-14 22:49:43 · 150 阅读 · 0 评论