Linux内核初探(2)
进程管理:
Linux系统中的进程一般具备以下4中条件:
1. 有一段程序供其执行。
2. 有进程专用的系统堆栈空间
3. 在内核中有“进程控制模块”.有了这个数据结构,进程才能成为内核调度的一个基本单位来接受内核的调度。同时记录着进程所占的各项资源。
4. 有独立的存储空间,意味着拥有专有的用户空间,进一步,还意味着除了上述系统空间堆栈外还有专用的用户空间堆栈。系统空间是不能独立的,任何进程都不可能直接改变系统空间的内容。
这四条都是必要条件,缺少其中的任何一条都不能称其为“进程”,如果只具备了前面3条则称之为线程。特别的,如果完全没有用户空间,就称之为“内核线程”。而如果共享用户空间,则称之为“用户线程”,在不致引起混淆的情况下都往往称之为线程。
进程具备三个重要的特性:
1. 独立性:进程是系统中独立存在的实体,他可以拥有自己的独立的资源,在未经过进程本身的允许的情况下,其他进程不能访问这些资源。这一点与线程有很大不同。线程是共享资源的实体,创建一个进程要比线程花费多很多。
2. 动态性:进程与程序的区别在于,程序只是一个静态的指令集合,而进程是一个很多动态指令的集合。在进程中还加入了时间的概念进程具有独自的生命周期和各种不同的状态。
3. 并发性:若干个进程可以在单处理器状态上并发执行。注意并发性和多处理器并行是两个不同的概念。并行是同一时刻内,有多条指令在多个处理器上同时执行;而并发指的是在同一时刻内可能只有一条指令执行,但多个进程的指令被快速轮换执行,使得宏观上具有多个进程同时执行的效果。