LINUX进程管理

来源:互联网 发布:淘宝怎么查询买家星级 编辑:程序博客网 时间:2024/06/18 09:20

1. 进程是什么?

一个进程就是出于执行期的程序, 包括:可执行程序代码(代码段), 打开的文件, 挂起的信号, 内核内部数据, 处理器状态, 地址空间, 一个或多个执行线程, 当然还包括用来存放全局变量的数据段, 等等.

 

2. 什么是线程?它和进程的关系是什么样的? 线程在LINUX中具体是怎么样实现的?

是在进程中活动的对象, 对linux而言, 线程只不过是一种特殊的进程.

线程之间可以共享虚拟内存, 但拥有各自的虚拟处理器.

 

3. 进程在内核中的表示.

3.1 通过大约1.7K(在32位的机器上)的进程描述符task_struct来表示, 所有这些结构体组成一个双向的循环列表(被称为task list).

3.2 这个task_struct包含了内核管理一个进程所需的所有信息.

3.3. 在2.6以前的内核中,各个进程的task_struct存放在它们内核栈的尾端; 现在是用slab分配器来动态生成的, 只需在栈底(对于向下增长的栈来说)或栈顶(对于向上增长的栈来说)创建一个新的结构struct_thread_info.

task_struct结构体:

 

struct_thread_info结构体:

 

3.4 进程有下面这些状态:

 

4. 进程的创建

 

 

5. 进程的终结过程

 

 

 

一些大的概念:

1. UNIX操作系统的两个基本抽象: 进程和文件.

2. 在现代操作系统中, 进程提供两种虚拟机制: 虚拟处理器和虚拟内存.