لینک کوتاه مطلب : https://hsgar.com/?p=6883

درباره – eXpOS NITC

فلسفه eXpOS

هر پروژه سیستم عامل آموزشی که به عنوان بخشی از دوره کارشناسی سیستم عامل در مقطع کارشناسی ارائه می شود باید دو شرط را برآورده کند:

  1. دانش آموز باید در مورد مفاهیم سیستم عامل مرکزی تا آنجا که ممکن است عمق و جزئیات داده شود.
  2. مقدار کار درگیر نباید بیشتر از چیزی باشد که دانشجو در یک ترم چهار ماهه می تواند انجام دهد.

مشکل پیش روی معلم این است که تصمیم بگیرد که چقدر مصالحه بر روی (1) باید به نفع (2) انجام شود. eXpOS موضع ما در این مورد است.

سه اصل اساسی وجود دارد که در طراحی ابزار آموزشی eXpOS در نظر گرفته شده است:

این افکار به تصمیمات زیر تبدیل شده است:

  1. رابط های رو به بالا و پایین هسته سیستم عامل را از نظر ایده آلی ساده نگه دارید – این به این معنی است:
    1. پلتفرم معماری که سیستم عامل بر روی آن پیاده‌سازی می‌شود، برای درک و برنامه‌نویسی ساده نگه داشته می‌شود، اما می‌تواند از حافظه مجازی، دیسک/IO مبتنی بر وقفه، اشتراک‌گذاری زمان، مدیریت استثنا، صفحه‌بندی تقاضا و غیره پشتیبانی کند.
    2. رابط برنامه نویسی برنامه (API) (و رابط باینری برنامه (ABI) ) ارائه شده توسط سیستم عامل ساده و حداقل نگه داشته می شوند.
  2. را مشخصات سیستم عامل از دیدگاه برنامه نویس سیستم عامل تا حد امکان ساده نگه داشته شده است. ویژگی های سیستم عامل حداقل هستند، برخی از آنها عبارتند از:
    1. چندوظیفه ای مشارکتی
    2. یک سیستم فایل تک دایرکتوری ساده که در آن فرآیندها می توانند فایل های داده را ایجاد، نوشتن، خواندن و حذف کنند
    3. تدارک فرآیندهایی برای به اشتراک گذاری فایل ها و حافظه
    4. اصول اولیه برای ارتباطات بین فرآیندی (semaphores باینری) و همگام سازی فرآیند (سیگنال-انتظار)
    5. پشتیبانی از چندین کاربر
    6. مدیریت حافظه مبتنی بر تقاضا
  3. کد سیستم عامل باید به طور کامل توسط دانش آموز بدون کد داخلی نوشته شود، به جز یک کد ROM بوت استرپ و کدی که یک کد را پیاده سازی می کند. رابط کتابخانه سطح برنامه. پشتیبانی برنامه نویسی به حداقل رسیده است تا ابزارهای برنامه نویسی سطح بالا بسیاری از مسائل سطح پایین را از برنامه نویس سیستم عامل پنهان نکنند. اساساً دانش آموز باید “برنامه نویسی سطح پایین” را روی “سخت افزار سطح بالا” انجام دهد.
  4. این سیستم برای کمک به دانش آموز طراحی شده است که عملکرد یک سیستم عامل “به اندازه کافی پیچیده” را درک کند و نه تا به او کمک کند تا در زمینه برنامه نویسی واقعی سیستم عامل ها تجربه کسب کند. معماری، سیستم‌عامل، API، ABI و غیره همگی با هر یک از سیستم‌ها یا استانداردهای واقعی موجود در حال استفاده متفاوت هستند، اما به گونه‌ای طراحی شده‌اند که کار برنامه‌نویسی سیستم‌عامل را تا حد امکان ساده کند.

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

بسته eXpOS این کار را با ارائه یک انتزاع سخت افزاری فرضی ساده برای برنامه ساده می کند – ماشین XSM. چیزی که XSM را ساده می کند این است که کلمات حافظه آن می توانند یک رشته یا یک عدد دلخواه را ذخیره کنند. این به این معنی است که قالب بندی داده ها – یکی از مهم ترین نکات فنی هنگام کار با ماشین ها – ساده شده است. ساده‌سازی‌های بیشتر شامل این فرض است که هر بلوک دیسک دقیقاً در یک صفحه حافظه قرار می‌گیرد و غیره. کد سیستم‌عامل را می‌توان با برنامه‌نویسی دستگاه با استفاده از یادگیری ساده نوشت. زبان SPL (که فقط یک اسمبلر XSM غنی شده است).

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

eXpOS ABI برای پشتیبانی از برنامه های کاربردی در زبان برنامه نویسی C بسیار ابتدایی است. از این رو ما یک زبان جداگانه (به نام ExpL) با استفاده از کدام برنامه ها می توان ایجاد و کامپایل کرد. کامپایلر ExpL که به دانش آموز داده می شود از رابط برنامه کاربردی سطح بالای eXpOS پشتیبانی می کند (API). ما در اینجا متذکر می شویم که پیاده سازی یک کامپایلر ExpL برای eXpOS ABI در ماشین XSM یک تمرین آموزنده برای یک آزمایشگاه طراحی کامپایلر در مقطع کارشناسی خواهد بود. (دیدن پروژه کامپایلر ExpL.)

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

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


دو جنبه مرتبط با طراحی و اجرای هر جزء اصلی یک سیستم عامل وجود دارد. – 1) یک سیاست و 2) یک مکانیسم اجرا.

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

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

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

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


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

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

eXpOS از نسخه قبلی (به نام XOS) که با موفقیت برای آموزش در مقطع کارشناسی در بخش علوم و مهندسی کامپیوتر، NIT Calicut استفاده شد. eXpOS XOS را با پشتیبانی چند کاربره، چندوظیفه ای مشترک، انتقال دیسک مبتنی بر وقفه و تسهیلات ارتباطی بین پردازشی گسترش می دهد. هر دو این پلتفرم‌ها توسط تیم‌هایی از دانشجویان CSE در مقطع کارشناسی NIT Calicut از طریق یک سری پروژه‌های بزرگ در مقطع کارشناسی توسعه داده شده‌اند.

نویسندگان

محتوای موجود در وب سایت و مستندات آن در گروه علوم و مهندسی کامپیوتر نوشته شده است، موسسه ملی فناوری، کالیکات فعالیت این پروژه به راهنمایی دکتر مورالی کریشنان ک. در سال 1389 آغاز شده و در حال حاضر در حال پیشرفت است. در زیر لیستی از نویسندگان و مشارکت کنندگان در پروژه آمده است. این کار از نسخه قبلی این پروژه به نام the پروژه XOS به راهنمایی دکتر مورالی کریشنان ک.

  • 2018-2019
    • آرون جوزف
    • روهیت ویشنومولاکالا
  • 2017-2018
    • کندالا ناوینا
    • نوانت کیشور
    • سومده بیرجدار
  • 2016-2017
    • آخیل اس
    • کارتیکا آراویند
    • N Ruthvik
    • تالام سای سری داتا
  • 2015-2016
    • آنجانا بابو
    • کریستین V خوزه
    • کوریان یعقوب
    • لنی وی وی
    • آلینا توماس
    • رشما سریکومار
    • رشما توماس
    • Nunnaguppala Surya Harsha
    • ویشنوپریا ماتا
  • 2014-2015
    • Kruthika Suresh Ved
    • سیخا وی مانوج
    • سونیا وی متیو
    • اسواثی تی ریوی
    • سوبیشا
    • گاوتام آر جنگجو
    • گلن مارتین
    • گویند آر
  • 2012-2013
    • شمیل سی ام
    • سریرج اس
    • ویوک آناند تی کالامپلی
  • 2010-2012
    • اجیت کومار
    • آلبین سورش
    • آویناش
    • دیپاک گویال
    • جریل کی جورج
    • ک دینش
    • متیو کومپالامتانام
    • نسیم اقبال
    • نیتیش کومار
    • رامنات جایچاندران
    • ساتیام دوراسوامی
    • سومش بی
    • یوگش میشرا
  • مشارکت کنندگان فنی
    • شجهان فریز
    • نیکیل سوجان

مجوز


eXpOS توسط دکتر Murali Krishnan K، گروه علوم و مهندسی کامپیوتر، موسسه ملی فناوری، Calicut تحت مجوز مجوز Creative Commons Attribution-NonCommercial 4.0 International License. بر اساس کاری در https://github.com/eXpOSNitc

تصدیق

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

لینک منبع

ارسال یک پاسخ

آدرس ایمیل شما منتشر نخواهد شد.