به سمت یک میکروکرنل حقیقی

  • Uploaded by: mohamad amin Rastgoo
  • 0
  • 0
  • November 2019
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View به سمت یک میکروکرنل حقیقی as PDF for free.

More details

  • Words: 3,181
  • Pages: 19
‫به سمت یک میکروکرنل حقیقی‬ ‫یک نسخه از مینیکس که با بردن درایورهای سخت افزار به فضای کاربر کیفیت بال و‬ ‫کرنل کوچک را به ارمغان آورده است‬

‫نویسنده ‪Jorrit N. Herder :‬‬ ‫رساله ای در علوم کامپیوتر‬

‫ترجمه ‪ :‬تعدادی از دانشجویان مهندسی کامپیوتر دانشگاه شیراز‬ ‫استاد راهنما ‪ :‬آقای مهندس سعید جاویدی‬ ‫تصحیح‪ :‬محمد امین راستگو جهرمی‬

‫فصل اول‬ ‫مقدمه‬ ‫سيستم‌هاي عامل پايين‌ترين سطح نرم‌افزار هستند كه سخت‌افزار‬ ‫بدون محافظ را كنترل مي‌كند و زمينه‌اي را فراهم ‌مي‌سازد كه‬ ‫مي‌توان در آن برنامه‌هاي مورد تقاضا را نوشت‪ .‬بنابراين يك‬ ‫سيستم عامل اساسي را براي تمام فعاليت‌هاي كامپيوتر كاربر‬ ‫تشكيل مي‌دهد‪ .‬بنابراين سيستم عامل باید قابل اطمينان باشد و‬ ‫به صورت بدون نقص عمل كند‪ .‬متأسفانه سيستم‌هاي عامل‬ ‫كنوني‪ ،‬مثل ‪ Windows‬و ‪ ،Linux‬در ارائه اين مطلوبيت دچار نقص‬ ‫هستند‪ .‬بسياري از كاربران كامپيوتر با مشکلت سيستم عامل‬ ‫درگیر هستند و مبتل به ويروس ها هستند‪.‬‬ ‫دليل اين مشكلت اين است كه سيستم‌هاي عامل از مشکلت‬ ‫ابتدایی طراحی و خطاها (‪ )bug‬رنج میبرند‪ .‬مدل آنها مي‌تواند به‬ ‫عنوان يك برنامه يكپارچه بزرگ مشخص شود كه مركز كنترل‬ ‫ماشين است‪ .‬از دستورالعمل‌هاي معمول طرح مثل مدل‌دار بودن‬ ‫و اصول حداقل ‪ authorization‬نوعا ً تخلف شده تا بر بعضي‬ ‫عملكردها غالب شويم‪ .‬براي مثال ‪driver‬هاي ابزار دسته سوم به‬ ‫طور طبيعي قسمت كامل هسته (‪ )Kernel‬هستند و تمام امتيازاتي‬ ‫را دارا هستند كه بوسيله آن مي‌توانند كل سيستم را از كار‬ ‫بياندازند‪ .‬مشكل بزرگ ديگر وجود غيرقابل اجتناب ‪bug‬ها است‪.‬‬ ‫براي مثال آمار نرم‌افزاري تعداد ‪ 1‬تا ‪ bug 20‬را در هر ‪ 1000‬خط‬

‫كد (‪ )LOG‬ارائه مي‌دهند‪ .‬اين آمار ممكن است براي سيستم عامل‬ ‫هاي پيچيده‌تر بدتر باشد ‪.‬‬ ‫اغلب سيستم‌هاي عامل مورد استفاده كنوني ميليونها خط كد دارند‬ ‫(‪ )MLOC‬و بنابراين ممكن است به آساني هزاران ‪ bug‬داشته‬ ‫باشند‪ .‬براي مثال ويندوز ‪ ،XP‬تقريبا ً ‪ MLOC5‬دارد كه بيش از ‪1‬‬ ‫ميليون ‪ bug‬را در سخت‌ترين شرايط در خود دارد‪.‬‬ ‫در اين پروژه دکترا تلش شده تا يك سيستم عامل معتبرتر‬ ‫بوسيله ‪ modularity‬كاربردي ايجاد شود‪ .‬با تفكيك يك سيستم عامل‬ ‫به قطعات مجزا و كوچك‪ ،‬سيستم پيچيده‌تر و بزرگتر مي‌شود زيرا‬ ‫قطعات كوچكتركنترل پذيرتر هستند و به تفكيك عيب‌ها بيشتر كمك‬ ‫مي‌كنند‪ MINIX .‬به عنوان يك سيستم عامل اصلي براي اين پروژه‬ ‫انتخاب مي‌شود زيرا ‪ MINIX‬نسبتا ً كوچكتر و ساده‌تر است اما در‬ ‫حين واحد ‪ POSIX compliance‬را فراهم مي‌سازد‪ .‬هدف اوليه تغيير‬ ‫شكل دادن ‪driver‬هاي ابزار ‪ MINIX‬به برنامه‌هاي مجزا است به‬ ‫گونه‌اي كه ‪ MINIX‬يك سيستم عامل (هسته كوچك) ‪microkernel‬‬ ‫كامل شود‪.‬‬ ‫باقيمانده اين فصل همانند زير ساخته مي‌شود‪ :‬بخش ‪-1-1‬‬ ‫مقدمه‌اي بر اصول كلي سيستم‌هاي عامل ارائه مي‌دهد‪ .‬بخش ‪-2‬‬ ‫‪ -1‬در مور سيستم‌هاي عامل داراي هسته كوچك (‪ )microkernel‬به‬ ‫طور دقيق بحث خواهد كرد و بخش ‪ MINIX -1-3‬را معرفي‬ ‫مي‌كند‪ .‬بخش ‪ -1-4‬يك مقاله مسئله دقيق را ارائه مي‌دهد و بخش‬ ‫‪ -1-5‬نظريه‌اي را ارائه مي‌دهد كه براي اين موضوع ارائه مي‌شود‪.‬‬

‫در آخر‪ ،‬بخش ‪ -1-6‬ساختار بقيه اين پروژه را خلصه‌نويسي‬ ‫مي‌كند‪.‬‬

‫‪ -1-1‬سيستم‌هاي عامل‬ ‫اين بخش اصول سيستم‌هاي عامل اصلي را معرفي مي‌كند‪ .‬زير‬ ‫مجموعه بخش ‪ -1-1-2‬ساختارهاي سيستم عامل متفاوتي را ارائه‬ ‫مي‌دهند‪ .‬زير مجموعه بخش ‪ -1-1-3‬ويژگيهاي اصلي سيستم‌هاي‬ ‫عامل ‪ monolithic, microkernel‬را مورد مقايسه قرار مي‌دهد‪.‬‬

‫‪ -1-1-1‬مفاهيم اصلي‬ ‫به طور كلي سيستم‌هاي عامل را از دو جنبه مي‌توان مورد توجه‬ ‫قرار داد‪ .‬اين سيستم‌ها مي‌توانند هم به عنوان يك اداره كننده منبع‬ ‫و يك ماشين گسترده يا يك ماشين مجازي فرض شوند‪Resource .‬‬ ‫‪ manager‬مسوول ارائه دستيابي به سخت‌افزار ماشين و است و‬ ‫مطمئنا ً تمام تقاضاها را مضاعف (‪ )mutiplex‬مي‌كند‪ .‬براي مثال‪،‬‬ ‫منابع مي‌توانند شامل ديسك سخت‪ ،CD-ROM ،‬پرينتر و حافظه‬ ‫ويديو باشند وممكن است در كاربردهاي چندگانه تقسيم شوند‪ .‬در‬ ‫مقابل مديريت منابع‪ ،‬اين ‪ interface‬ممكن است در بين معماری‬ ‫های متفاوت سخت‌افزار قابل تغيير باشد‪.‬‬ ‫(‪ )kernel‬هسته آن قسمت سيستم عامل است كه در بالترين‬ ‫سطح دسترسی (‪ )Privilege‬اجرا مي‌شود كه حالت هسته اصلي يا‬ ‫حالت ناظر ‪ )Supervisor made‬يا (‪ Kernel made‬ناميده مي‌شود‪.‬‬ ‫‪( Kernel made‬حالت هسته اصلي) به يك نشانه نماي ‪)CPU (flag‬‬ ‫برمي‌گردد كه نشان مي‌دهد آيا مرحله اجرا مجاز براي اجراي تمام‬ ‫دستورالعمل‌هاي ممكن است يا خير‪ .‬برنامه‌هايي كه در حالت‬

‫كاربر اجرا مي‌‌شوند اين سري نشانه نما را ندارند و از اينرو مجاز‬ ‫براي انجام دستورالعمل‌هاي خاص هستند‪.‬‬ ‫رابط سيستم عامل بوسيله ‪Call‬هاي سيستم تعريف مي‌شوند كه‬ ‫براي برنامه‌ريز موجود هستند‪System Call .‬ها از يك دستورالعمل‬ ‫ماشيني خاص استفاده مي‌كنند كه يك ‪ trap‬ناميده مي‌شود كه‬ ‫‪trap‬ها باعث مي‌شوند كه پردازشگر از حالت كاربرد به حالت‬ ‫هسته اصلي تغيير يابند و دستگاه ‪ System Call‬هسته مركزي را‬ ‫ارسال كنند‪ .‬اين راه مراحل كاربر مي‌توانند خدمات سيستمي را‬ ‫درخواست كنند تا عمليات محدودي مثل دستيابي به سخت‌افزار‬ ‫انجام دهند‪.‬‬ ‫مراحل مي‌توانند با كمك و امكانات ارتباط بين فرايندي (‪ )IPC‬كه‬ ‫اغلب بوسيله يك ‪ System Call‬انجام مي‌شود را منتقل شوند‪ .‬براي‬ ‫مثال ‪ IPC‬مي‌تواند با گذشتن يك پيغام تقاضا به دنبال يك ‪Context‬‬ ‫‪( Switch‬تعویض بستر) انجام شود‪( Context Switch .‬تعویض بستر)‬ ‫يعني متوقف ساختن مرحله اجرا و ذخيره وضعيت فرار (‪)Volatile‬‬ ‫به گونه‌اي كه مرحله ديگر بتواند دوباره ذخيره و شروع شود (‬ ‫‪.)restore & Restart‬‬

‫شكل ‪ )-1-1‬طبقه‌بندي سيستم‌عامل‪ ،‬هسته‌هاي يكپارچه ‪ )a‬هميشه بدون ساختار هستند‪.‬‬ ‫ريز هسته‌ها (‪ )b‬اغلب ساختارهايي ليه‌اي دارند‪ )Exokernel . C .‬به عنوان سيستمهاي‬ ‫عامل ساخته شده عمودي شناخته مي‌شوند‪.‬‬

‫مورد آخر با انتشار يك ساختار خاص ماشيني پس از بازيابي يك‬ ‫حالت مرحله انجام مي‌شود‪.‬‬ ‫كليدي كه براي سيستم‌هاي عامل ايجاد مي‌شود اين اطمينان را‬ ‫حاصل مي‌كند كه كاربردهاي كاربر نمي‌توانند به يكديگر و به هسته‬ ‫و ربطي داشته باشند‪ .‬اين امر با مراحل بسته‌بندي در فضاهاي‬ ‫آدرس انجام مي‌شود كه به طور فيزيكي از يكديگر محافظت‬ ‫مي‌كنند‪ .‬سخت‌افزار واحد مديريت حافظه (‪ )MMU‬اين محافظت‬ ‫را با بازبيني هر اقدام جهت دستيابي به حافظه اعمال مي‌كنند‪.‬‬ ‫دستيابي‌هاي غيرقانوني منجر به استثنايي مي‌شود كه با يك دستگاه‬ ‫مستثنا در هسته بدست مي‌آيد كه مي‌تواند عمليات مناسب را ارائه‬ ‫دهد‪.‬‬

‫‪1.1.2‬ساختارهاي سيستم عامل‬ ‫سيستمهاي عامل مي‌توانند براساس طرح هسته آنها طبقه‌بندي‬ ‫شوند‪ .‬تفاوت بين اجراكننده منبع و ماشين توسعه يافته كه در يك‬

‫سيستم عامل مشاهده مي‌شود تغيير مي‌يابند كه مرتبط با‬ ‫ساختارهاي متفاوت طبقه‌بندي باشند سه طبقه‌بندي گسترده‬ ‫مي‌توان شناسايي كرد‪.‬‬ ‫هسته‌هاي يكپارچه‪ :‬هسته‌هاي يكپارچه يك چکیده غني و‬ ‫قدرتمند از بستر سخت‌افزار هستند‪ .‬تمامي خدمات سيستم عامل‬ ‫به عنوان يك برنامه واحد‪ ،‬يكپارچه تعريف مي‌شوند كه در حالت‬ ‫هسته انجام مي‌شوند‪ .‬از اينرو درخواست‌ها در حالت كاربر انجام‬ ‫مي‌شود و مي‌تواند خدمات سيستم را از هسته درخواست كند‪ .‬از‬ ‫اينرو هسته هم مدير منبع است و هم يك ماشين گسترش يافته‪ .‬از‬ ‫ديدگاه سطح بال‪ ،‬يك هسته يكپارچه بدون ساختار است‪ .‬اين امر‬ ‫در شكل (‪ a) 1-1‬توصيف شده است‪ .‬مثالهايي از سيستمهاي عامل‬ ‫يكپارچه ويندوز‪ Linux, BSDUNIX ،‬هستند‪.‬‬ ‫هسته‌هاي هيبريد و ريزهسته‌ها‪:‬ريز هسته‌ها بوسيله‬ ‫يك سري چکیده های (‪ )abstraction‬هسته مشخص مي‌شوند اما‬ ‫الزاما ً نياز ندارد تا كوچك باشند‪ .‬ريز هسته‌ها يك سري كوچك از‬ ‫چکیده هاي سخت‌افزاري ساده و ارائه مي‌دهند و از كاربردهايي‬ ‫(درخواست‌هايي) استفاده مي‌كنند كه سرويس‌دهنده ناميده‬ ‫مي‌شود كاركرد بيشتر را ارائه دهند‪ .‬تنها يك قسمت کوچک‬ ‫سيستم عامل در حالت هسته انجام مي‌شود در حاليكه همه‬ ‫درخواست‌ها در حالت كاربر انجام مي‌شود‪ .‬در مقايسه هسته‌ها‬ ‫يكپارچه‪ ،‬وظيفه اصلي ريزهسته‌ها مديريت منبع است‪ .‬يك سيستم‬ ‫عامل ريز هسته‌اي يك ساختار ليه‌اي شل با ارتباط سرويس‌دهنده‬

‫برنامه و منابع ديگر در بين ليه‌ها دارد‪ .‬اين امر در شكل (‪b) 1-1‬‬ ‫توصيف شده است‪ .‬مثال يك ريز هسته كامل ‪ L4‬است‪.‬‬ ‫هسته‌هاي هيبريد بسيار شبيه ريز هسته‌ها هستند اما با خدمات‬ ‫اضافي انجام شده در فضاي هسته به دليل اجرايي تقويت‬ ‫مي‌شوند‪ .‬براي مثال ‪ MINIX‬و ‪ Mach‬قسمتي از طبقه‌بندي هستند‬ ‫زيرا ‪driver‬هاي وسيله قسمتي از هسته هستند‪ QNX .‬نيز يك ريز‬ ‫هسته هيبريد است زيرا مدير پردازش قسمتي از هسته است‪.‬‬ ‫ماشين‌هاي مجازی و ‪ exokernel‬ها‪ :‬ماشين‌هاي مجازی و‬ ‫‪exokernel‬ها يك ليه خلصه سخت‌افزاري همانند ديگر سيستم‌هاي‬ ‫عامل را ارائه نمي‌دهند‪ .‬در عوض آنها منابع سخت‌افزاري را به‬ ‫گونه‌اي طبقه‌بندي مي‌كنند كه سيستم‌هاي عامل چندگانه مي‌توانند‬ ‫در كنار يكديگر با فرض داشتن يك ماشين خصوصي اجرا كند‪ .‬يك‬ ‫مانيتور ماشين واقعي يا ‪ exokernel‬در حالت هسته اجرا مي‌شود و‬ ‫مسئول حفاظت از منابع و درخواست‌هاي منابع سخت‌افزاري‬ ‫است از اينرو هر سيستم عامل در حالت كاربر اجرا مي‌شود كاملً‬ ‫متفاوت از ديگران ماشين‌هاي مجازي و ‪exokernel‬ها به عنوان‬ ‫سيستم‌هاي عامل ساختاری شناخته مي‌شود‪ .‬هركدام از‬ ‫سيستم‌هاي عامل كه در كنار يكديگر اجرا مي‌شوند يا مي‌توانند يك‬ ‫هسته يكپارچه داشته باشند يا يك ساختار ريز هسته‌اي‪ .‬اين امر در‬ ‫شكل (‪ c) 1-1‬توصيف شده است‪ .‬مثالهايي از ماشين‌هاي واقعي و‬ ‫‪exokernel‬ها به ترتيب ‪ MITEroxernel, VMware‬هستند‪.‬‬ ‫از آنجائيكه ماشين‌هاي مجازي و ‪exokernel‬ها تنها ابزاري براي ارائه‬ ‫يك رابطه براي يك سيستم عامل هستند‪ ،‬بيشتر از اين در مورد‬

‫آنها بحث نمي‌شود‪ .‬تفاوت بين هسته‌هاي يكپارچه و ريز هسته‌ها‬ ‫براي پروژه‌هاي ارشد جالب هستند‪.‬‬

‫ويژگيهاي هسته‬ ‫يك بازنگري از ويژگيهاي سيستم عامل در شكل ‪ 1-2‬ارائه شده‬ ‫است‪ .‬در حاليكه سيستم‌هاي عامل با يك هسته يكپارچه اغلب‬ ‫عملكرد خوبي دارند‪ ،‬سيستمهاي عامل ريز هسته‌اي ویژگيهاي‬ ‫بهتری از خود نشان میدهند ‪ .‬تمام تفاوت‌ها به طور مستقيم از‬ ‫تفاوت در ‪( modularity‬پیمانه ای بودن) سرچشمه مي‌گيرد‪.‬‬ ‫‪ Modularity‬يك ويژگي كليدي است كه به ريز هسته‌ها قدرت‬ ‫مي‌دهد‪ .‬در مقايسه با سيستم‌هاي يكپارچه سيستم‌هاي عامل ريز‬ ‫هسته هميشه به عنوان يك سري از سرورها که هركدام مسئول‬ ‫وظيفه خاصی هستند شناخته میشود ‪ .‬اين امر يك تفكيك روشن از‬ ‫مسئوليت‌ها با مزاياي وابسته ارائه مي‌دهد‪.‬‬ ‫مثالهايي از ويژگيهايي كه ممكن است در يك سيستم عامل ريز‬ ‫هسته‌اي يافت شود در زير ارائه مي‌دهیم‪ .‬ريز هسته‌ها انعطاف‌پذير‬ ‫هستند و مي‌توانند به آساني گسترش يابند زيرا جايگزيني آنها با‬ ‫‪Server‬ها يا استراتژي‌هاي حل مسأله مقدور است‪ .‬ماندگاري ريز‬ ‫هسته‌ها آسانتر است زيرا اجزاي كوچكتر کم پيچيده‌ اند و قابل‬ ‫اجراتر هستند‪ .‬تفكيك مسؤوليت‌ها نيز براي امنیت و قدرت‬ ‫سيستم عامل سودمند است زيرا مشکلت ایزوله مي‌شوند و‬ ‫اجزاي خراب میتوانند در هنگام ارتقا جايگزين شوند‪ .‬جزئيات‬ ‫بيشتر در مورد امنیت مي‌تواند در زير مجموعه بخش ‪ 1-2-2‬يافت‬ ‫شود‪.‬‬ ‫ويژگي‌اي كه دیر زمانی است در مورد ريزهسته‌ها مطرح است‬ ‫بازده است‪ .‬سيستم يكپارچه اغلب بازده خوبی دارد زيرا تمامي‬ ‫خدمات قسمتي از هسته هستند و بنابراين مي‌توانند به طور‬ ‫مستقيم به يكديگر دسترسي داشته باشند‪ .‬در مقابل يك سيستم‬ ‫عامل ريز هسته‪ ،‬ارتباطات اضافه اي را برای همكاري ‪Server‬هاي‬

‫سيستم نیاز دارد ‪ .‬به اين دليل‪ ،‬ريزهسته‌ها اغلب كند خوانده‬ ‫مي‌شوند البته لزوما این جوری نيست‪ .‬زير مجموعه بخش ‪1-2-3‬‬ ‫اين موضوع را به طور دقيق‌تر مورد بحث قرار مي‌دهد‪.‬‬ ‫يك ويژگي جالب ريزهسته‌ها اين است كه ريز هسته‌ها يك محيط‬ ‫‪ UNIX‬را برای اجرای برنامه های ‪ novell‬فراهم مي‌كنند‪ .‬بنابراین‬ ‫آنها قابليت سازگاري با نسخه های قبلی را درهنگام رفتن به‬ ‫محیط های محاسباتی جدید ارائه مي‌دهند‪ .‬اين امر در زير‬ ‫مجموعه بخش ‪ 1-2-1‬بيشتر مورد بحث قرار مي‌گيرد‪.‬‬ ‫اگرچه مزيت‌هاي بالقوه فاحش هستند‪ ،‬مثالهايي از سيستم‌هاي‬ ‫عامل ريزهسته‌اي موفق سخت يافت مي‌شوند‪ .‬اگرچه ‪ QNX‬اغلب‬ ‫وعيدها را كامل مي‌كند اما متأسفانه ‪ QNX‬يك سيستم تجاري‪،‬‬ ‫بسته است‪ .‬اين پروژه دکترا و كار آينده كه بر این اساس خواهد‬ ‫بود ممكن است به ‪ MINIX‬كمك كنند تا در سیستم عامل های ریز‬ ‫هسته ای جایی برای خود باز کند ‪.‬‬ ‫‪1.2‬‬

‫سيستمهاي عامل ريز هسته‌اي‬

‫در حالی كه بخش قبل اصول کلی سيستم عامل را شرح‬ ‫مي‌دهد‪ ،‬اين بخش در مورد سيستم‌هاي عامل ريز هسته‌اي بحث‬ ‫مي‌كنیم‪ .‬زیر مجموعه بخش ‪ 1-2-1‬در مورد سه روش متفاوت‬ ‫براي تشكيل كاربردهايي بحث مي‌كنند كه بر پایه ريز هسته‌ها‬ ‫بنیان نهاده شده اند ‪ .‬دو ويژگي مهم سيستم عامل امنیت و بازده‬ ‫به ترتيب در زير مجموعه بخش ‪ 1-2-2‬و ‪ 1-2-3‬بحث مي‌شود‪.‬‬

‫شكل ‪ -1-3‬طبقه‌بندي درخواست ريز هسته برپايه ساختار برنامه‌هايي قرار دارند‬ ‫كه در حالت كاربر اجرا مي‌شوند ساختارهاي متفاوت (‪ )a‬يك سيستم عامل واحد‬ ‫خدمات رسان با اجزاي خاص هستند‪ b( .‬يك سيستم عامل چند ‪Server‬ي و (‪ c‬يك‬ ‫سيستم اختصاصي‪.‬‬

‫‪1.2.1‬برنامه هاي ريزهسته‬ ‫در زير مجموعه بخش ‪ 1-1-2‬طراحي شده است هسته‌هاي هيبريد‬ ‫و ريزهسته‌ها ‪ abstraction‬کمتری را در مقايسه با هسته‌هاي‬ ‫يكپارچه ايجاد كنند‪ .‬بنابراين‪ ،‬ريز هسته‌ها برای ارئه امکانات بیشتر‬ ‫در برنامه های سطح سیستم عامل به ‪Server‬هاي فضاي كاربر‬ ‫تكيه دارند‪ .‬اين امکانات مي‌تواند در روشهاي مختلفي ارائه شود‪.‬‬ ‫سيستم عامل تك سروری‪ :‬در يك سیستم عامل تك ‪Server‬ي‪،‬‬ ‫ريز هسته يك ‪ OS‬كامل يكپارچه را به عنوان يك برنامه كاربري‬ ‫عادي را اجرا مي‌كند‪ .‬اين امر در شكل (‪ a) 3-1‬توصيف شده است‪.‬‬ ‫اين تنظیمات هيچ كدام از اين ويژگيهاي ‪ OS‬يكپارچه را تغيير‬ ‫نمي‌دهند و به اين معناست كه هنوز يك نقطه واحد خرابی (‬ ‫‪ )Failure‬وجود دارد‪ .‬مزیت اصلي اين پیکربندی اين است كه یک‬ ‫محيط ‪ UNIX‬را همزمان با تجربه کردن روش ريز هسته‌اي فراهم‬

‫مي‌سازد‪ .‬كاربردهای ارثی ای كه از ‪ OS‬يكپارچه می آیند اغلب‬ ‫مي‌توانند با برنامه هاي ‪ novel‬همراه شوند‬

‫‪1‬‬

‫‪ .‬تركيب كاربردهاي ارثی (‪ )Legacy‬و بی درنگ يا بسته های امنیتی‬ ‫انتقال بدون اشکالی را به محیط محاسباتی جدید ممکن می‬ ‫سازند‪.‬‬ ‫مثالهاي بسياري از اين حرکت موجود هستند‪ Mach .‬يكي از اولين‬ ‫ريز هسته‌ها است و اجراي چند سیستم عامل جداگانه در کنار‬ ‫يكديگر مثل ‪ BSD,OSF, UNIX‬را مجاز مي‌سازد‪ .‬مثال ديگر ‪L4linux‬‬ ‫است كه در رأس ريز هسته ‪ L4‬اجرا مي‌شود‪ .‬پروژه ‪PERSEUS‬‬ ‫تقلیي براي اجراي اجزاي امنیتی خاصي كه امضای ديجيتالی را‬ ‫در ‪ L4linux‬فراهم مي‌سازند ‪ ،‬است ‪.‬‬

‫ي‪ ،‬كاربردهاي يك سيستم ‪ Server‬تك ‪ OS‬باقيمانده) در رأس( ‪ legacy‬نظريه معمول استفاده از كاربردهاي‬

‫‪1‬‬

‫هدايت ‪ Mach،‬خوانده مي‌شود را دوباره ترجمه مي‌كنند‪ .‬در سيستم‌هاي خاص مثل ‪ Stub Library‬جديد را كه‬ ‫‪.‬مي‌تواند براي درك سازگاري مضاعف استفاده شوند ‪ trap‬دوباره‬

‫سيستم عامل چند سروري‪ :‬در يك ‪ OS‬چندسروري‪ ،‬محيط‬ ‫سيستم عامل بوسيله تعدادي ‪ Server‬كمكي تشكيل مي‌شود‪ .‬اين‬ ‫امر در شكل (‪ b) 3-1‬شرح داده شده است‪ .‬همانطور كه در زير‬ ‫مجموعه بخش ‪ 1-1-3‬بحث شد افزايش ‪( modularity‬پیمانه ای‬ ‫بودن) فوايد بسياري به همراه دارد كه شامل استحكام افزايش‬ ‫يافته‪ ،‬ماندگاري و انعطاف‌پذيري مي‌شود‪ .‬بسته به امکاناتی كه‬ ‫بوسيله محيط چند سروري ارائه مي‌شود كاربردهاي ارث بری‬ ‫شده ممكن است در صورتی که با يك كتابخانه شبیه سازی شده‬ ‫مرتبط شوند مورد استفاده قرار گیرند ‪ .‬برنامه هاي ناول‬ ‫مي‌توانند به آساني با نوشتن يك سرور سيستم جديد شناسايي‬ ‫شوند‪.‬‬ ‫مثالهاي مختلفي از سيستم‌هاي عامل چند سروري وجود دارند‪.‬‬ ‫براي مثال ‪ GNUHurd‬يك محيط چند ‪Server‬ي است كه بر اساس‬ ‫يك ريز هسته ‪ Mach‬تعريف شده است ‪ Sawmill Linax .‬يك محيط‬ ‫چند ‪Server‬ي بر اساس ريز هسته ‪ L4‬است زير مجموعه بخش ‪1-3‬‬ ‫در مورد ‪ MINIX‬به عنوان مثالی دیگر بحث مي‌كند‪.‬‬ ‫سيستم اختصاصي‪ :‬روش دیگر استفاده از برنامه اختصاصي‬ ‫است كه به طور مستقيم بر روی ريز هسته اجرا مي‌شود‪ .‬اين‬ ‫امر در شكل (‪ c) 3-1‬شرح داده مي‌شود‪ .‬تفاوتهاي بسيار چنين‬ ‫سيستمي مي‌تواند مورد توجه قرار گيرد‪ .‬اين روش بخصوص براي‬ ‫ابزارهاي ‪ mobile‬و ‪ embedded system‬ها با قدرت محاسبه كاهش‬ ‫يافته سودمند است‪.‬‬

‫مثالي از يك سيستم اختصاصي يك ماشين مجازی ‪Java‬‬ ‫‪)(JVM‬است كه به طور مستقيم در رأس ريز هسته اجرا مي‌شود‪.‬‬ ‫در مقايسه با کارهای سنتی که یک سیستم عامل یک ‪ JVM‬را‬ ‫میزبانی میکند این روش محیط ایمن تری را برای برنامه های جاوا‬ ‫فراهم میکند زیرا دیگر نیازی به اطمینان به میزبان نمی باشد ‪.‬‬

‫‪ 1.2.2‬امنیت ريز هسته‬ ‫ريز هسته‌ها خصوصيات امنیتی خوبي دارند كه در زير مجموعه‬ ‫بخش ‪ 1-1-3‬عنوان شدند‪ .‬اين خصوصيات بویژه در مورد سیستم‬ ‫عامل های چند سروري كه تمام سرورهای سیستم در فضاي‬ ‫آدرس گنجانده شده اند درست است‪ .‬سرورها به طور فيزيكي از‬ ‫يكديگر با سخت‌افزار واحد مديريت حافظه(‪ )MMU‬محافظت‬ ‫مي‌شوند‪ .‬اگر يك فرايند به صورت غيرقانوني اقدام به دستيابي به‬ ‫حافظه فرآيند ديگر كند‪ ،‬اين امر بوسيله ‪ MMU‬بررسي مي‌شود و‬ ‫يك استثنا رخ مي‌دهد‪ .‬استثنا بوسيله هسته مدیریت میشود كه‬ ‫مي‌تواند عمل مورد نیاز را انجام دهد‪.‬‬ ‫در حالی كه يك ‪ Server‬نمی تواند به طور مستقيم روی کار‬ ‫‪Server‬های دیگر تاثیر گذارد ‪Server .‬هاي وابسته ممكن است به‬ ‫طور غيرمستقيم تحت تأثير قرار گيرند‪ .‬اگر ‪ Server A‬به ‪Server B‬‬ ‫وابسته باشد تا وظيفه‌اي را انجام دهد‪ Server A ،‬ممكن است با‬ ‫يك نقص يا يك عمل خراب از سوي ‪ Server B‬تأثير بگيرد‪ .‬مفهوم‬ ‫مهم مربوط به اين امر پايگاه محاسبه‌اي پشتيباني شده (‪)TCB‬‬ ‫يعني حداقل اجزايي است كه عملكرد صحيح آن پیش شرط‬ ‫امنیت است‪ .‬براي ريز هسته‌ها‪ TCB ،‬مي‌تواند بسيار كوچك باشد‪.‬‬

‫براي مثال در يك سيستم اختصاصي‪ ،‬يك برنامه اختصاصی ‪TCB‬‬ ‫تنها شامل يك ريز هسته و سخت‌افزار تحت آن می باشد‪.‬‬ ‫يك موضوع حفاظتي مهم كه نمي‌تواند به آساني حل شوداین است‬ ‫که اجزايي با كنترل سخت‌افزاري توانايي از بين بردن كل سيستم‬ ‫را دارا هستند‪.‬‬ ‫براي مثال درایورهاي وسيله‌اي كه مي‌تواند دستيابي مستقيم به‬ ‫حافظه دارد (‪ )DMA‬ممكن است با ایجاد يك آدرس حافظه نامعتبر‬ ‫در كنترل كننده ‪ DMA‬در حافظه فرايندها تداخل ایجاد کنند ‪ .‬بعضي‬ ‫برد‌هايي قطعات ‪ PCI‬يك ‪ I/OMMU‬دارند كه با نگاشت یک آدرس‬ ‫فضای ‪ PCI‬به یک فضای حافظه فیزیکی حفاظت را ارائه مي‌دهند‪.‬‬ ‫راه‌حل كلي‌تری براي اين مسأله هنوز در دسترس نيست‪.‬‬

‫‪ 1.2.3‬موضوعات عملكردي‬ ‫سيستم‌هاي عامل ريز هسته‌اي اغلب مدعی رنج بردن از مشكلت‬ ‫عملكردي ارثی هستند‪ .‬زيرا فرآيندهاي چندگانه ای بايستي براي‬ ‫انجام يك وظيفه همكاري كنند‪ .‬دليل کاهش بازده گفته شده‬ ‫ارتباط بين فرايندي مضاعف (‪ )IPC‬و در نتيجه تغییر بسترهای‬ ‫زيادي در بين فرايندهاي كاربرد‪Server ،‬هاي سيستم و هسته می‬ ‫باشد‪ .‬به علوه‪ ،‬كپي اطلعات در بين ‪Server‬هاي كمكي باعث‬ ‫هزینه اضافی مي‌شود‪.‬‬ ‫اولين ريز هسته‌ها داراي از دست دادن عملكرد ذاتي بودند‪ .‬براي‬ ‫مثال ‪ BSD UNIX‬بر اساس ‪ Mach‬بيش از ‪ %50‬كندتر از نسخه‬ ‫معمولی ‪ BSD UNIX‬است‪ .‬با اينحال‪ ،‬ريز هسته‌هاي جديد‪ ،‬ثابت‬

‫كرده‌اند كه حقيقتا ً عملكرد بال مي‌تواند به دست بیاید ‪ .‬براي مثال‬ ‫‪ L4Linux‬بر اساس ‪ ،L4‬تنها يك کاهش عملكردي ‪ 2‬تا ‪ %4‬دارد‪.‬‬ ‫بازده به عنوان یک مسئله پیاده سازی مطرح میشود ‪ .‬تلشی در‬ ‫‪ L4‬ارائه مي‌شود تا يك رابط ريز هسته‌اي قابل انتقال را تعريف‬ ‫كند اما استفاده بهينه از قابليت‌هاي سخت‌افزاري براي اجرا را‬ ‫ايجاد مي‌كند‪ .‬بنابراین هر ‪ platform‬نيازمند يك پياده‌سازي متفاوت‬ ‫هسته است اما كاربردهايي كه به هسته ‪ API L4‬هماهنگ هستند‬ ‫مي‌توانند به آساني مجددا ً ترجمه و استفاده شوند‪.‬‬ ‫ديگر درس مهم اين است كه ريز هسته‌ها بايستي كوچك باشند‪.‬‬ ‫عمل از كار انداختن ‪ L4‬نشان مي‌دهد كه فقدان حافظه مهمتر از‬ ‫خود ‪ IPC‬است‪ .‬يك تعویض بستر از يك فرايند فضاي كاربرد به‬ ‫هسته تنها احتياج به تغيير قسمتهاي اندك در ‪ CPU‬دارد تا به حالت‬ ‫هسته سوئيچ كند و وضعيت هسته را بازيابي كند‪ .‬با اينحال سوئيچ‬ ‫فضاي آدرس‪ ،‬ممكن است باعث هزینه از دست دادت ‪ cache‬شود‪.‬‬ ‫اين خسارت در صورتی که از حافظه مجازی استفاده شود شديدتر‬ ‫مي‌شود زیرا ورودي‌هاي بافر كناري ترجمه (‪ )TLB‬بوسيله يك‬ ‫سوئيچ فضاي آدرس فاقد اعتبار مي‌شود‪.‬‬ ‫در آخر‪ ،‬سخت‌افزار بايستي آشكارا براي ريز هسته‌ها طراحي‬ ‫مجدد شود‪ .‬ريز هسته‌ها متفاوت از سیستم های يكپارچه هستند و‬ ‫بنابراين ممكن است طراحی متفاوتی براي دستيابي به عملكرد‬ ‫خوب لزم داشته باشند‪.‬براي مثال تحقيق در مورد ‪Saw Mill Linxt‬‬ ‫در طراحي يك پرتكل چند ‪Serever‬ي كه ‪ IPC‬را كاهش مي‌دهد و از‬ ‫كپي اطلعات غيرضروري جلوگيري مي‌كند موردنظر است‪.‬‬

‫بنابراين عملكرد سيستم‌هاي عامل برپايه ريز هسته نمي‌تواند تنها‬ ‫با هزينه‌هاي ‪ IPC‬تعيين شود‪.‬‬

‫‪2‬‬

‫مقايسه ويژگيهاي سيستم عامل براي هسته‌هاي يكپارچه و ريز هسته‌ها‪ .‬عملكرد يك‬ ‫سيستم عامل بر پايه ريز هسته‌ها لزوما ً بد نيست همانطور كه در زير مجموعه بخش ‪-3‬‬ ‫‪ 1-2‬بحث شد‪.‬‬

‫را ايجاد مي‌كنند‪ .‬پيغام‌ها به عنوان يك سري از ‪ IPC CPU‬استفاده بهينه از ثبت‌كننده‌هاي ‪ L4‬براي مثال‬

‫‪2‬‬

‫‪. IPC‬ثبت‌كننده‌هاي واقعي كه براي ثبت‌كننده‌هاي واقعي در زمان لزم طراحي مي‌شوند تعريف مي‌شوند‬ ‫‪.‬برنامه‌نويسها را در انتخاب اجراي بهينه حمايت مي‌كنند ‪sub-generation،‬‬

More Documents from "mohamad amin Rastgoo"

Linux Assembly
November 2019 18
April 2020 10
Linux
November 2019 37
Ant
November 2019 38
November 2019 16
November 2019 14