日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

task_struct解析

發布時間:2023/11/30 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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解析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。