Category Archives: 操作系统

MIT 6.828 Lab1 done.

五天时间,把6.828的Lec 1和2的课程材料、源码读完,然后把Lab1做完了。

前七道题不用细说,都是概念和操作性的。中间碰到一个很囧的问题,在ssh下,make qemu会失败,改成make qemu-nox就OK了(实际上是给了qemu一个-nographic参数)。折腾了大半个钟头,其实manual里已经写清楚了——以后先把manual看完,再动手。

第8题完成cprintf的%o方式,完全仿照%d部分的代码就OK了,其中有个base被传入printnum(),是进制的基数,改一下就好。

11和12题完成backtrace指令,这个是重头戏。函数调用栈回溯的主要思路是:

Continue reading

发个FAT32 MBR代码

MBR Sector for FAT32

(基于FlyingDragon OS Boot Sector FOR FAT32修改)

点击这里下载mbr.tar.gz

功能:

1024Byte MBR代码。读取FAT32格式磁盘分区,在根目录下寻找loader.bin文件,将其加载至0×100h处开始执行。注:loader.bin不应超过607KB。

建议实验流程:

1、安装bochs虚拟机、bximage工具

2、使用 bximage生成1.44MB大小软件镜像文件a.img

3、使用mkdosfs -F 32 a.img将a.img格式化为FAT32分区(忽略警告信息)

4、编译mbr.asm: nasm -o mbr.bin mbr.asm

5、将mbr.bin写入a.img起始处:dd if=mbr.bin of=a.img bs=512 count=2 conv=notrunc

6、挂载a.img:sudo mount -t msdos -o loop a.img /mnt/floppy

7、将自己写的loader.bin写入镜像:sudo cp loader.bin /mnt/floppy

8、卸载a.img: sudo umount /mnt/floppy

9、配置.bochsrc文件,使其以a.img作为启动盘

10、执行bochs

 

Windows or *nix?

技术人员总是乐于争论Windows和Unix/Linux的优劣,而且hack程度越高,越是偏向于后者。

其实作为终端用户,我们完全不必偏执。

技术实现不同、历史发展不同、社区文化对立……了解、理解就够了,何必非得分出孰是孰非。

举个例子。微软的Office是最为便捷强大的所见即所得办公软件,而充满Unix文化的各类TeX系统,则一直骄傲于自己对排版的精确控制独一无二。

然而LaTeX的发明者Leslie Lamport 被问到“当前为什么没有(基于TeX的)高质量所见即所得排版系统?”时,回答道:“门槛太高了,一个所见即所得的排版系统要做到 LaTeX 当前的水平,工作量之大不是单枪匹马所能完成的。微软这样的大公司可以做,但是市场太小了。”

在Windows还是*nix上,始终兼容并包,至少有三种好处:

1、作为用户,哪种合适用哪种,有益于自己的工作;

2、作为开发者,认识自己的不足、吸纳对方的优点、分析差距的原因,有助于改进产品,让世界更美好;

3、作为旁观者,没有什么比中立地看两个人辩论更长见识的了。

所以写下这篇日志,防止自己哪天又头脑一热拜倒在Unix/Linux的石榴裙下。