本书从只有二十行的引导扇区代码出发, 一步一步地向读者呈现一个操作系统框架的完成过程.书中不仅关注代码本身, 同时关注完成这些代码的思路和过程.书中还讲解了大量在开发操作系统中需注意的细节问题.
Orange'S:一个操作系统的实现
✍ Scribed by 于渊
- Publisher
- 电子工业出版社
- Year
- 2009
- Tongue
- Chinese
- Leaves
- 494
- Category
- Library
No coin nor oath required. For personal study only.
✦ Synopsis
书签已装载,
书签制作方法请找 [email protected]
完全免费
《Orange S:一个操作系统的实现》从只有二十行的引导扇区代码出发,一步一步地向读者呈现一个操作系统框架的完成过程。书中不仅关注代码本身,同时关注完成这些代码的思路和过程。本书不同于其他的理论型书籍,而是提供给读者一个动手实践的路线图。读者可以根据路线图逐步完成各部分的功能,从而避免了一开始就面对整个操作系统数万行代码时的迷茫和挫败感。书中讲解了大量在开发操作系统中需注意的细节问题,这些细节不仅能使读者更深刻地认识操作系统的核心原理,而且使整个开发过程少走弯路。本书分上下两篇,共11章。其中每一章都以前一章的工作成果为基础,实现一项新的功能。而在章的内部,一项大的功能被分解成许多小的步骤,通过完成每个小的步骤,读者可以不断获得阶段性的成果,从而让整个开发过程变得轻松并且有趣。
本书适合各类程序员、程序开发爱好者阅读,也可作为高等院校操作系统课程的实践参考书。
✦ Table of Contents
版权页
前言
作者自序
本书导读
目录页
上篇
第1章 马上动手写一个最小的“操作系统”
1.1 准备工作
1.2 十分钟完成的操作系统
1.3 引导扇区
1.4 代码解释
1.5 水面下的冰山
1.6 回顾
第2章 搭建你的工作环境
2.1 虚拟计算机Bochs
2.1.1 Bochs初体验
2.1.2 Bochs的安装
2.1.3 Bochs的使用
2.1.4 用Bochs调试操作系统
2.2 QEMU
2.3 平台之争:Windows还是*nix
2.4 GNU/Linux下的开发环境
2.5 Windows下的开发环境
2.6 总结
第3章 保护模式(Protect Mode)
3.1 认识保护模式
3.1.1 保护模式的运行环境
3.1.2 GDT(Global Descriptor Table)
3.1.3 实模式到保护模式,不一般的jmp
3.1.4 描述符属性
3.2 保护模式进阶
3.2.1 海阔凭鱼跃
3.2.2 LDT(Local Descriptor Table)
3.2.3 特权级概述
3.2.4 特权级转移
3.2.5 关于“保护”二字的一点思考
3.3 页式存储
3.3.1 分页机制概述
3.3.2 编写代码启动分页机制
3.3.3 PDE和PTE
3.3.4 cr3
3.3.5 回头看代码
3.3.6 克勤克俭用内存
3.3.7 进一步体会分页机制
3.4 中断和异常
3.4.1 中断和异常机制
3.4.2 外部中断
3.4.3 编程操作8259A
3.4.4 建立IDT
3.4.5 实现一个中断
3.4.6 时钟中断试验
3.4.7 几点额外说明
3.5 保护模式下的I/O
3.5.1 IOPL
3.5.2 I/O许可位图(I/O Permission Bitmap)
3.6 保护模式小结
第4章 让操作系统走进保护模式
4.1 突破512字节的限制
4.1.1 FAT12
4.1.2 DOS可以识别的引导盘
4.1.3 一个最简单的Loader
4.1.4 加载Loader入内存
4.1.5 向Loader交出控制权
4.1.6 整理boot.asm
4.2 保护模式下的“操作系统”
第5章 内核雏形
5.1 在Linux下用汇编写Hello World
5.2 再进一步,汇编和C同步使用
5.3 ELF(Executable and Linkable Format)
5.4 从Loader到内核
5.4.1 用Loader加载ELF
5.4.2 跳入保护模式
5.4.3 重新放置内核
5.4.4 向内核交出控制权
5.5 扩充内核
5.5.1 切换堆栈和GDT
5.5.2 整理我们的文件夹
5.5.3 Makefile
5.5.4 添加中断处理
5.5.5 两点说明
5.6 小结
第6章 进程
6.1 迟到的进程
6.2 概述
6.2.1 进程介绍
6.2.2 未雨绸缪——形成进程的必要考虑
6.2.3 参考的代码
6.3 最简单的进程
6.3.1 简单进程的关键技术预测
6.3.2 第一步——ring0→ring1
6.3.3 第二步——丰富中断处理程序
6.4 多进程
6.4.1 添加一个进程体
6.4.2 相关的变量和宏
6.4.3 进程表初始化代码扩充
6.4.4 LDT
6.4.5 修改中断处理程序
6.4.6 添加一个任务的步骤总结
6.4.7 号外:Minix的中断处理
6.4.8 代码回顾与整理
6.5 系统调用
6.5.1 实现一个简单的系统调用
6.5.2 get_ticks的应用
6.6 进程调度
6.6.1 避免对称——进程的节奏感
6.6.2 优先级调度总结
第7章 输入/输出系统
7.1 键盘
7.1.1 从中断开始——键盘初体验
7.1.2 AT、PS/2键盘
7.1.3 键盘敲击的过程
7.1.4 用数组表示扫描码
7.1.5 键盘输入缓冲区
7.1.6 用新加的任务处理键盘操作
7.1.7 解析扫描码
7.2 显示器
7.2.1 初识TTY
7.2.2 基本概念
7.2.3 寄存器
7.3 TTY任务
7.3.1 TTY任务框架的搭建
7.3.2 多控制台
7.3.3 完善键盘处理
7.3.4 TTY任务总结
7.4 区分任务和用户进程
7.5 printf
7.5.1 为进程指定TTY
7.5.2 printf()的实现
7.5.3 系统调用write()
7.5.4 使用printf()
下篇
第8章 进程间通信
8.1 微内核还是宏内核
8.1.1 Linux的系统调用
8.1.2 Minix的系统调用
8.1.3 我们的选择
8.2 IPC
8.3 实现IPC
8.3.1 assert()和panic()
8.3.2 msg_send()和msg_receive()
8.3.3 增加消息机制之后的进程调度
8.4 使用IPC来替换系统调用get_ticks
8.5 总结
第9章 文件系统
9.1 硬盘简介
9.2 硬盘操作的I/O端口
9.3 硬盘驱动程序
9.4 文件系统
9.5 硬盘分区表
9.6 设备号
9.7 用代码遍历所有分区
9.8 完善硬盘驱动程序
9.9 在硬盘上制作一个文件系统
9.9.1 文件系统涉及的数据结构
9.9.2 编码建立文件系统
9.10 创建文件
9.10.1 Linux下的文件操作
9.10.2 文件描述符(file descriptor)
9.10.3 open()
9.11 创建文件所涉及的其他函数
9.11.1 strip_path()
9.11.2 search_file()
9.11.3 get_inode()和sync_inode()
9.11.4 init_fs()
9.11.5 read_super_block()和get_super_block()
9.12 关闭文件
9.13 查看已创建的文件
9.14 打开文件
9.15 读写文件
9.16 测试文件读写
9.17 文件系统调试
9.18 删除文件
9.19 插曲:奇怪的异常
9.20 为文件系统添加系统调用的步骤
9.21 将TTY纳入文件系统
9.22 改造printf
9.23 总结
第10章 内存管理
10.1 fork
10.1.1 认识fork
10.1.2 fork前要做的工作(为fork所做的准备)
10.1.3 fork()库函数
10.1.4 MM
10.1.5 运行
10.2 exit和wait
10.3 exec
10.3.1 认识exec
10.3.2 为自己的操作系统编写应用程序
10.3.3 “安装”应用程序
10.3.4 实现exec
10.4 简单的shell
10.5 总结
第11章 尾声
11.1 让mkfs()只执行一次
11.2 从硬盘引导
11.2.1 编写硬盘引导扇区和硬盘版loader
11.2.2 “安装”hdboot.bin和hdldr.bin
11.2.3 grub
11.2.4 小结
11.3 将OS安装到真实的计算机
11.3.1 准备工作
11.3.2 安装Linux
11.3.3 编译源代码
11.3.4 开始安装
参考文献
📜 SIMILAR VOLUMES
<p>《信息科学与技术丛书:操作系统实现之路》以Hello China操作系统为例,详细讲解了操作系统的内核、文件系统、图形界面、设备驱动程序、SDK 和系统调用等主要功能模块的实现原理。讲解过程中不仅陈述概念,还配以详细的实现源代码对概念进行说明,达到理论联系实际的目的。书中穿插了大量的案例,读者可通过亲手操作这些案例来更加深入地理解操作系统原理。此外,《信息科学与技术丛书:操作系统实现之路》还对操作系统发展趋势和商业模式进行了探讨。</p> <p>《信息科学与技术丛书:操作系统实现之路》可供程序员和计算机相关专业师生阅读。</p>
<p>本书以三个“面向”为导向,即面向经典基础理论与方法,面向国际前沿研究,面向工业界实践,深入浅出地介绍操作系统的理论、架构、设计方法与具体实现。本书是首本以ARM64为主体介绍操作系统的教材,将学术前沿与工业实践充分结合,不仅介绍了现有的Linux宏内核操作系统架构,而且介绍了微内核、外核等操作系统架构。</p> <p>本书共分为三个部分,其中第一部分(操作系统基础)以纸质版的形式出版,第二部分(操作系统进阶)和第三部分(ChCore课程实验)则以电子版的形式在本书网站发布。第一部分共分为11章,内容包括:操作系统概述、硬件结构、操作系统结构、内存管理、进程与线程、操作系统调度、进程间通
<p>这是一本能指导零计算机基础的读者轻松理解计算机软硬件和操作系统工作原理,从而自己动手从0到1编写出一个操作系统的著作。</p> <p>作者在操作系统领域深度耕耘20余年,不仅一直奋斗在百度等企业一线,而且一直致力于操作系统的教育和布道,希望帮助和指导越来越多的人,尤其是青少年,能从学生时代开始学习操作系统,能从底层原理真正理解操作系统,改变我国基础软件受制于人的现状。</p> <p>本书不仅是作者悟透操作系统本质、厚积薄发的成果,而且是他将复杂的操作系统原理化繁为简、举重若轻,成功指导自己9岁的孩子从0到1编写出一个操作系统的过程的全面复盘和复现。本书驱散了操作系统的迷雾,让操作系统
Andrew S. Tanenbaum教授编写的教材《现代操作系统》现在已经是第4版了。第4版在保持原有特色的基础上,又增添了许多新的内容,反映了当代操作系统的发展与动向,并不断地与时俱进。 对比第3版,第4版有很多变化。一些是教材中多处可见的细微变化,一些是就某一功能或机制增加了对最新技术的介绍,如增加了futex同步原语、读–复制–更新(Read-Copy-Update)机制以及6级RAID的内容。另外一些则是重大变化,例如:用Windows 8替换了Vista的内容;用相当大的篇幅介绍了移动终端应用最广泛、发展最快的Android,以替换原来Symbian的内容;增加了新的一章,介