30天自制操作系统

news/2024/11/18 8:25:44/

30天自制操作系统

下载地址 https://pan.baidu.com/s/1VkNiKw3OmH4DQmwIX8qECA

扫码下面二维码关注公众号回复 100024获取分享码

 

本书目录结构如下:

第0天  着手开发之前  1


1  前言  1 
2  何谓操作系统  3 
3  开发操作系统的各种方法  4 
4  无知则无畏  4 
5  如何开发操作系统  6 
6  操作系统开发中的困难  7 
7  学习本书时的注意事项(重要!)  9 
8  各章内容摘要  11


第1天  从计算机结构到汇编程序入门  13


1  先动手操作  13 
2  究竟做了些什么  19 
3  初次体验汇编程序  22 
4  加工润色  24


第2天  汇编语言学习与Makefile入门  28


1  介绍文本编辑器  28 
2  继续开发  29 
3  先制作启动区  40 
4 Makefile入门  41


第3天  进入32位模式并导入C语言  45


1  制作真正的IPL 45 
2  试错  50 
3  读到18扇区  51 
4  读入10个柱面  52 
5  着手开发操作系统  54 
6  从启动区执行操作系统  55 
7  确认操作系统的执行情况  56 
8 32位模式前期准备  57 
9  开始导入C语言  59 
10  实现HLT(harib00j)  62


第4天  C语言与画面显示的练习  64


1  用C语言实现内存写入(harib01a)  64 
2  条纹图案(harib01b)  67 
3  挑战指针(harib01c)  69 
4  指针的应用(1)(harib01d)  74 
5  指针的应用(2)(harib01e)  74 
6  色号设定(harib01f)  75 
7  绘制矩形(harib01g)  84 
8  今天的成果(harib01h)  86


第5天  结构体、文字显示与GDT/IDT初始化  88


1  接收启动信息(harib02a)  88 
2  试用结构体(harib02b)  89 
3  试用箭头记号(harib02c)  91 
4  显示字符(harib02d)  91 
5  增加字体(harib02e)  94 
6  显示字符串(harib02f)  96 
7  显示变量值(harib02g)  97 
8  显示鼠标指针(harib02h)  99 
9 GDT与IDT的初始化(harib02i)  101


第6天  分割编译与中断处理  108


1  分割源文件(harib03a)  108 
2  整理Makefile(harib03b)  109 
3  整理头文件(harib03c)  110 
4  意犹未尽  112 
5  初始化PIC(harib03d)  115 
6  中断处理程序的制作(harib03e)  119


第7天  FIFO与鼠标控制  125


1  获取按键编码(hiarib04a)  125 
2  加快中断处理(hiarib04b)  127 
3  制作FIFO缓冲区(hiarib04c)  130 
4  改善FIFO缓冲区(hiarib04d)  133 
5  整理FIFO缓冲区(hiarib04e)  135 
6  总算讲到鼠标了(harib04f)  138 
7  从鼠标接受数据(harib04g)  141


第8天  鼠标控制与32位模式切换  144


1  鼠标解读(1)(harib05a)  144 
2  稍事整理(harib05b)  146 
3  鼠标解读(2)(harib05c)  148 
4  移动鼠标指针(harib05d)  151 
5  通往32位模式之路  153


第9天  内存管理  162


1  整理源文件(harib06a)  162 
2  内存容量检查(1)(harib06b)  163 
3  内存容量检查(2)(harib06c)  168 
4  挑战内存管理(harib06d)  172


第10天  叠加处理  181


1  内存管理(续)(harib07a)  181 
2  叠加处理(harib07b)  184 
3  提高叠加处理速度(1)(harib07c)  194 
4  提高叠加处理速度(2)(harib07d)  197


第11天  制作窗口  201


1  鼠标显示问题(harib08a)  201 
2  实现画面外的支持(harib08b)  202 
3 shtctl的指定省略(harib08c)  203 
4  显示窗口(harib08d)  206 
5  小实验(harib08e)  208 
6  高速计数器(harib08f)  209 
7  消除闪烁(1)(harib08g)  211 
8  消除闪烁(2)(harib08h)  214


第12天  定时器(1)  220


1  使用定时器(harib09a)  220 
2  计量时间(harib09b)  224 
3  超时功能(harib09c)  225 
4  设定多个定时器(harib09d)  228 
5  加快中断处理(1)(harib09e)  232 
6  加快中断处理(2)(harib09f)  234 
7  加快中断处理(3)(harib09g)  236


第13天  定时器(2)  240


1  简化字符串显示(harib10a)  240 
2  重新调整FIFO缓冲区(1)(harib10b)  241 
3  测试性能(harib10c~harib10f)  243 
4  重新调整FIFO缓冲区(2)(harib10g)  246 
5  加快中断处理(4)(harib10h)  253 
6  使用“哨兵”简化程序(harib10i)  257


第14天  高分辨率及键盘输入  262


1  继续测试性能(harib11a~harib11c)  262 
2  提高分辨率(1)(harib11d)  266 
3  提高分辨率(2)(harib11e)  269 
4  键盘输入(1)(harib11f)  272 
5  键盘输入(2)(harib11g)  275 
6  追记内容(1)(harib11h)  277 
7  追记内容(2)(harib11i)  279


第15天  多任务(1)  282


1  挑战任务切换(harib12a)  282 
2  任务切换进阶(harib12b)  289 
3  做个简单的多任务(1)(harib12c)  291 
4  做个简单的多任务(2)(harib12d)  293 
5  提高运行速度(harib12e)  294 
6  测试运行速度(harib12f)  297 
7  多任务进阶(harib12g)  299


第16天  多任务(2)  304


1  任务管理自动化(harib13a)  304 
2  让任务休眠(harib13b)  308 
3  增加窗口数量(harib13c)  313 
4  设定任务优先级(1)(harib13d)  317 
5  设定任务优先级(2)(harib13e)  320


第17天  命令行窗口  329


1  闲置任务(harib14a)  329 
2  创建命令行窗口(harib14b)  331 
3  切换输入窗口(harib14c)  334 
4  实现字符输入(harib14d)  337 
5  符号的输入(harib14e)  341 
6  大写字母与小写字母(harib14f)  343 
7  对各种锁定键的支持(harib14g)  346


第18天  dir命令  350


1  控制光标闪烁(1)(harib15a)  350 
2  控制光标闪烁(2)(harib15b)  352 
3  对回车键的支持(harib15c)  355 
4  对窗口滚动的支持(harib15d)  357 
5 mem命令(harib15e)  359 
6 cls命令(harib15f)  363 
7 dir命令(harib15g)  366


第19天  应用程序  371


1 type命令(harib16a)  371 
2 type命令改良(harib16b)  378 
3  对FAT的支持(harib16c)  382 
4  代码整理(harib16d)  387 
5  第一个应用程序(harib16e)  387


第20天  API 392


1  程序整理(harib17a)  392 
2  显示单个字符的API(1)(harib17b)  399 
3  显示单个字符的API(2)(harib17c)  402 
4  结束应用程序(harib17d)  403 
5  不随操作系统版本而改变的API(harib17e)  405 
6  为应用程序自由命名(harib17f)  408 
7  当心寄存器(harib17g)  410 
8  用API显示字符串(harib17h)  412


第21天  保护操作系统  418


1  攻克难题——字符串显示API(harib18a)  418 
2  用C语言编写应用程序(harib18b)  420 
3  保护操作系统(1)(harib18c)  424 
4  保护操作系统(2)(harib18d)  426 
5  对异常的支持(harib18e)  431 
6  保护操作系统(3)(harib18f)  434 
7  保护操作系统(4)(harib18g)  435


第22天  用C语言编写应用程序  443


1  保护操作系统(5)(harib19a)  443 
2  帮助发现bug(harib19b)  448 
3  强制结束应用程序(harib19c)  452 
4  用C语言显示字符串(1)(harib19d)  455 
5  用C语言显示字符串(2)(harib19e)  457 
6  显示窗口(harib19f)  462 
7  在窗口中描绘字符和方块(harib19g)  465


第23天  图形处理相关  468


1  编写malloc(harib20a)  468 
2  画点(harib20b)  472 
3  刷新窗口(harib20c)  475 
4  画直线(harib20d)  478 
5  关闭窗口(harib20e)  483 
6  键盘输入API(harib20f)  484 
7  用键盘输入来消遣一下(harib20g)  488 
8  强制结束并关闭窗口(harib20h)  489


第24天  窗口操作  493


1  窗口切换(1)(harib21a)  493 
2  窗口切换(2)(harib21b)  495 
3  移动窗口(harib21c)  496 
4  用鼠标关闭窗口(harib21d)  498 
5  将输入切换到应用程序窗口(harib21e)  500 
6  用鼠标切换输入窗口(harib21f)  506 
7  定时器API(harib21g)  507 
8  取消定时器(harib21h)  511


第25天  增加命令行窗口  515


1  蜂鸣器发声(harib22a)  515 
2  增加更多的颜色(1)(harib22b)  518 
3  增加更多的颜色(2)(harib22c)  520 
4  窗口初始位置(harib22d)  523 
5  增加命令行窗口(1)(harib22e)  524 
6  增加命令行窗口(2)(harib22f)  528 
7  增加命令行窗口(3)(harib22g)  531 
8  增加命令行窗口(4)(harib22h)  532 
9  变得更像真正的操作系统(1)(harib22i)  534 
10  变得更像真正的操作系统(2)(harib22j)  538


第26天  为窗口移动提速  541


1  提高窗口移动速度(1)(harib23a)  541 
2  提高窗口移动速度(2)(harib23b)  543 
3  提高窗口移动速度(3)(harib23c)  547 
4  提高窗口移动速度(4)(harib23d)  549 
5  启动时只打开一个命令行窗口(harib23e)  551 
6  增加更多的命令行窗口(harib23f)  554 
7  关闭命令行窗口(1)(harib23g)  555 
8  关闭命令行窗口(2)(harib23h)  561 
9 start命令(harib23i)  563 
10 ncst命令(harib23j)  564


第27天  LDT与库  571


1  先来修复bug(harib24a)  571 
2  应用程序运行时关闭命令行窗口(harib24b)  573 
3  保护应用程序(1)(harib24c)  577 
4  保护应用程序(2)(harib24d)  580 
5  优化应用程序的大小(harib24e)  583 
6  库(harib24f)  587 
7  整理make环境(harib24g)  590


第28天  文件操作与文字显示  598


1 alloca(1)(harib25a)  598 
2 alloca(2)(harib25b)  601 
3  文件操作API(harib25c)  605 
4  命令行API(harib25d)  612 
5  日文文字显示(1)(harib25e)  615 
6  日文文字显示(2)(harib25f)  624 
7  日文文字显示(3)(harib25g)  629


第29天  压缩与简单的应用程序  635


1  修复bug(harib26a)  635 
2  文件压缩(harib26b)  636 
3  标准函数  644 
4  非矩形窗口(harib26c)  647 
5 bball(harib26d)  648 
6  外星人游戏(harib26e)  651


第30天  高级的应用程序  659


1  命令行计算器(harib27a)  659 
2  文本阅览器(harib27b)  664 
3 MML播放器(harib27c)  671 
4  图片阅览器(harib27d)  679 
5 IPL的改良(harib27e)  683 
6  光盘启动(harib27f)  688


第31天  写在开发完成之后  690


1  继续开发要靠大家的努力  690 
2  关于操作系统的大小  692 
3  操作系统开发的诀窍  693 
4  分享给他人使用  694 
5  关于光盘中的软件  695 
6  关于开源的建议  696 
7  后记  698 
8  毕业典礼  703 
9  附录  704

 

 

 


http://www.ppmy.cn/news/754105.html

相关文章

我的第一个博客:爬取豆瓣top250电影名

我采用了requests模块和Xpath。 关键点1:XPATH的分析和综合,xpath通过chrome浏览器复制,具体方法网上很多,这里不再赘述。以下是前3条电影名称的xpath: //*[id"content"]/div/div[1]/ol/li[1]/div/div[2]/di…

【2】Matplotlib

2-1Matplotlib介绍与安装 什么是Matplotlib Matplotlib是一个Python的基础绘图库,它可与 NumPy 一起使用,代替Matlab使用。 为什么要学习Matplotlib 将数据进行可视化,使数据更直观使数据更加更具有说服力 Matplotlib安装 由于Matplotl…

学了Python基础,苦于无法上手实战,看这本

Python语言能让编程变得更加简单易学。但是,在掌握Python基础知识后,你是否面临编程技能无法提升,不知后续学习该如何开展的问题?《Python编程实战 妙趣横生的项目之旅》包含许多有趣的编程实践项目,这些项目能带给你灵…

太阳系外宜居星球

宜居星球 与太阳系外宜居星球相关的信息屡屡见诸报端。 除Gliese 667C的行星外,还有4颗行星是热门候选: Gliese 581g,2010年9月宣布发现,是一颗岩态行星, 距离地球大约20光年,公转周期大约30天,…

自动形式化与通用人工智能:Google Research 2020年报告

原论文:A Promising Path Towards Autoformalization and General Artificial Intelligence https://doi.org/10.1007/978-3-030-53518-6_1 选自论文集 Intelligent Computer Mathematics 13th International Conference, CICM 2020 作者Christian Szegedy是超级巨佬…

计算机美术设计基础教案,电脑美术美术教案

本节课进步的地方:1、在设计中体现了综合性和多样性,在美术教学中融入了音乐,还准备在以后教学中融入电脑教学,运用计算机的绘图软件绘画。2、在课件的制作中对音乐和图片的选择有较强的视觉和听觉冲击力。3、在语言讲解上较以前精练简洁。4、…

VQA: Visual Question Answering 视觉问答

论文:Antol S, Agrawal A, Lu J, et al. Vqa: Visual question answering[C]//Proceedings of the IEEE international conference on computer vision. 2015: 2425-2433. 摘要 我们提出了一个自由式和开放式的视觉问答(VQA)任务。通过给定…

芭比Q了,AI已经具备人格,机器人要发起「人机大战」

近日,日本东京大学发布在《物质》杂志上的一项研究引发了「舆论地震」。 科学家在机器人手指上制作出了活体人类皮肤,该人皮不仅有真人皮肤般的纹理,而且还能防水,更神奇的是能「自愈」。 日本东京大学「机器人身上的活体皮肤」 …