进程(二)Linux下进程具体属性

本文详细介绍了Linux进程的各个属性,包括进程ID、用户和组ID、文件模式创建屏蔽字、进程组、会话组、控制终端、时间统计、信号处理以及文件锁等。通过理解这些属性,可以更好地掌握进程的运行机制和权限管理。
摘要由CSDN通过智能技术生成

进程数据结构(进程描述符)

直接查看下源码(这里是0.11版本的内核)中的文件/include/linux/sched.h,Linux的进程控制块为一个由结构task_struct所定义的数据结构,这个结构就在上面的sched.h中。这个文件中有一行代码:
extern struct task_struct *task[NR_TASKS];
为记录指向各PCB的指针,指针数组定义于/kernel/sched.c中,原定义为
 struct task_struct * task[NR_TASKS] = {&(init_task.task), };
NR_TASKS为最多可以同时运行的进程的数目,在sched.h中定义(#define NR_TASKS 64)。
task_struct结构的内容如下(为了写注释有改动,像unsigned long start_code,end_code,end_data,brk,start_stack;会展开成多行写):

struct task_struct {
/* these are hardcoded - don't touch */
        long state;     /* -1 unrunnable, 0 runnable(就绪), >0 stopped */
        long counter;   //任务运行时间片
        long priority;  
        long signal;    //信号。每个比特代表一种信号。
        struct sigaction sigaction[32];
        long blocked;   /* bitmap of masked signals 进程信号屏蔽码*/
/* various fields */
        int exit_code;  //退出码,父进程会取得
         unsigned long start_code;  //代码段地址
        unsigned long end_code;    //代码长度(字节数)
        unsigned long end_data;    //代码长度+数据长度(字节数)
        unsigned long brk;    //总长度
        unsigned long start_stack; //堆栈段地址
        long pid,father,pgrp,session,leader; //进程、父进程、进程组、会话、会话首进程号
        unsigned short uid,euid,suid;  //用户id、有效用户id、保存的用户id
        unsigned short gid,egid,sgid;  //组id、有效组id,保存的组id
        long alarm;                    //闹钟定时
        long utime,stime,cutime,cstime,start_time;  //用户态(系统态)运行时间、子进程用户态(系统太)
        unsigned short used_math;      //是否使用了协处理器
/* file system info */
        int tty;                //进程使用tty的子设备号,-1标识没有使用
        unsigned short umask;   //文件创建屏蔽字
        struct m_inode * pwd;   //当前工作目录i节点结构
        struct m_inode * root;  //根节点i节点结构
        struct m_inode * executable;  //执行文件i节点结构
        unsigned long close_on_exec;  //执行时关闭文件句柄位图标志
        struct file * filp[NR_OPEN];  //进程使用的文件表结构
/* ldt for this task 0 - zero 1 - cs 2 - ds&ss */
        struct desc_struct ldt[3];    //本任务的局部表描述符。0-空,1-代码段cs,2&#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值