《Linux 操作系统原理与应用(第2版)》是2012年清华大学出版社出版的图书,作者是陈莉君、康华等。
- 书名 《Linux 操作系统原理与应用(第2版)》
- 作者 陈莉君等
- 出版社 清华大学出版社
- 出版时间 2012年
- 定价 28 元
简介
《Linux 操作系统原理与应用(第2版)》是Linux内核及动手实践的入门教程。在庞大的Linux内核中,选取最基本的内容--进程管理、中断、内存管理、系统调用、内核同步、文件系统、I/O设备管理等进行阐述。从原理出发,基于Linux内核源代码但又不局限于代码,分析原理如何落实到代码,并通过简单有效的实例说明如何调用Linux内核提供的函数进行内核级程序的开发。主要章节给出了具有实用价值的小型应用,从而让读者在实践中加深对原理的理解和应用来自能力。
本书是Linux内360百科核及动手实践的入纪再硫院种怀前消易占门教程。在庞大的Linux内核中,选取最基本的内容--进程管理、中断、内斤能穿耐财酒相早存管理、系统调用、内核同步、即规沉击责轮刘书文件系统、I/O设备管理等进行阐述。从原理出发,基于Linux内核源代码但又不局限于代码,分析原理如何落实到代码,并通过简单有效的实例说明如何调用全西剂们Linux内核提供的函数进行内核级程序的开发。主要章节给出了具有实用价值的小型应用,从而让读者在实践中加深对原理的理解和应用能力。
本书对于希望深入Linux操作系统内部、阅读Linux内核源代码以及进行内核级程序开发的读者具有较高的参考价值。本书可作为高等院校计算机相关专克业的本科生、研究生的教材,句常构维联机Linux应用开发人员、嵌入式系统开发人员等均可从本书中获益。
章节目录
第1章概述
1.1认识操作系统
1.1.1从使用者角度看
1.1.2从程序开发者的旧边垂房角度看
1.1.3从操作系统在整个计算机系统所处位置看
1.1.4从操作系统设计者的角度看
1.1.5操作系统组成
投众热镇系 1.2开放源卷夫背缺香领代码的UNIX/Linux操作系统
1.2.1UNIX诞生和发展
1.2.2Linux诞生
1.2.3操作系统标准POSIX
1德发究支热.2.4GNU 和 Linux
1.2.5L定免示沉政水应权要向inux的开发模式
1.3Linux内核
1.3.1Linux 内核的技术特点
1.3.2Linux内核的位置
1.3.3助律创改京包Linux内核体系结构
1.4Linux内核源代码
1.值4.1Linux内核版本
1.4.2Linux内核源代码的结构
1.4.3Linux内核源代码分析工具
销针那在江石迅 1.5Linux内核模块编程入门
1.5.1模块的定义
1.5.错乙视乙素活兴景仍蛋2编写一个简单的模块
1.5.3应用程序与内核模块的比较
1.6Linux 内核中链表的实现及应用
1.6.1链表的演化
1.6.2链表的定义和操作
1.6.3链表的应用
1.7小结
习题
第2章内存寻址
2.1内存寻址
2.1.1Intel x86 CPU寻址的演变
2.1.280x86寄存器压失件手客础简介
2.1.3物板度书整重结县育系地土理地址、虚拟地址及线性地址
2.2段机制
2.2.1段描述符
2.2.2地址转换及保护
2.2.3Linux中的段
2.3分页机制
2.3.1页与页表
2.3.2线性地址到物理地址的转换
2.3.3分页举例
2.3.4页面高速缓存
2.4Linux中的分页机制
2.5Linux中的汇编语言
2.5.1AT&T与Intel汇编语言的比较
2.5.2AT&T汇编语言的相关知识
2.5.3GC永C嵌入式汇编
2.6Linux系统地址映射举例
2.7小结
习题
第3章进程
3.1进程介绍
3.1.1程序和进程
3.1.2进程的层次结构
3.1.3进程状态
3.1.4进程举例
3.2Linux系统中的进程控制块
3.2.1进程状态
3.2.2进程标识符
3.2.3进程之间的亲属关系
3.2.4进程控制块的存放
3.2.5当前进程
3.3Linux系统中进程的组织方式
3.3.1进程链表
3.3.2哈希表
3.3.3就绪队列
3.3.4等待队列
3.4进程调度
3.4.1基本原理
3.4.2时间片
3.4.3Linux进程调度时机
3.4.4进程调度的依据
3.4.5调度函数schedule()的实现
3.4.6Linux 2.6调度程序的改进
3.5进程的创建
3.5.1创建进程
3.5.2线程及其创建
3.6与进程相关的系统调用及其应用
3.6.1fork系统调用
3.6.2exec系统调用
3.6.3wait系统调用
3.6.4exit系统调用
3.6.5进程的一生
3.7系统调用及应用
3.8小结
习题
第4章内存管理
4.1Linux的内存管理概述
4.1.1虚拟内存、内核空间和用户空间
4.1.2虚拟内存实现机制间的关系
4.2进程的用户空间管理
4.2.1进程用户空间的描述
4.2.2进程用户空间的创建
4.2.3虚存映射
4.2.4进程的虚存区举例
4.2.5与用户空间相关的系统调用
4.3请页机制
4.3.1缺页异常处理程序
4.3.2请求调页
4.3.3写时复制
4.4物理内存分配与回收
4.4.1页描述符
4.4.2伙伴算法
4.4.3物理页面的分配
4.4.4物理页面的回收
4.4.5Slab分配机制
4.4.6内核空间非连续内存区的分配
4.4.7物理内存分配举例
4.5交换机制
4.5.1交换的基本原理
4.5.2页面交换守护进程kswapd
4.6内存管理实例
4.6.1相关背景知识
4.6.2代码体系结构介绍
4.6.3实现过程
4.6.4程序代码
4.7小结
习题
第5章中断和异常
5.1中断是什么
5.1.1中断向量
5.1.2 外设可屏蔽中断
5.1.3异常及非屏蔽中断
5.1.4中断描述符表
5.1.5相关汇编指令
5.2中断描述符表的初始化
5.2.1IDT表项的设置
5.2.2对陷阱门和系统门的初始化
5.2.3中断门的设置
5.2.4中断处理程序的形成
5.3中断处理
5.3.1中断和异常的硬件处理
5.3.2中断请求队列的建立
5.3.3中断处理程序的执行
5.3.4从中断返回
5.3.5中断的简单应用
5.4中断的下半部处理机制
5.4.1为什么把中断分为两部分来处理
5.4.2小任务机制
5.4.3工作队列
5.5中断应用--时钟中断
5.5.1时钟硬件
5.5.2时钟运作机制
5.5.3Linux时间系统
5.5.4时钟中断
5.5.5定时器及应用
5.6小结
习题
第6章系统调用
6.1系统调用与应用编程接口、系统命令以及内核函数的关系
6.1.1系统调用与API
6.1.2系统调用与系统命令
6.1.3系统调用与内核函数
6.2系统调用基本概念
6.2.1系统调用号
6.2.2系统调用表
6.2.3系统调用服务例程和系统调用处理程序
6.3系统调用实现
6.3.1初始化系统调用
6.3.2system_call()函数
6.3.3参数传递
6.3.4跟踪系统调用的执行
6.4封装例程
6.5添加新系统调用
6.5.1添加系统调用的步骤
6.5.2系统调用的调试
6.6实例系统调用日志收集系统
6.6.1代码结构体系介绍
6.6.2把代码集成到内核中
6.7小结
习题
第7章内核中的同步
7.1临界区和竞争状态
7.1.1临界区举例
7.1.2共享队列和加锁
7.1.3确定保护对象
7.1.4死锁
7.1.5并发执行的原因
7.2内核同步措施
7.2.1原子操作
7.2.2自旋锁
7.2.3信号量
7.3生产者消费者并发实例
7.3.1问题分析
7.3.2实现机制
7.3.3具体实现
7.4内核多任务并发实例
7.4.1内核任务及其并发关系
7.4.2问题描述
7.4.3实现机制
7.5小结
习题
第8章文件系统
8.1Linux文件系统基础
8.1.1Linux文件结构
8.1.2文件类型
8.1.3存取权限和文件模式
8.1.4Linux文件系统
8.2虚拟文件系统
8.2.1虚拟文件系统的引入
8.2.2VFS中对象的演绎
8.2.3VFS的超级块
8.2.4VFS的索引结点
8.2.5目录项对象
8.2.6与进程相关的文件结构
8.2.7主要数据结构间的关系
8.2.8实例--观察数据结构中的数据
8.3文件系统的注册、安装与卸载
8.3.1文件系统的注册和注销
8.3.2文件系统的安装
8.3.3文件系统的卸载
8.4文件的打开与读写
8.4.1文件打开
8.4.2文件读写
8.5编写一个文件系统
8.5.1Linux文件系统的实现要素
8.5.2什么是Romfs文件系统
8.5.3Romfs文件系统布局与文件结构
8.5.4具体实现的对象
8.6小结
习题
第9章 设备驱动
9.1概述
9.2设备驱动程序框架
9.3I/O空间的管理
9.3.1I/O端口和I/O内存
9.3.2I/O资源管理
9.3.3访问I/O端口空间
9.3.4访问I/O内存资源
9.4字符设备驱动程序
9.4.1字符设备的数据结构
9.4.2分配和释放设备号
9.4.3字符设备驱动的组成
9.4.4加载和卸载函数
9.4.5实现file_operaions中定义的函数
9.5块驱动程序
9.5.1块驱动程序的注册
9.5.2块设备请求
9.6小结
习题
参考文献