linux中的PCB---task_struct

本文介绍了Linux操作系统中的进程控制块PCB,重点解析了task_struct数据结构,包括进程概念、PCB的作用、task_struct的内容,如进程状态、flags、亲属关系、ptrace系统调用和进程调度等信息。
摘要由CSDN通过智能技术生成

   说起PCB相信学过操作系统的童鞋都知道这是进程控制块是用来描述进程基本信息的数据结构,今天我就从linux下的task_struct这个类似PCB的概念来理解什仫是PCB?以及PCB存在什仫样的基本信息?

    要了解PCB,首先需要了解什仫是进程?

一.进程的概念

 在之前学过的操作系统课本上是这样描述进程的,进程是程序的一次动态执行的过程,进程=程序+数据+PCB(这样官方的描述真的可以让我们理解什仫是进程吗?反正我不太理解!!!但是学习的时候为了考试也就是记住就好了),现在重新学习linux下的操作系统却让我有了不一样的认识。

    在OS操作系统的观点下:进程是程序的一个执行实例;是正在执行的程序;能够分配处理器并由处理器执行的实体;在内核的观点下:担当分配系统资源(CPU时间,内存)的实体.

 总结:

     进程是加载到物理内存中的程序,操作系统给该应用程序创建一系列数据结构PCB,是动态的文件,是被内存管理起来通过页表映射到物理内存中的数据结构.

二.进程控制块---PCB

 进程控制块是描述进程的基本信息的数据结构,那仫为什仫需要进程控制块呢?一个进程被创建的标志是什仫?在单批道处理器中我们每次只能处理一个进程,我们是如何知道正在使用CPU的是哪个进程?当该进程执行完毕之后我们是如何选择哪个进程将被执行?假如一个正在被执行的进程由于时间片或者挂起等操作被迫让出CPU的使用权当该未执行完的进程下一次被CPU调度的时候如何知道执行到什仫位置?。。。此时就需要进程控制块来解决这些问题了.

     为了处理以上这些问题,PCB至少应该存在以下几种信息:进程标识(是进程的唯一标识,PID);进程的优先级(决定哪个进程将被处理机调度);记录进程的上下文信息(当再次被处理机调度的时候可快速恢复);程序和数据的地址等等各种信息,下文将更加详细的介绍task_stcuct的数据结构.

     总之,在进程的整个生命周期中进程控制块都起着不可或缺的作用,下面就让我们来理解task_struct的基本信息

 三.linux中的PCB---task_struct

     每个进程在内核中都有一个进程控制块(PCB)来维护进程相关的信息,Linux内核的进程控制块是task_struct结构体,task_struct是Linux内核的一种数据结构,它会被装载到RAM里并且包含着进程的信息

     每个进程都把它的信息放在 task_struct 这个数据结构里,task_struct 包含了以下内容:

      

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


  

  • 4
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值