سادگی زیباست...

بررسی انواع معماری های سیستم عامل و برنامه های سیستمی و روشهای توسعه آنها

سادگی زیباست...

بررسی انواع معماری های سیستم عامل و برنامه های سیستمی و روشهای توسعه آنها

سادگی زیباست...

۳ مطلب با کلمه‌ی کلیدی «برسی هسته سیستم عامل» ثبت شده است

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

۱. ریز هسته (micro kernel)-مانند unix

۲. بزرگ هسته (monolithic kernel)- مانند linux

۳. هسته ترکیبی (hybrid kernel)- مانند windows

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

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

۰ موافقین ۰ مخالفین ۰ ۱۳ اسفند ۹۵ ، ۱۶:۳۷
حامد شیخلو

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

لیست مقالات رو میتونین از اینجا ببینید.

۰ موافقین ۰ مخالفین ۰ ۰۶ اسفند ۹۲ ، ۱۰:۰۳
حامد شیخلو
بعد از دانلود کردن و اکسترکت کردن سورس کد هسته سیستم عامل لینوکس که از آدرس kernel.org قابل دانلود است، با تعداد بسیار زیادی از دایرکتوری‌ها مواجه می‌شویم.

در ریشه کد منبع دانلود شده، فایل‌های زیر وجود دارد:
  • COPYING: اطلاعات درباره مجوزها و اجازه‌ها. لینوکس بر اساس مجوز دسترسی GPLv3 است. این مجوز اجازه استفاده، تغییر، توزیع و اشتراک گذاری کد منبع را به صورت رایگان به هر فردی می‌دهد، اما آن فرد نباید کد منبع را بفروشد.
  • CREDITS: لیست افراد همکاری کننده.
  • Kbuild: این اسکریپت بعضی تنظیمات را برای ساختن هسته مقداردهی می‌کند. برای مثال این اسکریپت متغیر ARCH را مقداردهی می‌کند که این متغیر مشخص کننده معماری پردازنده ای است که باید بر روی آن کامپایل انجام شود.
  • Kconfig: این اسکریپت برای مشخص کردن پارامترهای تنظیم هسته استفاده می‌شود.
  • MAINTAINERS: این فایل مشخص کننده لیست نگهداری کنندگان، ایمیل آن‌ها و وب سایت‌های مرتبط با آن‌ها است. این فایل زمانی استفاده می‌شود که یک توسعه دهنده یک باگ در فایلی پیدا می‌کند و قصد دارد تا آن را به افراد مرتبط با آن فایل گزارش دهد.
  • Makefile: اسکریپت اصلی مورد نیاز برای کامپایل هسته کرنل. این فایل پارامترهای مورد نیاز برای کامپایل و همچنین لیست فایل‌ها و هر چیز مورد نیاز دیگری را ارسال می‌کند.
  •  README: این فایل متنی اطلاعات مورد نیاز برای توسعه دهندگان که می‌خواهند با نحوه کامپایل کرنل آشنا شوند، را فراهم می‌کند.
  • REPORTING-BUG: این فایل متنی اطلاعات مورد نیاز برای گذارش دهی باگ را فراهم می‌کند.
در ریشه کد منبع، لیست شاخه های زیر وجود دارد:

  • arch: در این شاخه یک فایل Kconfig وجود دارد که تنظیمات مورد نیاز را برای کامپایل کدهای این منبع مشخص می‌کند. هر پردازنده که توسط هسته پشتیبانی می‌شود، یک شاخه مشخص در این شاخه دارد. برای مثال، کد برای کرنل alpha در شاخه ای با این اسم قرار دارد.
  • block: در این شاخه، کد مربوط به ابزارهای بلاکی قرار دارد. ابزارهای بلاکی، دستگاههایی هستند که ارسال و دریافت داده در آنها به صورت بلاکی انجام می‌شود. بلاک داده به جای یک جریان (stream) از داده‌ها، تکه ای (chunk) از داده‌ها است.
  • crypto: شامل کد بسیاری از الگوریتم‌های رمز نگاری. برای مثال "sha1_generic.c" فایلی است که کد مربوط به الگوریتم رمزنگاری sha1 را پیاده سازی کرده است.
  • Documentation: مستندات مربوط به هسته و فایل‌های دیگر.
  • drivers: شامل کدهای مربوط به راه اندازهای سخت افزارهای مختلف است. راه انداز یک نرمافزار است که سخت افزار مشخص را کنترل می‌کند. دایرکتوری‌های زیادی در این شاخه وجود دارد. برای هر نوع سخت افزار به صورت کلی یک پرونده اصلی وجود دارد که شامل زیر نوع‌های دیگری است. برای مثال شاخه bluetooth دربردارنده کد راه انداز برای سخت افزار bluetooth است. البته برای بعضی از سخت افزارها این اصل رعایت نشده است و شاید بتوان گفت یک سطح دسته بندی اضافی نیز درنظر گرفته شده است، مانند joystick که در شاخه input/joystick قرار دارد.
  • firmware: این شاخه شامل کدهایی است که سیستم کامپیوتری را قادر به فهمیدن سیگنال‌های دریافتی از ابزارها می‌کند. برای مثال یک وبکم، سیستمی برای مدیریت سخت افزار خودش دارد، اما باید سیستم کامپیوتری سیگنال‌های دریافتی از آن را بتواند بفهمد. این کدها همچنین برای ارسال سیگنال به ابزارها نیز استفاده می‌شود.
  • fs: این شاخه همان filesystem است. تمام کدهای مورد نیاز برای درک و استفاده از فایل سیستم‌ها در این شاخه قرار دارد. برای هر فایل سیستم یک شاخه جداگانه درون آن وجود دارد. برای مثال کد مربوط به ext4 درون شاخه هم نام خود قرار دارد. بعضی از فایل‌ها درون شاخه خاصی نیستند، این فایل‌ها برای مدیریت کلی فایل سیستم مورد نیاز است. برای مثال mount.h که مورد نیاز برای عمل mounting یک سیستم فایل است. یک فایل سیستم روشی ساختارمند برای ذخیره سازی و مدیریت اطلاعات در ابزارهای ذخیره سازی فراهم می‌کند. هر فایل سیستم محدودیت‌ها و برتری‌های خاص خودش را دارد (در این مورد مطلب جامعی بعداً می‌نویسم).
  • include: این شاخه شامل فایل‌های سرآیندی است که کرنل از آن استفاده می‌کند.
  • init: فایل‌های مرتبط با راه‌اندازی کرنل در این شاخه قرار دارد. فایل main.c فایل اصلی کرنل است. این فایل سور اصلی است که قسمت‌های دیگر را به هم مرتبط می‌کند.
  • ipc: کلمه ipc مخفف Inter Process Communication است. این شاخه شامل کدهایی لایه ارتباطی است، که این لایه ارتباط بین کرنل و پردازش‌ها لازم است. در سیستم عامل لینوکس، تنها مسیر ارتباطی با سخت افزار از طریق کرنل است و یک برنامه برای انجام یک وظیفه باید از کرنل درخواست بکند. برای مثال فرض کنید که یک برنامه می‌خواهد با سخت افزار کنترل dvd ارتباط برقرار کند و مثلاً در آن را باز کند، باید این درخواست را از طریق رابط برنامه نویسی مشخص به کرنل بدهد و کرنل خود آن کار را انجام دهد.
  • kernel: کدهای این بخش خود کرنل را مدیریت می‌کند. برای مثال یک شاخه با نام power مدیریت کننده نحوه خاموش کردن است.
  • lib: شامل فایل‌هایی است که کرنل به آن ارجاع داده است.
  • mm: مدیریت حافظه.
  • net: شامل کدهایی برای پروتکل‌های مختلف شبکه است.
  • samples
  • scripts:شامل کدهای مورد نیاز برای کامپایل کردن کرنل است.
  • security
  • sound: شامل راه انداز کارت‌های صوتی است.
  • tool: شامل ابزارهای برای ارتباط با کرنل است.
۱ موافقین ۱ مخالفین ۲ ۰۴ شهریور ۹۲ ، ۱۹:۳۸
حامد شیخلو