《30天自制操作系统》PDF下载

  • 购买积分:20 如何计算积分?
  • 作  者:(日)川合秀实著;周自恒,李黎明,曾祥江,张文旭译
  • 出 版 社:北京:人民邮电出版社
  • 出版年份:2012
  • ISBN:9787115287960
  • 页数:710 页
图书介绍:本书是一本兼具趣味性、实用性与学习性的操作系统书籍。作者从计算机的构造、汇编语言、C语言开始解说,让读者在实践中掌握算法。在这本书的指导下,从零编写所有代码,30天后就可以制作出一个具有窗口系统的32位多任务操作系统。

第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天 汇编语言学习与Makefiile入门 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(harib03 d) 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简化字符串显示(harib 10a) 240

2重新调整FIFO缓冲区(1) (harib 10b) 241

3测试性能(harib 10c~harib10f 243

4重新调整FIFO缓冲区(2) (harib 10g) 246

5加快中断处理(4 (harib10h) 253

6使用“哨兵”简化程序(harib 10i) 257

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

1继续测试性能(harib 11a~harib 11c) 262

2提高分辨率(1)(harib 11d) 266

3提高分辨率(2)(harib 11e) 269

4键盘输入(1)(harib 11f) 272

5键盘输入(2)(harib 11g) 275

6追记内容(1)harib11h 277

7追记内容(2)harib11i 279

第15天 多任务(1) 282

1挑战任务切换(harib12a 282

2任务切换进阶(harib12b 289

3做个简单的多任务(1)harib 12c) 291

4做个简单的多任务(2 harib12d 293

5提高运行速度(harib12e) 294

6测试运行速度(harib12f 297

7多任务进阶(harib 12g) 299

第16天 多任务(2) 304

1任务管理自动化(harib13a) 304

2让任务休眠(harib 13b) 308

3增加窗口数量(harib13c) 313

4设定任务优先级(1)(harib 13d) 317

5设定任务优先级(2)(harib13e) 320

第17天 命令行窗口 329

1闲置任务(harib14a) 329

2创建命令行窗口(harib14b 331

3切换输入窗口(harib14c 334

4实现字符输入(harib 14d) 337

5符号的输入(harib14e) 341

6大写字母与小写字母(harib14f) 343

7对各种锁定键的支持(harib 14g) 346

第18天dir命令 350

1控制光标闪烁(1)(harib15a) 350

2控制光标闪烁(2 (harib15b) 352

3对回车键的支持(harib15c) 355

4对窗口滚动的支持(harib15d) 357

5 mem命令(harib 15e) 359

6 cls命令(harib15f) 363

7 dir命令(harib15g) 366

第19天 应用程序 371

1 type命令(harib 16a) 371

2 type命令改良(harib16b) 378

3对FAT的支持(harib 16c) 382

4代码整理(harib 16d) 387

5第一个应用程序(harib 16e) 387

第20天API 392

1程序整理(harib17a 392

2显示单个字符的API(1) (harib 17b) 399

3显示单个字符的API(2) (harib 17c) 402

4结束应用程序(harib 17d) 403

5不随操作系统版本而改变的API (harib 17e) 405

6为应用程序自由命名(harib17f) 408

7当心寄存器(harib 17g) 410

8用API显示字符串(harib 17h) 412

第21天 保护操作系统 418

1攻克难题——字符串显示API (harib 18a) 418

2用C语言编写应用程序(harib 18b) 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)(harib 19a) 443

2帮助发现bug(harib 19b) 448

3强制结束应用程序(harib 19c) 452

4用C语言显示字符串(1) (harib 19d) 455

5用C语言显示字符串(2) (harib 19e) 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窗口切换(1harib21a) 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增加命令行窗口(1harib22c 524

6增加命令行窗口(2 harib22f 528

7增加命令行窗口(3 harib22g 531

8增加命令行窗口(4 harib22h 532

9变得更像真正的操作系统(1) (harib22i) 534

10变得更像真正的操作系统(2) (harib22j) 538

第26天 为窗口移动提速 541

1提高窗口移动速度(1harib23a) 541

2提高窗口移动速度(2 harib23b) 543

3提高窗口移动速度(3 harib23c) 547

4提高窗口移动速度(4 harib23d 549

5启动时只打开一个命令行窗口 (harib23e) 551

6增加更多的命令行窗口(harib23f) 554

7关闭命令行窗口(1harib23g) 555

8关闭命令行窗口(2 harib23h) 561

9 start命令harib23 i) 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日文文字显示(1harib25e) 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