`
highsky
  • 浏览: 276243 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Linux核心数据结构--进程或任务

阅读更多
struct task_struct{

/* these are hardcoded - don't touch */

volatile long        state;          /* -1 unrunnable, 0 runnable, >0 stopped */

  long                 counter;

  long                 priority;

  unsigned             long signal;

  unsigned             long blocked;   /* bitmap of masked signals */

unsigned             long flags;     /* per process flags, defined below */

int errno;

  long                 debugreg[8]; 
  /* Hardware debugging registers */

  struct exec_domain   *exec_domain;

/* various fields */

struct linux_binfmt  *binfmt;

struct task_struct   *next_task, *prev_task;

struct task_struct   *next_run,  *prev_run;

unsigned long        saved_kernel_stack;

unsigned long        kernel_stack_page;

  int                  exit_code, exit_signal;

  /* ??? 这里的注释不知道是什么?*/

  unsigned long        personality;

  int                  dumpable:1;

  int                  did_exec:1;

int                  pid;

  int                  pgrp;

int                  tty_old_pgrp;

int                  session;

  /* boolean value for session group leader */

  int                  leader;

  int                  groups[NGROUPS];

  /*

   * pointers to (original) parent process, youngest child, younger sibling,

   * older sibling, respectively.  (p->father can be replaced with

   * p->p_pptr->pid)

   */

  struct task_struct   *p_opptr, *p_pptr, *p_cptr,

                       *p_ysptr, *p_osptr;


  struct wait_queue    *wait_chldexit; 

  unsigned short       uid,euid,suid,fsuid;

  unsigned short       gid,egid,sgid,fsgid;

  unsigned long        timeout, policy, rt_priority;

  unsigned long        it_real_value, it_prof_value, it_virt_value;

  unsigned long        it_real_incr, it_prof_incr, it_virt_incr;

  struct timer_list    real_timer;

  long                 utime, stime, cutime, cstime, start_time;


/* mm fault and swap info: this can arguably be seen as either

   mm-specific or thread-specific */

  unsigned long        min_flt, maj_flt, nswap, cmin_flt, cmaj_flt, cnswap;

  int swappable:1;

  unsigned long        swap_address;

  unsigned long        old_maj_flt;    /* old value of maj_flt */

unsigned long        dec_flt;        /* page fault count of the last time */

  unsigned long        swap_cnt;       /* number of pages to swap on next pass */

/* limits */

  struct rlimit        rlim[RLIM_NLIMITS];

  unsigned short       used_math;

  char                 comm[16];


/* file system info */

  int                  link_count;

  struct tty_struct    *tty;
          /* NULL if no tty */

/* ipc stuff */

struct sem_undo      *semundo;

  struct sem_queue     *semsleeping;


/* ldt for this task - used by Wine.  If NULL, default_ldt is used */

struct desc_struct *ldt;

/* tss for this task */

struct thread_struct tss;

/* filesystem information */

struct fs_struct     *fs;

/* open file information */

  struct files_struct  *files;

/* memory management info */

  struct mm_struct     *mm;

/* signal handlers */

struct signal_struct *sig;

#ifdef __SMP__

  int                  processor;

  int                  last_processor;

  int                  lock_depth;
    /* Lock depth.

                                          We can context switch in and out

                                          of holding a syscall kernel lock... */ 

#endif  

};



分享到:
评论

相关推荐

    嵌入式Linux高级编程--03posix_进程管理.ppt

    4. **进程控制块(PCB)**:PCB是操作系统管理进程的核心数据结构,包含了描述进程状态和控制进程运行所需的所有信息,如进程标识符、处理机状态、调度信息和控制信息。PCB是进程存在的唯一标志,通常存放于操作系统...

    Linux-0.11code-master.zip

    2. **include**:包含了内核所需的头文件,定义了数据结构、常量和函数原型。 3. **fs**:文件系统相关的代码,包括VFS(虚拟文件系统),它允许Linux支持多种文件系统,如EXT2、FAT等。 4. **drivers**:驱动程序...

    LINUX教程之15-linux中的进程管理

    在Linux操作系统中,进程管理是系统管理的核心部分,它涉及到系统的资源分配、任务调度和程序执行等关键操作。本教程将深入探讨Linux中的进程管理,包括进程的基本概念、查看进程状态的方法、进程控制命令以及多进程...

    Linux 内核结构与进程管理

    Linux内核是操作系统的核心部分,负责管理系统的硬件资源和提供软件服务...了解和掌握Linux内核结构与进程管理对于系统管理员和开发者来说至关重要,因为这有助于优化系统性能,解决系统问题,以及开发和调试应用程序。

    linux--进程

    进程控制块(Process Control Block)是操作系统维护的关于进程的数据结构,包含了进程的状态、资源分配情况、调度信息等。 五、进程创建与退出 Linux中,通过`fork()`函数可以创建新的进程,新进程继承父进程的大...

    postgresql--内核分析--多进程结构

    ### PostgreSQL内核分析——多进程结构 #### 一、进程的理解与创建 进程是一个正在运行的程序实例,它具有动态的特性。对于程序员而言,所编写的代码在未经编译之前仅是静态的源代码。当这些代码经过编译、链接等...

    linux下进程间通信--消息队列

    消息队列是一种数据结构,存储了由发送进程放入的、被接收进程取出的消息。每个消息都有一个唯一的标识符,称为消息键,用于区分不同的消息。队列中的消息按照先进先出(FIFO)的原则被处理,除非特定的消息键被...

    LINUX编程-实验七进程与进程管理.pdf

    LINUX编程中的进程与进程管理涉及到操作系统中进程创建、调度、终止和资源分配等核心概念。在Linux环境下,通过fork系统调用可以创建一个子进程,这是UNIX和类UNIX系统中常用的进程创建方式。在本次实验中,将会涉及...

    LINUX中的进程

    进程控制块(PCB)是操作系统中用来描述进程状态和环境信息的数据结构,它是进程存在的唯一标志。PCB中包含进程标识、状态、调度信息、信号处理信息、进程链信息、时间与定时器、文件系统信息、内存管理信息、进程间...

    linux环境高级编程3-unix进程环境、进程控制和进程关系.ppt

    在Linux中,这些信息主要由`task_struct`数据结构表示。 **进程虚拟内存** 每个进程都有自己的虚拟内存空间,由`vm_area_struct`结构体管理,包括代码、数据、堆栈和文件映射等。虚拟内存提供了内存保护和地址空间...

    linux数据结构[汇编].pdf

    Linux操作系统的核心在于其内核,而内核的高效运行离不开一系列关键的数据结构。这些数据结构在内存管理和系统调用中起到至关重要的作用。本章详细介绍了Linux内核中的一些主要数据结构,它们是构建和管理操作系统...

    Linux操作系统进程管理学习教案.pptx

    在Linux系统中,进程是资源分配的基本单位,而进程描述符(也称为进程控制块,PCB)是记录进程状态和信息的核心数据结构。 1. **进程与进程描述符**: - **进程概念**:进程是程序的一次动态执行过程,包含程序、...

    嵌入式Linux培训教材--修正版

    - **进程通信**:进程之间交换数据的方式。 - **消息传递系统**:基于消息队列的通信机制。 - **存储管理**: - **分页管理机制**:将物理内存划分为固定大小的页。 - **内存共享与保护**:确保不同进程之间不会...

    Linux 学习手册--linux命令大全

    此外,理解Linux内核、进程管理和文件系统结构也是深入学习的重要部分。 Linux命令的学习是一个持续的过程,熟练掌握这些命令可以极大地提高工作效率。通过阅读《Linux学习手册--Linux命令大全》这本书,你可以系统...

    LINUX编程白皮书001-12

    《LINUX编程白皮书001-12》是一份深入探讨Linux系统编程的...PDF文档001-12部分可能详细解释了这些数据结构的概念、实现及它们在Linux内核中的使用实例,对想要深入理解Linux编程的读者来说是一份不可或缺的参考资料。

    Linux进程调度的数据结构.pdf

    对`task_struct`数据结构的研究有助于理解Linux的多任务调度机制和进程调度的工作流程。了解这些细节可以帮助开发者优化内核,满足特定应用场景的需求。例如,通过调整调度策略或改进调度算法,可以提高系统性能,...

    linux-0.11-dev,演示任务的内核态堆栈的位置

    在早期的内核版本中,堆栈管理相对直接,没有现代内核中的复杂数据结构和优化。这为我们提供了一个清晰的视图,了解堆栈工作原理的基本概念。 总之,"linux-0.11-dev"项目为学习Linux内核态堆栈提供了宝贵的资源。...

    81-教学课件-示例-Linux的进程调度算法1

    Linux操作系统中的进程调度是系统管理任务的核心部分,它决定了哪个进程在何时获得CPU的执行权。在Linux 2.4版本中,`schedule()`函数是实现进程调度的主要代码,负责在多个可运行进程之间切换。这个函数位于`kernel...

    linux-0.11-030920

    通过解压"linux-0.11-030920"压缩包,你可以深入探究源代码,学习如何编译和调试内核,以及理解内核中的关键数据结构和算法。这对于想要成为Linux系统开发者或系统管理员的人来说,是一份宝贵的教育资源。同时,这也...

Global site tag (gtag.js) - Google Analytics