图书介绍
Orange'S一个操作系统的实现PDF|Epub|txt|kindle电子书版本网盘下载
- 于渊编著 著
- 出版社: 北京:电子工业出版社
- ISBN:9787121084423
- 出版时间:2009
- 标注页数:474页
- 文件大小:124MB
- 文件页数:494页
- 主题词:操作系统
PDF下载
下载说明
Orange'S一个操作系统的实现PDF格式电子书版下载
下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!
(文件页数 要大于 标注页数,上中下等多册电子书除外)
注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具
图书目录
上篇2
第1章 马上动手写一个最小的“操作系统”2
1.1 准备工作2
1.2 十分钟完成的操作系统3
1.3 引导扇区4
1.4 代码解释4
1.5 水面下的冰山6
1.6 回顾7
第2章 搭建你的工作环境8
2.1 虚拟计算机Bochs8
2.1.1 Bochs初体验8
2.1.2 Bochs的安装9
2.1.3 Bochs的使用10
2.1.4 用Bochs调试操作系统12
2.2 QEMU15
2.3 平台之争:Windows还是*nix16
2.4 GNU/Linux下的开发环境20
2.5 Windows下的开发环境22
2.6 总结23
第3章 保护模式(Protect Mode)25
3.1 认识保护模式25
3.1.1 保护模式的运行环境29
3.1.2 GDT(Global Descriptor Table)31
3.1.3 实模式到保护模式,不一般的jmp33
3.1.4 描述符属性35
3.2 保护模式进阶38
3.2.1 海阔凭鱼跃38
3.2.2 LDT(Local Descriptor Table)44
3.2.3 特权级概述48
3.2.4 特权级转移51
3.2.5 关于“保护”二字的一点思考65
3.3 页式存储65
3.3.1 分页机制概述66
3.3.2 编写代码启动分页机制67
3.3.3 PDE和PTE68
3.3.4 cr371
3.3.5 回头看代码72
3.3.6 克勤克俭用内存73
3.3.7 进一步体会分页机制81
3.4 中断和异常87
3.4.1 中断和异常机制87
3.4.2 外部中断90
3.4.3 编程操作8259A91
3.4.4 建立IDT94
3.4.5 实现一个中断95
3.4.6 时钟中断试验96
3.4.7 几点额外说明98
3.5 保护模式下的I/O100
3.5.1 IOPL100
3.5.2 I/O许可位图(I/O Permission Bitmap)100
3.6 保护模式小结101
第4章 让操作系统走进保护模式102
4.1 突破512字节的限制102
4.1.1 FAT12103
4.1.2 DOS可以识别的引导盘108
4.1.3 一个最简单的Loader108
4.1.4 加载Loader入内存109
4.1.5 向Loader交出控制权116
4.1.6 整理boot.asm116
4.2 保护模式下的“操作系统”117
第5章 内核雏形119
5.1 在Linux下用汇编写Hello World119
5.2 再进一步,汇编和C同步使用120
5.3 ELF(Executable and Linkable Format)123
5.4 从Loader到内核127
5.4.1 用Loader加载ELF127
5.4.2 跳入保护模式131
5.4.3 重新放置内核137
5.4.4 向内核交出控制权142
5.5 扩充内核143
5.5.1 切换堆栈和GDT144
5.5.2 整理我们的文件夹148
5.5.3 Makefile149
5.5.4 添加中断处理155
5.5.5 两点说明168
5.6 小结169
第6章 进程171
6.1 迟到的进程171
6.2 概述171
6.2.1 进程介绍172
6.2.2 未雨绸缪——形成进程的必要考虑172
6.2.3 参考的代码173
6.3 最简单的进程174
6.3.1 简单进程的关键技术预测175
6.3.2 第一步——ring0→ring1178
6.3.3 第二步——丰富中断处理程序189
6.4 多进程200
6.4.1 添加一个进程体200
6.4.2 相关的变量和宏200
6.4.3 进程表初始化代码扩充202
6.4.4 LDT203
6.4.5 修改中断处理程序203
6.4.6 添加一个任务的步骤总结206
6.4.7 号外:Minix的中断处理207
6.4.8 代码回顾与整理212
6.5 系统调用220
6.5.1 实现一个简单的系统调用222
6.5.2 get_ticks的应用227
6.6 进程调度232
6.6.1 避免对称——进程的节奏感232
6.6.2 优先级调度总结240
第7章 输入/输出系统242
7.1 键盘242
7.1.1 从中断开始——键盘初体验242
7.1.2 AT、PS/2键盘243
7.1.3 键盘敲击的过程244
7.1.4 用数组表示扫描码248
7.1.5 键盘输入缓冲区251
7.1.6 用新加的任务处理键盘操作253
7.1.7 解析扫描码254
7.2 显示器263
7.2.1 初识TTY264
7.2.2 基本概念264
7.2.3 寄存器267
7.3 TTY任务270
7.3.1 TTY任务框架的搭建272
7.3.2 多控制台277
7.3.3 完善键盘处理281
7.3.4 TTY任务总结288
7.4 区分任务和用户进程289
7.5 printf291
7.5.1 为进程指定TTY292
7.5.2 printf()的实现292
7.5.3 系统调用write()294
7.5.4 使用printf()296
下篇300
第8章 进程间通信300
8.1 微内核还是宏内核300
8.1.1 Linux的系统调用302
8.1.2 Minix的系统调用303
8.1.3 我们的选择305
8.2 IPC306
8.3 实现IPC306
8.3.1 assert()和panic()309
8.3.2 msg_send()和msg_receive()313
8.3.3 增加消息机制之后的进程调度321
8.4 使用IPC来替换系统调用get_ticks322
8.5 总结324
第9章 文件系统325
9.1 硬盘简介325
9.2 硬盘操作的I/O端口326
9.3 硬盘驱动程序327
9.4 文件系统337
9.5 硬盘分区表338
9.6 设备号344
9.7 用代码遍历所有分区347
9.8 完善硬盘驱动程序352
9.9 在硬盘上制作一个文件系统355
9.9.1 文件系统涉及的数据结构356
9.9.2 编码建立文件系统358
9.10 创建文件366
9.10.1 Linux下的文件操作366
9.10.2 文件描述符(file descriptor)367
9.10.3 open()369
9.11 创建文件所涉及的其他函数377
9.11.1 strip_path()377
9.11.2 search_file()378
9.11.3 get_inode()和sync_inode()379
9.11.4 init_fs()381
9.11.5 read_super_block()和get_super_block()382
9.12 关闭文件383
9.13 查看已创建的文件384
9.14 打开文件386
9.15 读写文件387
9.16 测试文件读写390
9.17 文件系统调试393
9.18 删除文件395
9.19 插曲:奇怪的异常401
9.20 为文件系统添加系统调用的步骤403
9.21 将TTY纳入文件系统404
9.22 改造printf411
9.23 总结413
第10章 内存管理414
10.1 fork414
10.1.1 认识fork414
10.1.2 fork前要做的工作(为fork所做的准备)417
10.1.3 fork()库函数421
10.1.4 MM421
10.1.5 运行427
10.2 exit和wait427
10.3 exec432
10.3.1 认识exec433
10.3.2 为自己的操作系统编写应用程序434
10.3.3 “安装”应用程序436
10.3.4 实现exec442
10.4 简单的shell447
10.5 总结449
第11章 尾声451
11.1 让mkfs()只执行一次451
11.2 从硬盘引导455
11.2.1 编写硬盘引导扇区和硬盘版loader455
11.2.2 “安装”hdboot.bin和hdldr.bin461
11.2.3 grub461
11.2.4 小结463
11.3 将OS安装到真实的计算机465
11.3.1 准备工作465
11.3.2 安装Linux466
11.3.3 编译源代码466
11.3.4 开始安装467
11.4 总结467
参考文献470