سیستمهای امروزی عموما مالتی پراسس هستند. یعنی در هر لحظه پراسسهای زیادی در حال اجرا میباشند. یکی از وظایف سیستمعامل این است که پراسسهای موجود برروی سیستم را مدیریت کند. برای مدیریت پراسسها نیاز است اطلاعاتی درمورد آنها داشته باشیم (جلوتر توضیح میدیم که چرا نیاز هست). این اطلاعات در جایی به نام PCB ذخیره میشود.
PCB به زبان ساده
یک شرکت بزرگ را در نظر بگیرید. این شرکت از بخشهای زیادی تشکیل شده است که همگی این بخشها زیر نظر مدیریت، فعالیت میکنند. مدیریت این شرکت برای اینکه بتواند شرکت را کنترل کند، نیاز به اطلاعاتی جامع درمورد هر یک از بخشهای شرکت دارد. باید شماره هر بخش را داشته باشد، اسم آن را بداند، زیرمجموعههای هر بخش را بشناسد و... . درغیر این صورت مدیریت این شرکت ممکن نخواهد بود.
یک کامپیوتر نیز همانند یک شرکت بزرگ است که مدیریت آن به عهده سیستمعامل میباشد. درون این شرکت پراسسهای زیادی هستند که تحت نظارت سیستمعامل، فعالیت میکنند. سیستمعامل نیز برای مدیریت این پراسسها نیاز به اطلاعاتی جامع درمورد آنها دارد. مثلا اینکه در هر لحظه چه پراسسهایی با چه PID فعال هستند، والد (پدر) هر پراسس کیست، State هر پراسس به چه صورت است و اطلاعات مشابه دیگر.
همگی این اطلاعات در PCB ذخیره میشوند. بنابراین هر موقع سیستمعامل بخواهد درمورد یکی از پراسسها اطلاعاتی را بهدستآورد، به سراغ PCB مربوط به آن پراسس میرود و اطلاعات را میخواند.
PCB به زبان فنیتر
در هر لحظه، درون کرنل سیستمعامل لیستی از پراسسهای زنده وجود دارد. لیستی که نشان میدهد چه پراسسهایی در هر لحظه موجود هستند. این لیست با نام Process List شناخته میشود. درون این لیست به ازای هر پراسس، یک اشارهگر وجود دارد. این اشارهگرد به PCB هر پراسس اشاره میکند:
برای مثال، در شکل بالا 100 پراسس درون سیستم وجود دارد.
به ازای هر کدام از این پراسسها درون Process List، یک رکورد وجود دارد.
درون آن رکورد یک اشارهگر به PCB هر یک از پراسسها وجود دارد که با فلش آبی رنگ مشخص شده است.
پس متوجه ساختار کلی Process List و PCB شدیم. توجه کنید که تمام موارد ذکر شده، یعنی هم Process List و هم PCB درون کرنل (Kernel Space) قرار دارند.
درون PCB چه چیزهایی قرار دارد؟
میتوان گفت تمامی اطلاعات مربوط به یک پراسس درون PCB قرار دارد. یکی از این موارد PID مربوط به هر پراسس میباشد. ID منحصر به فردی که به هر پراسسی که درون سیستم وجود دارد، داده میشود تا دسترسی به آن راحتتر باشد (بهجای کار کردن با اسامی پراسسها، با ID آنها کار میکنیم).
باید توجه داشته باشیم که برخی از مقادیر ذخیره شده درون PCB، از جنس اشارهگر هستند. برای مثال یک اشارهگر درون PCB وجود دارد با نام kstack. وظیفه آن این است که به Kernel Stack پراسس اشاره کند.
یا برای مثال، یک اشارهگر درون PCB با نام context وجود دارد. این اشارهگر به یک قسمتی از همان Kernel Stack اشاره میکند که درون آن اطلاعاتی در رابطه با رجیسترهای پردازنده ذخیره شده است.
یا مثلا اشارهگری با نام ofile، به لیستی از فایلهای باز شده توسط پراسس اشاره میکند.
در تصویر بالا، مختصر وضعیتی از PCB و اشارهگرهای درون آن را مشاهده میکنید. البته این شکل برای بهتر نمایش دادن ساختار مورد بحث کشیده شده است. در سیستمهای امروزی، PCB فیلدهای بیشتری دارد ولی ساختار کلی آن همانند شکل بالا میباشد.