热搜关键词: 信号与系统无刷电机ADSTCP/IP

pdf

30天自制操作系统

  • 1星
  • 日期: 2021-10-21
  • 大小: 53.62MB
  • 所需积分:1分
  • 下载次数:2
  • favicon收藏
  • rep举报
  • free评论
标签: 操作系统

操作系统

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

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

推荐帖子 最新更新时间:2021-11-30 17:32

KW41开发套件-电子标签DIY过程#1
KW41开发套件-电子标签DIY过程 1、电子标签是无线连接的货柜标签,不需要人工参与更换的过程。 2、使用的开发工具很多,可以有KDS,keil,iar等。不过这次完全采用开源的GCC,基于linux基金会开源项目zephyr的实时操作系统。 3、KW41Z简介 KW41Z是一款超低功耗、高集成度的单芯片器件,让便携式、超低功耗的嵌入式系统具备Bluetooth® Low Energy
fyaocn NXP MCU
EEWORLD大学堂精品课程目录导览,看看有没有令你心动的好课(更新中)
光棍节一过去,离跨年就不远啦 让我们回顾一下今年大学堂都有哪些精品课程 也许你曾经错过或正在寻找的......课程,就在这里》》》》》 一、想不到技术史也能如此有趣!――Maychang趣味电子技术史话系列 1. 白炽灯到底是谁发明的? 2. 开关电源的早期历史 3. 录音技术的发展历史 4. 通信技术发展史 5. 趣味电子史话系列:电影的发明 二、紧跟时代步伐――精
EEWORLD社区 综合技术交流
计划年后去深圳创业,从事医疗器械方向,希望大家分享意见
   本人7月份博士毕业,入职航天系统最好的研究所之一,从事与自己专业无关的工作。由于读博期间也在创业,做驾培驾考方向,作为联合创始人,在该公司负责硬件研发、生产和制造。目前该公司业务也趋于稳定,拿到了投资,同时产品反响也不错。    不太适应国企氛围,入职两个月,感觉啥事没干,融入不了这里面的环境。计划元旦后去深圳创业,做回自己老本行,自己做这个决定的出发点主要有:    1,做驾校这个公
luodeba 便携医疗电子
6元嵌入式WiFi血洗MCU市场:你怎么看?
一大早读到的新闻,感觉透露着一股硝烟气,楼下诸位怎么看? 毫无疑问,在物联网万物互联的驱动下,嵌入式WiFi芯片市场成为了“引爆点”,预计2016年的总出货量将达到1亿颗。面对如此巨大的“诱惑”,国内外WiFi芯片企业自然干劲十足,准备好好大干一场。万万没想到,WiFi芯片企业还没来得及丰收,残酷的价格竞争就已经先一步到来。 物联网WiFi市场才刚起量,方案价格已经硝烟四起 实际上,在全球经
john_wang RF/无线
TMS320C6000 DSP的混合编程研究
TMS320C6xxx公共指令集:        读取/存储类指令、算术运算类指令、逻辑与位运算类指令、搬移、跳转(程序转移)及空操作类指令等6种。        由于C6000汇编语言的每一条指令只能在一定的功能单元执行,因此就形成了指令和功能单元之间的映射关系。一般而言,与乘法相关的指令在.M单元执行;需要产生数据存储器地址的指令在.D功能单元;算术逻辑运算大多在.S与.L单元执行。  
灞波儿奔 DSP 与 ARM 处理器
求助Altium Designer原理图PartA,PartB重新标号后会乱的问题
我在Altium Designer里画图 把一个放大器的PartA放在左上 PartB放在左下(红框) 另一个放大器的PartA放在右上 PartB放在右下(蓝框) 见第一张图 画好图后我使用工具菜单下的“静态注释"为器件添加标识 注释后会变成第二张图的样子 可能是因为注释的方向是由左至右由上至下导致的 这时上边的两个放大器被定义成一组 因为我在添加器件时会复制已有的器
littleshrimp PCB设计

评论

登录/注册

意见反馈

求资源

回顶部

活动回顾

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版 版权声明

北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2021 EEWORLD.com.cn, Inc. All rights reserved
×