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