PCBまたはプロセス制御ブロック、Wikipediaで定義されているように
プロセス制御ブロック(PCB、ジョブ制御ブロック、[1]ワーク構造、またはスイッチフレームとも呼ばれます)は、特定のプロセスを管理するために必要な情報を含むオペレーティングシステムカーネルのデータ構造です。 PCBは、「オペレーティングシステムのプロセスを表現したものです。
その責任は次のとおりです。
Process identification data
Processor state data
Process control data
それでは、プロセス用のPCBはどこで見つけることができますか?
答え1
Linuxカーネルでは、各プロセスは次のように構成されています。task_struct
二重接続リストでは、init_task
(pid 1ではなくpid 0)。これはしばしば呼び出されます。プロセステーブル。
ユーザーモードでは、一般ユーザーはプロセステーブルを表示できます/proc
。質問のタイトルを確認してください。
識別データ処理「ID」の定義によっては、プロセスID(パス内
/proc/<process-id>/...
)、コマンドライン()、およびその他の属性を含めることができます。cmd
プロセス状態データスケジューリングデータ(
sched
、、stat
およびschedstat
)、プロセスが現在何を待っているか(wchan
)、環境(environ
)などが含まれます。プロセス制御データおそらく資格情報(
uid_map
)とリソース制限(limits
)があります。
したがって、用語をどのように定義するかによって異なりますが、通常、プロセスに関するすべてのデータはにあります/proc
。
答え2
LinuxのPCBは一部ですスレッド情報構造
struct thread_info {
struct pcb_struct pcb; /* palcode state */
struct task_struct *task; /* main task structure */
unsigned int flags; /* low level flags */
unsigned int ieee_state; /* see fpu.h */
mm_segment_t addr_limit; /* thread address space */
unsigned cpu; /* current CPU */
int preempt_count; /* 0 => preemptable, <0 => BUG */
unsigned int status; /* thread-synchronous flags */
int bpt_nsaved;
unsigned long bpt_addr[2]; /* breakpoint handling */
unsigned int bpt_insn[2];};
struct pcb_struct {
unsigned long ksp; - Kernel Stack Pointer
unsigned long usp; - User stack Pointer
unsigned long ptbr; - Page table address
unsigned int pcc;
unsigned int asn;
unsigned long unique;
unsigned long flags;
unsigned long res1, res2;};