Linux之进程

来源:互联网 发布:可以下载的软件 编辑:程序博客网 时间:2024/05/17 18:40

最近在Linux下学习到进程相关的知识,所以就Linux而言谈进程

什么是进程?

谈什么是进程我可以想到进程是程序的执行实例,但是并不是完整的对进程的描述,具体的来说进程应该是这样的:

对操作系统来说:

.程序的执行实例

.是正在执行的程序

.能分配处理器并由处理器执行的实体

对内核而言:

.担当系统资源分配的实体  (cpu 和 内存)

也就是说进程是把程序加载到内存后的实体,他能分配系统资源 但是程序不能,他有自己的各种状态但是程序没有!!!

进程能有如此的功能,正是由于系统通过特别的方法来管理他->PCD(进程控制块)

谈到进程我们一定要想到PCB,可以说进程就是PCD,一个PCB就是一个进程,Linux内核的PCB是task_struct的结构体,这个结构体非常复杂,主要的信息如下:

标识符 : 描述本进程的唯一标识符,用来区别其他进程。

状态 任务状态,退出代码,退出信号等。

优先级 :相对于其他进程的优先级。

程序计数器:程序中即将被执 行的下 一条指令的地址。 

内存指针:包括程序代码和进程相关数据的指针,还有和其他进程共享的内存块的指针

上下 文数据:进程执 行时处理器的寄存器中的数据。IO状态信息:包括显 示的I/O请求,分配给进程的IO设备和被进程使 用的 文件列表。记账信息:可能包括处理器时间总和,使 用的时钟数总和,时间限制,记账号等。

一个c程序被加载到内存时,程序的相关数据在内存中的存放位置关系如下图:


了解进程地址空间相当重要,在编写代码的时候,特别是调试额时候能从根本上程序数据的操作!!!!



0 0