
Balloon 操作系统
文章平均质量分 88
参考各种操作系统的代码(缝合怪?)从零实现一个属于自己的操作系统,基于i386架构。
ValKmjolnir
南京航空航天大学计算机科学与技术学院计算机科学与技术系本科生
github主页:https://github.com/ValKmjolnir
个人主要项目:easyNLP自然语言处理框架,Nasal脚本语言解释器,Balloon操作系统
展开
-
从零开始实现balloon操作系统(0x02) 加载setup模块
距离上一次发操作系统文章已经度过了好几个月,这几个月里我在忙于一个解释器项目,现在项目已经完全进入维护阶段,所以就有了空余时间继续啃操作系统。先看看解释器最终做出来的效果:好了题外话到此为止。0x01中我们实现了一个最小操作系统,使用0x10中断输出了一个句子。当时那篇文章开篇先把内存分布讲了一通(我现在看都觉得昏),可能有些劝退,这次开篇我先把优化的代码贴这,我们接下来基于此进行修改。# ballon system bootsect.s# copyright @ValKmjolnir# 2020原创 2021-01-09 18:02:33 · 290 阅读 · 0 评论 -
从零开始实现balloon操作系统(0x01) 先在bootsect.s里实现一个最小操作系统吧
在0x00文章中我们提到了引导扇区的一个重要的细节:主引导签名。而在这篇文章中,我们先不要急着开始动手写,先了解一下计算机刚刚启动之后,我们能使用的内存空间,以及内存的分布情况。刚刚启动的时候,计算机会进入实模式,在这个模式下,我们能够访问的内存空间只有1M大小(且只能执行16位程序),如果我们想实现32位系统,能够访问4GB内存的话,就必须进入保护模式(64位系统则要进一步进入长模式)。实模式下,内存分布的情况如下:0xffff0-0xfffff BIOS入口地址。CPU初始化之后,会设置CS:原创 2020-09-25 19:18:32 · 429 阅读 · 0 评论 -
从零开始实现balloon操作系统(0x00) 前言以及准备工作
在写过自然语言处理框架和nasal脚本语言解释器之后,觉得无事可做,于是开始捣鼓操作系统了。对计算机感兴趣的人大多都有想过自己去写一个玩具级别的操作系统玩儿一玩儿,不过写操作系统对个人实力真的很有考验啊……我当时开始写操作系统的时候啥都不知道,计算机组成原理没学,汇编没学,只是整天写C++貌似写得很顺手,照着一哥们的视频教程,把bootloader的代码抄了一遍。这个教程的bootloader是根据linux0.11的实现做出来的,说实话linus太顶了,相同的年纪他能写出这样的代码,而我抄完发现自己完全原创 2020-09-23 23:45:20 · 267 阅读 · 0 评论