Skip to content

Commit 84d43fe

Browse files
committed
添加进程管理概览
1 parent d404250 commit 84d43fe

File tree

1 file changed

+33
-2
lines changed

1 file changed

+33
-2
lines changed

kernel/f.kernel-jobs

Lines changed: 33 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,14 +38,45 @@
3838
行的进程数目最多不超过CPU数目,因此内核会按照短的时间间隔在不同的进程之间切换
3939
(用户是注意不到的)。内核借助于CPU的帮助,负责进程之间进行切换。内核还必须确
4040
定如何在在现存进程之间共享CPU时间。重要进程得到的CPU时间多一点,次要进程得到的
41-
少一点,确定那个进程运行多长时间的过程成为调度
41+
少一点,确定那个进程运行多长时间的过程称为调度
4242

4343
linu对进程采用了一种层次系统,每个进程都依赖于一个父进程。内核启动init程序作为
44-
第一进程,该进程负责进一步的系统初始化操作,因此init是进程数的根,所有的进程都
44+
第一进程,该进程负责进一步的系统初始化操作,因此init是进程树的根,所有的进程都
4545
直接或间接起源自该进程。
4646

47+
创建新进程的两种机制:fork和exec
4748

49+
fork可以创建当前进程的一个副本,父进程和子进程只有PID(进程ID)不同。linux使用
50+
了一种叫做写时复制(copy on write)的级数来是fork操作更高效,主要的原理是将内
51+
存复制操作延迟到父进程或子进程向某内存页面写入数据之前,在只读访问的情况下父进
52+
程和子进程可以公用同一内存页。
4853

54+
exec是将一个新程序加载到当前进程的内存中并执行。旧程序的内存页将刷出,其内容将
55+
替换为新的数据。然后开始执行新程序。
56+
57+
线程:本质上一个进程可能有若干线程组成,这些线程共享同样的数据和资源,但可能执
58+
行程序中不同的代码路径。线程通常也称为轻量级进程。
59+
60+
linux用clone方法创建线程。其工作方式类似与fork,但启用了精确的检查,以确认哪些
61+
资源与父进程共享,哪些资源为线程独立创建。这种细粒度的资源分配扩展了一般的线程
62+
概念,在一定成都上允许线程与进程之间的连续转换。
63+
64+
命名空间:linux中对命名空间的支持被集成到了许多子系统中。这使得不同的进程可以
65+
看到不同的系统视图。如linux进程ID中有唯一表示的全局变量,启用命名空间之后,以
66+
前的全局资源可以具有不同的分组。每个命名空间可以包含一个特定的PID集合,或可以
67+
提供文件系统的不同视图,在某个命名空间中挂载的卷不会传播到其他命名空间中。现在
68+
最大的用处莫过于在容器上的应用了,人们不必在为每个用户准备一台物理计算机,而是
69+
通过称为容器的命名空间建立系统的多个视图。从容器内部看来这是一个完整的linux系
70+
统,而且与其他容器没有交互,这样事实上一台物理机器可以同时运转许多这个的容器实
71+
例,有助于更有效地使用资源。与完全虚拟化解决方案(如KVM)相比,计算机上只需要
72+
运行一个内核来管理所有的容器。
73+
74+
75+
内存管理
76+
--------
77+
78+
79+
地址空间的最大长度与实际可用的物理内存数量无关,这被称为虚拟地址空间。
4980

5081
==============================================================================
5182
==============================================================================

0 commit comments

Comments
 (0)