task_struct解析
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                task_struct解析
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                task_struct是Linux內核的一種數據結構,它用task_struct結構體來描述進程的信息。下面來剖析一下進程中保存的主要的信息有哪些?
struct task_struct {//進程的運行時狀態volatile long state; /* -1 unrunnable, 0 runnable, >0 stopped */void *stack; atomic_t usage;//進程當前的狀態/*0x00000002表示進程正在被創建;0x00000004表示進程正準備退出;0x00000040 表示此進程被fork出,但是并沒有執行exec;0x00000400表示此進程由于其他進程發送相關信號而被殺死 。*/unsigned int flags; /* per process flags, defined below */unsigned int ptrace;int on_rq;//表示此進程的運行優先級,prio表示動態優先級,根據static_prio和交互性獎罰算出,static_prio是進程的靜態優先級,在進程創建時確定,范圍從-20到19,越小優先級越高。int prio, static_prio, normal_prio;//進程的運行優先級unsigned int rt_priority;//list_head結構體struct list_head tasks;//mm_struct結構體,描述了進程內存的相關情況struct mm_struct *mm, *active_mm;/* per-thread vma caching */u32 vmacache_seqnum;struct vm_area_struct *vmacache[VMACACHE_SIZE];/* task state *///進程的狀態參數int exit_state;int exit_code, exit_signal;//父進程退出后信號被發送int pdeath_signal; /* The signal sent when the parent dies */ /* scheduler bits, serialized by scheduler locks */unsigned sched_reset_on_fork:1;unsigned sched_contributes_to_load:1;unsigned sched_migrated:1;unsigned sched_remote_wakeup:1;unsigned :0; /* force alignment to the next boundary *//* unserialized, strictly 'current' */unsigned in_execve:1; /* bit to tell LSMs we're in execve */unsigned in_iowait:1;struct restart_block restart_block;//進程號pid_t pid;//進程組號pid_t tgid;//進程的親身父親struct task_struct __rcu *real_parent; /* real parent process *///進程的現在的父親,可能為繼父struct task_struct __rcu *parent; /* recipient of SIGCHLD, wait4() reports *///進程的孩子鏈表struct list_head children; /* list of my children *///進程兄弟的鏈表struct list_head sibling; /* linkage in my parent's children list *///主線程的進程描述符struct task_struct *group_leader; /* threadgroup leader *//* PID/PID hash table linkage. */struct pid_link pids[PIDTYPE_MAX];//該進程的所有線程鏈表struct list_head thread_group;struct list_head thread_node;//該進程使用cpu時間的信息,utime是在用戶態下執行的時間,stime是在內核態下執行的時間。cputime_t utime, stime;cputime_t gtime;struct prev_cputime prev_cputime;//啟動時間,,只是時間基準不一樣u64 start_time; /* monotonic time in nsec */u64 real_start_time; /* boot based time in nsec */struct task_cputime cputime_expires;//list_head的CPU時間struct list_head cpu_timers[3];//保存進程名字的數組,一般數組大小為15位char comm[TASK_COMM_LEN];/* file system info *///文件系統信息struct nameidata *nameidata;/* 文件系統信息計數*/int link_count, total_link_count;/* filesystem information *///文件系統相關信息結構體struct fs_struct *fs;/* open file information *///打開文件信息的結構體struct files_struct *files;/* namespaces */struct nsproxy *nsproxy;/* signal handlers *///信號相關信息的句柄struct signal_struct *signal;struct sighand_struct *sighand;struct callback_head *task_works;struct audit_context *audit_context;struct seccomp seccomp;/* Thread group tracking */u32 parent_exec_id;u32 self_exec_id;/* journalling filesystem info */void *journal_info;/* VM state */struct reclaim_state *reclaim_state;struct backing_dev_info *backing_dev_info;struct io_context *io_context;unsigned long ptrace_message;siginfo_t *last_siginfo; /* For ptrace use. *//** time slack values; these are used to round up poll() and* select() etc timeout values. These are in nanoseconds.*///松弛時間值,用來記錄select和poll的超時時間,單位為nsu64 timer_slack_ns;u64 default_timer_slack_ns;/* CPU-specific state of this task *///該進程在特定CPU下的狀態struct thread_struct thread;};今天我們只是簡單的了解了一下進程的信息,往后會再詳細講解進程。
總結
以上是生活随笔為你收集整理的task_struct解析的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: [剑指Offer]替换空格
- 下一篇: 神话剧情介绍
