سیستم عامل کوثر

سیستم عامل فارسی کوثر

سیستم عامل کوثر

سیستم عامل فارسی کوثر

سیستم عامل کوثر

سیستم عامل کوثر یک سیستم عامل فارسی بر پایه معماری X86 می باشد. هدف این سیستم عامل تا اطلاع ثانوی آزمایشی / آموزشی می باشد. این سیستم عامل بر پایه هیچ سیستم عامل دیگری مانند لینوکس و ... نمی باشد و از ابتدا توسط توسعه دهندگان آن نوشته شده است.
ما از علاقمندان به برنامه نویسی و طراحی سیستم در همکاری و توسعه این سیستم عامل استقبال می کنیم. نیازی نیست که شما برنامه نویسی و یا ... خبره باشید. حتی با دانش کم هم می توان به ما کمک کرد.
امید است بعد از مراحل آموزشی به مرحله بهره برداری از یک سیستم عامل کاملا بومی برسیم.
emadrezvani@chmail.ir

آخرین نظرات
نویسندگان

۳ مطلب با موضوع «بخش تخصصی فرآیندها» ثبت شده است

هسته - اداره وظایف (ایجاد و همزمانی)

مازیار نون | دوشنبه, ۲۰ مرداد ۱۳۹۳، ۰۳:۴۷ ب.ظ

سلام

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

در ابتدا به منظور اجرای تمام وظایف (فرآیندها) توسط سیستم عامل ، این را باید در نظر بگیریم که با هر مدل هسته ای به طور کلی ، اداره کردن وظایف بر عهده هسته خواهد بود. پس در این پست من یک دید کلی از یک بخش از اداره کردن وظایف توسط هسته را ارائه می دهم. هر وظیفه شامل کد و داده ها است که در واقع قبل از بکارگیری آن بر روی دیسک سخت کامپیوتر ذخیره شده است.

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


از دید سیستم عامل هسته باید ابتدا بعد از یک وقفه ، PCB فرآیند (وظیفه) را در حافظه اصلی ایجاد کند و قبل از آنکه فرآیند در حافظه اصلی قرار گیرد باید روال ایجاد تصویر فرآیند نیز صورت گیرد. و بعد با زمانبندی و فراخوانی برنامه توزیع کننده این فرآیند به پردازنده برای اجرا تحویل داده شود بعد از اتمام کار فرآیند ، هسته مسئول خارج کردن فرآیند از حافظه اصلی است.

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

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

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

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

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


نکته: کلمات وظایف ، فرآیندها در اینجا یک معنی دارند.

با تشکر

تیم سیستم عامل کوثر

  • مازیار نون

رفتار فرآیند و نخ (چرخه زندگی) - بخش اول

مازیار نون | دوشنبه, ۱۶ تیر ۱۳۹۳، ۱۰:۳۷ ق.ظ

سلام

فرآیندها و نخ ها در سیستم دارای رفتاری هستند این رفتار حالت یک فرآیند را نشان می دهد.با شناخت این حالت می توان به وضعیت فرآیند پی برد.

حالت فرآیند در سیستم های چندبرنامگی ، یک فرآیند را دنبال می کند. علت آن هم مدیریت سیستم عامل است که در قبال فرآیندها انجام می شود.

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

برای مدیریت فرآیندها یا نخ ها اولین مسئله که سیستم عامل به آن نیاز دارد ، شناخت رفتار فرآیند است اما چرا؟ چون که با شناخت فرآیند یا نخ می توان به سیستم عامل کمک کند که متناسب با هر حالت فرآیند روال های مدیریتی را برای آن اجرا کند.

رفتار فرآیند با دنبال کردن دستوراتی که فرآیند اجرا می کند مشخص می شود . این رفتار یک لیست است که Trace (لیست ردیابی) نامیده می شود این لیست شامل دستوراتی است که فرآیند یا نخ اجرا می کند. به عنوان مثال اگر در لیست ردیابی یک نخ یا فرآیند دستور فراخوانی یک دستگاه I/O بود ، در این صورت آن فرآیند یا نخ باید برای دسترسی به دستگاه مربوطه منتظر بماند این انتظار به معنای مسدود شدن موقتی فرآیند است (البته برای نخ ها یک استثناء است که در مقالات آینده خواهم گفت) ، پس فرآیند عملاً کاری ندارد و منتظر است ، پس سیستم عامل این دستور را تفسیر کرده و رفتار فرآیند یعنی انتظار و مسدود را برای آن مشخص می کند.

اما بعد از آن دستور ، این حق فرآیندهای دیگر است که به CPU تحویل داده شوند ، از این جهت پس از عملیات context switching و انتقال فرآیند مسدود شده به صف مسدود آن دستگاه ، یک برنامه در حافظه که همیشه مقیم (توزیع کننده) است فراخوانی می شود و آن برنامه پروسه انتخاب فرآیند بعدی را بر عهده دارد که یک فرآیند را براساس سیاست های سیستم عامل در قبال زمانبندی انتخاب و نهایتاً تحویل CPU داده می شود.

این فرآیند نیز یک حالت دارد و قبل از تحویل به CPU حالت آماده و بعد از تحویل حالت اجرا دارد.

با این حال ما می توانیم تصمیم بگیریم که یک فرآیند مانند هر چیز دیگری یک طول عمر دارد. و این طول عمر به عنوان چرخه زندگی او محسوب می شود. تنها تفاوت با جهان واقعی این است که فرآیند بعد از پایان عمر ، حذف نمی شود بلکه دوباره passive (غیر فعال) می شود.

طراحی چرخه زندگی برای فرآیند یا نخ می تواند با موضوع ماشین های حالت پیاده سازی شود.

ادامه مطالب در بخش بعد...

با تشکر

تیم سیستم عامل کوثر


  • مازیار نون

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

مازیار نون | يكشنبه, ۸ تیر ۱۳۹۳، ۱۰:۲۸ ق.ظ

ابتدا تعریف فرآیند در یک struct

َشبه کد
struct process
بلاک کنترل فرآیند از پنج بخش تشکیل شده است:
1- شناسه فرآیند
* شناسه فرآیند: مقدار منحصر به فردی که به یک فرآیند داده می شود تا از سایر فرآیندها متمایز گردد.
شبه کد
char p_ID[LEN]
* شناسه فرآیند والد: در صورتی که این فرآیند فرزند باشد باید شناسه فرآیند والد مشخص گردد.
شبه کد
cahr p_FID[LEN]
نکته: می توان از اشاره گر به جای تعریف متغیر جداگانه استفاده کرد.
* شناسه کاربری: نام کاربری که به فرآیند دسترسی دارد.
شبه کد
char p_userID[LEN]
--------------------------------------------------------------------------------------------------------------------------------------

2 - وضعیت پردازنده : این اطلاعات شامل ثبات هایی که کاربر می تواند آن را مشاهده کند و در حالت کاربر اجرا می شوند و کاربر می تواند به آنها رجوع کند.بستگی به نوع پیاده سازی پردازنده ، تعداد ثبات ها متغیر است.دسترسی به این ثبات ها از طریق دستورالعمل های ماشین است.
* ثبات های داده : بسته به عملیات متفاوت است.ماانند عملیات حسابی و ...
* ثبات های آدرس: آدرس داده ها و دستورالعمل ها که به صورت کلمه از حافظه اصلی خوانده می شود.ممکن است برای بدست آوردن آدرس ها از این ثبات استفاده شود که باز بسته به عملیات متفاوت است.
* ثبات شاخص: آدرس دهی با عملیات جمع یک شاخص با آدرس پایه برای بدست آوردن آدرس موثر است.
* ثبات های کنترل وضعیت: کنترل عملیات روی پردازنده است و شامل:
 - شمارنده برنامه: آدرس دستورالعمل بعدی
- کدهای وضعیتی: نتایج آخرین عملیات ها در محاسبات یا عملیات های منطقی مانند سریز ، تقسیم بر صفر ، و ...
- وضعیت: flag هایی باری مدیریت وقفه ها مانند فعال سازی و غیر فعال سازی وقفه
شبه کد
char f_cod_Interrupt
شبه کد برای ثبات ها
برای هر کدام از موارد بالا می توان یک struct تعریف کرد که داده ها را نگه داری کند. به غیر از مورد آخر.
--------------------------------------------------------------------------------------------------------------------------------------
3- اشاره گر به پشته ها: این پشته ها حاوی پارامترها ، آدرس روال های برای فراخوانی و ... است.
شبه کد
تعریف struct از نوع اشاره گر و اشاره به بالای هر پشته.
--------------------------------------------------------------------------------------------------------------------------------------
4 - کنترل فرآیند: شامل اطلاعات زمانبندی و رفتار فرآیند.
* رفتار فرآیند: وضعیت فرآیند را نشان می دهد که مورد استفاده برای الگوریتم های زمانبندی است مانند حالت اجرا ، انتظار ، مسدود ، تعلیق و...)
شبه کد
int p_mode
* الویت فرآیند: چنانچه سیاست تخصیص اولویت برای فرآیند در نظر گرفته شده باشد.از این مقدار برای تصمیم گیری های زمانبندی استفاده می شود.
شبکه کد
char p_prt
* حسابداری: برخی اطلاعات مربوط به پروسه زمانبندی مانند مدت زمان انتظار فرآیند و ...
از این اطلاعات برای تخمین کارایی سیستم و تصمیم گیری برای زمانبندی های بعدی استفاده می شود.
شبه کد
می توان یک struct تعریف کرد که داده ها را نگه داری کند.
* رویداد: مشخصه رویدادی که فرآیند برای آن به حالت انتظار رفته است.
شبه کد
char p_evd[LEN]
* سایر اطلاعات
- اشاره گر به صف: چنانچه سیستم از صف برای تعیین اولویت استفاده کرده است مانند سیستم عامل ویندوز
- و ...
* ارتباطات بین فرآیندها
- بستگی به نوع ارتباط دارد: لوله ، پیام ، سمافور ، مانیتور ، و ... باید علائمی در این بخش تعریف شود که نشانگری برای ارتباط بین فرآیندها باشد.
* مجوز فرآیند: اجازه به فرآیند برای اجرای بعضی از دستورالعمل ها و ...
* مدیر حافظه: اشاره گر به جداول صفحه و قطه در سیستم حافظه مجازی.
شبه کد
تعریف یک اشاره گر به جداول صفحه یا قطعه
چون که جداول صفحه و قطعه شامل مقادیر عددی هستند من در شبه کد از اشاره گری از نوع عددی استفاده می کنم.
نکته: ممکن است به صورت دیگر و از نوع دیگر تعریف شود.
numberType *entry_number_p_page
* منابع: تعیین اینکه فرآیند مالک چه منابعی است.
--------------------------------------------------------------------------------------------------------------------------------------
نخ
موارد زیر در داخل فرآیند بخش قبل است.

1 - بلوک کنترل نخ: به مانند فرآیند می باشد با کمی تفاوت.
 * وضعیت نخ : تعریف حالت نخ (تمامی موارد فرآیند به جزء تعلیق)
 * کنترل نخ (متن نخ):در بخش فرآیند توضیح داده شده است.
 * پشته کاربر: که همان اشاره گر به پشته ها می باشد.
 * پشته هسته : پشته برای فراخوانی های هسته ، اگر هسته در بین نخ ها در فرآیند اجرا می شود.
 نکته : پشته هسته در بخش فرآیند گفته نشد زیرا مدل حالت فرآیند مشخص نبود و معمولاً به صورت کلاسیک آورده نمی شود مگر آنکه مدل حالت فرآیند انتخاب شده باشد.
 * حافظه static برای متغیرهای محلی نخ
 شبه کد
توضیح: اشاره گری به مکان حافظه.
****************************************************************************************
به دلیل تصمیم مدیر تیم امکان انتشار کد اصلی فعلاً مقدور نیست.

با تشکر تیم سیستم عامل کوثر
  • مازیار نون