《Orange's 一个操作系统的实现》读书手记3(2)--- [ 保护模式(Protect Mode)]
2011-01-03 14:47
357 查看
保护模式(Protect Mode)(2)
3.1.1 保护模式的运行环境
前面我们编写的程序都是运行在软盘的0面0磁道第1扇区,只有512个字节,这点弹丸之地实在满足不了日益增长的程序代码的需要。
有两个办法可以解决这个矛盾:
一是在这个512字节里专门安排一个引导代码,让它可以读取我们写的程序,然后运行它; 二是用现成的DOS系统,把我们的程序编译成COM文件,让DOS来执行它。
我们不禁要问,不是我们自己写操作系统么?怎么把DOS操作系统搅和进来了?
作者推荐用第二种简单的但不怎么酷的方法:
1. 去Bochs的官方网站h t t p://bochs.sourceforge.net/diskimages.html
下载一个freedos-img.tar.gz
,复制我们的工作目录,解压后将其中的a.img
改名为freedos.img
。
ok,我已经下好了,你呢?
2. 用bximag生成一个软盘映像,起名为pm.img
。
3. 修改当前工作目录下的bochsrc(还记得不?第二章我们自己写的,把它拷到当前工作目录来),确保其中有以下三行:
floppya:1_44=freedos.img, status=inserted
floppyb:1_44=pm.img, status=inserted
boot:a
4.启动bochs ,待FreeDos启动完毕后格式化B盘,
5. 将上节的代码pmtest1.asm 中的org 07c00h
改为 org 100h
,并重新编译:
nasm pmtest1.asm -o pmtest1.com
6. 将pmtest1.com复制到pm.img上:
sudo mkdir /mnt/floppy
sudo mount -o loop pm.img /mnt/floppy
sudo cp pmtest1.com /mnt/floppy
sudo umount /mnt/floppy
7.重新运行bochs ,A:/>B: 切换到B盘,执行 pmtest1.com,OK! 我们看到什么了?
好的,有了DOS兄的帮忙,我们就可以大展身手了。开始我们的下一步,揭密GDT......
3.1.1 保护模式的运行环境
前面我们编写的程序都是运行在软盘的0面0磁道第1扇区,只有512个字节,这点弹丸之地实在满足不了日益增长的程序代码的需要。
有两个办法可以解决这个矛盾:
一是在这个512字节里专门安排一个引导代码,让它可以读取我们写的程序,然后运行它; 二是用现成的DOS系统,把我们的程序编译成COM文件,让DOS来执行它。
我们不禁要问,不是我们自己写操作系统么?怎么把DOS操作系统搅和进来了?
作者推荐用第二种简单的但不怎么酷的方法:
1. 去Bochs的官方网站h t t p://bochs.sourceforge.net/diskimages.html
下载一个freedos-img.tar.gz
,复制我们的工作目录,解压后将其中的a.img
改名为freedos.img
。
ok,我已经下好了,你呢?
2. 用bximag生成一个软盘映像,起名为pm.img
。
3. 修改当前工作目录下的bochsrc(还记得不?第二章我们自己写的,把它拷到当前工作目录来),确保其中有以下三行:
floppya:1_44=freedos.img, status=inserted
floppyb:1_44=pm.img, status=inserted
boot:a
4.启动bochs ,待FreeDos启动完毕后格式化B盘,
5. 将上节的代码pmtest1.asm 中的org 07c00h
改为 org 100h
,并重新编译:
nasm pmtest1.asm -o pmtest1.com
6. 将pmtest1.com复制到pm.img上:
sudo mkdir /mnt/floppy
sudo mount -o loop pm.img /mnt/floppy
sudo cp pmtest1.com /mnt/floppy
sudo umount /mnt/floppy
7.重新运行bochs ,A:/>B: 切换到B盘,执行 pmtest1.com,OK! 我们看到什么了?
好的,有了DOS兄的帮忙,我们就可以大展身手了。开始我们的下一步,揭密GDT......
相关文章推荐
- 《Orange's 一个操作系统的实现》读书手记3(4)--- [ 保护模式(Protect Mode)]
- 《Orange's 一个操作系统的实现》读书手记3(1)--- [ 保护模式(Protect Mode)]
- 《Orange's 一个操作系统的实现》读书手记3(3)--- [ 保护模式(Protect Mode)]
- 《Orange's 一个操作系统的实现》学习笔记--保护模式理论初步(二)
- 《Orange's 一个操作系统的实现》学习笔记--保护模式进阶
- 《Orange's 一个操作系统的实现》读书手记2--- [ 搭建你的工作环境]
- 《Orange's 一个操作系统的实现》学习笔记--实践认识保护模式
- 《Orange's 一个操作系统的实现》学习笔记--保护模式理论初步(一)
- 《Orange's 一个操作系统的实现》读书手记 1 --- [马上动手写一个最小的“操作系统”]
- 《Orange's 一个操作系统的实现》读书手记2--- [ 搭建你的工作环境]
- 《Orange’s 一个操作系统的实现》3.保护模式8-页式存储
- <<orange‘s :一个操作系统的实现>>读书笔记(2) 保护模式
- 《Orange’s 一个操作系统的实现》3.保护模式3----DOS加载.EXE过程
- 《Orange's 一个操作系统的实现》学习笔记--特权级代码段之间的转移(一)
- 《Orange’s 一个操作系统的实现》3.保护模式1----pm.inc分析
- Orange'S:一个操作系统的实现
- 《一个操作系统的实现》(三):4.中断和异常&5.保护模式下的I/O
- 《Orange’s 一个操作系统的实现》3.保护模式2----认识保护模式B
- 《Orange's 一个操作系统的实现》学习笔记--分页机制
- Orange's一个操作系统的实现的开发环境的搭建