خانه / architecture / نیم نگاهی به سیستم عامل بخش اول؟

نیم نگاهی به سیستم عامل بخش اول؟

مقدمه ایی بر فرایندها:

همه کامپیوترها پیشرفته می توانند چندین کار مختلف را انجام دهند مثلا در حالی که کامپیوتر مشغول اجرای برنامه کاربر است همزمان اطلاعاتی را از دیسک بخواند و متنی را به صفحه نمایش یا چاپگر ارسال کند.همچنین در یک سیستم عامل چند برنامگی تعاملی (اشتراک زمانی) cpu از یک برنامه به برنامه دیگر می برد و هر کدام را به مدت چند ده یا چند صد میلی ثانیه به اجرا در می اورد در نگرش دقیق تر این است که در هر لحظه از زمان cpu فقط یک برنامه را اجرا میکند اما اگر یک ثانیه را مبنای سنجش قرار دهیم در این مدت کوتاه cpu چندین برنامه را اجرا می کند و در نتیجه کاربر تصور میکند که برنامه ها به طور موازی و همزمان اجرا می شوند. گاهی این سوئیچ کردن سریع cpu بین برنامه های مختلف را شبه توازی (pseudo parallelism) گویند تا با توازی واقعی سخت افزاری در سیستم های چند پردازنده ایی اشتباه نشود.

مدل فرایند:

در این مدل؛تمامی نرم افزارهای قابل اجرا در کامپیوتر؛از جمله سیستم عامل به تعدادی از فرایندهای ترتیبی یا sequential process و یا به طور خلاصه همان فرایندها سازماندهی و تقسیم بندی می شوند.

با نگهداری اطلاعات هر فرایند در PCB مربوط در جدول فرآیند؛می توان چنین فرض کرد که هر فرایند؛cpu مجازی خود را دارد.البته در حقیقت cpu از فرایندی به فرایند دیگر سوپیچ میکند ولی برای درک ساده تر و سریعتر طرز کار سیستم بهتر است.

به جای تلاش برای دنبال کردن تعویض cpu از یک برنامه به برنامه دیگر؛راجع به مجموعه ای از فرایند فکر کنیم که به صورت (شبه)موازی اجرا می شوند

یک کامپیوتر چهار برنامه را در حافظه به صورت اشتراک زمانی به اجرا درآورده است

چهار  فرایند دیده می شود که هر یک دارای کنترل جریان مخصوص به خودش است(شمارنده برنامه (pc) مخصوص به خودش را دارد)و هر کدام بدون وابستگی به دیگری می تواند اجرا شود

ایجاد فرایند:

در سیستم های بسیار ساده یا خاص منظوره مانند سیستم های تعبیه شده که فقط برای اجرای یک برنامه کاربردی واحد طراحی شده اند (مثلا برای کنترل بلادرنگ یک دستگاه )؛این امکان وجود دارد که در هنگام بالا آمدن (راه اندازی) سیستم؛تمام فرآیندهای مورد نیاز حاضر باشند اما در سیستم های چند منظوره وجود روشهایی برای ایجاد یا خاتمه فرایندها در طول عملیات ضروری است

۴ رویداد اساسی وحود دارد که می تواند منجر به ایجاد فرایند شود:

۱. راه اندازی سیستم

۲.اجرای فراخوان سیستمی ایجاد فرایند فرزند (مانند fork  در  unix)توسط فرایند در حال اجرا 

۳. درخواست کاربر از پوسته سیستم عامل برای ایجاد یک فرایند جدید که البته در اینجا نیز معمولا پوسته؛یک فرایند فرزند ایجاد می کند

۴٫آغاز یک کار دسته ایی

هنگامی که یک سیستم راه اندازی (boot) میشود؛اغلب چندین فرایند ایجاد میشود برخی از آنها فرایندهای پیش زمینه یا روی صحنه یا foreground هستند این فرایندها با کاربران تعامل دارند و کارهای خاصی برای آنها انجام میدهد.

گروه دیگر فرایندهای پس زمینه یا پشت صحنه به شمار می رود که به کاربر خاصی تعلق ندارند ولی در عوض وظایف به خصوصی را انجام میدهد.به عنوان مثال؛یک فرایند پشت صحنه را در نظر بگیرید که برای پذیرش درخواست های ورودی صفحات وب میزبان روی ماشین طراحی شده اس که در هنگام ورود درخواست بیدار شده و به آن درخواست سرویس می دهد.فرایندهایی که برای اداره برخی از فعالیتها مانند صفحات وبو چپ و نظایر آنها در پس زمینه باقی می مانند شبح یا دیمن نامیده می شوند .

علاوه بر فرایندهای ایجاد شده در زمان را اندازی؛فرایندهای جدید دیگر نیز می توانند بعدا به وجود آینداغلب؛فرایند در حال اجرا؛فراخوانهای سیستمی مانند fork در unix را برای ایجاد یک یا چند فرایند جدید صادر می کند.مثلا یک فرایند کاربر؛ممکن است فرزندانی ایجاد کند تا او را در انجام کارهایش یازی کنند.یک کاربر دیگر برای ایجاد فرایندهای جدید هنگامی است که یک برنامه بزرگ را به آسانی بتوان به برنامه های کوچکتر مستقل از هم تقسیم کرد به  طوری که این برنامه ها بتوانند به صورت فرایندهای همروند با هم اجرا شوند و در عین حال با یکدیگر در ارتباط و تعامل بوده و همگام باشند

در سیستم های تعاملی؛کاربران می توانند اجرای یک برنامه را با تایپ یک فرمان آغاز کنند این عمل با ایجاد یک فرایند فرزند توسط پوسته یا مفسر فرمان انجام می شود.پوسته یک سیستم عامل چند وظیفه ای اجازه می دهد که کاربر بتواند چندین فرمان را به طور پیاپی صادر کند و منتظر پایان یافتن برنامه قبلی نشود.در واقع چندین فرایند به طور هم رند به عنوان فرزندان پوسته اجرا خواهند شد

از نظر تکنیکی در تمام این موارد؛فرایند جدید توسط یک فرایند موجود با استفاده از فراخوان سیستمی ایجاد فرایند ساخته می شود؛این فراخوان سیستمی به سیستم عامل می گوید که یک فرآیند جدید را به وجود آورد و به طور مستقیم یا غیر مستقیم مشخص میکند کدام برنامه باید در آن اجرا شود.

در unix؛فراخوان سیستمی fork؛یک فرایند همزاد دقیقا مشابه فرایند پدر پدید می اورد پس از fork دو فرایند پدر و فرزند؛دارای تصویر حافظه یکسان؛رشته های محیطی یکسان و فایلهای باز یکسان هستند.یعنی هر چه دارید یکسان است در ادامه معمولا فرایند فرزند؛فراخوان execv یا فراخوان سیستمی مشابه را اجرا میکند تا تصویر حافظه اش تغییر کند و یک برنامه جدید را اجرا کند.برای مثال هنگامی که کاربر؛فرمانی مثل sort را تایپ میکند؛پوسته یک فرایند فرزند ایجاد میکند تا فرایند فرزند؛sortرا اجرا کند.فرایند فرزند که ابتدا تصویر حافظه اش و با لطبع کد برنامه اش عینا مانند پدرش پوسته است یا یک فرآخوان سیستمی مانند execv تصویر حافظه خود را تغییر داده و تبدیل به یک برنامه جدید مانند sort می شود مثل تغییر شکل موجودات کارتونی!

اما در واقع این کد پدر است که در بطن فرآیند فرزند او را وادار به تغییر شکل و تبدیل شدن به برنامه دلخواه پدر می کند.حتما می پرسید علت ایجاد دو مرحله ای به فرآیندها چیست؟به عبارت دیگر چرا به جای دو مرحله fork و سپس execv و مشخص کردن نام برنامه مورد نظر در مرحله دوم؛پدر در همان مرحله اول نام برنامه مورد نظرش را به عنوان پارامتر به عنوان پارامتر به fork پاس نمی دهد؟این فرایندهای دو مرحله ایی به فرایند فرزند اجازه می دهد که پس از fork و قبل از execve توصیفگرهای فایلهای خود را دستکاری کند و ورودی استاندارد؛خروجی استاندارد و خطای استاندارد را تغییر دهد

در unix پس از ایجاد یک فرزند؛فرایندهای پدر و فرزند؛هر کدام فضای آدرس مجازی خود را دارند. از این به بعد ؛اگر در کلمه ای از فضای آدرس یکی از این دو فرایند تغییر حاصل شود؛این تغییر در فرایند دیگر قابل رویت نیست. فقط فضای آدرس اولین فرزند؛کپی فضای آدرس پدر است اما دو فضای آدرس کاملا مجزا وجود دارد.آن دو هیچ حافظه نوشتنی مشترکی ندارند. در برخی از پیاده سازی های unix؛می توان متن برنامه را بین دو فرایند به اشتراک گذاشت؛زیرا هیچ کدام قادر به تغییر دادن متن برنامه نیستند.درهر حا؛این امکان وجود دارد که فرایندهایی که به تازگی پدید آیند؛برخی از منابع پدر خود؛مانند فایلهای باز را به طور اشتراکی استفاده کنند

نکته :

فرایند فرزند می تواند منابع مورد نیازش را مستقیما از سیستم عامل بگیرد و یا محدود به استفاده زیر مجموعه ای از منابع فرایند پدر باشد.

فرایند های پدر و فرزند می توانند به طور هم روند اجرا شوند و یا فرایند پدر منتظر بماند تا اجرای تعدادی؛یا تمام فرزندانش خاتمه یافته و سپس اجرا شوند. در برخی سیستم ها مانند VM؛هنگامی که یک فرایند به طور اختیاری یا اجباری خاتمه می یابد؛همه فرایندهایی که توسط این فرایند به وجود آمده اند (تمام فرزندانش)؛بلافاصله کشته خواهند شد. به عبارت دیگر؛خاتمه فرایند پدر؛منوط به خاتمه فرایندهای فرزند است که به این روش اصطلاحا ختم پی در پی یا آبشاری می گویند. اما در بعضی از سیستم عامل؛مانند برخی از پیاده سازیهای UNIX؛چنین الزامی وجود ندارد.یعنی بعضی از سیستم ها به فرایندهای یتیم یا orphan اجازه میدهند بعد از مرگ پدرشان به اجرا ادامه دهند.

سلسله مراتب فرایند

در بعضی سیستم ها؛پس از اینکه یک فرایند؛فرایند دیگری را ایجاد می کند فرایندهای پدر و فرزند به همکاری خود به منظور انجام برخی از امور؛تداوم می بخشند.فرایند فرزند نیز می تواند فرایندهای (فرزندان)دیگری را ایجاد کرده و به این ترتیب یک سلسله مراتب (درخت گونه) از فرایندها تشکیل می شود.یک فرایند و فرزندانش به همراه نسلهای بعدی خود میتواند با یکدیگر تشکیل یک گروه فرایند بدهند.

هنگامی که یک فرایند بدهند.هنگامی که یک کاربر از طریق صفحه کلید اقدام به ارسال یک سیگنال می تواند به همه اعضای گروه فرایند که در حال حاضر در ارتباط با صفحه کلید هستند تحویل داده می شود.

اگر یک سیگنال به گروهی از فرایندها ارسال شود.هر فرآیند می تواند مستقلا تصمیم بگیرد که آیا آن سیگنال را دریافت کند یا آن سیگنال را دریافت کند؛یا از آن صرف نظر کند؛یا اینکه اجازه دهد تا عمل پیش فرض که کشته شدن به وسیله آن سیگنال است در موردش انجام دهد.

به عنوان یک مثال ساده برای آشنایی بیشتر با چگونگی استفاده از درخت فرایندها.باید ببینیم برخی از سیستمهای unix هنگام بالا آمدن چگونه خودشان را راه اندازی می کنند.اغلب دو فریاد به نام های init  و سرویس دهنده احیا یا تناسخ (Reincarnation server) در تصویر راه انداز یا boot image این سیستم ها وجود دارند init باید یک فایل اسکریپت (مجموعه ایی از فرامین که پشت سر هم اجرا می شوند؛البته به همراه دستورات کنترلی از قبیل شرط و حلقه را اجرا میکند و بدین وسیله از سرویس دهنده احیا بخواهد که گرداننده و سرویس دهنده هایی که در تصویر راه اندازی وجود ندارند را اجرا کند. این رویه باعث می شود که گرداننده ها و سرویس دهنده هایی که شروع می شوند به عنوان فرزندان سرویس دهنده تناسخ شناخته شوند تا اگر احیانا هر یک از آن ها به دلایلی خاتمه یابد؛سرویس دهنده تناسخ از این امر مطلع شو و دباره آن را آغاز کند(دمیدن مجدد روح در آن).

هدف از این مکانیسم این است که امکان تحمل خرابی یگ گرداننده یا سرویس دهنده جدید به طور خودکار راه اندازی می شود.در عمل؛جایگزینی یک گرداننده از جایگزینی یک سرویس دهنده آسان تر است. یعنی سرویس دهنده ها همیشه برگشت پذیر نیستند.

هنگامی که init این عمل را به پایان می رساند؛بررسی می کند تا ببیند کدام ترمینال ها و ترمینالهای مجازی وجود دارند.init برای هر یک از این ترمینال ها یک فرایند فرزند مثلا به نام getty ایجاد میکند (با fork) که کار آن نمایش یک اعلان login (ورود به سیستم) روی آن ترمینال و سپس انتظار برای ورود نام کاربر است.هنگامی که یک نام تایپ می شود؛getty با فراخوان exec برنامه پوسته (shell) را اجرا میکند. در برخی از این سیستمها؛فرایند login با فراخوان سیستمی fork یک فرزند ایجاد می کند و فرزند جدید با فراخوان exec برنامه پوسته (shell) را اجرا میکند؛بنابراین shellبا فرزند init است و یا فرزند login و نوه init محسوب می شود.فرامین کاربر؛فرزندان shell را ایجاد می کند که نوادگان init به شمار می روند.

وضعیت های (حالات) فرایند

فرایندها از لحظه ای که ایجاد میشوند تا هنگامی که خاتمه می یابند؛به طور پویا در حالتهای مختلفی قرار میگیرند.اگر ساده به مسئله نگاه کنیم و درگیر جزییات نشویم؛زندگی یک فرایند از سه مرحله ایجاد و گذراندن چرخه حالت و خاتمه تشکیل می شود.

سیستم عامل دارای بخشی به نام مدیریت فرآیند یا process manager است که این سه مرحله را کنترل میکند.اگر کمی دقیقتر به مسئله نگاه کنیم؛در چرخه حالت؛سه حالت دیگر نیز خواهیم دید که در کل؛پنج حالت فرایند را به شرح زیر خواهیم داشت:

۱. ایجاد یا جدید new :کار در حال گذراندن مراحل پذیرش(در صورتی که محدودیت تعداد فرایندها یا حافظه موجود اجازه دهد)؛ساخت اجزای تشکیل دهنده فرایند(تصویر حافظه؛PCB و مقداردهی اولیه اطلاعات فرایند مانند PID,UID,GID؛اولویت و غیره)و تبدیل شدن به فرایند آماده اجرا است.

۲. در حال اجرا Running در این حالت CPU واقعا در اختیار فرایند است

۳.آماده Ready فرایند قابل اجرا است اما موقتا متوقف استتا فرایند دیگری اجرا شود.در صف فرایندهای آماده قرار دارد تا نوبتش برای دریافت CPU برای اولین یا چندین بار فرا رسد.

۴.بلوکه شده یا مسدود شده Blocked یا منتظر waiting یا خوابیده Asleep؛نمی تواند اجرا شود؛خوابیده است و منتظر است تا رویداد خاصی اتفاق بیافتد نه تنها CPU را در اختیار ندارد.بلکه در لیست صف فرایندهای آماده برای دریافت CPU نیز قرار ندارد.

خروج یا خاتمه Terminated:

فرایندی که اقدام به خروج کرده یا فرمان کشته شدن آن صادر شده استو سیستم عامل در حال حذف آن و پاک کردن اثرات آن در سیستم و ساختمان داده های مربوط به آن است

فرایندهای معلق:

در برخی سیستم عامل (معمولا قدیمی)که حافظه مجازی را پشتیبانی نمی کند از تکنیکی به نام مبادله swapping استفاده می شود در این سیستم ها؛یک فرایند در طی حیات خود؛به دلیل کمبود حافظه و نیاز به افزایش درجه چند برنامگی برای بالا بردن کارایی پردازنده؛بارها به طور کامل بین حافظه اصلی و دیسک مبادله می شود.یعنی موقتا از حافظه به دیسک برده شده swap out و هرگاه نزدیک زمان اعزام آن باشد دوباره به حافظه اصلی برگردانده می شود swap in  و احتمالا در یک محیط جدید باز می شود. فرایندی که موقتا در دیسک قرار دارد در حالت معلق suspended یا مبادله شده swapped به سر می برد.

جدول فرایند:

در فضای داده های سیستم عامل در حافظه اصلی؛جدول مختلف مدیریت حافظه؛جداول مدیریت I/O؛جداول مدیریت فایل و جداول مدیریت فرایند وجود دارند.یکی از این جداول که سیستم عامل برای پیاده سازی فرایندها ایجاد میکند.جداول فرایند است.هر فرایند؛یک درایه از این جدول را پر میکند که PCB نام دارد و شامل همه اطلاعاتی است که لازم است در هنگامی که فرایند از حالت (اجرا) به حالت (آماده) یا (مسدود) می رود ذخیره شود تا بعدا بتواند از همان نقطه ادامه یابد.

می دانیم که ساختارهای ماژولار مدرن؛ارتباط بین فرایندها؛مدیریت حافظه و مدیریت فایل؛هر یک توسط ماژول های جداگانه ای از  سیستم انجام می شود.بنابراین جدول فرایند به چند بخش تقسیم می شود و در هر بخش؛فیلدهای مورد نیاز یک ماژول نگهداری می شود.در زیر تعدادی از فیلدهای مهم این جدول نشان داده شده است.

مدیریت فایل:

دایرکتوری ریشه-دایرکتوری کاری-توصیف گرهای فایل-اطلاعات مربوط به کنترل ترمینال-آدرس بافرهای خواندن و نوشتن-پارامتر فراخوان سیستمی-بیت های پرچم مربوط به مدیریت فایل

مدیریت فرایند:

اشاره گر قطعه متن-اشاره گر قطعه داده – اشاره گر قطعه پشته – شناسه فرایند PID-شناسه کاربر UDI – شناسه گروه GID شناسه- شناسه فرایند پدر- گروه فرایند – زمان CPU  فرزند – اطلاعات اشتراک متن – نگاشت های بیتی سیگنال ها – بیتهای پرچم مربوط به حافظه – نام فرایند

هسته :

شمارنده برنامه( PC)-کلمه وضعیت برنامه (PSW)-اشاره گر پشته (PS)-سایر رجیسترها حالت فرایند-اولویت زمانبندی فعلی – حداکثر اولویت زمانبندی گذشته – اندازه کوانتوم (برش زمانی)-مدت استفاده از CPU – اشاره گرهای صف پیام – بیت های سیگنال معلق – بیتهای مربوط به فرایند

تعدادی از فیلدهای جدول فرآیند.این فیلدها به سه دسته مربوط به هسته؛مدیریت فرایند؛و سیستم فایل تقسیم شده است.

تعویض فرایند (تعویض متن):

در اینجا می خواهیم درباره چگونگی سوییچ کردن بین فرایندها در سیستمی که فقط یک CPU دارد بیشتر توضیح دهیم.این عمل؛تعویض فرایند process Switch یا تعویض متن context Switch نامیده میشود.برای تشریح عملیات تعویض متن؛فرض کنید که در یک کامپیوتر شخصی دارای پردازنده پنتیوم با سیستم اشتراک زمانی؛فرایند A در حال اجرا است که وقفه زمان سنج (ساعت) رخ میدهد و منجر به تعویض فرایند می شود این عملیات از مراحل زیر تشکیل می شود.

فاز اول مراحل سخت افزاری:

۱.ساعت درخواست وقفه (IRQ #8) را به PIC می فرستند

۲.PIC تصمیم می گیرد که وقفه ساعت را به CPU ارسال کند

۳.CPU دستورالعمل جاری خود را به اتمام می رساند

۴.CPU وقوع وقفه را بررسی می کند و متوجه می شود که درخواست وقفه وارد شده است و با سیگنال تصدیق وقفه را ارسال میکند.

۵.PIC شماره وقفه را روی گذرگاه داده می گذارد و CPU آن را برمیدارد

۶.CPU رجیسترهای مهمی مانند PC(آدرس برگشت) و PWD (وضعیت) را در بالای پشته فرایند جاری ذخیره می کند.

۷٫CPU از مد کاربر به مد هسته سوئیچ میکند.

۸.CPU به سراغ بردار وقفه interrupt vector می رود و آدرس ISR شماره ۸ (اداره وقفه ساعت)را از درایه شماره ۸ این بردار بر می دارد و در رجیستر PC باز میکند

فاز دوم (سیستم عامل بساط فرایند A  را جمع میکند):

۹.اداره کنند وقفه ساعت؛محتویات تمام رجیسترهای به جز PC و PSW را به PCB فرایند A ذخیره میکند (شماره فرآیند جاری و اشاره گر به در آیه مربوط در جدول فرآیند؛در متغیرهای سرتاسری قرار دارد تا به سرعت بتوان به آنها دسترسی داشت)

۱۰.حتی رجیستر هایی مانند PC و PWD نیز توسط CPU در پشته فرایند ذخیره شده اند را میتوان(به صورت اختیاری)از پشته حذف کرد و در PCB ذخیره کرد.

۱۱.سایر فیلدهای PCB فرایند A؛در صورت نیاز؛به روزرسانی میشوند.مثلا حالت فرایند A از (اجرا) به (آماده) تغییر میکند.

۱۲.اشاره گر پشته (SP) طوری تنظیم می شود که به جای پشته فرایند A به پشته موقتی مورد استفاده اداره کننده فرایند (در فضای سیستم عامل ) اشاره کند.کارهایی نظیر ذخیره سازی رجیسترها و تغییر اشاره گر پشته (به راحتی) در زبان C انجام نمی شود بنابراین این موارد؛معمولا توسط رویه کوچکی انجام میگیرد که به زبان اسمبلی نوشته می شود.

فاز سوم (اجرای زمانبندی CPU در سیستم عامل):

۱۳.زمانبند CPU که معمولا یک تابع به زبان C است فراخوانی می شود.

۱۴.زمانبند CPU؛براساس الگوریتم زمانبندی؛فرایند بعدی (مثلا فرایند B) را انتخاب میکند.

۱۵.شناسه فرآیند انتخاب شده در یک متغیر سراسری قرار داده می شود و زمانبند به رویه اسمبلی بازگشت میکند.

فاز چهارم (اعزام فرایند تولید):

۱۶.SP فرایند B(که شناسه آن در متغییر سراسری قرار ارد)از PCB این فرایند استخراج می شود و دوباره پشته عوض می شود.اشاره گر پشته (SP) طوری تنظیم می شود که به جای پشته موقتی مورد استفاده اداره کننده فرایند به پشته فرآیند B اشاره کند.

۱۷.برخی از فیلدها PCB فرایند B؛به روزرسانی می شوند.مثلا حالت فرایند B از آماده به اجرا تغییر می کند

۱۸.رجیستر هایی مانند PC و PSW در صورتی که قبلا از پشته حذف شده و در PCB ذخیره شده اند دوباره از PCB استخراج شده و در پشته به همان صورت اولیه PUSH می شوند

۱۹.محتوای سایر رجیسترها از PCB فرایند B بازیابی شده و در رجیسترهای CPU بارگذاری می شوند.

۲۰.CPU از مد هسته به مد کاربر سوییچ می شود

۲۱. در اثر بازگشت وقفه؛CPU مقادیر رجیستر های مهم PC و PSW را از پشته بازیابی کرده و در رجیسترهای مربوط بارگذاری میکند تا به ادامه اجرای فرایند جدید B بپردازد

اگر مثال را عوض کنیم و به جای وقفه ساعت؛وقفه دیسک را در نظر بگیریم؛چند مرحله به ابتدای فاز سوم اضافه می شود.ارتباط بین فرایندها در بسیاری از سیستم عامل از طریق مکانیسم هایی مانند تبادل پیام صورت می گیرد پس در ابتدای فاز سوم یک پیام تهیه می شود و به فرایند دیسک فرستاده می شود.فرایند دیسک در وضعیت مسدود؛منتظر دریافت این پیام بوده است.

هر فرایند stack خاص خود را دارد (حداقل یک stack) در چند نخی بیش از یک stack دارد.سیستم عامل نیز برای هر قسمت مثلا هر سروری که روی آن نصب است یک stack دارد؛هر برنامه شامل فضای stack؛data,textو gap می باشد که gap فضای خالی برای رشد stack می باشد

فرایند از سه بخش تشکیل می شود

۱. کد(متن)

۲.execution part (قسمت اجرایی)(رجیستر؛صندوق پستی,stackوPCB)

۳.منابع Resource

فرایندها به صورت درسخت هستند یعنی یک ریشه دارند و مابقی فرایندها فرزندان و نوادگان ریشه هستند در یونیکس فرایند ریشه init نام دارد؛تمام فرایندها به جز ریشه به درخواست یک پدری بوجود آمده اند مانند تمام انسانها که به جز حضرت ادم پدر داشته اند

به کل اطلاعات فرایند جدول فرایند process table می گویند که به هر سطر آن PCB میگویند

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *