منبع اصلی نوشتار زیر در این لینک قرار دارد

هسته سیستم عامل چیست – بخش چهارم

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

مولفه ۵ – مدیریت ورودی/خروجی یا Input/Output Management

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

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

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

مولفه ۶ – شبکه یا Networking

سیستم عامل ها ارتباط شبکه را برای کاربران درون هسته خود فراهم می کنند. پیاده‌سازی TCP/IP یکی از وظایف هسته است به طوری که پروتکل های این استاندارد (مانند پروتکل لایه انتقال، پروتکل های IPv4 و IPv6 و غیره) درون هسته پیاده‌سازی می شوند. در سیستم عامل های یونیکسی سوکت ها یکی از روشی برای قراری ارتباط میان دو فرایند در دو ماشین مختلف درون شبکه هستند به طوری که این سوکت ها توسط فراخوانی های سیستمی ایجاد و مدیریت می شوند.

مولفه ۷ – واسط کاربری یا User Interface

واسط کاربری (رابط کاربری) یکی دیگر از وظایف سیستم عامل ها است که غالباً خارج از هسته پیاده‌سازی می شوند. وظیفه واسط کاربری برقراری ارتباط میان کاربر و سیستم عامل است به طوری که کاربر دستورها را یا از طریق صفحه‌کلید یا ماوس به سیستم عامل داده و سپس خروجی که می‌تواند خروجی استاندارد یا یک خطا باشد را نشان می دهد.

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

در‌واقع وظیفه رابط کاربری تعامل کاربر با سیستم عامل است، به طوری که کاربر درخواست خود (فرامین خود) را به سیستم عامل می‌دهد و این فرامین تفسیر شده و سپس خروجی به کاربر نشان داده می شود. این دستورها توسط واسط کاربری تفسیر می شود.

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

در سیستم عامل هایی مانند لینوکس که واسط گرافیکی از طریق خط فرمان انجام می شود، کاربر از طریق صفحه‌کلید فرامین متنی را اجرا کرده و سپس خروجی استاندارد یا خطایی نشان داده می شود. در منابع سیستم عامل به واسط کاربری، پوسته ‌(Shell) نیز گفته می شود.

دیگر مولفه های ممکن در هسته سیستم عامل ها

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

operating_system_kernel7

لینوکس به دلیل آنکه به صورت متن باز توسعه داده می شود، از پلتفرم های گوناگون مانند ARM, PowerPC, x86, Mips و غیره پشتیبانی می کند. دایرکتوری arch شامل کدهای کامپایل هسته لینوکس برای یک معماری خاص است.

لینوکس از انواع سیستم فایل‌های موجود مانند ext, xfs, brtfs, ufs و غیره پشتیبانی می کند.ext2 اولین سیستم فایلی بود که بر روی لینوکس استفاده شد و پس از آن ext3 و ext4 ارائه شدند. این سیستم فایل خاص سیستم عامل لینوکس است. Ufs برای اولین بار در BSD Unix ارائه شد و در حال حاضر در سیستم عامل هایی همچون سولاریس نسخه ۱۰ و ۱۱، توزیع FreeBSD و چندین سیستم عامل یونیکسی دیگر استفاده می شود. دایرکتوری fs شامل تمامی سیستم فایل‌هایی است که در هسته لینوکس قابل پشتیبانی است. قاعدتاً این پشتیبانی به تدریج با ار ائه سیستم فایل‌های جدید در نسخه های جدیدتر هسته لینوکس قابل ارائه هستند.

هسته لینوکس امکانات لازم برای شبکه را نیز فراهم می کند. پروتکل های اترنت، IPv4 و IPV6 و امکانات دیگر را فراهم می کند. شبکه در لینوکس بر اساس TCP/IP است بنابراین پیاده‌سازی لایه‌های آن مانند مدیریت بسته های IP در هسته لینوکس صورت می گیرد. به طور مثال پروتکل های DCCP و SCTP مربوط به لایه انتقال درون هسته پیاده‌سازی شده اند.

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

به عنوان یک نمونه دیگر می‌توانید از اینجا زیر فهرست محتویات هسته سیستم عامل FreeBSD را مشاهده کنید که مانند هسته لینوکس از معماری یکپارچه استفاده می کند. مانند لینوکس شبکه، مدیر سیستم فایل، مدیر حافظه اصلی، امنیت، کدهای مربوط به معماری ها مانند x86, Mips, ARM, PowerPC و غیره در آن پیاده‌سازی شده است.

داروین هسته سیستم عامل مکینتاش ۱۰ بوده اما دیگر اجزای این سیستم عامل مانند واسط گرافیکی آن از داروین مجزا هستند. در‌واقع می‌توان سیستم عامل مکینتاش ۱۰ را شامل دو بخش ۱) سیستم عامل میکنتاش و ۲) داروین دانست. سیستم عامل میکنتاش به جز واسط گرافیکی خود، از واسط خط فرمان یونیکسی نیز بهره می برد.

شکل زیر (شکل ۲) معماری کلی سیستم عامل مکینتاش و داروین را نشان می دهد. در پایینترین لایه، لایه هسته ماک وجود دارد و در بالای آن لایه هسته بی اس دی قرار گرفته است. ماک هسته ای است که از معماری زیز هسته استفاده می کند.

operating_system_kernel8

ماک مدیریت پردازنده، زمانبندی، مدیریت حافضه اصلی و محافظت از حافظه را فراهم می کند. وظایف هسته ماک را در داریون شامل موارد زیر است:

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

در بالای لایه ماک، لایه بی اس دی قرار گرفته است. این لایه نیز برخی دیگر از مولفه های لازم را برای داروین فراهم می‌کند و مبتنی بر هسته بی اس دی می باشد. در‌واقع لایه بی اس دی از ویژگی‌های سیستم عامل FreeBSD که از نوه سیستم عامل های بی اس دی است بهره می برد. لایه بی اس موارد زیر را فراهم می کند:

  • سیستم فایل.
  • شبکه سازی (به جز لایه دستگاه‌های سخت افزاری).
  • مدل امنیتی مروبوط به یونیکس. (بی اس دی و به طبع آن FreeBSD از سیستم عامل های شبه یونیکسی هستند).
  • پشتیبانی از فراخوان های سیستمی.
  • پشتیبانی از مدل فرایندهای بی اس دی .(مانند مواردی همچون شناسه فرایند و سیگنال ها).
  • API های مربوط به هسته بی اس دی و مدل پازیکس (Posix).
  • پشتیبانی از نخ های پازیکس (Posix Thread  یا PThraed).

در سیستم عامل مکینتاش شبکه سازی از ویژگی‌های بی اس دی گرفته شده است که شامل مواردی همچون پیاده‌سازی TCP/IP و پروتکل های لایه انتقال ،IPv4 ،IPv6 و غیره است. I/O Kit چارچوبی را برای توسعه درایورها فراهم می کند.

همکاری میان مولفه های مختلف

هر چند هر یک از مولفه های (هسته) سیستم عامل به صورت مجزا و مستقل از بقیه وظیفه خود را انجام می دهند، اما قابلیت همکاری میان این مولفه ها نیز وجود دارد. ابرای نشان دادن نمونه‌ای از این قابلیت‌های همکاری یک مثال ساده بیان می کنیم. فرض کنید برای اجرای یک برنامه یک گزینه (Option) را از یک منو انتخاب می کنیم. توالی گام های زیر رخ خواهند داد:

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

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


هسته سیستم عامل چیست – بخش نخست

هسته سیستم عامل چیست – بخش دوم

هسته سیستم عامل چیست – بخش سوم



برچسب ها : ,

به سیاره لینوکس امتیاز دهید

به اين صفحه امتياز دهيد