Linux内核深度解析epub,Unix内核源码剖析 高清pdf版 含epub+mobi
本书是一本Unix内核源代码的阅读指南。作者结合UNIX V6已公开的相关文档,对其内核源码进行详细剖析,旨在让读者更深入地理解进程、中断、块I/O系统、文件系统、字符I/O系统、启动系统等操作系统的基本原理。
本书适合操作系统的初中级学习者阅读,特别适合通过大学课程和其他入门书对操作系统有所了解,但是对具体细节缺乏深入理解的读者,以及那些对操作系统的具体实现有兴趣的读者。
目录
第I部分
什么是UNIX V6 1
第1章 UNIX V6的全貌 2
1.1 什么是UNIX V6 2
1.2 UNIX的历史2
1.3 UNIX V6内核 4
1.4 构成UNIX V6运行环境的硬件 4
PDP-11 5
1.5 代码 9
1.6 手册 9
1.7 小结 10
第II部分
进程 11
第2章 进程 12
2.1 进程的概要 12
什么是进程 12
进程的并行执行 12
进程的执行状态 14
用户模式和内核模式 14
交换处理15
2.2 proc结构体和user结构体 15
proc结构体 16
user结构体 17
2.3 为进程分配的内存 21
代码段 21
数据段 21
虚拟地址空间 22
变换地址 24
2.4 小结 26
第3章 进程的管理I 27
3.1 进程的生命周期 27
3.2 创建进程 28
进程的复制 28
父进程和子进程 29
系统调用fork 29
newproc() 32
panic() 36
3.3 切换执行进程 37
中断执行进程 37
进程的执行状态 37
选择执行进程的算法 38
上下文切换 39
系统调用wait 39
sleep() 39
swtch() 41
swtch() 的返回位置 44
setpri() 51
wakeup() 51
setrun() 52
3.4 执行程序 53
程序执行文件的格式 53
系统调用exec 54
estabur() 62
sureg() 65
expand() 66
3.5 进程的终止 68
系统调用exit 69
系统调用wait 71
3.6 数据区域的扩展 73
系统调用break 73
3.7 管理内存和交换空间 76
map结构体 76
获取未使用区域 77
释放区域 79
3.8 小结 81
第4章 交换处理 82
4.1 什么是交换处理 82
代码段和数据段 82
sched() 83
xswap() 87
4.2 共享代码段的处理 88
xalloc() 90
xfree() 93
xccdec() 93
4.3 小结 94
第III 部分
中断 95
第5章 中断与陷入 96
5.1 什么是中断与陷入 96
什么是中断 96
什么是陷入 97
5.2 优先级与向量(Vector) 98
中断优先级和处理器优先级 98
中断和陷入向量 100
5.3 中断和陷入的处理流程 100
发生中断或陷入 101
执行call和trap 104
5.4 时钟中断处理函数 107
时钟设备的规格 107
时钟中断处理函数的内容 108
clock() 113
5.5 陷入处理函数 117
trap() 117
grow() 122
5.6 系统调用的处理流程 123
传递参数的方法 123
sysent结构体 124
trap() 126
5.7 小结 128
第6章 信号 129
6.1 什么是信号 129
信号的发送方法 129
确认接收信号 129
信号的种类 130
ssig() 131
kill() 132
signal() 133
psignal() 133
issig() 134
psig() 134
core() 136
在系统调用处理中处理信号 136
6.2 跟踪功能 137
什么是跟踪 137
ipc结构体 138
跟踪的处理流程 138
stop() 139
ptrace() 140
procxmt() 142
wait() 143
6.3 小结 144
第IV 部分
块I/O 系统 145
第7章 块设备子系统 146
7.1 设备的基础 146
设备的种类 146
设备驱动 146
类别和设备编号 147
特殊文件 147
7.2 块设备子系统 148
缓冲区 148
b-list和av-list 150
RAW 输入输出 151
7.3 缓冲区的初始化 152
binit() 152
clrbuf() 153
7.4 缓冲区的获取和释放 154
getblk() 154
notavail() 156
brelse() 157
7.5 读取 158
读取的种类 158
bread() 159
iowait() 160
iodone() 160
geterror() 161
breada() 161
incore() 162
7.6 写入 163
写入的种类 163
bwrite() 164
bawrite() 165
bdwrite() 165
bflush() 166
7.7 RAW输入输出 167
physio() 167
swap() 169
7.8 小结 171
第8章 块设备驱动 172
8.1 什么是块设备驱动 172
块设备驱动表 172
设备处理队列 173
处理流程 173
8.2 RK-11磁盘驱动 174
RK11-D 175
特殊文件 175
设定bdevsw[] 176
中断处理函数 176
RK11-D 的寄存器 177
rkstrategy() 179
rkstart() 180
rkaddr() 180
devstart() 181
rkintr() 182
RAW 输入输出 184
8.3 小结 184
第V 部分
文件系统 185
第9章 文件系统 186
9.1 什么是文件系统 186
inode 186
树状结构的命名空间 187
挂载 187
访问权限 188
根磁盘 189
9.2 块设备的区域 189
用于启动的区域 190
超级块 190
inode区域 191
存储区域 193
9.3 挂载 193
mount结构体 193
系统调用mount 194
getmdev() 196
系统调用umount 197
9.4 inode的获取和释放 198
inode[] 198
iget() 201
iput() 203
iupdat() 204
9.5 inode与存储区域的对应关系 205
bmap() 208
itrunc() 211
9.6 分配块设备中的块 213
ialloc() 213
ifree() 216
alloc() 217
free() 220
getfs() 222
badblock() 222
9.7 将路径变为inode 223
目录的内容 223
namei() 224
access() 230
9.8 初始化与同步 232
iinit() 232
update() 232
9.9 小结 234
第10章 文件处理 235
10.1 用户程序对文件的处理 235
10.2 3 个结构体 235
标准输入输出 237
10.3 文件的生成和打开处理 237
系统调用creat 238
maknode() 238
wdir() 239
系统调用open 240
open1() 241
falloc() 242
ufalloc() 243
openi() 243
10.4 文件的读取和写入 244
系统调用read、write 244
rdwr() 245
readi() 246
writei() 248
iomove() 250
getf() 252
10.5 指定文件的读写位置 252
系统调用seek 252
10.6 关闭文件 254
系统调用close 254
closef() 254
closei() 255
10.7 目录的生成 255
系统调用mknod 255
10.8 文件的链接 256
系统调用link 257
suser() 258
10.9 删除文件 258
系统调用unlink 258
10.10 小结 260
第11章 管道 261
11.1 什么是管道 261
使用管道的优点 262
11.2 开始管道通信 262
系统调用pipe 262
11.3 收发数据 264
writep() 264
readp() 266
plock() 267
prele() 267
11.4 结束管道通信 268
closef() 268
11.5 建立管道通信的流程 268
建立父子进程间的通信 268
系统调用dup 272
11.6 小结 273
第VI 部分
字符I/O 系统 275
第12章 字符设备 276
12.1 字符设备驱动 276
字符设备缓冲区 277
对缓冲区的操作 278
初始化缓冲区池 280
12.2 LP11设备驱动 281
什么是LP11 281
LP11设备驱动的功能 282
lpopen() 284
lpwrite() 285
lpcanon() 285
lpoutput() 287
lpstart() 288
lpint() 288
lpclose() 289
12.3 小结 289
第13章 电传终端 290
13.1 什么是电传终端 290
电传终端的接口 290
特殊文件 291
tty 结构体 292
maptab[] 295
partab[] 295
KL11/DL11 296
KL11/DL11设备驱动的规格 297
KL11/DL11设备驱动函数 298
13.2 终端的开启和关闭 298
klopen() 298
klclose() 300
wflushtty() 300
flushtty() 301
13.3 终端的设定 302
gtty() 302
stty() 302
sgtty() 303
klsgtty() 304
ttystty() 304
13.4 从终端输入文字 305
klrint() 306
ttyinput() 306
13.5 读取输入的数据 308
klread() 309
ttread() 309
canon() 310
13.6 向终端输出数据 313
klwrite() 314
ttwrite() 315
ttyoutput() 316
ttstart() 318
ttrstrt() 319
klxint() 320
13.7 小结 320
第VII 部分
启动系统 321
第14章 启动系统 322
14.1 启动的流程 322
start 323
main() 326
/etc/init 329
14.2 小结 330
附 录 参考资料等 331
A.1 参考文献、网站 331
A.2 pre K&R C 335
后记 337
索引 338
Linux内核深度解析epub,Unix内核源码剖析 高清pdf版 含epub+mobi相关推荐
- Spring源码深度解析(郝佳)-学习-源码解析-创建AOP静态代理实现(八)
继上一篇博客,我们继续来分析下面示例的 Spring 静态代理源码实现. 静态 AOP使用示例 加载时织入(Load -Time WEaving,LTW) 指的是在虚拟机载入字节码时动态织入 Aspe ...
- Spring源码深度解析(郝佳)-学习-源码解析-基于注解切面解析(一)
我们知道,使用面积对象编程(OOP) 有一些弊端,当需要为多个不具有继承关系的对象引入同一个公共的行为时,例如日志,安全检测等,我们只有在每个对象引用公共的行为,这样程序中能产生大量的重复代码,程序就 ...
- Spring源码深度解析(郝佳)-学习-源码解析-Spring MVC(三)-Controller 解析
在之前的博客中Spring源码深度解析(郝佳)-学习-源码解析-Spring MVC(一),己经对 Spring MVC 的框架做了详细的分析,但是有一个问题,发现举的例子不常用,因为我们在实际开发项 ...
- Spring源码深度解析(郝佳)-学习-源码解析-基于注解注入(二)
在Spring源码深度解析(郝佳)-学习-源码解析-基于注解bean解析(一)博客中,己经对有注解的类进行了解析,得到了BeanDefinition,但是我们看到属性并没有封装到BeanDefinit ...
- Android应用开发揭秘[高清PDF版+源码]
编辑推荐 本书内容全面,不仅详细讲解了Android框架.Android组件等基础知识,而且还深入阐述了传感器.语音识别.桌面组件开发等高级知识,最重要的是还全面介绍了如何利用原生的C/C++(NDK ...
- 高并发之深度解析CAS [理论+案例+源码]
目录 1.理论 2.问题 3.实操--Atomic打头的类 4.原理:基于类Striped64分散热点[空间换时间] 1.理论 CAS,即compare and swap,比较并交换,包含三个操作数, ...
- Spring源码深度解析(郝佳)-学习-源码解析-基于注解bean定义(一)
我们在之前的博客 Spring源码深度解析(郝佳)-学习-ASM 类字节码解析 简单的对字节码结构进行了分析,今天我们站在前面的基础上对Spring中类注解的读取,并创建BeanDefinition做 ...
- Spring源码深度解析(郝佳)-学习-源码解析-Spring整合MyBatis
了解了MyBatis的单独使用过程之后,我们再来看看它也Spring整合的使用方式,比对之前的示例来找出Spring究竟为我们做了什么操作,哪些操作简化了程序开发. 准备spring71.xml &l ...
- Spring源码深度解析(郝佳)-学习-源码解析-创建AOP静态代理(七)
加载时织入(Load-Time Weaving ,LTW) 指的是在虚拟机加载入字节码文件时动态织入Aspect切面,Spring框架的值添加为 AspectJ LTW在动态织入过程中提供了更细粒度的 ...
最新文章
- 今天已经算一下过来有一个礼拜了,还是感觉是在熬日子似的
- 54_pytorch GAN(生成对抗网络)、Gan代码示例、WGAN代码示例
- html编辑器设置为publisher,将PDF转换为Publisher的简单方法
- 宏定义 #define 和常量 const 的区别
- 如何清理和维护计算机,电脑的优化与维护操作教程
- 日志框架介绍(SLF4J及其使用)
- [HNOI2008]水平可见直线 半平面交
- 企业无线网演进 2.4GHz或被5GHz频段取代
- 关于动态数组指针操作的两个例子
- spring 视频教程
- Scintilla开源库使用指南
- 渲染101渲染农场完美支持火凤凰插件Phoenix FD
- 回归的误差服从正态分布吗_计量经济学中为什么误差项u服从正态分布,则系数也服从正态分布...
- linux常中的cat命令,linux下cat命令详解
- CENTOS7 安装mantis
- 秋招面试准备 JS1
- react native Android端保持APP后台运行--封装 Headless JS
- Git使用简介一(入门级)
- My Life(1)
- 【C#】十大排序算法(动图演示+代码实现)
热门文章
- 本科计算机知识点,2018年电大本科计算机网考操作题题库重要知识点(6页)-原创力文档...
- 小学教师使用计算机责任书,计算机安全管理责任书.doc
- ucharts动态渲染数据
- 51CTO首届卡拉OK大赛:我唱,为欢聚而歌
- 郑州大学计算机专业学生证学号,《郑州大学学生证、校徽管理办法》(校学生〔2017〕2号)...
- CEF3 91.0.4472的源代码编译以及支持MP3MP4的播放
- CSS中vertical-align不起作用
- 设计简约的游戏耳机,还支持主动降噪,双飞燕血手幽灵M90体验
- recap 360.html,Autodesk ReCap
- 每日算法面试题,大厂特训二十八天——第九天(位运算)