写一个操作系统

十一完成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

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值