۱۳۸۸ شهریور ۲۱, شنبه

Singularity OS

قبلا در مورد هسته هایی که با #C ساخته شده اند (C# Kernels) یک پست ارسال کرده بودم. از بین چند Kernel توسعه داده شده Singularity از دیگران کاملتر است.

این روزها بیشتر روی این سیستم عامل تحقیقاتی وقت سرف کردم. مخصوصا وقتی فهمیدم مایکروسافت به توسعه یک سیستم عامل Managed Code به نام Midori مشغول است که تقریبا نسخه تجاری Singularity به حساب می آید و بعضی اعلام می کنند که جایگزین Windows خواهد بود. به همین دلیل صرف وقت روی Singularity شاید شبیه وقت گذاشتن روی Source سیستم عامل Unix در سالهای ابتدایی اختراع آن باشد.

مهمترین دلیل ساخت این سیستم عامل این است که طراحی سیستم عامل های کنونی ما به 40 سال قبل بر میگردد! از آن زمان تا کنون ما روی چند سیستم عامل اصلی پا فشاری کردیم مانند، Unix، Linux، Mac و Windows. که همگی دارای معماری قدیمی هستند. البته بخشی از این موضوع اجتناب ناپذیر است.

مهمترین ویژگی Singularity این است که از ابتدا طراحی شده! این سیستم از نوع Language-Based است و سعی شده از خطای انسانی تا حد امکان جلوگیری شود. و برای پیاده سازی آن یک زبان به نام Sing# ساخته شده که از Spec# مشتق شده، و خود Spec# هم از C# .

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

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

Capture1

هر پردازه (Process) در قالب یک SIP (Software-Isolated Processe) اجرا می شود که بر خلاف سیستم عامل های کنونی که همیشه پردازه ها به صورت سخت افزاری Isolate می شدند، در اینجا به صورت نرم افزاری Isolate خواهند شد. اندازه فایل های اجرایی با فایل های تولید شده توسط ++C/C قابل مقایسه است.

image

کل سیستم عامل Singularity در یک فضای آدرس فیزیکی (Physical Address Space) اجرا می شود و مدیریت حافظه به صورت نرم افزاری صورت می گیرد (بر خلاف سیستم عامل های قبلی). حافظه مورد استفاده برنامه ها نیز قابل مقایسه با دیگر زبانهاست.

image

ارتباط بین پردازه ها (Processes) فقط توسط کانال ها (Channels) صورت می گیرد. به این ترتیب که یک پردازه شروع کننده ارتباط خواهد بود و طرف دیگر ارتباط را قبول میکند (مانند ارتباطات شبکه). در صورتی که حجم تبادلی داده زیاد باشد باز هم از حافظه اشتراکی (Shared Memory) استفاده نمی شود اما این انتقال به شکل کپی یا Pipe صورت نمی گیرد و در کمترین زمان ممکن اتفاق می افتد. یعنی سیستم عامل Singularity برای انتقال حجم زیاد داده بین پردازه ها تدابیر خوبی دیده و Performance در نظر گرفته شده. جدول زیر را مطالعه کنید.

Capture3 
در Singularity هر فایل اجرایی یک Manifest دارد. هیچ فایل اجرایی بدون Manifest اجرا نخواهد شد. به این برنامه ها Manifest-Based گفته می شود. Manifest برنامه، اطلاعاتی در مورد برنامه، مثلا اینکه به چه منابعی نیاز دارد در اختیار می گذارد.

برای دیدن مقایسه Performance خواند و نوشتن روی دیسک بین Singularity و دیگر سیستم عامل ها، روی تصویر زیر Click کنید.

Capture

من توانستم 2.0 Singularity را روی VirtualPC بالا بیاورم، به سرویس شبکه آن IP بدهم و WebServer داخلی آنرا اجرا کنم و از روی سیستم Host خودم از Singularity سرویس HTTP دریافت کنم.

اکنون مدتی از ارائه ی ویرایش دوم این سیستم عامل می گذرد و توسعه ی آن همچنان ادامه دارد.

۲ نظر:

  1. در مورد تغییری که داخل ویکی ایجاد کردید:

    بیس اصلی هر دوی این سیستم عامل ها نظیر کتابخونه هاشون با اسمبلی نوشته شده.

    پاسخحذف
  2. پایه اصلی لینوکس هم با اسمبلی نوشته شده! ولی همه می گویند که با C نوشته شده چون قسمت بیشتر آن با C نوشته شده. وقتی قسمت بیشتر این نرم افزار ها حتی درایور ها و ... با #C نوشته شده چه می توان گفت؟

    در ضمن سازندگان COSMOS روشی را فراهم کرده اند که شما مستقیما با #C کد اسمبلی تولید می کنید. باید به پیشرفت کامپایلر ها بیشتر توجه کرد. ما هنوز از کامپایلر های 40 سال پیش و به همان روش های 40 سال پیش استفاده می کنیم.

    پاسخحذف