操作系统实现
agul_
中科院计算技术研究所在读硕士,主要研究方向为知识图谱
展开
-
《一个操作系统的实现》(零):搭建环境
环境:Ubuntu12.10 + bochs2.6.1今天从图书馆借了本《一个操作系统的实现》,豆瓣评分挺高的,准备试试。拿到手后先翻了一下前几页,第一章1.1的准备工作里写着要一张软盘,顿时傻眼,现在找台有软驱的电脑都难。连忙用手机百度一下,百度知道有个回答是用U盘代替软盘,于是我果断去校门口电子产品店买了个U盘(好惭愧,其实U盘早就该买一个的,需要的时候一直用手机、MP3、MP4以及邮箱神原创 2013-05-04 21:34:06 · 2558 阅读 · 2 评论 -
《一个操作系统的实现》(二):使用Bochs调试操作系统
在输入bochs -f bochsrc后,还有几个选项,只需要输入6然后回车或直接按回车即可启动操作系统,不过它仍然停在那里而不是立刻执行。这时会出现,等待我们操作。首先按照书上给的例子模拟一遍过程。 b 0x7c00 (在程序入口处设置断点)c(执行到断点位置,这时虽然Bochs上有内容,但是"Hello, OS world!"还未显示)dump_cup(不知道早些的版本是否能执原创 2013-05-05 15:30:15 · 3680 阅读 · 0 评论 -
《一个操作系统的实现》(一):不到20行的操作系统代码的解释
最开始的一段操作系统代码: org 07c00h ;告诉编译器程序加载到7c00处 mov ax, cs mov ds, ax mov es, ax call DispStr ;调用显示字符串例程 jmp $ ;无限循环DispStr: mov ax, BootMessage mov bp, ax ;ES:BP = 串地址 mov cx, 16 ;CX = 串长度原创 2013-05-05 14:19:38 · 2199 阅读 · 4 评论 -
《一个操作系统的实现》(四):让操作系统走进保护模式
一个操作系统从开机到开始运行,大致经历“引导->加载内核入内存->跳入保护模式->开始执行内核”这样一个过程。几乎所有的文件系统都会把磁盘划分为若干层次以方便组织和管理,这些层次包括扇区(磁盘上的最小数据单元),簇(一个或多个扇区),分区(通常指整个文件系统)。对于FAT12文件系统来说,第0号扇区为引导扇区,其中有一个叫做BPB(BIOS Parameter Block)的数据结构,格式原创 2013-05-18 16:13:09 · 1918 阅读 · 0 评论 -
《一个操作系统的实现》(五):1.ELF
首先展示一段汇编的“Hello, world!”的代码:hello.asm[section .data] ;数据在此strHello db "Hello, world!", 0AhSTRLEN equ $ - strHello[section .text] ;代码在此global _start ;必须导出_start这个入口以便链接器识别_start: mov ed原创 2013-05-19 21:47:19 · 1742 阅读 · 0 评论 -
《一个操作系统的实现》(三):1.认识保护模式
进入第三章的学习~第三章开始每章内容变多了,所以以后每学习一节写一篇文章~顺便注一句:书上“用来生成描述符的宏”只是节自光盘中的pm.inc文件的,我照书上敲了那短短一段发现编译的时候报错- -不过我相信大家的眼睛都比我雪亮因为引导扇区空间只有512个字节,解决这个问题有俩办法:自己写一个引导扇区or借用别人的引导扇区(从作者的话看起来以后会涉及自己写引导扇区~期待),咱用第二种,借用一下原创 2013-05-07 17:36:57 · 2123 阅读 · 0 评论 -
《一个操作系统的实现》(三):2.保护模式进阶
在之前的代码中,程序从实模式跳到保护模式之后就开始死循环。这节会实现在程序结束时跳回实模式,也会实现对大地址内存的读写。新建的段以5MB为基址。而且每增加段都要用Descriptor描述它的段基址、段界限、属性,而且还要加上对应的选择子,比如如下两行:LABEL_DESC_DATA: Descriptor 0, DataLen-1, DA_DRW ;DataSelector原创 2013-05-09 20:34:58 · 1627 阅读 · 0 评论 -
《一个操作系统的实现》(三):3.页式存储
首先说一下页的概念~页就是一块内存。下文只讨论页大小为4KB的情况。在未打开分页机制时,线性地址等同于物理地址,即可以认为逻辑地址通过分段机制直接转换成物理地址。但开启分页时分段机制将逻辑地址转换成线性地址,线性地址再通过分页机制转换成物理地址。分页管理机制的目的就在于实现虚拟存储器,这样的话线性地址中任意一个页都能映射到物理地址中的任何一个页,使内存管理变得相当灵活。转换使用两级页表,第原创 2013-05-10 20:13:42 · 1178 阅读 · 0 评论 -
《一个操作系统的实现》(三):4.中断和异常&5.保护模式下的I/O
前面讲到了实模式下用int 15h得到内存信息,然后在保护模式下把它们显示出来。保护模式下中断机制发生了很大的变化,原来的中断向量表被IDT(Interrupt Descriptor Table,中断描述符表)代替,实模式下能用的BIOS中断在保护模式下已经不能用了。IDT可以将每一个中断向量和一个描述符对应起来。IDT中的描述符可以是中断门描述符、陷阱门描述符、任务门描述符。尽管IDT在形式上与原创 2013-05-11 15:05:24 · 2125 阅读 · 0 评论