30天自制操作系统
查字典图书网
当前位置: 查字典 > 图书网 > 编程> 30天自制操作系统

30天自制操作系统

30天自制操作系统

8.3

作者: [日] 川合秀实
出版社: 人民邮电出版社
译者: 周自恒  |  曾祥江  |  张文旭  |  李黎明
出版年: 2012-8
页数: 704
定价: 99.00元
装帧: 平装
丛书: 自制系列
ISBN: 9787115287960

我要收藏

内容简介:

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

这是一本兼具趣味性、实用性与学习性的书籍。作者从计算机的构造、汇编语言、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  制作真正的IPL45

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天  API392

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

文章试读:“好想编写一个操作系统呀!”笔者的朋友曾说这是所有程序员都曾经怀揣的一个梦想。说“所有的程序员”可能有点夸张了,不过作为程序员的梦想,它至少也应该能排进前十名吧。 也许很多人觉得编写操作系统是个天方夜谭,这一定是操作系统业界的一个阴谋(笑)。他们故意让大家相信编写操作系统是一件非常困难的事情,这样就可以高价兜售自己开发的操作系统,而且操作系统的作者还会被顶礼膜拜。那么实际情况又怎么样呢?和别...

(查看全部试读)

展开全文
随机来一本书

推荐文章

猜你喜欢

附近的人在看

推荐阅读

拓展阅读

热门标签:
我想说两句
我要写长评
 想读     在读     读过   
评价:
标签(多个标签以“,”分开):