TA的每日心情 | 开心 半小时前 |
---|
签到天数: 235 天 [LV.7]常住居民III
管理员
- 积分
- 8328
|
Java电子书:现代操作系统:原理与实现 PDF 电子书 Java吧 java8.com
) E P+ P/ b& U! h5 @5 d- X# e0 @/ t2 g3 u- G& H7 H
作者:陈海波夏虞斌等 著出版社:机械工业出版社出版时间:2020年10月
: g' @% R7 R, c( L5 H! ^! y4 y0 B" H2 k& R
编号:166-Java吧资源免费-X0097【Java吧 java8.com】
6 D0 k* w9 c+ h" M# e
! j8 K' I+ `& Y6 t- X& x% C- b% _" u9 [- h
K2 M/ }, p. T2 I, P8 s
目录:1 M& U5 w" q" Z
序言一! ?; F# I4 W1 i* a% `. e9 K
序言二& @$ ]& E8 c- q# J
前言
* g# E% P8 [* v# V. L% h/ Q9 s' p* G0 |部分 操作系统基础
% a( |! ?% |9 Q& q; W. ~3 c章 操作系统概述 2
1 N7 X0 J8 N$ C b1.1 简约但不简单:从Hello World说起 2
5 y/ ~4 H$ ?( X0 u# e) r9 b# G3 C1.2 什么是操作系统 3. |) L9 q1 Q; S7 ~) j- M
1.3 操作系统简史 6
1 ]9 W/ W/ a- T% l% H# g1.3.1 GM-NAA I/O:个(批处理)操作系统 66 {. q* `' {0 _) }# C W
1.3.2 OS/360:从专用走向通用 6
}5 {2 C* N3 m ]! p$ E, s1.3.3 Multics/UNIX/Linux:分时与多任务 77 @* t8 w; h5 f" {. w9 Z7 Z4 ]7 {
1.3.4 macOS/Windows:以人为本的人机交互 8
" T# b# _( T" k. j0 Y6 i1.4 操作系统接口 9
0 q& r- l- z/ ?) d% ?1.5 ChCore:一个简单的实验操作系统 11
; D% I9 v3 G) |; N# T# B2 ^& y: ]参考文献 129 j7 H2 o5 U3 c. w0 x/ c2 u
第2章 硬件结构 13
. I/ K4 q6 ]* h/ N5 M2.1 CPU与指令集架构 14* L' s! ^) ^6 C6 P8 _/ ]
2.1.1 指令集 14
( }5 ]- E8 Y0 t2.1.2 特权级 15
* s5 w, v5 `* ?& R/ j. H4 y2.1.3 寄存器 17
. n' E/ Q4 {( g! e" c2.2 物理内存与CPU缓存 170 o' D% G# x9 m. F" C/ U. Q
2.2.1 缓存结构 18/ U* W% z( G* W- u0 ~4 K
2.2.2 缓存寻址 19& M, X5 G: F" N7 }0 F
2.3 设备与中断 20# C: U( }7 b. v: @' ~9 b6 e
2.3.1 内存映射输入输出 20
) z; K: S0 U* L: p7 G) F# D* c4 {4 s2.3.2 轮询与中断 210 Q) U! n, e E* J6 w
2.4 思考题 22
) O- u6 C& [: ^6 M! ]1 o0 l参考文献 22
4 D$ `9 M& Q/ y5 V$ f6 @- [/ Z第3章 操作系统结构 23
) f$ \" w. t* x+ J0 z7 k$ t3.1 操作系统的机制与策略 24# [4 a' K: _, C1 L* L) i" _% r
3.2 操作系统复杂度管理方法 25' L1 y9 B1 ?4 ?% U; m; l S6 @
3.3 操作系统内核架构 27
6 \, ]5 x& c8 w# f3.3.1 简要结构 27
! k; ]4 M( d$ j9 p/ N j, b; u3.3.2 宏内核架构 281 k# [4 N, t7 Z, t
3.3.3 微内核架构 30
8 c3 |* c7 X& I; d) b3.3.4 外核架构 329 r. ^/ y" H) t8 Z1 b
3.3.5 其他操作系统内核架构 34
* u* Q% q) _# t! g# u3.4 操作系统框架结构 35
" Q0 w5 K2 k5 t6 F6 T7 W$ x* b3.4.1 Android系统框架 35
: r8 s- Y6 M5 I- @ x3.4.2 ROS系统框架 370 @- F3 |0 Y- I+ o0 H. x
3.5 思考题 39
% X# @) u% W6 n6 e8 @) q* y参考文献 40 java8.com. `8 K6 o; |. ~4 I
第4章 内存管理 42, r6 w: B3 U; Y5 c
4.1 虚拟地址与物理地址 43. G7 E. @; Y0 r A
4.1.1 初识物理地址与虚拟地址 43
" v Z+ d! l/ u7 h% r. ~+ }4.1.2 使用虚拟地址访问物理内存 44$ B6 h) e l: u* [. n
4.1.3 分段与分页机制 44+ P' w. Q! A2 q3 ?! D; v' D
4.2 基于分页的虚拟内存 46
2 T2 y' Z" c# j* ^4 I4 l& u9 h2 @4.2.1 AArch64架构下的4级页表 47
! }- V+ o/ `' q3 N4.2.2 加速地址翻译的重要硬件:TLB 49
* ]6 w2 L# V1 ^: @. Y Y t% `% ?4.2.3 换页与缺页异常 52
6 p6 ~ g: B. ? c4.2.4 页替换策略 54
" b3 H: e% w" ^6 f4.2.5 工作集模型 57- G6 B( z: E ^& K
4.3 虚拟内存功能 58
. r6 p' W" j r9 ^) `% S, ]4.3.1 共享内存 58$ c0 M; n9 s' \2 k( o, G4 D
4.3.2 写时拷贝 58 ]- z1 [8 l. n+ d% M6 M
4.3.3 内存去重 60
" l$ H- v% v& ]4 F; a4.3.4 内存压缩 60: A/ n% P8 L- b/ k& P) ?% M% y
4.3.5 大页 61, c) p5 f* B# k% w1 L* f
4.4 物理内存分配与管理 62
; F; a, }5 f2 N3 {1 u$ ~( g4.4.1 目标与评价维度 62: F3 c0 S. i; w$ C
4.4.2 伙伴系统 630 J# n1 P9 v3 A# x6 F
4.4.3 SLAB分配器 65
1 _2 r( Q8 g/ g" T$ M4.4.4 常用的空闲链表 66
% ^& m: O- ^/ l( k1 W4.4.5 物理内存与CPU缓存 68( d: c v: }7 i2 o& E9 b! _
4.5 案例分析:ChCore内存管理机制 70
5 ]# @3 ?0 s1 F& Z" ~# ^4.6 思考题 73% W" q/ Z: F E {. s
参考文献 74
- a& H$ K6 {* T4 e6 g4 v第5章 进程与线程 76
3 U) m; b: \! O. X' y# N8 F; Y5.1 进程 76) N5 \1 v+ Z8 q0 \9 y: _
5.1.1 进程的状态 760 |; p' N' x! H, A( ]) S7 e4 h
5.1.2 进程的内存空间布局 78# b! M) B3 @/ Z' ^" C
5.1.3 进程控制块和上下文切换 79
# B+ ]# {1 }7 s4 O6 y6 b5.2 案例分析:Linux的进程操作 80) k: x% x6 I5 l, W+ o
5.2.1 进程的创建:fork 80. X- u4 q' H1 B) J, I
5.2.2 进程的执行:exec 84
6 l) X3 i$ N! o& \5.2.3 进程管理 856 h, X% C5 B- x; D+ I$ m/ r' d
5.2.4 讨论:fork过时了吗 89
6 M5 J7 {9 b0 [5.3 线程 92
3 z. k8 r4 _1 n+ P$ U5 n5.3.1 多线程的地址空间布局 93/ s6 d2 T. O8 S& r: j- ^/ {1 F
5.3.2 用户态线程与内核态线程 93
1 J2 e6 q: D5 b, \5.3.3 线程控制块与线程本地存储 94
: y: M* p! V0 X2 o5.3.4 线程的基本接口:以POSIX线程库为例 956 D! }( h, ~# B+ ^: \
5.4 案例分析:ChCore的线程上下文 99. |. y" u( p; j4 `; q
5.4.1 线程的上下文和TCB 99" b3 Q! z5 c0 w6 P8 ` @
5.4.2 ChCore中上下文切换的实现 100+ _% s% L% i2 T8 b7 n
5.5 纤程 1026 Y) b; W6 J# t8 v) T
5.5.1 对纤程的需求:一个简单的例子 103( y1 e2 v4 P1 m }
5.5.2 POSIX的纤程支持:ucontext 103" z+ ?4 r) K0 W; [" a
5.5.3 纤程的上下文切换 105
) x/ P' {7 ^% H, W5.6 思考题 106
% k2 s' p3 p( b5 r6 I参考文献 107( x- }+ _2 q2 V+ Y
第6章 操作系统调度 108
- E- H# X, O1 J7 R6.1 计算机调度简介 108
3 @ u3 N+ N, j6.1.1 操作系统调度 1107 H4 L" f2 m9 ]# p% P/ {* V! K
6.1.2 调度指标 111
* }2 n. r) i. w* [; N$ B6.2 调度机制 113
$ e5 Y$ C1 X( u" c8 C( }5 S6.2.1 长期、中期与短期调度 114
( R4 a! `1 Y2 d" O2 T& i6.2.2 任务调度总览 1167 b. Y$ Y) b+ u( L! _
6.3 单核调度策略 117. U) M5 f a* a& ?7 b4 ^5 y z- I
6.3.1 经典调度 1182 u9 y; ^% l+ s
6.3.2 优先级调度 122
6 D6 R3 y6 i: S) } A1 v) S1 f6.3.3 公平共享调度 1277 d7 N6 l" }/ M# w/ c/ b' F: m; x
6.3.4 实时调度 133% b3 `' n) l; \
6.3.5 其他调度 138
8 Y1 u, Y; X$ V" d6 J- @3 q6.4 多核调度策略 141
$ W! j6 }$ G4 h$ h: P6.4.1 负载分担 1415 c$ z! t. P3 o9 O' k8 j$ V
6.4.2 协同调度 142
) B0 T# I+ j3 F3 a8 E0 ]# @6.4.3 两级调度 1445 s5 P5 V( {- i# [5 S3 U
6.4.4 负载追踪与负载均衡 145& r+ H! @, }9 h
6.4.5 能耗感知调度 148( E+ H* m2 K* W! ~9 A
6.5 调度进阶机制 151
$ V: O0 R, f; `; `- F* J+ l6.5.1 处理器亲和性 152
: U3 v9 O! i2 }0 ]6.5.2 调度策略设置 153* Q7 N; y. e" J1 c1 X
6.6 案例分析:现代调度器 1558 f2 r: r5 o2 l2 m h' J
6.6.1 Linux调度器 155
$ n6 D0 ^- B. E: c) t! \# c" ^6.6.2 macOS/iOS调度器 160
/ v- B& I9 ]. g6 v. C6.7 思考题 162
% R; \ \. [3 p* Y5 a/ w7 B$ x* o参考文献 163
- c k1 Y! w- N) r* ~) Q第7章 进程间通信 165
4 a2 `1 ^5 V5 u* D- G7.1 进程间通信基础 165
' \( S9 S, z) ]( H) X9 z- _7.1.1 一个简单的进程间通信设计 166% ?: e, m* r6 z8 g, L- R
7.1.2 数据传递 167
, Y6 k1 w9 M% p7.1.3 控制流转移 169
, B- h4 Y, C/ i( T7 ?7.1.4 单向和双向 170 U T E) R% |/ X K" m
7.1.5 同步和异步 170
0 i& G) g* u" ], L) X+ u$ d( c# e# ]7.1.6 超时机制 171
& }! h. B6 |/ @! B* i9 p7.1.7 通信连接管理 172
, X9 s5 q6 a( t# a5 y5 j7.1.8 权限检查 173 s/ y5 v! G$ }+ e, ^9 S1 H
7.1.9 命名服务 174# q- q% `6 \1 N! ]: |; c5 b
7.2 宏内核进程间通信 175
1 {3 B) v% w4 x R2 n7.2.1 管道进程间通信 175
# O* H5 m1 V5 n7.2.2 System V消息队列 178
8 i' _7 f! p# x6 r9 d5 ~7.2.3 System V信号量 179
; j" x8 A }1 u- r# a7.2.4 System V共享内存 180 c7 y9 F' K7 F" n6 X( A0 _
7.2.5 信号进程间通信 181
9 F; d Z2 U3 Y7.2.6 套接字进程间通信 1853 g6 u4 K0 G7 I8 l- \+ u0 e; O2 _/ z+ b. {
7.3 微内核进程间通信 186
) T, O F" u Z- r% S7.3.1 Mach:早期的微内核进程间通信设计 186
7 z$ }+ f* d. j! N% c7.3.2 L4:围绕进程间通信优化而设计的微内核系统 188
$ ~, D% V) v% c$ V; O! R$ l7.3.3 LRPC:迁移线程模型 1938 z! o& R1 N3 }" N7 K9 c
7.4 案例分析:Android Binder 195. |3 N- q7 Y: h8 Y8 M# I
7.4.1 背景 195
- n( Y8 u5 E* c7.4.2 Binder IPC总览 1960 S8 ^ D2 ^% B, M
7.4.3 Binder IPC内核设计 196
3 g/ R6 q0 U, @, n7.4.4 匿名共享内存 199, L% I$ q8 Z) A: w$ z. B
7.5 案例分析:ChCore 进程间通信机制 201
4 B; m# N- D% J7.6 思考题 203
/ N1 T6 f/ D+ L/ J% t( y6 k参考文献 203
! r W/ X( @/ {. I2 J' i第8章 同步原语 206
( D5 W1 H3 D* y# x- V8.1 互斥锁 209
# p$ s6 Y/ e8 s8.1.1 临界区问题 209
, T4 I; \$ f& g! R5 j) Y( _8.1.2 硬件实现:关闭中断 211
( v- y4 K6 ?& C# @! d' v( J% a4 @8.1.3 软件实现:皮特森算法 2114 d6 a) L7 J" _
8.1.4 软硬件协同:使用原子操作实现互斥锁 213
9 W) i: x) F. i* V* h/ I8.2 条件变量 219
/ ^' i3 l9 n! s4 ]8.2.1 条件变量的使用 2198 z' y7 q3 p$ I* I
8.2.2 条件变量的实现 222% B/ d! D8 f- k! N: z4 d
8.3 信号量 223. x1 i9 s+ X" }" ~1 A% f
8.3.1 信号量的使用 224
" a7 U8 u. |% u- X1 t8.3.2 信号量的实现 225) D% {( A8 r7 s9 a
8.4 读写锁 229
. z8 {2 d3 o2 ^4 A; Q: ^1 _7 A$ a8.4.1 读写锁的使用 229* Q7 R9 r5 z7 u0 p
8.4.2 读写锁的实现 230
0 {1 Y: n9 W _% V1 n0 v8.5 RCU 233& l+ ` J& j9 k; m: J6 m
8.5.1 订阅/发布机制 234
0 z! |9 W k2 y5 O: |; Z8.5.2 宽限期 236: d+ p5 \1 o* e; {4 X1 u
8.6 管程 237+ M3 J& t! u9 G9 h
8.7 同步带来的问题 239: r! j4 @5 ]( e
8.7.1 死锁 239: ^( e9 a" s4 a3 g+ |" M6 C
8.7.2 活锁 2456 r: [- Z, @* ] j
8.7.3 优先级反转 246
6 s0 K1 E* y, s/ K8.8 案例分析:Linux中的futex 249
" @3 w4 @9 V( D/ t/ q2 N$ S8.9 案例分析:ChCore中的同步原语 2519 ?5 ^+ K9 E3 n- K( P
8.10 思考题 252
, A. e7 ^+ e# V% @& a, r# d' e参考文献 254
2 z& W3 p: G& b( e2 _6 ?+ t第9章 文件系统 256/ z7 f8 {) N) V4 ~
9.1 基于inode的文件系统 257* S3 q4 R" B, h5 z% ~$ Q. x8 N7 }
9.1.1 inode与文件 258
6 Z) t! J5 Z: P) V9.1.2 文件名与目录 260
4 x: V: N3 N/ q4 c$ e0 U% x4 P9.1.3 硬链接与符号链接 263
6 |9 I; ]) ], Q: m2 n( X. H9.1.4 存储布局 264
5 V4 d& y8 B/ f2 F, g3 k8 k9.2 虚拟文件系统 266
9 O2 M, _# Q; M* m: Q3 H9 b9.2.1 面向文件系统的接口 266
$ j5 [3 f" d0 K& A9.2.2 面向应用程序的接口 270, R; i$ ^# o+ }) ], u
9.2.3 页缓存、直接I/O与内存映射 277! Q7 T5 L/ [# t. w3 Q# J
9.2.4 多种文件系统的组织和管理 280# h+ a) ~0 A, b1 Q
9.2.5 伪文件系统 282
% E' W; c% J a6 J7 m& ], M9.3 其他文件系统 284
c) l6 ?+ V, @/ i! w7 F9.3.1 FAT文件系统 284
3 O, o3 V1 }6 j. P9.3.2 NTFS 288
/ l" S; `+ L. S( Q" H ^- \9.3.3 FUSE与用户态文件系统 292+ x0 H( y/ T! ?: l8 a. x
9.4 案例分析:ChCore文件系统 294, g9 g* M3 ~; p) p$ ]
9.4.1 ChCore的文件系统架构 294- x- K9 v, x; J/ ^
9.4.2 内存文件系统 295
$ D2 e! e( ~' t4 h% o. s* a9.5 思考题 296
; M2 Y& x# Q" B% s4 b3 O- H! R/ F参考文献 297
3 x! a) V/ z: ` \/ K ~4 T0章 设备管理 299
! m4 \/ n5 y$ v' D10.1 计算机设备的连接和通信 300
Q6 j- v6 M" h! D2 E10.1.1 设备的连接:总线 300( }3 B. M9 q g& i" t0 o3 |
10.1.2 可编程I/O 301% s4 a+ Y; o( w$ ~4 r
10.1.3 高效数据传输:DMA 301# w& z; a! D. l6 P' @4 A- d
10.1.4 设备地址翻译:IOMMU 3023 p, @ E) z! i3 h6 J% M& C% n# O! o5 Y
10.2 设备的识别 303
3 R& D, K8 i. [8 {! E10.2.1 设备树 303
4 k4 Z# C$ D3 g* B- e: E10.2.2 ACPI 304% g# x, @/ X$ b1 r1 r4 g
10.3 设备的中断处理 305
; O- R- _: q% R+ `10.3.1 中断控制器 305 ?2 ?. n A$ A8 m( J0 X
10.3.2 中断的基本概念 306
$ p8 R, x; d# {! ^10.3.3 中断处理:以Linux上下半部的机制为例 308
S2 V4 B6 d3 J- i+ ]! I: T10.4 设备驱动与设备驱动模型 3136 [" y+ I9 n$ \: `. Y) n, ]: Q
10.4.1 设备驱动 313) E0 U+ P9 n# W Y0 d; [, j# W
10.4.2 设备驱动模型 315
' E$ a8 I0 U$ F5 x$ z7 w3 E10.5 案例分析:Linux设备驱动模型 3155 E3 ] ]# [& [% h
10.5.1 Linux的设备抽象 315
2 y V. X ~( e Y/ C: \10.5.2 Linux的设备驱动模型 3186 m, C+ ~4 O n; `9 H' c
10.5.3 Linux驱动的动态管理 319( i" k3 ~" U- W) f# `4 [0 T! E
10.5.4 Linux的sysfs文件系统 3217 P! ~" }' g( y- _$ P9 g4 W# b
10.6 案例分析:L4设备驱动模型 322* ~+ k [- n) `; e: z! } o
10.7 案例分析:Linux的用户态驱动框架 323. t5 b/ t1 P1 N
10.8 思考题 3271 ^; @& q, i# F4 _, L( H/ I
参考文献 327+ i' H$ |+ x& d( w9 n
1章 系统虚拟化 329/ ?5 {6 I) \; ?5 f/ \' e7 j
11.1 系统虚拟化技术概述 330) r8 o; ~6 }. t Y' H
11.1.1 系统虚拟化及其组成部分 330' V" }' C2 j D& U
11.1.2 虚拟机监控器的类型 3316 t5 n5 S, B, \, N/ a" R
11.2 CPU虚拟化 332
3 U; c- D2 C$ P( R9 e11.2.1 下陷和模拟 333" D( `8 Z" X$ D$ k5 y
11.2.2 可虚拟化架构与不可虚拟化架构 333) d- U. |6 { ^2 Z& [
11.2.3 解释执行 334 G; w2 D; h- C6 l4 w# }6 Z
11.2.4 动态二进制翻译 335
: m: r: c' }- p11.2.5 扫描和翻译 336
1 y7 H& G" f# }6 ^( O7 `7 f1 \2 y11.2.6 半虚拟化技术 337. s5 z/ b" X6 g& M1 w) K: R
11.2.7 硬件虚拟化技术 338
9 ~3 M3 x( P7 ?/ N11.2.8 小结 340. P1 O& ~4 [$ Y$ b P, C- B
11.3 内存虚拟化 341
/ O E- G5 v: h6 q8 V( h11.3.1 影子页表机制 343% V! N: M* D" z, f3 Z) a1 [7 q, b
11.3.2 影子页表的缺页异常处理流程 345
/ [4 ]/ |3 a4 j2 d8 \" s2 c: s* B11.3.3 直接页表映射机制 345' E# D8 n: R i# D( J: d
11.3.4 两阶段地址翻译机制 346# ?( ?& c2 ^3 e6 D5 p3 M X5 g
11.3.5 换页和内存气球机制 349% F1 R+ M) M- G4 `$ z
11.3.6 小结 351$ I# g3 u* N$ w* r
11.4 I/O虚拟化 351( n I s8 h6 N% ]1 c1 v
11.4.1 软件模拟方法 352
- v; M6 Q7 R. T! c" I11.4.2 半虚拟化方法 354
7 ]# s# w8 T2 m; g: T, }11.4.3 设备直通:IOMMU和SR-IOV 356
! n, T( M; S% N6 Z3 a11.4.4 小结 3592 v# v5 M1 f/ f) h
11.5 中断虚拟化 360
8 G! F* _# _9 A" q! q5 S11.6 案例分析:QEMU/KVM 361
( ^9 H. h B% `11.6.1 KVM API和一个简单的虚拟机监控器 362. g* b+ U& Q5 W+ Z+ x$ R5 P
11.6.2 KVM与QEMU 364
/ Q Q7 @$ i' |4 O11.6.3 KVM内部实现简介 366
& l) ^% u/ O, G11.7 思考题 367
% b( F6 x: w8 q) V( V v! c D- E9 p参考文献 3670 [! J2 v' e# ~$ M9 z# b. D
缩略语 369
- p X7 l( P; q: n6 G* d( L在线章节一 d8 g6 R5 M' A7 Z- W; s A
第二部分 操作系统进阶2 C9 n& _# W$ e1 W( C4 L
2章 多核与多处理器 ]8 }6 S8 C/ A/ D7 h/ T
3章 文件系统崩溃一致性
& U: B; i; M& `9 w4章 网络协议栈与系统
6 @7 |& A- F, T. v/ m, ~, E5章 轻量级虚拟化
! K' A# ?; _4 F7 ]* _/ ^6章 操作系统安全
& F4 A: w) J1 ?; ?% `7章 操作系统调测
* _ g7 O9 _/ Q# s- M8章 形式化证明
- U0 B: T- Q! G+ B2 [第三部分 ChCore课程实验& Z6 K! o+ g/ f H* R# V
9章 实验1:机器启动+ B. }9 T8 R3 k% N/ r7 x
第20章 实验2:内存管理
- t. ]0 Q1 x% Z1 M0 R- ]第21章 实验3:用户进程与异常处理
; n' n. b) I; d L) T9 e第22章 实验4:多核处理. p2 w! R4 i8 i; u
第23章 实验5:文件系统与Shell. H6 u, N0 d( n& X
第24章 实验6:进阶实践; M" ^! U0 @$ ?& n8 O7 |
( w" A' Z; m4 j2 s8 M8 w. D 百度云盘下载地址(完全免费-绝无套路):6 T" i/ ?2 O0 `! W ~ c; I) j' Z
1 ]$ {$ H9 [. f; Q; B2 K- U; ^( m- W4 E+ U5 h1 {" E- F
; `) L( x6 O( U* n& T* |
7 q v6 j! Z& ?6 e% L& L( J1 v6 N5 I# t3 Y
+ B E0 [# A+ w; C |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|