Linux 0.01内核分析与操作系统设计:创造你自己的操作系统

Linux 0.01内核分析与操作系统设计:创造你自己的操作系统
作 者: 卢军
出版社: 清华大学出版社
丛编项: 创作你自己的操作系统
版权说明: 本书为公共版权或经版权方授权,请支持正版图书
标 签: Linux
ISBN 出版时间 包装 开本 页数 字数
未知 暂无 暂无 未知 0 暂无

作者简介

暂缺《Linux 0.01内核分析与操作系统设计:创造你自己的操作系统》作者简介

内容简介

本书巧妙地结合了Linux内核源代码分析、操作系统设计原理和操作系统设计实践三个方面的内容,在对Linux 0.01内核源代码进行深入分析的基础上,讲解了操作系统设计的基本原理和方法技巧。同时,还向读者提供了大量的操作系统实践方面的实例。通过对本书的学习,读者可以对操作系统的内核有深入的了解,掌握基本的硬件操作和控制能力,具有对操作系统的理解和实践能力。本书中的所有例子,都可以使用GNU编译器来编译,所有的工具软件也都可以应用到GNU的自由软件中。本书内容丰富、通俗易懂、可操作性强,既可作为大学高年级本科和研究生学习操作系统设计的辅导教材,也可作为计算机爱好者学习和分析Linux内核的教材。同时,也是软件工程师进行各类操作系统设计的最佳参考用书。

图书目录

第1章 GNU和Linux简介

1. 1 自由的天地:GNU和Linux

1. 1. 1 热爱和享受自由

1. 1. 2 神奇的Linux

1. 2 在乐趣中获得成功

1. 2. 1 11岁开始编程序

1. 2. 2 一种操作系统的诞生

1. 3 GNU的开发工具

1. 3. 1 编译器家族GCC

1. 3. 2 和操作系统开发有关的工具

1. 4 本章小结

第2章 操作系统设计入门

2. 1 操作系统介绍

2. 1. 1 早期的操作系统

2. 1. 2 DOS操作系统

2. 1. 3 Unix和Windows操作系统两大阵营

2. 1. 4 自由时代的宠儿Linux

2. 2 操作系统的基本功能

2. 3 编写操作系统的建议

2. 3. 1 编程语言选择

2. 3. 2 编译器和链接器

2. 3. 3 运行时函数库

2. 3. 4 使用汇编语言完成底层操作

2. 3. 5 关于C++的使用

2. 4 x86虚拟机Bochs使用简介

2. 4. 1 Bochs简介

2. 4. 2 下载Bochs软件

2. 4. 3 如何安装Bochs

2. 5 使用Bochs运行一个操作系统

2. 5. 1 制作一个软盘镜像文件

2. 5. 2 使用Bochs运行操作系统

2. 6 操作系统设计的基本准则

2. 6. 1 简单就是优美

2. 6. 2 利用已有的基础

2. 6. 3 良好的设计

2. 6. 4 单内核操作系统和微内核操作系统

2. 7 本章小结

第3章 操作系统设计基础

3. 1 使用DJGPP

3. 1. 1 DJGPP和RHIDE的安装与使用

3. 1. 2 make的使用

3. 1. 3 ld的使用

3. 1. 4 nasm的使用

3. 2 保护模式汇编语言

3. 2. 1 一个简单的实模式的汇编语言的例子

3. 2. 2 Linux汇编程序设计

3. 3 实例:一些简单的例子程序

3. 3. 1 识别CPU类型

3. 3. 2 直接向视频缓冲区输出

3. 3. 3 检测显示器类型

3. 3. 4 移动光标

3. 4 本章小结

第4章 Linux0. 01内核简介

4. 1 Linux0. 01内核简介

4. 1. 1 Linux 0. 01内核背景

4. 1. 2 Linux0. 01内核的技术特色

4. 1. 3 存储管理

4. 1. 4 文件系统

4. 1. 5 硬件平台移植和应用程序

4. 2 Linux0. 01核心代码目录

4. 3 核心源代码的目录分布

4. 3. 1 boot目录

4. 3. 2 fs目录

4. 3. 3 include目录

4. 3. 4 init目录

4. 3. 5 kernel目录

4. 3. 6 lib目录

4. 3. 7 mm目录

4. 3. 8 tools目录

4. 4 Linux0. 01的main. c分析

4. 5 编译和运行Linux0. 01系统

4. 6 本章小结

第5章 操作系统引导

5. 1 操作系统引导的基本知识

5. 1. 1 系统引导设备

5. 1. 2 启动过程简介

5. 1. 3 硬盘主引导扇区简介

5. 1. 4 软盘主引导扇区

5. 1. 5 Linux0. 01引导代码分析

5. 2 引导扇区和引导代码实例分析

5. 2. 1 引导扇区的内容

5. 2. 2 使用debug建立自己的第一张启动盘

5. 2. 3 使用BIOS增强"操作系统"功能

5. 3 使用nasm生成引导代码

5. 3. 1 引导代码基础

5. 3. 2 最简单的引导程序

5. 3. 3 如何设置段寄存器

5. 3. 4 在引导程序中装入程序(基于扇区)

5. 4 本章小结

第6章 存储管理分析

6. 1 操作系统内存管理策略简述

6. 1. 1 连续分配存储管理方式

6. 1. 2 虚存组织

6. 1. 3 非连续存储管理机制

6. 2 物理存储管理

6. 2. 1 技术细节

6. 2. 2 物理存储管理器的组织

6. 2. 3 物理存储管理器的初始化

6. 2. 4 页面分配

6. 2. 5 页面回收

6. 2. 6 映射

6. 2. 7 内存映射

6. 3 虚拟存储管理

6. 3. 1 技术细节

6. 3. 2 malloc()和free()

6. 3. 3 缺页处理

6. 3. 4 虚拟存储管理的页面分配

6. 3. 5 可执行程序

6. 3. 6 交换

6. 3. 7 处理流程

6. 4 存储管理系统代码实例

6. 4. 1 实例1:探测计算机的物理内存容量

6. 4. 2 实例2:malloc()和free()的实现

6. 5 Linux0. 01存储管理代码分析

6. 5. 1 memory. c分析

6. 5. 2 page. s分析

6. 6 本章小结

第7章 进程管理和调度

7. 1 进程介绍

7. 1. 1 进程的基本功能

7. 1. 2 进程的调度(schedule()函数)

7. 1. 3 线程

7. 2 多任务实现基础

7. 3 进程调度的性能分析

7. 4 Linux进程调度源代码分析

7. 5 实例:实现协作式多任务

7. 6 本章小结

第8章 设备管理和调度

8. 1 Linux设备管理概述

8. 1. 1 设备管理的基本要求

8. 1. 2 驱动程序(Drivers)

8. 1. 3 接口(Interfaces)

8. 1. 4 异步I/O(AsynchronousI/O)

8. 2 Linux0. 01中断处理

8. 2. 1 中断处理的基本过程

8. 2. 2 traps. c文件分析

8. 2. 3/kemel/asm. s文件分析

8. 3 如何编写中断服务程序ISR

8. 4 设备驱动程序实例

8. 4. 1 利用BIOS的探测系统设备

8. 4. 2 块设备驱动

8. 4. 3 键盘驱动

8. 4. 4 访问8042芯片各端口

8. 4. 5 发给8042的命令

8. 4. 6 发给8048的命令

8. 4. 7 8048到8042的数据

8. 4. 8 键盘源代码

8. 4. 9 探测软盘驱动器

8. 5 Linux0. 01设备驱动程序源代码分析

8. 5. 1 终端控制代码:console. c

8. 5. 2 rs323驱动代码:serial. c和rs io. s

8. 6 本章小结

第9章 磁盘文件系统

9. 1 硬盘驱动器结构简介

9. 1. 1 硬盘参数解释

9. 1. 2 基本INTl3h调用简介

9. 1. 3 现代硬盘结构简介

9. 1. 4 扩展INTl3h简介

9. 2 Unix文件系统

9. 2. 1 磁盘的基础特性

9. 2. 2 现代磁盘的寻道延迟特性

9. 2. 3 Unix文件系统分析

9. 3 Virtual File System(VFS)简介

9. 3. 1 VFS的体系结构

9. 3. 2 文件的表示

9. 3. 3 磁盘布局(Disklayout)

9. 4 文件系统设计步骤

9. 4. 1 磁盘函数库(Disklibrary)

9. 4. 2 文件系统(Piles~tem)

9. 4. 3 容错性(Robustness)

9. 5 自己编写的简单文件系统

9. 6 Linux0. 01文件系统源代码分析

9. 7 本章小结

第10章 shell编程技术和实例

10. 1 shell的基本概念

10. 2 实例:最简单的shell程序

10. 3 管道和I/O重定向

10. 3. 1 使用dup()重定向I/O

10. 3. 2 使用pipe()和dup()

10. 3. 3 使用dup2()的例子

10. 4 t-shell实现代码分析

10. 4. 1 shell总体结构(不支持管道)

10. 4. 2 shell总体结构(支持管道)

10. 4. 3 main()函数

10. 4. 4 initialization()函数

10. 4. 5 getline()函数

10. 4. 6 parse()函数

10. 4. 7 command()函数

10. 4. 8 execute()函数

10. 4. 9 forkexec()函数

10. 4. 10 check()函数

10. 4. 11 getname()函数

10. 4. 12 t-shell的运行效果

10. 5 本章小结

第11章 系统调用和C语言库的实现

11. 1 Linux系统调用概述

11. 1. 1 系统调用

11. 1. 2 系统调用的实现

11. 1. 3 系统调用到INT0x80h中断请求的转换

11. 2 Linux0. 01系统调用实现分析

11. 2. 1 system-call. s

11. 2. 2 sys. c

11. 3 试验:在Linux中添加新的系统调用

11. 3. 1 实现系统调用的代码

11. 3. 2 链接新的系统调用

11. 3. 3 重新编译Linux0. 01的内核

11. 4 C语言标准库函数的实现

11. 4. 1 字符串和内存操作函数

11. 4. 2 I/O函数库

11. 4. 3 工具函数:随机数

11. 5 本章小结

第12章 Linux网络实现分析

12. 1 TCP/IP概述

12. 1. 1 协定分层原则

12. 1. 2 网络访问层

12. 1. 3 网络层

12. 1. 4 传输层

12. 1. 5 应用层

12. 2 环形缓冲区

12. 2. 1 环形缓冲区的实现原理

12. 2. 2 实例:环形缓冲区的实现

12. 3 通信协议中的定时器编程

12. 3. 1 基本定时编程

12. 3. 2 高精度定时中断编程

12. 4 简单停等协议

12. 4. 1 停等协议简介

12. 4. 2 有限状态机

12. 4. 3 差错控制

12. 5 实例:串口数据通信

12. 6 实例:停等协议的实现

12. 7 本章小结

参考文献