最新公告
  • 欢迎您光临小白之家,图方便,查阅适合自己的学习资源,少走弯路。立即加入我们
  • 文章介绍
  • 评价建议
  • 资源名称:30天自制操作系统 PDF 

    内容简介:

    自己编写一个操作系统,是许多程序员的梦想。也许有人曾经挑战过,但因为太难而放弃了。其实你错了,你的失败并不是因为编写操作系统太难,而是因为没有人告诉你那其实是一件很简单的事。那么,你想不想再挑战一次呢?

    这是一本兼具趣味性、实用性与学习性的书籍。作者从计算机的构造、汇编语言、C语言开始解说,让你在实践中掌握算法。在这本书的指导下,从零编写所有代码,30天后就可以制作出一个具有窗口系统的32位多任务操作系统。

    本书以课题为主导,边做边玩,抛开晦涩难懂的语言,行文风格十分随性,还充满了各种欢乐的吐槽,适合操作系统爱好者和程序设计人员阅读。

    作者简介:

    川合秀实(Hidemi Kawai)

    生于1975年,是一位以“轻量化”编程思想见长的“非主流”开发者。2000年因自行开发的OSASK项目而名声大噪。OSASK是一个开源的32位微型操作系统,它并非以Linux等内核为基础,而是完全从零开始开发,在一张软盘的容量下实现了GUI、多任务、多语言等高级特性,启动时间只需1秒。本书的内容可以看成是作者以OSASK为蓝本,教会读者从零开始开发一个操作系统,同时可以让初学者在编写操作系统的过程中,了解操作系统背后更多的知识。

    资源目录:

    第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


    小白之家 » 30天自制操作系统 PDF_操作系统教程

    发表评论

    • 75会员总数(位)
    • 8344资源总数(个)
    • 182本周发布(个)
    • 0 今日发布(个)
    • 240稳定运行(天)

    提供最优质的资源集合

    立即查看 了解详情