进程结构信息task_struct剖析

主要内容:

1、进程的概念;

2、进程在内存中的存储;

3、task_struct结构  ;

进程

从操作系统的层面,简单理解起来的话 ,有这么几种的说法:

1、一个运行的程序 ;

2、程序执行的一个实例 ;

3、能分配处理器并由处理器执行的实体。

但是从 计算机内核层面理解的话:

进程   表示的是 担当分配系统资源(CPU时间,内存)的实体;

进程的两个基本元素是程序代码(可能被执行相同程序的其他进程共享)和代码相关联的数据集。

进程是一种动态描述,但是并不代表所有的进程都在运行。(进程在内存中因策略或调度需求,会处于各种状态)

所以,我们需要在内存中表示这么一个进程。。

广义上,所有的进程信息被放在一个叫做进程控制块的数据结构中,可以理解为进程属性的集合。

进程控制块

进程控制块,简称是 PCB(英文的额缩写)。

每一个的进程在内存中 都有这么一个 进程控制块(PCB) 用来维护进程在 内存中的相关信息。

简单理解一下,就是 

每当我们打开一个进程的话 ,操作系统会为我们 创建一个 这么一个进程控制块。用来表示当前的创建的进程 。。。

而在Linux内核中,进程控制块的表现形式就是 task_struct结构体,在这个结构体内部存储一个进程的相关信息

task_struct

task_struct是Linux内核的一种数据结构,它会被装载到RAM里并且包含着进程的信息。
每个进程都把它的信息放在 task_struct 这个数据结构里

task_struct 包含了这些内容:

标示符 :  描述本进程的唯一标示符,用来区别其他进程。
状态 任务状态,退出代码,退出信号等。
优先级 相对于其他进程的优先级。
程序计数器 程序中即将被执行的下一条指令的地址。
内存指针 包括程序代码和进程相关数据的指针,还有和其他进程共享的内存块的指针
上下文数据 进程执行时处理器的寄存器中的数据。
I/O状态信息 包括显示的I/O请求,分配给进程的I/O设备和被进程使用的文件列表。
记账信息 可能包括处理器时间总和,使用的时钟数总和,时间限制,记账号等

保存进程信息的数据结构叫做 task_struct,并且可以在 include/linux/sched.h 里找到它。
所有运行在系统里的进程都以 task_struct 链表的形式存在内核里。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值