Linux 0.01内核分析与操作系统设计

Linux 0.01内核分析与操作系统设计
5.9
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者:
出版社: 清华大学出版社
2004-10
版次: 1
ISBN: 9787302094074
定价: 32.00
装帧: 平装
开本: 其他
纸张: 胶版纸
页数: 314页
字数: 469千字
  •   本书巧妙地结合了Linux内核源代码分析、操作系统设计原理和操作系统设计实践三个方面的内容,在对Linux0.01内核源代码进行深入分析的基础上,讲解了操作系统设计的基本原理和方法技巧。同时,还向读者提供了大量的操作系统实践方面的实例。通过对本书的学习,读者可以对操作系统的内核有深入的了解,掌握基本的硬件操作和控制能力,具有对操作系统的理解和实践能力。
      本书中的所有例子,都可以使用GNU编译器来编译,所有的工具软件也都可以应用到GNU的自由软件中。本书内窜丰富、通俗易懂、可操作性强,既可作为大学高年级本科和研究生学习操作系统设计的辅导教材,也可作为计算机爱好者学习和分析Linux内核的教材。同时,也是软件工程师进行各类操作系统设计的最佳参考用书。
      
       第1章GNU和Linux简介
    1.1自由的天地:GNU和Linux
    1.1.1热爱和享受自由
    1.1.2神奇的Linux
    1.2在乐趣中获得成功
    1.2.111岁开始编程序
    1.2.2一种操作系统的诞生
    1.3GNU的开发工具
    1.3.1编译器家族GCC
    1.3.2和操作系统开发有关的工具
    1.4本章小结
    第2章操作系统设计入门
    2.1操作系统介绍
    2.1.1早期的操作系统
    2.1.2DOS操作系统
    2.1.3Unix和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.4x86虚拟机Bochs使用简介
    2.4.1Bochs简介
    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.1DJGPP和RHIDE的安装与使用
    3.1.2make的使用
    3.1.3ld的使用
    3.1.4nasm的使用
    3.2保护模式汇编语言
    3.2.1一个简单的实模式的汇编语言的例子
    3.2.2Linux汇编程序设计
    3.3实例:一些简单的例子程序
    3.3.1识别CPU类型
    3.3.2直接向视频缓冲区输出
    3.3.3检测显示器类型
    3.3.4移动光标
    3.4本章小结
    第4章Linux0.01内核简介
    4.1Linux0.01内核简介
    4.1.1Linux0.01内核背景
    4.1.2Linux0.01内核的技术特色
    4.1.3存储管理
    4.1.4文件系统
    4.1.5硬件平台移植和应用程序
    4.2Linux0.01核心代码目录
    4.3核心源代码的目录分布
    4.3.1boot目录
    4.3.2fs目录
    4.3.3include目录
    4.3.4init目录
    4.3.5kernel目录
    4.3.6lib目录
    4.3.7mm目录
    4.3.8tools目录
    4.4Linux0.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.5Linux0.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.2malloc()和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.5Linux0.01存储管理代码分析
    6.5.1memory.c分析
    6.5.2page.s分析
    6.6本章小结
    第7章进程管理和调度
    7.1进程介绍
    7.1.1进程的基本功能
    7.1.2进程的调度(schedule()函数)
    7.1.3线程
    7.2多任务实现基础
    7.3进程调度的性能分析
    7.4Linux进程调度源代码分析
    7.5实例:实现协作式多任务
    7.6本章小结
    第8章设备管理和调度
    8.1Linux设备管理概述
    8.1.1设备管理的基本要求
    8.1.2驱动程序(Drivers)
    8.1.3接口(Interfaces)
    8.1.4异步I/O(AsynchronousI/O)
    8.2Linux0.01中断处理
    8.2.1中断处理的基本过程
    8.2.2traps.c文件分析
    8.2.3/kernel/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.78048到8042的数据
    8.4.8键盘源代码
    8.4.9探测软盘驱动器
    8.5Linux0.01设备驱动程序源代码分析
    8.5.1终端控制代码:console.c
    8.5.2rs323驱动代码:serial.c和rs_io.s
    8.6本章小结
    第9章磁盘文件系统
    9.1硬盘驱动器结构简介
    9.1.1硬盘参数解释
    9.1.2基本INT13h调用简介
    9.1.3现代硬盘结构简介
    9.1.4扩展INT13h简介
    9.2Unix文件系统
    9.2.1磁盘的基础特性
    9.2.2现代磁盘的寻道延迟特性
    9.2.3Unix文件系统分析
    9.3VirtualFileSystem(VFS)简介
    9.3.1VFS的体系结构
    9.3.2文件的表示
    9.3.3磁盘布局(Disklayout)
    9.4文件系统设计步骤
    9.4.1磁盘函数库(Disklibrary)
    9.4.2文件系统(Filesystem)
    9.4.3容错性(Robustness)
    9.5自己编写的简单文件系统
    9.6Linux0.01文件系统源代码分析
    9.7本章小结
    第10章shell编程技术和实例
    10.1shell的基本概念
    10.2实例:最简单的shell程序
    10.3管道和I/O重定向
    10.3.1使用dup()重定向I/O
    10.3.2使用pipe()和dup()
    10.3.3使用dup2()的例子
    10.4t—shell实现代码分析
    10.4.1shell总体结构(不支持管道)
    10.4.2shell总体结构(支持管道)
    10.4.3main()函数
    10.4.4initialization()函数
    10.4.5getline()函数
    10.4.6parse()函数
    10.4.7command()函数
    10.4.8execute()函数
    10.4.9forkexec()函数
    10.4.10check()函数
    10.4.11getname()函数
    10.4.12t—shell的运行效果
    10.5本章小结
    第11章系统调用和C语言库的实现
    11.1Linux系统调用概述
    11.1.1系统调用
    11.1.2系统调用的实现
    11.1.3系统调用到INT0x80h中断请求的转换
    11.2Linux0.01系统调用实现分析
    11.2.1system_call.s
    11.2.2sys.c
    11.3试验:在Linux中添加新的系统调用
    11.3.1实现系统调用的代码
    11.3.2链接新的系统调用
    11.3.3重新编译Linux0.01的内核
    11.4C语言标准库函数的实现
    11.4.1字符串和内存操作函数
    11.4.2I/O函数库
    11.4.3工具函数:随机数
    11.5本章小结
    第12章Linux网络实现分析
    12.1TCP/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本章小结
    参考文献
  • 内容简介:
      本书巧妙地结合了Linux内核源代码分析、操作系统设计原理和操作系统设计实践三个方面的内容,在对Linux0.01内核源代码进行深入分析的基础上,讲解了操作系统设计的基本原理和方法技巧。同时,还向读者提供了大量的操作系统实践方面的实例。通过对本书的学习,读者可以对操作系统的内核有深入的了解,掌握基本的硬件操作和控制能力,具有对操作系统的理解和实践能力。
      本书中的所有例子,都可以使用GNU编译器来编译,所有的工具软件也都可以应用到GNU的自由软件中。本书内窜丰富、通俗易懂、可操作性强,既可作为大学高年级本科和研究生学习操作系统设计的辅导教材,也可作为计算机爱好者学习和分析Linux内核的教材。同时,也是软件工程师进行各类操作系统设计的最佳参考用书。
      
      
  • 目录:
    第1章GNU和Linux简介
    1.1自由的天地:GNU和Linux
    1.1.1热爱和享受自由
    1.1.2神奇的Linux
    1.2在乐趣中获得成功
    1.2.111岁开始编程序
    1.2.2一种操作系统的诞生
    1.3GNU的开发工具
    1.3.1编译器家族GCC
    1.3.2和操作系统开发有关的工具
    1.4本章小结
    第2章操作系统设计入门
    2.1操作系统介绍
    2.1.1早期的操作系统
    2.1.2DOS操作系统
    2.1.3Unix和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.4x86虚拟机Bochs使用简介
    2.4.1Bochs简介
    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.1DJGPP和RHIDE的安装与使用
    3.1.2make的使用
    3.1.3ld的使用
    3.1.4nasm的使用
    3.2保护模式汇编语言
    3.2.1一个简单的实模式的汇编语言的例子
    3.2.2Linux汇编程序设计
    3.3实例:一些简单的例子程序
    3.3.1识别CPU类型
    3.3.2直接向视频缓冲区输出
    3.3.3检测显示器类型
    3.3.4移动光标
    3.4本章小结
    第4章Linux0.01内核简介
    4.1Linux0.01内核简介
    4.1.1Linux0.01内核背景
    4.1.2Linux0.01内核的技术特色
    4.1.3存储管理
    4.1.4文件系统
    4.1.5硬件平台移植和应用程序
    4.2Linux0.01核心代码目录
    4.3核心源代码的目录分布
    4.3.1boot目录
    4.3.2fs目录
    4.3.3include目录
    4.3.4init目录
    4.3.5kernel目录
    4.3.6lib目录
    4.3.7mm目录
    4.3.8tools目录
    4.4Linux0.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.5Linux0.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.2malloc()和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.5Linux0.01存储管理代码分析
    6.5.1memory.c分析
    6.5.2page.s分析
    6.6本章小结
    第7章进程管理和调度
    7.1进程介绍
    7.1.1进程的基本功能
    7.1.2进程的调度(schedule()函数)
    7.1.3线程
    7.2多任务实现基础
    7.3进程调度的性能分析
    7.4Linux进程调度源代码分析
    7.5实例:实现协作式多任务
    7.6本章小结
    第8章设备管理和调度
    8.1Linux设备管理概述
    8.1.1设备管理的基本要求
    8.1.2驱动程序(Drivers)
    8.1.3接口(Interfaces)
    8.1.4异步I/O(AsynchronousI/O)
    8.2Linux0.01中断处理
    8.2.1中断处理的基本过程
    8.2.2traps.c文件分析
    8.2.3/kernel/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.78048到8042的数据
    8.4.8键盘源代码
    8.4.9探测软盘驱动器
    8.5Linux0.01设备驱动程序源代码分析
    8.5.1终端控制代码:console.c
    8.5.2rs323驱动代码:serial.c和rs_io.s
    8.6本章小结
    第9章磁盘文件系统
    9.1硬盘驱动器结构简介
    9.1.1硬盘参数解释
    9.1.2基本INT13h调用简介
    9.1.3现代硬盘结构简介
    9.1.4扩展INT13h简介
    9.2Unix文件系统
    9.2.1磁盘的基础特性
    9.2.2现代磁盘的寻道延迟特性
    9.2.3Unix文件系统分析
    9.3VirtualFileSystem(VFS)简介
    9.3.1VFS的体系结构
    9.3.2文件的表示
    9.3.3磁盘布局(Disklayout)
    9.4文件系统设计步骤
    9.4.1磁盘函数库(Disklibrary)
    9.4.2文件系统(Filesystem)
    9.4.3容错性(Robustness)
    9.5自己编写的简单文件系统
    9.6Linux0.01文件系统源代码分析
    9.7本章小结
    第10章shell编程技术和实例
    10.1shell的基本概念
    10.2实例:最简单的shell程序
    10.3管道和I/O重定向
    10.3.1使用dup()重定向I/O
    10.3.2使用pipe()和dup()
    10.3.3使用dup2()的例子
    10.4t—shell实现代码分析
    10.4.1shell总体结构(不支持管道)
    10.4.2shell总体结构(支持管道)
    10.4.3main()函数
    10.4.4initialization()函数
    10.4.5getline()函数
    10.4.6parse()函数
    10.4.7command()函数
    10.4.8execute()函数
    10.4.9forkexec()函数
    10.4.10check()函数
    10.4.11getname()函数
    10.4.12t—shell的运行效果
    10.5本章小结
    第11章系统调用和C语言库的实现
    11.1Linux系统调用概述
    11.1.1系统调用
    11.1.2系统调用的实现
    11.1.3系统调用到INT0x80h中断请求的转换
    11.2Linux0.01系统调用实现分析
    11.2.1system_call.s
    11.2.2sys.c
    11.3试验:在Linux中添加新的系统调用
    11.3.1实现系统调用的代码
    11.3.2链接新的系统调用
    11.3.3重新编译Linux0.01的内核
    11.4C语言标准库函数的实现
    11.4.1字符串和内存操作函数
    11.4.2I/O函数库
    11.4.3工具函数:随机数
    11.5本章小结
    第12章Linux网络实现分析
    12.1TCP/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本章小结
    参考文献
查看详情
好书推荐 / 更多
Linux 0.01内核分析与操作系统设计
传统十论:本土社会的制度、文化与其变革
秦晖 著
Linux 0.01内核分析与操作系统设计
翁达杰作品系列:英国病人(精装)
[加]迈克尔·翁达杰 著;丁骏 译
Linux 0.01内核分析与操作系统设计
软件体的生命周期:特德·姜科幻小说集
[美]特德·姜
Linux 0.01内核分析与操作系统设计
汉唐文学与文献论考
陈尚君 著
Linux 0.01内核分析与操作系统设计
中国佛学源流略讲
吕澂 著
Linux 0.01内核分析与操作系统设计
明清稿抄校本鉴定
陈先行、石菲 著
Linux 0.01内核分析与操作系统设计
瓦檐下的旧器物
黄孝纪
Linux 0.01内核分析与操作系统设计
索恩丛书·自由的流亡者:永失美国与大英帝国的东山再起(套装全2册)
马娅·亚桑诺夫(Maya Jasanoff) 著;马睿 译
Linux 0.01内核分析与操作系统设计
维米尔
北寺 译 者;[英]路德维希·戈德沙伊德(Ludwig Goldscheider)
Linux 0.01内核分析与操作系统设计
做工的人
林立青 著;赖小路 摄影
Linux 0.01内核分析与操作系统设计
与绝迹之鸟的短暂邂逅
[美]本·方登 著
Linux 0.01内核分析与操作系统设计
[日]吉田修一 Yoshida Shuichi 著;岳远坤 译