30天自制操作系统 pdf_30天自制操作系统

bbf1968f73c74d7d68b2e22d20a85dc7.png
21ab88d2b2a66362e7d91938513199ac.png
运行在自己笔记本上的操作系统https://www.zhihu.com/video/1179009585591033856

本科大四结束时,曾经花了一个暑假写过一个玩具操作系统,可以刻录到U盘并运行在裸机上。最近重温一下,打算写在知乎上,整体难度上很小,适合初学者,只需要知道基本的汇编和C编程即可。

系统内容上包括可视化、系统保护模式、内存管理、多任务与进程通信、文件系统、API和运行在系统上的一些小应用。实现上自底向上,底层采用NASM汇编+C实现,初期在VM上调试,后期以虚拟软盘镜像的形式部署到机器上,编写的时候主要参考《30天自制操作系统》这本书,很推荐,对新手很友好,语言也很幽默。

实现流程大概:

  • 初始镜像
    • 手工编写IPL镜像
    • VM启动镜像
    • 真机启动镜像
  • 系统引导
    • 读取磁盘信息
    • 引导扇区
    • 启动扇区信息记录
  • 初始系统实现
    • 引入C,与NASM混编
    • 编译流程
  • GUI初步
    • 实现调色板,控制屏幕
    • 导入字符集,实现字符打印功能,初步Debug
    • API: 字符串输出
  • 实现中断
    • 设置GDT与IDT,初始化中断设置
    • 终端接收与缓存
    • 键盘中断的实现
    • 鼠标中断的实现
    • API: 键盘鼠标中断
  • 内存管理
    • 内存检查
    • 虚拟地址映射
    • 空闲链表与首次适应算法
    • 内存碎片化的解决方案
    • API: 内存申请、查看与释放
  • GUI进阶
    • 分辨率调整
    • 图层结构设计
    • 桌面图层与鼠标
    • API: 图层申请与释放
  • 窗口
    • 窗口图层的绘制与移动
    • 当前主窗口的切换
    • API: 窗口绘制
  • 定时器
    • 定时器中断与倒计时功能
    • 多个定时器的实现
    • 利用定时器优化图层绘制
    • API: 倒计时
  • 单进程管理
    • 进程控制块的设计
    • 进程创建、休眠与销毁
    • 进程监听中断
    • 进程控制窗体
    • API: 进程创建、休眠与销毁
  • 多进程管理
    • 轮转算法的实现
    • 进程通信
    • 主进程的切换
    • API: 进程通信
  • 文件系统
    • FCB的设计
    • 单个扇区的读写
    • 整个文件的读写
    • API: 文件读写
  • 蜂鸣器
    • 单个音符的播放
    • 连续音符的播放
    • API: 蜂鸣器
  • 应用程序
    • 主命令行的实现
    • 内存管理器
    • 进程管理器
    • 计算器
    • 文本编辑器
    • 图片显示器
    • 音乐播放器
    • 关机

Github地址

VictorYXL/MyOS​github.com
78cd6b89934227b1b097225d99ca79db.png

当初写的时候很随意,代码没啥规范,文件系统还有些BUG,所以没往上传。如果有人看,我再修修BUG,规范下代码。


粉丝数从1涨到了100,我有了继续写下去的动力了,以后也会有空分享下自己写的别的有意思的项目。


涨了好多粉丝,写完了系统引导的实现,分别是系统启动和引导的汇编实现。

VictorYXL:30天自制操作系统-初版镜像和启动​zhuanlan.zhihu.com
VictorYXL:30天自制操作系统-汇编实现初版镜像​zhuanlan.zhihu.com
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值