سیستم عامل یونیکس(Unix OS)-بخش دوم
مدیریت فرآیند در یونیکس
- یونیکس یک سیستم چند وظیفه ای می باشد.
- چندین برنامه می توانند در یک زمان واحد اجرا شوند.
- درنهایت هر برنامه نیاز است که با یک CPU اجرا شود.
- وقتی که سیستم فقط دارای یک CPU می باشد پس چگونه چندین برنامه در یک زمان با هم اجرا میشوند؟
اشتراک گذاری زمان
- درواقع تمام برنامه هایی که قراره اجرا شوند اکثرا منتظر می مانند تا CPU کار برنامه در حال اجرا را تمام کند.
- برنامه ای که قرار است اجرا شود Process نامیده میشود.
- دریک سیستم چند وظیفه ای، یک Process حداقل ۳ حالت زیر را دارد:
- تمام Processهایی که آماده برای اجرا هستند، بدون در دسترس بودن CPU در حالت Ready خواهند بود.
- اگر سیستم فقط یک CPU داشته باشد در این صورت تمام Process ها غیر از یکی در حالت Ready خواهند بود.
حالت Running (اجرا)
- Processای که در عمل CPU را در اختیار دارد در حالت Running میباشد.
- اگر در سیستم فقط ۱ عدد CPU وجو دارد در اینصورت حداکثر فقط یکی از Processها در حالت running خواهد بود.
حالت waiting (انتظار)
- Process ای که منتطر دیگر منابع نظیر I/O میباشد در حالت waiting قرار دارد.
- Processها به صورت متناوب یکی پس از دیگری به CPU دسترسی پیدا خواهند کرد (round robin scheme نامیده میشود)
- هر Process برای یک مدت زمان کوچک در CPU خواهد بود (کوانتوم).
- برای لینوکس هر کوانتوم در حدود ۱۰۰ میلی ثانیه می باشد.
- در زمانیکه یک Process انتخاب میشود تا در CPU باشد:
- از حالت Ready به حالت Running میرود.
- بعد از آن Process خارج خواهد شد:
- از حالت Running دوباره به حالت Ready برمیگردد.
- یا شاید به دلیل منتظر بودن برای یک سیستم I/O نظیر موس:
- از حالت Running به حالت waiting میرود.
- وقتی که منبع مورد نظر در اختیار قرار گرفت:
- از حالت waiting به حالت Ready میرود.
مدیریت فرایند در UNIX SVR4
سیستم عامل unix system v از امکان فرآیند به صورت ساده ولی قوی و بسیار قابل رویت برای کاربر ، استفاده می کند. در Unix بخش اعظم سیستم عامل در داخل محیط یک فرآیند کاربری اجرا می شود. بنابراین دو حالت کاربر و هسته لازم است . unix از دو گروه فرآیندهای سیستمی و فرآیندهای کاربری استفاده می کند. فرآیندهای سیستمی در حالت هسته ارائه می شوندو کد سیستم عامل را برای انجام اموری مثل تخصیص حافظه و مبادله فرآیند، اجرا می کنند. اجرای فرآیندهای کاربری در حالت کاربر، برای اجرای برنامه های کاربر، برنامه های سودمند و در حالت هسته ، برای اجرای دستور العمل های متعلق به هسته است. فرآیندهای کاربر با صدور یک فراخوانی سیستم ، یا با ایجاد یک استثناء (خرابی) و یا بروز وقفه وارد حالت هسته میگردد.
حالات فرآیند
سیستم عامل unix نه حالت را برای فرآیند می شناسد .این ۹ حالت در جدول ۳-۱۰ نشان داده شده است .
قبضه تنها موقعی می تواند اتفاق افتد که فرایندی در شرف رفتن از حالت هسته به حالت کاربر باشد.
اجرای کاربر
اجرای هسته آماده و حافظه حفته و در حافظه آماده اجرا و مبادله شده
خفته و مبادله شده قبضه شده
ایجاد شده جادویی |
اجرا در حالت کاربر
اجرا در حالت هسته به محض اینکه هسته آن را زمانبندی کند آماده اجراست تا بروز حادثه ای قابل اجرا نیست فرایند در حافظه اصلی است. فرایند برای اجرا آماده است اما قبل از اینکه هسته بتواند آن را برای اجرا زمانبندی کند مبادله کننده باید این فرایند را به حافظه اصلی منتقل کند. این فرایند منتظر حادثه ای است و در عین حال به حافظه ثانوی مبادله شده است. فرایند از حالت هسته به حالت کاربر بر می گردد اما هسته آن را قبضه کرده و یک تعویض فرایند انجام می دهد تا فرایند دیگری را زمانبندی کند. فرایند به تازگی ایجاد شده و هنوز برای اجرا آماده نیست. فرایند دیگر وجود ندارد، اما سابقه ای را برای فرایند پدرش باقی میگذارد. |
فرایند ی که در حالت هسته در حال اجراست ممکن نیست قبضه شود. این نکته سیستم عامل یونیکس را برای پردازش بلادرنگ نامناسب می کند.
دو فرایند در یونیکس یکتا هستند. فرایند صفر، فرایند ویژه ای است که در موقع راه اندازی سیستم ایجاد شده است. در واقع به صورت یک ساختمان داده قبلا تعریف شده و در زمان راه اندازی سیستم بار شده است. فرایند صفر همان فرایند مبادله کننده می باشد. به علاوه فرایند صفر فرایند یک را که به آن فرایند آغاز میگویند. ایجاد می کند. فرایند یک را که به آن فرایند آغاز می گویند، ایجاد می کند. فرایند یک جد کلیه فرایندهای دیگر در سیستم است. وقتی یک کاربر محاوره ای جدید با سیستم ارتباط برقرار می کند این فرایند یک است و برای او یک فرایند کاربری ایجاد می کند. متعاقبا برنامه کاربر میتواند درختوار فرایندهای مختلفی را ایجاد نماید. بنابر این هر کاربرد خاص می تواند های متعددی باشد.
شرح فرایند
در یونیکس هر فرایند مجموعه پیچیدهای از ساختمان داده هایی است که تمام اطلاعات لازم برای مدیریت و توزیع وقت پردازنده به فرایندها را در اختیار سیستم عامل قرار میدهد.
متن سطح کاربر حاوی عناصر پایه ای برنامه کاربر است و میتواند مستقیما از پرونده ترجمه شده مقصد تولید گردد. برنامه کاربر به نواحی داده ها و متن برنامه تفکیک شده است. ناحیه متن برنامه فقط خواندنی و برای نگهداری دستوالعمل های برنامه می باشد. هنگامی که فرایندی در حال اجراست پردازنده از ناحیه پشته کاربر، برای فراخوانی ها و بازگشت های روبه و برای انتقال پارامتر، استفاده می کند. ناحیه حافظه مشترک ناحیه دادهای است که با فرایندهای دیگر مشترک است.تنها یک نسخه فیزیکی از ناحیه حافظه مشترک وجود دارد ولی با استفاده از حافظه مجازی این طور به نظر میرسد که این ناحیه مورد اشتراک از حافظه در فضای آدرس های هر یک از فرایند های شریک وجود دارد. وقتی فرایندی در حال اجرا نیست اطلاعات وضعیف پردازنده در ناحیه متن ثابت ذخیره شده است.
متن سطح سیستم حاوی بقیه اطلاعات مورد نیاز سیستم عامل برای مدیریت آن فرایند و شامل یک بخش ایستا و یک بخش پویا است. اندازه بخش ایستا ثابت و در طول حیات آن فرایند همراه ش است. اندازه بخش پویا در طول حیات فرایند تغییر می کند. یکی از عناصر بخش ایستا مدخل جدول فرایند است. این در واقع بخشی از جدول فرایند است که برای هر فرایند یک مدخل داشته و توسط سیستم عامل نگهداری می شود. مدخل جدول فرایند اطلاعات کنترل فرایند که هموارد در دسترس هسته است را در بردارد. بنابر این در یک سیستم حافظه مجازی تمام مدخل های جدول فرایند در حافظه اصلی نگهداری میشود. محتوی یک مدخل جدول فرایند را فهرست کرده است. ناحیه کاربر حاوی اطلاعات اضافی کنترل فرایند است. اطلاعاتی که تنها هنگامی که هسته در متن این فرایند در حال اجراست به آنها احتیاج دارد. از این اطلاعات در موقع صفحه بندی فرایند ها به از حافظه نیز است می شود.
تمایز بیند مدخل جدول فرایند و ناحیه u منعکس کننده این حقیقت است که هسته یونیکس همواره در متن فرایند ی اجرا می ردد. اغلب اوقات هسته با همان فرایند سروکار دارد. ولی بعضی مواقع، مثل هنگامی که هسته عمل زمانبندی برای توزیع وقت پردازنده به فرایند دیگر را انجام میدهد، نیاز به دسترسی به اطلاعات فرایند های دیگر دارد.
سومین بخش ایستای متن سطح سیستم جدول ناحیه هر فرایند می باشد که سیستم مدیریت حافظه از آن استفاده می کند. پشته هسته بخش پویای متن سطح سیستم است. هنگامی که این فرایند در حالت هسته اجرا می شود. این پشته مورد استفاده قرار گرفته و حاوی اطلاعاتی است که با فراخوانی ها رویه و بروز وقفه باید ذخیره و بازیابی گردد.
کنترل فرایند
ایجاد فرایند در یونیکس به وسیله ()FORK که یک فراخوانی هسته سیستم است، صورت میگیرد. وقتی فرایند در خواست FORK می کند، سیستم عامل اعمال زیر را انجام میدهد:
۱- برای فرایند جدید عنصری در جدول فرایند تخصیص میدهد.
۲- یک شناسه یکتا برای این فرایند فرزند در نظر میگیرد.
۳- یک کپی از تصویر فرایند پدر (به استثنای حافظه های مشترک) ایجاد می کند.
۴- شمارنده های پرونده هایی که متعلق به پدر بود را افزایش میدهد (مبنی بر اینکه آن پرونده ها متعلق به یک فرایند دیگر هم هستند).
۵- فرایند فرزند را در حالت آماده اجرا قرار میدهد.
۶- شماره شناسنامه فرزند را به فرایند پدر و مقدار صفر را به فرایند فرزند برمی گرداند.
تمام این اقدامات در حالت هسته در فرایند پدر صورت میگیرد. وقتی که هسته تمام این اعمال را کامل کند ، میتواند یکی از اعمال زیر را به عنوان بخشی از رویه توزیع کننده وقت پردازنده انجام دهد:
۱- ماندن در فرایند پدر ، در نقطه فراخوانی Fork ، کنترل به حالت کاربر برمی گردد.
۲- انتقال کنترل به فرایند فرزند . اجرای فرایند فرزند ، از نقطه مشابه در کد فرایند پدر ، یعنی پس از بازگشت از فراخوانی fork ، شروع می شود.
۳- انتقال کنترل به فرایند دیگر. هم فرایند پدر و هم فریند فرزند در حالت آماده اجرا قرار می گیرند.
شاید تصور این روش ایجاد فرایند ، مشکل باشد؛ به دلیل اینکه هم فرایند پدر و هم فرایند فرزند کد یکسانی را اجرا می کنند. تفاوت این است که ، وقتی بازگشت از fork اتفاق می افتد، پارامتر بازگشتی بررسی می شود. اگر پارامتر بازگشتی صفر باشد ، این فرایند فرزند است و میتواند با اجرای انشعابی به برنامه مناسبی از کاربر ، اجرای آن ادامه یابد. اگر مقدار بازگشتی غیر صفر باشد، فرایند پدر است و روند اصلی اجرا ، می تواند ادامه یابد.
با سلام و عرض خسته نباشید
من یک سیستم یونیکس دارم که در اثر قطع برق MOUNT دایرکتوریها از بین رفته یعنی اینکه Unmount شده
لطفا اگر ممکنه راهنمایی بفرمایید چگونه دایرکتوریها را مونت کنم الان به چند تا فایل نیاز دارم امکانش نیست
سپاسگزارم