در مطلب های “هسته سیستم عامل چیست – بخش نخست” و “هسته سیستم عامل چیست – بخش دوم” در مورد هسته و معماری آن صحبت شد. در این مطلب و بخش چهارم در مورد عناصر هسته (یا وظایف هسته و سیستم عامل) صحبت خواهد شد. با توجه به اینکه هسته سیستم عامل لینوکس از نوع هسته های یکپارچه است، سیستم عامل لینوکس به صورت حیرت انگیزی ساخت یافته است.
توجه داشته باشید که در معماری هسته یکپارچه کل سیستم عامل در فضای هسته در حالت اجرا هستند. شکل زیر (شکل ۱) نمایی سطح بالا از ساختار هسته سیستم عامل لینوکس و دیگر لایههای سیستم عامل لینوکس را نشان می دهد.
مچنین شکل زیر (شکل ۲) زیر نمایی واضح تر از یک سیستم کامپیوتری را نشان میدهد که سیستم عامل گنو لینوکس بر روی آن نصب است. در بالاترین سطح برنامههای کاربردی و فرایندها کاربران در فضای کاربر در حال اجرا هستند. در سطح میانی هسته سیستم عامل با تمامی مولفه های خود (مانند مدیر حافظه اصلی، مدیر فرایندها، زیر سیستم شبکه و غیره) در حال فعالیت هستند. همچنین در پایینترین سطح، لایه سختافزار وجود دارد.
توجه داشته باشید که واژه لینوکس اشاره به نام هسته ای آزاد و متن باز لینوکس دارد و گنو به نرم افزارهای متن باز و رایگان اشاره دارد بنابراین میتوان نتیجه گرفت که سیستم عامل لینوکس را باید گنو لینوکس (GNU Linux) نامید.
به طور کلی عناصر (مولفه ها و یا سرویس های) اصلی هسته تمامی سیستمهای عامل شامل موارد زیر است. آنچه که گفته خواهد شد را میتوان به عنوان سرویس های یک هسته و یا به عنوان وظایف یک سیستم عامل نیز در نظر گرفت.
مولفه ۱ – مدیریت فرایندها یا Process Management
مدیریت فرایندها یک بخش مهم از هسته های مدرن امروزی است. سیستم عامل مسئول اختصاص منابع (مانند حافظه اصلی، پردازنده و یا یک فایل) به فرایند، فراهم کردن امکان به اشتراک گذاشتن و تبادل اطلاعات توسط فرایند، محافظت از یک فرایند در مقابل فرایند دیگر و غیره است. سیستم عامل به منظور مدیریت فرایندها از یک ساختار دادهای برای نگهداری وضعیت هر فرایند و منابعی که فرایند مالک آن است استفاده می کند.
سیستم عامل (و قاعدتاً هسته آن) مسئول ایجاد فرایندها است. همچنین یک فرایند میتواند به عنوان والد فرایند دیگری باشد به این صورت که در صورت نیاز فرایند والد یک نمونه عینی از خود را که فرایند فرزند گفته میشود ایجاد کند. یک فرایند میتواند طول عمر کوتاه (مانند اجرای یک دستور) و یا اینکه طول عمر طولانی (مانند سرویس شبکه) داشته باشد. به همین دلایل و برای کارایی بهتر سیستم به طوری که تعداد بشتری فرایند در واحد زمان اجرا شوند، مدیریت و زمانبندی فرایندها بسیار مهم است.
وقتی فرایندی برای اجرا شدن و توسط الگوریتم زمانبند انتخاب می شود، درواقع منبع اصلی یعنی پردازنده سیستم و رجیسترهای آنرا در اختیار دارد تا دستورالعمل های مربوط به فرایند توسط پردازنده اجرا شوند. مدیر فرایندها مسئول نگهداری وضعیت هر فرایند است به طوری ممکن است به دلایلی فرایندی در حال اجرا، از حالت اجرا خارج شود و فرایند دیگری برای اجرا شدن انتخاب شود، بنابراین لازم است تا وضعیت فرایند قبلی توسط سیستم عامل نگهداری شود تا فرایند قطع شده از همان نقطه قطع اجرای خود مجدداً اجرا شود.
مولفه ۲ – مدیریت حافظه اصلی یا Main Memory Managemement
حافظه اصلی یا RAM در سیستمهای کامپیوتری همانند پردازنده یکی از اصلیترین منابع فیزیکی است. هر برنامه (مانند واژه وردازها) برای اجرا شدن باید فرایند آن برنامه ابتدا از هارد دیسک به درون صفی در حافظه اصلی منتقل شود. پردازنده دستورالعمل های فرایند را از حافظه خوانده و اجرا میکند و سپس بر روی حافظه تغییرات را می نویسد.
هر فرایندی در حافظه دارای یک فضای آدرس مختص به خود است. پس از اتمام اجرای فرایند، فضای اختصاص داده شده به آن فرایند آزاد شده و در صورت امکان به فرایند دیگری اختصاص داده می شود. بنابراین سیستم عامل (و قاعدتاً هسته آن) باید از میزان فضای آزاد و در دسترس حافظه مطلع باشد و به سیاست هایی را برای اختصاص و بازپس گیری فضای حافظه تعیین کند.
مدیر حافظه اصلی مسئول بررسی فضای های خالی و فضای های اختصاص داده شده از کل فضای حافظه اصلی است به طوری که فرایندی که بخواهد اجرا شود ابتدا باید در فضای آدرس حافظه اصلی قرار گیرد که وظیفه اختصاص و بازپسگیری این فضاها در اختیار مدیر حافظه اصلی است.
بحث مدیریت حافظه تنها مختص به سیستم عامل و برنامه نویسان و توسعه دهندگان آن نیست، بلکه برنامه نویسان و دیگر توسعه دهندگان نرم افزاری نیز باید برنامههای (نرم افزارهای) خود را به گونهای توسعه دهند تا به بهترین نحو از حافظه سیستم استفاده کنند.
مولفه ۳ – همگام سازی یا Cuncurrency
در علوم رایانه واژه همگام سازی اشاره به دو مفهوم مرتبط ۱) همگام سازی فرایندها و ۲) همگام سازی دادهها اشاره دارد. همگام سازی فر ایندها به اشتراک منابع موجود سیستم میان فرایندها اشاره دارد، به طوری که اجرای یک فرایند بر روی اجرای فرایند دیگر تداخلی ایجاد نکند. به اجرای چندین فرایند به صورت همزمان، اجرای همروند(Cuncurrent) گویند. به طوری که فرایند ها میتوانند به سه روش زیر در یک سیستم تک یا چند پردازنده ای اجرا شوند:
- اجرای پی در پی : اجرای پی در پی یا متوالی اجرایی است که پس از اتمام کامل تمامی دستورالعمل ها و کدهای یک فر ایند توسط پردازنده، فرایند دیگری اجرا شود. درواقع فرایندها در یک صف قرار میگیرند و یکی پس از دیگری اجرا می شوند.
- اجرای همروند : در اجرای همروند با فرض یک سیستم تک پردازنده ای چندین فرایند در سیستم وجود دارند که همزمان میتوانند با یکدیگر اجرا شوند. درواقع سیستم عامل اجازه میدهد که چندین فرایند مستقل از هم همزمان اجرا شوند و در هر لحظه تعدادی از دستورالعمل های یک فرایند اجرا میشود و سپس دستور العمل های فرایند دیگر و الی اخر.
- اجرای موازی : در سیستمهای چند پردازنده ای چندین فرایند میتوانند در یک زمان اما بر روی پردازنده های مختلف اجرا شوند. امروزه سیستم عامل ها از مفهوم نخ پشتیبانی میکنند و فر ایند ها دارای چند نخ هستند که آنها را چند نخی می گویند. در فرایندهایی که چند نخ دارند، هر نخ وظیفه انجام یک کار را بر عمده دارد. به طور مثال در واژه پردازها مانند واژه پرداز مایکروسافت به طور مثال یک فرایند به نام world.exe وجود دارد که دارای چند نخ است. حال یک نخ میتواند وظیفه ذخیره سازی محتویات در به صورت خودکار در یک بازه زمانی و نخی دیگر مجزا از نخ دیگر وظیفه چیدمان فایل را انجام دهد بدون آنکه بر عملکرد کل فرایند و دیگر نخ ها تأثیر گذار باشد.در اجرای موازی میتوان فرایندهای مختلف یا نخ های یک فرایند را بر روی پردازنده های مجزا به صورت همزمان و مستقل از هم اجرا کرد.
با توجه به شکل زیر (شکل ۳) فرض کنید سه فرایند در سیستم وجود دارد، حال تفاوت اجرای پی در پی با همروند در این است که اجرای پی در پی فرایند B منوط به تکمیل اجرای فرایند A و اجرای فرایند C منوط به اجرای فرایند B است. (با فرض اینکه ترتیب فرایند به صورت فر ABC باشد). اما مطابق شکل زیر (شکل ۳) ابتدا بخشی از دستورالعمل های (کدهای) فرایند A و سپس بخشی از دستورالعمل های فرایند B و سپس بخشی از دستورالعمل های فرایند C اجرا میشوند.
دو اجرای همروند نیز میتوانند در سیستمهای چند پردازنده ای اجرا شوند. فرض کنید سیستمی با سه پردازنده و n فرایند موجود است. حال میتوانند n/3 از این فرایند ها در پردازنده اول و n/3دیگر در پردازنده دوم و n/3 نیز در پردارنده سوم اجرا به صورت همروند شوند. اما در هر لحظه بر روی هر پردازنده تنها یک فرایند (یا دستورالعمل یک فرایند) میتواند اجرا شود.
در اجرای همروند چندین فرایند قصد دسترسی به یک منبع مشترک (مانند یک فایل) را دارند. عدم وجود مکانیزم هایی برای کنترل بر اجرای این فرایند ها باعث بروز ناسازگاری خواهد شد. به طور کلی همگام سازی فرایند ها اشاره به موارد زیر دارد:
- فرایندها چگونه با یکدیگر همکاری داشته باشند. به طور مثال دو فرایند میتوانند از یک فایل به عنوان یک منبع مشترک استفاده کند به طوری که یک فرایند بر روی فایل بنویسد و فرایند دیگری از آن فایل بخواند.
- چگونه فرایندها با منابعی که میان آنها مشترک است کار کنند.
- وجود مکانیزمی برای حفظ سازگاری در استفاده مشترک چندین فرایند از منابع مشترک.
همگام سازی فرایند ها زمانی لازم است که یک فرایند برای دسترسی به یک منبع باید تا زمانی صبر کند که اجرای یک فرایند دیگری به اتمام برسد که در همین لحظه آن منبع را در اختیار دارد. فرض کنید که یک فرایند (که آنرا فرایند Writer می نامیم) در حال نوشتن بر روی ناحیه ای از حافظه اصلی است حال فرایند دیگری (که آنرا فرایندReader می نامیم) در حال خواندن همان ناحیه از حافظه و ارسال آن به پرینتر است. همگام سازی فرایند ها لازم است تا مکانیزم هایی را فراهم کند که فرایند خواننده اطلاعات صحیح را پس از تکمیل فرایند نویسنده بدست آورد و از ناسازگاری های ممکن از اجرای این دو فرایند برای دسترسی به یک منبع مشترک جلوگیری کند.
مولفه ۴ – مدیریت سیستم فایل یا Filesystem Management
سیستم فایل (Filesystem) در سیستم عامل ها برای کنترل کردن چگونگی ذخیره سازی و دستیابی به دادهها استفاده می شود. دادهها در غالب بلاک هایی بر روی دیسک ذخیره می شوند، سیستم عامل دیسک ها را در غالب بلاک هایی با اندازه مشخص میبیند و دادهها (فایل ها) را در این بلاک ها ذخیره می کند. به طور مثال اندازه بلاک های سیستم عامل لینوکس ۴۰۹۶ بایت یا چهار کیلو بایت است. سیستم فایل وظیفه ذخیره دادهها (فایل ها) را بر روی دیسک ها و دسترسی به آنها را دارد که این کار با اختصاص بلاک های دیسک صورت می گیرد.
سیستم فایل میداند که شروع یک فایل و پایان آن کجای دیسک است، درواقع از بلاک آغازی و پایانی اطلاع دارد. به طور مثال در سیستم فایل های سیستم عامل های یونیکسی و شبه یونیکسی (مانند لینوکس)، ساختمان داده ای به نام inode وجود دارد که اطلاعات پایهای در مورد فایلها و دایرکتوری ها در خود نگه داری می کند. درواقع در سیستم عامل های شبه یونیکسی هر فایل با یک عدد منحصر به فرد که inode نامیده میشود در سیستم فایل شناخته می شود.
همچنین هر سیستم فایل از تعدادی سیستم فایل پشتیبانی می کند. به طور مثال سیستم ویندوز از سیستم فایلهای FAT و NTFS و در لینوکس از سیستم فایلهایی همچون ext, xfsو brtfs پتشیبانی میکند که هر کدام ویژگیها و پیادهسازی خاص خود را دارند.
همچنین هر سیستم فایل از تعدادی سیستم فایل پشتیبانی می کند. به طور مثال سیستم ویندوز از سیستم فایلهای FAT و NTFS و در لینوکس از سیستم فایلهایی همچون ext, xfsو brtfs پتشیبانی میکند که هر کدام ویژگیها و پیادهسازی خاص خود را دارند.
هسته سیستم عامل چیست – بخش اول