Linux内核编程

Linux内核编程 pdf epub mobi txt 电子书 下载 2025

出版者:人民邮电
作者:(美)罗德里格斯//费舍尔//斯莫斯基|译者
出品人:
页数:400
译者:陈莉君 贺炎 刘霞林
出版时间:2011-5
价格:75.00元
装帧:平装
isbn号码:9787115251947
丛书系列:图灵程序设计丛书·Linux/UNIX系列
图书标签:
  • Linux
  • kernel
  • 内核
  • 计算机
  • 操作系统
  • 编程
  • 人民邮电出版社
  • Programming
  • Linux内核
  • 内核编程
  • 操作系统
  • C语言
  • 驱动开发
  • 系统编程
  • 嵌入式系统
  • 计算机科学
  • 技术
  • 开源
想要找书就要到 小美书屋
立刻按 ctrl+D收藏本页
你会得到大惊喜!!

具体描述

《Linux内核编程》,本书主要内容包括:Linux基础知识、内核探索工具集、进程的整个生命周期、内存区、页面、Slab分配器、用于输入/输出的各种设备、文件系统、抢占、自旋锁、信号量、内核引导、构建Linux内核,以及向内核添加代码等。同时还简单介绍了一些应用工具和实用程序,从而可以获取理解内核内幕所需的信息。

作者简介

Claudia Salzberg Rodriguez就职于IBM Linux技术中心,负责内核及相关编程工具的开发。在担任程序员的10多年时间里,她一直针对Intel和PPC平台进行Linux嵌入式系统到高性能系统的开发。

Gordon Fischer 曾为很多底层设备开发过Linux和Unix设备驱动程序,并针对Intel和PPC平台上的企业级系统中使用Linux内核。

Steven Smolski 有近30年的半导体行业从业经验。从事过内存、处理器以及ASICS的研发和测试,为Linux、AIX以及Windows都编写过应用程序和驱动程序,还进行过嵌入式操作系统的开发。

目录信息

第1 章 概述   1
1.1 UNIX 的历史   2
1.2 标准和通用接口   3
1.3 自由软件和开放源码   3
1.4 Linux 发布版概览   3
1.41 Debian   4
1.42 Red Hat/Fedora 4
1.43 Mandriva   4
1.44 SUSE    4
1.45 Gentoo    4
1.46 Yellow Dog   5
1.47 其他发布版   5
1.5 内核版本信息   5
1.6 基于Power 的Linux   5
1.7 什么是操作系统   6
1.8 内核组织   7
1.9 Linux 内核概述   7
1.9.1 用户接口   7
1.9.2 用户标识符   8
1.9.3 文件和文件系统   8
1.9.4 进程   12
1.9.5 系统调用   15
1.9.6 Linux 调度程序   15
1.9.7 Linux 设备驱动程序   15
1.10 可移植性和体系结构的相关性   16
1.11 小结   16
1.12 习题   16
第2 章 内核探索工具集   18
2.1 内核中常见的数据类型   18
2.1.1 链表   18
2.1.2 查找   21
2.1.3 树   22
2.2 汇编   24
2.2.1 PowerPC    24
2.2.2 x86    27
2.3 汇编语言示例   29
2.3.1 x86 中的汇编示例   30
2.3.2 PowerPC 中的汇编示例   31
2.4 内联汇编   33
2.4.1 输出操作数   34
2.4.2 输入操作数   34
2.4.3 已修改过的寄存器(已修改的元素列表) 34
2.4.4 参数的编号方式   34
2.4.5 约束条件   34
2.4.6 asm    35
2.4.7 __volatile__   35
2.5 特殊的C 语言用法   38
2.5.1 asmlinkage   38
2.5.2 UL   39
2.5.3 内联   39
2.5.4 const 和volatile   39
2.6 内核探索工具一览   40
2.6.1 objdump/readelf   40
2.6.2 hexdump    41
2.6.3 nm   41
2.6.4 objcopy    42
2.6.5 ar   42
2.7 内核发言:倾听来自内核的消息   42
2.7.1 printk()   42
2.7.2 dmesg   42
2.7.3 /var/log/messages   42
2.8 其他奥秘   43
2.8.1 __init   43
2.8.2 likely()和unlikely()   43
2.8.3 IS_ERR 和PTR_ERR   44
2.8.4 通告程序链   44
2.9 小结   45
2.9.1 项目:Hellomod   45
2.9.2 第一步:构造Linux 模块的框架   45
2.9.3 第二步:编译模块   46
2.9.4 第三步:运行代码   47
2.10 习题   48
第3 章 进程:程序执行的基本模型   49
3.1 程序   51
3.2 进程描述符   52
3.2.1 与进程属性相关的字段   54
3.2.2 与调度相关的字段   55
3.2.3 涉及进程间相互关系的字段   58
3.2.4 与进程信任状相关的字段   59
3.2.5 与进程权能相关的字段   60
3.2.6 与进程限制相关的字段   61
3.2.7 与文件系统及地址空间相关的字段   63
3.3 进程的创建:系统调用fork()、vfork 和clone()   64
3.3.1 fork()函数   65
3.3.2 vfork()函数   66
3.3.3 clone()函数   67
3.3.4 do_fork()函数   68
3.4 进程的生命周期   70
3.4.1 进程的状态   70
3.4.2 进程状态的转换   71
3.5 进程的终止   74
3.5.1 sys_exit() 函数   75
3.5.2 do_exit()函数   75
3.5.3 通知父进程和sys_wait4()   77
3.6 了解进程的动态:调度程序的基本构架   80
3.6.1 基本结构   80
3.6.2 从等待中醒来或者激活   81
3.7 等待队列   86
3.7.1 添加到等待队列   88
3.7.2 等待事件   89
3.7.3 唤醒进程   91
3.8 异步执行流程   93
3.8.1 异常   93
3.8.2 中断   95
3.9 小结   114
3.9.1 项目:系统变量current   114
3.9.2 项目源码   115
3.9.3 运行代码   116
3.10 习题   116
第4 章 内存管理   117
4.1 页   119
4.2 内存管理区   121
4.2.1 内存管理区描述符   122
4.2.2 内存管理区操作辅助函数   124
4.3 页面   124
4.3.1 请求页面的函数   124
4.3.2 释放页面的函数   126
4.3.3 伙伴系统   126
4.4 Slab 分配器   130
4.4.1 缓存描述符   133
4.4.2 通用缓存描述符   135
4.4.3 Slab 描述符   136
4.5 Slab 分配器的生命周期   138
4.5.1 与Slab 分配器有关的全局变量   138
4.5.2 创建缓存   139
4.5.3 创建slab 与cache_grow()   144
4.5.4 Slab 的销毁:退还内存与kmem_cache_destroy()   146
4.6 内存请求路径   147
4.6.1 kmalloc()   147
4.6.2 kmem_cache_alloc()   148
4.7 Linux 进程的内存结构   149
4.7.1 mm_struct   150
4.7.2 vm_area_struct   152
4.8 进程映像的分布及线性地址空间   153
4.9 页表   155
4.10 缺页   156
4.10.1 x86 缺页异常   156
4.10.2 缺页处理程序   157
4.10.3 PowerPC 缺页异常   164
4.11 小结   164
4.12 项目:进程内存映射   165
4.13 习题   166
第5 章 输入/输出   167
5.1 总线、桥、端口和接口的硬件实现   167
5.2 设备   171
5.2.1 块设备概述   172
5.2.2 请求队列和I/O 调度   173
5.2.3 示例:“通用”块设备驱动程序   180
5.2.4 设备操作   182
5.2.5 字符设备   183
5.2.6 网络设备   184
5.2.7 时钟设备   184
5.2.8 终端设备   184
5.2.9 直接存储器存取   184
5.3 小结   185
5.4 项目:创建并口驱动程序   185
5.4.1 并口的硬件   185
5.4.2 运行在并口上的软件   187
5.5 习题   192
第6 章 文件系统   194
6.1 文件系统的基本概念   194
6.1.1 文件和文件名   194
6.1.2 文件类型   195
6.1.3 文件的附加属性   195
6.1.4 目录和路径名   196
6.1.5 文件操作   197
6.1.6 文件描述符   197
6.1.7 磁盘块、磁盘分区以及实现   197
6.1.8 性能   198
6.2 Linux 虚拟文件系统   198
6.2.1 VFS 的数据结构   200
6.2.2 全局链表和局部链表的引用   211
6.3 与VFS 相关的结构   212
6.3.1 fs_struct 结构   212
6.3.2 files_struct 结构   213
6.4 页缓存   216
6.4.1 address_space 结构   217
6.4.2 buffer_head 结构   219
6.5 VFS 的系统调用和文件系统层   221
6.5.1 open()   221
6.5.2 close()    227
6.5.3 read()   229
6.5.4 write()   244
6.6 小结   246
6.7 习题   246
第7 章 进程调度和内核同步   247
7.1 Linux 的调度程序   248
7.1.1 选择下一个进程   248
7.1.2 上下文切换   253
7.1.3 让出CPU   261
7.2 内核抢占   269
7.2.1 显式内核抢占   269
7.2.2 隐式用户抢占   270
7.2.3 隐式内核抢占   270
7.3 自旋锁和信号量   272
7.4 系统时钟:关于时间和定时器   274
7.4.1 实时时钟:现在几点了   274
7.4.2 读取PPC 的实时时钟   276
7.4.3 读取x86 的实时时钟   278
7.5 小结   280
7.6 习题   280
第8 章 内核引导   281
8.1 BIOS 和Open Firmware 282
8.2 引导加载程序   282
8.2.1 GRUB   283
8.2.2 LILO   286
8.2.3 PowerPC 和Yaboot   286
8.3 与体系结构相关的内存初始化   287
8.3.1 PowerPC 的硬件内存管理   287
8.3.2 基于Intel x86 体系结构的硬件内存管理   296
8.3.3 PowerPC 和x86 的代码汇集   305
8.4 原始的RAM 盘   305
8.5 开始:start_kernel()   306
8.5.1 调用lock_kernel()   307
8.5.2 调用page_address_init()   309
8.5.3 调用printk(linux_banner)   311
8.5.4 调用setup_arch   311
8.5.5 调用setup_per_cpu_areas()   315
8.5.6 调用smp_prepare_boot_cpu()    316
8.5.7 调用sched_init()    317
8.5.8 调用build_all_zonelists()   319
8.5.9 调用page_alloc_init   319
8.5.10 调用parse_args()   320
8.5.11 调用trap_init()   322
8.5.12 调用rcu_init()   323
8.5.13 调用init_IRQ()   323
8.5.14 调用softirq_init()   324
8.5.15 调用time_init()   325
8.5.16 调用console_init()   326
8.5.17 调用profile_init()   326
8.5.18 调用local_irq_enable()   327
8.5.19 配置initrd   327
8.5.20 调用mem_init()   327
8.5.21 调用late_time_init()   333
8.5.22 调用calibrate_delay()   333
8.5.23 调用pgtable_cache_init()   334
8.5.24 调用buffer_init()   335
8.5.25 调用security_scaffolding_startup()   336
8.5.26 调用vfs_caches_init()   336
8.5.27 调用radix_tree_init()   343
8.5.28 调用signal_init()   344
8.5.29 调用page_writeback_init()   344
8.5.30 调用proc_root_init()   346
8.5.31 调用init_idle()   347
8.5.32 调用rest_init()   348
8.6 init 线程(或进程1)  349
8.7 小结   353
8.8 习题   353
第9 章 构建Linux 内核   354
9.1 工具链   354
9.1.1 编译程序   355
9.1.2 交叉编译   355
9.1.3 链接程序   356
9.1.4 ELF 二进制目标文件   356
9.2 内核源代码的构建   360
9.2.1 解释源代码   360
9.2.2 构建内核映像   364
9.3 小结   369
9.4 习题   369
第10 章 向内核添加代码   371
10.1 浏览源代码   371
10.11 熟悉文件系统   371
10.12 filp 和fops   372
10.13 用户空间和内核空间   374
10.14 等待队列   375
10.15 工作队列及中断   378
10.16 系统调用   380
10.17 其他类型的驱动程序   380
10.18 设备模型和sysfs 文件系统   383
10.2 编写代码   386
10.2.1 设备基础   386
10.2.2 符号输出   388
10.2.3 IOCTL   388
10.2.4 轮询与中断   391
10.2.5 工作队列和tasklet   395
10.2.6 增加系统调用的代码   396
10.3 构建和调试   398
10.4 小结   399
10.5 习题   400
· · · · · · (收起)

读后感

评分

400页的书,还是重新翻译滴。竟然卖75元。好贵啊。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。...

评分

400页的书,还是重新翻译滴。竟然卖75元。好贵啊。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。...

评分

一直以为自己在挑书方面是很幸运的,总是在适当的时候挑到恰当的书。可惜这次我遗憾了,这本书我读晚了,所以它对我的价值已经不怎么高了。当时在china-pub上看到的时候,吸引我的不是其内容,而是定价,虽然定价75,但打折后只要30,如果你去得不晚,应该还有戏。坏消息是,本...  

评分

首先,这本书(翻译版)我认真通读了一遍,也许还需要多读几遍才能深刻理解。现在就这本书发表一点看法,希望对打算购买的朋友有一些帮助。 第一:这是一本很好的书,对于理解整个linux内核的架构和一些实现细节很有帮助,而且讲解的很明白。 第二:既然是翻译版,大...  

评分

首先,这本书(翻译版)我认真通读了一遍,也许还需要多读几遍才能深刻理解。现在就这本书发表一点看法,希望对打算购买的朋友有一些帮助。 第一:这是一本很好的书,对于理解整个linux内核的架构和一些实现细节很有帮助,而且讲解的很明白。 第二:既然是翻译版,大...  

用户评价

评分

写的不错,kernel primer嘛,一些地方不够详细得看其他的参考,不过都点到了,学到了不少

评分

写的不错,kernel primer嘛,一些地方不够详细得看其他的参考,不过都点到了,学到了不少

评分

这本书着重描述了内核的一些基本技巧,以及基本的数据结构,还有一些基本的函数。很适合初级和中级内核开发者阅读。

评分

写的不错,kernel primer嘛,一些地方不够详细得看其他的参考,不过都点到了,学到了不少

评分

确实是primer,内容偏少。其中的一些图是出色之处。

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 book.quotespace.org All Rights Reserved. 小美书屋 版权所有