简易操作系统
一个简单的操作系统,简单到名字都没有(大概3000行不到),我完成了操作系统最基础的内容:内核引导,保护模式开启,中断,页式内存管理,创建进程与切换,没有磁盘系统与调度系统。
原本是要完成一个可供本科生学习操作系统的教学代码,现草草完成,无力维护,研究生方向不是操作系统,将其开源。我从博客中学到这一切,现在还给博客。
代码原型是清华大学的UCore,在启动引导结束后,基本不再一致。这里感谢清华大学UCore,参照其代码做出了这个操作系统,我原本也想让东北大学拥有一个教学操作系统,但能力不足失败了。
Gitee源码地址:源代地址+配套手册
https://gitee.com/wei_kangnings_small_874180837/ucore-os/tree/USing_LD/
GitHub源代码地址GitHub链接
https://github.com/Weikangning/Operation-System
两个git上内容都一样,哪个方便用哪个
内容过多,这里只展示第一部分(是从Gitee中的配套手册中复制过来的),其余部分大家可以在git上获取。
简介
四岁第一次见到计算机,就被PC所吸引,也一直想实现一个OS,但看了看自己的能耐,也就一直搁置了。本科是计算机专业,毕设的时候选择了基于UCore来制作一个教学操作系统,最后做的也马马虎虎,所以研究生又开始把这个坑挖了出来,想做出最简单的操作系统。
本教程是一个菜鸡的操作系统之路,是面向小白的入门。本人水平也不高,只想尽力将自己所学的按大白话解释出来,如有错误,还希望指正。本系统是对UCore的个人注解。在此基础上想做出一个OS。
下面开始正文,先说说个人历程,做了一圈下来,发现最难的不是代码,是对各种工具的使用,主要是:编译器(GCC,LD),CMAKE/MAKEFILE,脚本控制。我开始并不在意这些,后来才慢慢从windows的集成环境脱离,适应了Linux一切自己动手丰衣足食的状态,我姑且将这些非代码的部分称为外围环境(本质是软件工程的项目管理)。因为操作系统是要与硬件直接交互的,故要面对硬件的复杂性(本教程中对硬件的支持都是最简单的状态),硬件容忍不了任何错误,很多工作要强制指定程序的分布状况,这些都与Windows下由IDE一键生成不同,一个最简单的问题:在windows怎么让代码的地址可以从0x7C00处开始排列,并获知这段代码占用的总长度并在这段代码中使用这个长度???我反正没有在windows解决这个问题,在Linux下这些都依靠GCC组件来实现,在后面会向大家介绍。说到这里能看到,其实

本文档记录了一个简单的操作系统开发过程,包括内核引导、保护模式、中断处理、页式内存管理和进程创建。作者从清华大学的UCore项目起步,尽管没有完成全部功能,但仍开源了代码。文章详细介绍了操作系统的开发环境、工具使用,如GCC、Makefile、脚本控制,并探讨了实模式与保护模式、BIOS引导、Bootloader和内存管理等概念。适合初学者入门操作系统开发。

420

被折叠的 条评论
为什么被折叠?



