آزمایشگاه سیستم‌های عامل

Operating Systems Lab

مقطع: کارشناسی گرایش: نرم‌افزار
نوع درس: عملی تعداد واحد: ۱
پیش‌نیاز: سیستم‌های عامل هم‌نیاز: –

هدف کلی

هدف از این آزمایشگاه، آموزش بخش‌های مختلف سیستم‌‌های عامل خانواده‌ی Unix به کمک سیستم‌ عامل آموزشی xv6 (و یا pintos، بنا به انتخاب مدرس) است. پس از گذراندن این آزمایشگاه، دانشجویان با ساختار و معماری سیستم‌‌های عامل این خانواده آشنا خواهند شد و توانایی تغییر از جمله افزودن برخی قابلیت‌ها و نیز کامپایل، اجرا و اشکال‌زدایی آن را خواهند داشت. کلیات این آزمایشگاه به صورت زیر است اما جزئیات هر آزمایش از یک نیم‌سال به نیم‌سال دیگر تغییر خواهد یافت. هر نیم‌سال شامل تعدادی پروژه برای طراحی و پیاده‌سازی در سیستم‌ عامل آموزشی منتخب و نیز تعدادی تمرین مستقل در سرفصل‌های زیر است. علاوه بر این پروژه‌ها و تمارین، پرسش‌هایی در قالب سوالات تشریحی نیز در هر کدام گنجانده شده است که با پاسخ‌ دادن به آن‌ها از طریق مطالعه و تحقیق، بار آموزشی مطالب بیشتر شود.

سرفصل‌ها

موارد زیر در قالب پروژه (سیلابس بر مبنای xv6 نوشته شده، که بنا به انتخاب مدرس با pintos قابل جایگزینی است):

  • آشنایی با معماری و برخی نکات پیاده‌سازی سیستم‌ عامل
    • اجرا، اشکال‌زدایی و کامپایل xv6
    • کامپایل هسته‌ی سیستم‌ عامل لینوکس
  • آشنایی با بخش‌های مختلف سیستم‌ عامل و برنامه‌نویسی در محیط آن
    • بررسی رفتار سیستم‌ عامل
    • افزودن قابلیت به xv6 و تست عملکرد آن
    • نوشتن برنامه در سطح کاربر و اجرای آن
  • آشنایی با System Callها در هسته‌ی سیستم‌ عامل
    • آشنایی با نحوه فراخوانی آرگومان‌ها و ذخیره اطلاعات پردازه‌ها در هسته‌ی xv6
    • پیاده‌سازی و افزودن چند System Call جدید به هسته‌ی xv6
  • آشنایی با الگوریتم‌های زمان‌بندی پردازنده در سیستم‌ عامل
    • پیاده‌سازی چند الگوریتم زمان‌بندی جدید برای پردازنده در xv6
  • آشنایی با سازوکارهای همگام‌سازی در سیستم‌ عامل
    • پیاده‌سازی قابلیت‌هایی جدید جهت همگام‌سازی فرآیندها در هسته‌ی xv6
  • آشنایی با شیوه‌ی مدیریت حافظه در سیستم‌ عامل
    • پیاده سازی قابلیت‌هایی جدید برای مدیریت حافظه در xv6

موارد زیر در قالب تمرین:

  • آشنایی با فراخوانی سیستمی زبان C و یادگیری مبانی socket programming
  • آشنایی با نحوه مدیریت پردازه‌ها و روش‌های ارتباطی آن‌ها از طریق pipeها
  • آشنایی با مفاهیم چندریسه‌ای و پیاده‌سازی چندین برنامه به صورت سری و موازی

منابع پیشنهادی

  1. R. Cox, F. Kaashoek and R. Morris. xv6: A Simple, Unix-like Teaching Operating System. 2022.
  2. N. Matthew and R. Stones. Beginning Linux Programming. 4th Edition, Wrox, 2008.
  3. R. Love. Linux Kernel Development. 3rd Edition, Addison-Wesley Professional, 2010.
  4. W. Mauerer. Professional Linux Kernel Architecture. Wrox, 2008.