[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-6447":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":16,"stars7d":17,"stars30d":18,"stars90d":16,"forks30d":16,"starsTrendScore":19,"compositeScore":20,"rankGlobal":10,"rankLanguage":10,"license":21,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":24,"hasPages":22,"topics":25,"createdAt":10,"pushedAt":10,"updatedAt":43,"readmeContent":44,"aiSummary":45,"trendingCount":16,"starSnapshotCount":16,"syncStatus":46,"lastSyncTime":47,"discoverSource":48},6447,"30dayMakeOS","yourtion\u002F30dayMakeOS","yourtion","《30天自制操作系统》源码中文版。自己制作一个操作系统（OSASK）的过程","https:\u002F\u002Fgithub.com\u002Fyourtion\u002FYOS",null,"C",6409,1463,203,12,0,4,14,3,40.5,"Other",false,"master",true,[26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42],"asm","boot","c","cc","diy","fifo","gdt","idt","linux","nas","nasa","operating-system","os","osask","osx","qemu","stdlib","2026-06-12 02:01:24","# 《30天自制操作系统》中文源码 —— OSASK\n\n自己制作一个操作系统的过程，阅读过程会一边汉化源码，一边执行还有根据一些相关的内容进行代码的书写，欢迎大家交流。\n\n运行方法，在 `tolset` 中新建一个 `run` 文件夹，把代码拷贝进去，然后根据系统版本运行 `!cons_**.bat`。\n\n一般都是使用 `make run` 运行代码，27天开始使用 `make run_full`。可以直接看书。\n     又或者，把tolset里的`z_tools目录` 复制到 本项目目录`30dayMakeOS`下。\n\n## 完成效果\n\n![Screen](Screen.png)\n\n## 内容简介\n\n### 第一周（第1天～第7天）\n\n一开始首先要考虑怎么来写一个“只要一通电就能运行的程序”。这部分用C语言写起来有些困难，所以主要还是用汇编语言来写。\n\n这步完成之后，下一步就要写一个从磁盘读取操作系统的程序。这时即便打开电脑电源，它也不会自动地将操作系统全部都读进来，它只能读取磁盘上最开始的512字节的内容，所以我们要编写剩余部分的载入程序。这个程序也要用汇编语言编写。\n\n一旦完成了这一步，以后的程序就可以用C语言来编写了。我们就尽快使用C语言来学习开发显示画面的程序。同时，我们也能慢慢熟悉C语言语法。这个时候我们好像在做自己想做的事，但事实上我们还没有自由操纵C语言。\n\n接下来，为了实现“移动鼠标”这一雄心，我们要对CPU进行细致的设定，并掌握中断处理程序的写法。从全书总体看来，这一部分是水平相当高的部分，笔者也觉得放在这里有些不妥，但从本书条理上讲，这些内容必须放在这里，所以只好请大家忍耐一下了。在这里，CPU的规格以及电脑复杂的规格都会给我们带来各种各样的麻烦。而且开发语言既有C语言，又有汇编语言，这又给我们造成了更大的混乱。这个时候我们一点儿也不会觉得这是在做自己想做的事，怎么看都像是在“受人摆布”。\n\n渡过这个痛苦的时期，第一周就该结束了。\n\n- [第1天：从计算机结构到汇编程序入门](https:\u002F\u002Fgithub.com\u002Fyourtion\u002F30dayMakeOS\u002Freleases\u002Ftag\u002FDay01)\n- [第2天：汇编语言学习与Makefile入门](https:\u002F\u002Fgithub.com\u002Fyourtion\u002F30dayMakeOS\u002Freleases\u002Ftag\u002FDay02)\n- [第3天：进入32位模式并导入C语言](https:\u002F\u002Fgithub.com\u002Fyourtion\u002F30dayMakeOS\u002Freleases\u002Ftag\u002FDay03)\n- [第4天：C语言与画面显示的练习](https:\u002F\u002Fgithub.com\u002Fyourtion\u002F30dayMakeOS\u002Freleases\u002Ftag\u002FDay04)\n- [第5天：结构体、文字显示与GDT\u002FIDT初始化](https:\u002F\u002Fgithub.com\u002Fyourtion\u002F30dayMakeOS\u002Freleases\u002Ftag\u002FDay05)\n- [第6天：分割编译与中断处理](https:\u002F\u002Fgithub.com\u002Fyourtion\u002F30dayMakeOS\u002Freleases\u002Ftag\u002FDay06)\n- [第7天：FIFO与鼠标控制](https:\u002F\u002Fgithub.com\u002Fyourtion\u002F30dayMakeOS\u002Freleases\u002Ftag\u002FDay07)\n\n### 第二周（第8天～第14天）\n\n一周的苦战还是很有意义的，回头一看，我们就会发现自己还是斩获颇丰的。这时我们已经基本掌握了C语言的语法，连汇编语言的水平也能达到本书的要求了。\n\n所以现在我们就可以着手开发像样的操作系统了。但是这一次我们又要为算法头痛了。即使掌握了编程语言的语法，如果不懂得好的算法的话，也还是不能开发出来自己想要的操作系统。\n\n所以这一周我们就边学习算法边慢慢地开发操作系统。不过到了这一阶段，我们就能感觉到基本上不会再受技术问题限制了。\n\n- [第8天：鼠标控制与32位模式切换](https:\u002F\u002Fgithub.com\u002Fyourtion\u002F30dayMakeOS\u002Freleases\u002Ftag\u002FDay08)\n- [第9天：内存管理](https:\u002F\u002Fgithub.com\u002Fyourtion\u002F30dayMakeOS\u002Freleases\u002Ftag\u002FDay09)\n- [第10天：叠加处理](https:\u002F\u002Fgithub.com\u002Fyourtion\u002F30dayMakeOS\u002Freleases\u002Ftag\u002FDay10)\n- [第11天：制作窗口](https:\u002F\u002Fgithub.com\u002Fyourtion\u002F30dayMakeOS\u002Freleases\u002Ftag\u002FDay11)\n- [第12天：定时器（1）](https:\u002F\u002Fgithub.com\u002Fyourtion\u002F30dayMakeOS\u002Freleases\u002Ftag\u002FDay12)\n- [第13天：定时器（2）](https:\u002F\u002Fgithub.com\u002Fyourtion\u002F30dayMakeOS\u002Freleases\u002Ftag\u002FDay13)\n- [第14天：高分辨率及键盘输入](https:\u002F\u002Fgithub.com\u002Fyourtion\u002F30dayMakeOS\u002Freleases\u002Ftag\u002FDay14)\n\n### 第三周（第15天～第21天）\n\n现在我们的技术已经相当厉害了，可以随心所欲地开发自己的操作系统了。首先是要支持多任务，然后是开发命令行窗口，之后就可以着手开发应用程序了。\n\n到本周结束时，就算还不够完备，我们也能拿出一个可以称之为操作系统的软件了。\n\n- [第15天：多任务（1）](https:\u002F\u002Fgithub.com\u002Fyourtion\u002F30dayMakeOS\u002Freleases\u002Ftag\u002FDay15)\n- [第16天：多任务（2）](https:\u002F\u002Fgithub.com\u002Fyourtion\u002F30dayMakeOS\u002Freleases\u002Ftag\u002FDay16)\n- [第17天：命令行窗口](https:\u002F\u002Fgithub.com\u002Fyourtion\u002F30dayMakeOS\u002Freleases\u002Ftag\u002FDay17)\n- [第18天：dir命令](https:\u002F\u002Fgithub.com\u002Fyourtion\u002F30dayMakeOS\u002Freleases\u002Ftag\u002FDay18)\n- [第19天：应用程序](https:\u002F\u002Fgithub.com\u002Fyourtion\u002F30dayMakeOS\u002Freleases\u002Ftag\u002FDay19)\n- [第20天：API](https:\u002F\u002Fgithub.com\u002Fyourtion\u002F30dayMakeOS\u002Freleases\u002Ftag\u002FDay20)\n- [第21天：保护操作系统](https:\u002F\u002Fgithub.com\u002Fyourtion\u002F30dayMakeOS\u002Freleases\u002Ftag\u002FDay21)\n\n### 第四周（第22天～第28天）\n\n在这个阶段，我们可以尽情地给操作系统增加各种各样的功能，同时还可以开发出大量像模像样的应用程序来。\n\n这个阶段我们已经能做得很好了，这可能也是我们最高兴的时期。这部分要讲解的内容很少，笔者也不用再煞费苦心地去写那些文字说明了，可以把精力都集中在编程上（笑）。\n\n对了，说起文字才想起来，正好在这个时期可以让我们的操作系统显示文字了。\n\n- [第22天：用C语言编写应用程序](https:\u002F\u002Fgithub.com\u002Fyourtion\u002F30dayMakeOS\u002Freleases\u002Ftag\u002FDay22)\n- [第23天：图形处理相关](https:\u002F\u002Fgithub.com\u002Fyourtion\u002F30dayMakeOS\u002Freleases\u002Ftag\u002FDay23)\n- [第24天：窗口操作](https:\u002F\u002Fgithub.com\u002Fyourtion\u002F30dayMakeOS\u002Freleases\u002Ftag\u002FDay24)\n- [第25天：增加命令行窗口](https:\u002F\u002Fgithub.com\u002Fyourtion\u002F30dayMakeOS\u002Freleases\u002Ftag\u002FDay25)\n- [第26天：为窗口移动提速](https:\u002F\u002Fgithub.com\u002Fyourtion\u002F30dayMakeOS\u002Freleases\u002Ftag\u002FDay26)\n- [第27天：LDT与库](https:\u002F\u002Fgithub.com\u002Fyourtion\u002F30dayMakeOS\u002Freleases\u002Ftag\u002FDay27)\n- [第28天：文件操作与文字显示](https:\u002F\u002Fgithub.com\u002Fyourtion\u002F30dayMakeOS\u002Freleases\u002Ftag\u002FDay28)\n\n\n### 免费赠送两天（第29天～第30天）\n\n剩下的两天用来润色加工。这两天我们来做一些之前没来得及做，但做起来既简单又有趣的内容。\n\n- [第29天：压缩与简单的应用程序](https:\u002F\u002Fgithub.com\u002Fyourtion\u002F30dayMakeOS\u002Freleases\u002Ftag\u002FDay29)\n- [第30天：高级的应用程序](https:\u002F\u002Fgithub.com\u002Fyourtion\u002F30dayMakeOS\u002Freleases\u002Ftag\u002FDay30)\n","《30天自制操作系统》是一个指导读者从零开始制作一个简易操作系统的项目，其源码为中文版。该项目通过C语言和汇编语言结合的方式，逐步引导学习者完成从BIOS加载到多任务处理等关键功能的开发，涵盖了GDT\u002FIDT初始化、中断处理、内存管理及鼠标键盘控制等多个核心技术点。适合对计算机底层原理感兴趣或希望深入了解操作系统工作机理的学习者使用，尤其对于初学者而言，它提供了一个结构化且易于跟随的学习路径来探索操作系统构建的过程。",2,"2026-06-11 03:07:03","top_language"]