写一个操作系统

来源:互联网 发布:派派软件下载 编辑:程序博客网 时间:2024/05/13 02:19

十一完成MIT的OS课程LABS,对OS整体有了更加清晰的认识,所以狠下心删掉从去年4月

开始写到现在的OS(结构不清晰,参考太多Linux),开始闭门造车重写一个小OS,现在看
来基础功能已经实现了,并且在用户态也跑起了一个简单的shell,简单记下编写的历程:

1.写一个bootloader,磁盘启动,获取内存的(e820)映射表,加载内核,进入保护模式
2.初始化gdt/分页表,伙伴内存分配算法,slab分配器
3.磁盘驱动(PIO模式),块缓冲层,minix文件系统文件读写接口
4.视频输出,滚屏的实现,printk的实现
5.trap/fault/中断处理,初始化idt
6.简单的进程调度器,进程相关函数:fork/execute/exit/wait
7.提供系统调用接口
8.8259A驱动,外设中断的处理,打开键盘中断
9.用户态程序的编写:shell, C库,基本工具(cat/ls/mkdir/rmdir/cp/rm/sync)
10.8253驱动,打开时钟中断,将主动让出CPU的调度方式改为时钟中断驱动的方式(仍在调试中)

项目放在github上:这里
有待完善的:
1. 信号/进程同步/锁
2. TCP/IP栈(准备把自己写的 在用户态模拟TCP/IP栈 移植进来)
3. 将磁盘驱动改成中断驱动模式
4. 完善用户环境,添加更多常用程序

上张在KVM里面模拟的图


---update 2013.7

我在知乎上回答的答案:如何写一个操作系统

原创粉丝点击