代码改变世界

随笔分类 -  linux0.11

Linux0.11---A20地址线

2013-12-08 15:11 by islandscape, 1411 阅读, 收藏,
摘要: 大家都知道8086/8088处理器有20根地址线,能够访问1^20 = 1M内存,实模式访存采用seg x 4 + off(seg为段寄存器,off为段内偏移地址)的方式,访问范围是0(0x0000:0x0000)---10ffef(0xffff:0xffff),对于超过1M的寻址地址将自动环绕(wrap around)到0x0ffef,比如访问地址0x100001时将访问0x0ffef + 1 = 0xfff0物理地址。随后intel发明了80286,地址线有24位,访问地址空间是1^24=16M,并且有一个和8086/8088相互兼容的实模式,如果超过了1M的内存,80286不会回滚到.. 阅读全文

Linux0.11---调试启动程序

2013-11-17 21:41 by islandscape, 1562 阅读, 收藏,
摘要: 前面一篇文章介绍了最简单的启动程序---从系统上电到屏幕输出“hello world”,linux0.11内核启动程序远比这复杂的多,后面我们会逐步深入。今天给大家介绍下如何调试这个最简单的启动程序。 “工欲善其事,必先利其器”,我们需要两“器”---编译器和虚拟机。编译器把汇编程序编译成为可执行文件,虚拟机模拟系统上电、BIOS中断等功能。编译器选择nasm,它是一款为可移植性与模块化而设计的80x86的汇编器。官方网址为http://www.nasm.us/。虚拟机选择bochs,bochs是一个模拟x86硬件平台的虚拟机,通过简单的配置即可模拟I/O设备、内存等硬件环境。相关链接:... 阅读全文

linux0.11-----从启动程序开始

2013-11-09 13:14 by islandscape, 823 阅读, 收藏,
摘要: 今天终于鼓起勇气在博客园开博,博客是个分享经验、交流知识的地方,最近在研究linux0.11内核,想把自己的所学记录下来,以备后用。欢迎大家留言批评指正或联系 islandscape@163.com,也欢迎大家一起学习、一起进步。 当我们按下计算机电源键后发生了什么呢?主板接收到一个启动信号,启动供电系统后BIOS进行自检,若发现某个部件不能正常工作系统将进入死循环。所有硬件都通过自检后,系统将控制权交给BIOS。BIOS按照配置顺序读驱动器,将驱动器的第一个扇区(512B)加载到物理地址0x7c00地址,找到启动扇区后从0x7c00这个地址执行启动程序。为什么BIOS会把第一个扇区加载... 阅读全文