جلسه 10 Operating systems and the GUI
مقدمهای بر سیستم عامل
تیتر: سیستم عامل چیست؟ نقش و وظایف آن
توضیح:
سیستم عامل (OS) نرمافزاری است که مدیریت منابع سختافزاری و نرمافزاری کامپیوتر را بر عهده دارد و بستری برای اجرای سایر برنامهها فراهم میکند. وظایف اصلی آن شامل مدیریت پردازشها، حافظه، فایلها و دستگاههای ورودی/خروجی است.
مثال:
تصور کنید کامپیوتر یک ارکستر است. سیستم عامل رهبر ارکستر است که نتها (دستورات برنامه) را میخواند و نوازندگان (سختافزار) را هدایت میکند تا همگی با هم هماهنگ قطعه موسیقی (برنامه) را اجرا کنند.
خلاصه نکات کلیدی:
- سیستم عامل واسط بین کاربر/برنامه و سختافزار است.
- وظایف اصلی: مدیریت پردازش، حافظه، فایل، I/O.
- افزایش کارایی و سهولت استفاده از سیستم.
تمرین پایان فصل:
- چهار وظیفه اصلی یک سیستم عامل را نام ببرید و به اختصار توضیح دهید.
- اگر سیستم عاملی وجود نداشت، اجرای یک برنامه ساده مانند واکواک (WordPad) چه چالشهایی داشت؟
بخش دوم: انواع سیستم عاملها
تیتر: دستهبندی سیستم عاملها (تککاربره، چندکاربره، بلادرنگ و…)
توضیح:
سیستمهای عامل را میتوان بر اساس معیارهای مختلفی دستهبندی کرد، از جمله تعداد کاربران همزمان، نوع پردازش (دستهای، تعاملی، بلادرنگ) و معماری سیستم.
مثال:
- تککاربره: MS-DOS (فقط یک نفر در یک زمان میتواند از آن استفاده کند).
- چندکاربره: لینوکس، ویندوز سرور (چندین کاربر میتوانند به طور همزمان به سیستم دسترسی داشته باشند).
- بلادرنگ: سیستمهای کنترل صنعتی، ایربگ خودرو (نیاز به پاسخدهی فوری دارند).
خلاصه نکات کلیدی:
- دستهبندیها به ما در درک کاربرد و محدودیتهای هر سیستم عامل کمک میکنند.
- سیستمهای بلادرنگ برای کاربردهای حیاتی که تاخیر در آنها فاجعهبار است، طراحی شدهاند.
تمرین پایان فصل:
- تفاوت اصلی بین سیستم عامل تککاربره و چندکاربره چیست؟
- یک مثال از کاربرد سیستم عامل بلادرنگ در زندگی روزمره بزنید.
بخش سوم: هسته (Kernel) سیستم عامل
تیتر: آشنایی با هسته: قلب تپنده سیستم عامل
توضیح:
هسته (Kernel) بخشی از سیستم عامل است که مستقیماً با سختافزار در ارتباط است و وظایف اساسی مانند مدیریت حافظه و پردازشها را انجام میدهد. دو نوع اصلی هسته وجود دارد: Monolithic Kernel و Microkernel.
مثال:
هسته مانند مغز سیستم عامل است. هستههای یکپارچه (Monolithic) مانند مغزی هستند که تمام وظایف حیاتی را در یک فضای اجرایی انجام میدهند، در حالی که هستههای ریز (Microkernel) وظایف را به سرویسهای کوچکتر و جداگانه تقسیم میکنند.
خلاصه نکات کلیدی:
- هسته مسئول اصلی مدیریت منابع است.
- Monolithic Kernel: کارایی بالا، اما پیچیدگی و وابستگی بیشتر.
- Microkernel: ماژولارتر، امنتر، اما ممکن است سربار بیشتری داشته باشد.
تمرین پایان فصل:
- مزایا و معایب Monolithic Kernel و Microkernel را مقایسه کنید.
- چرا هسته در فضای حافظه محافظت شدهای اجرا میشود؟
بخش چهارم: مدیریت پردازشها
تیتر: پردازشها: اجرای برنامهها در سیستم عامل
توضیح:
پردازش (Process) یک برنامه در حال اجراست. سیستم عامل مسئول ایجاد، زمانبندی، خاتمه و ارتباط بین پردازشها است. مفاهیمی مانند PID، حالت پردازش (آماده، در حال اجرا، منتظر) و نخها (Threads) در این بخش بررسی میشوند.
مثال:
وقتی شما مرورگر وب را باز میکنید، یک پردازش جدید ایجاد میشود. اگر همزمان چندین تب باز کنید، هر تب میتواند یک نخ (Thread) مجزا در همان پردازش مرورگر باشد که به اشتراکگذاری منابع را ممکن میسازد.
خلاصه نکات کلیدی:
- پردازش واحد اجرای برنامه است.
- نخها واحدهای کوچکتری از پردازش هستند که اجرای موازی را ممکن میسازند.
- زمانبندی پردازشها برای استفاده بهینه از CPU حیاتی است.
تمرین پایان فصل:
- “نخ” (Thread) چیست و چه تفاوتی با “پردازش” (Process) دارد؟
- چرا زمانبندی پردازشها در سیستم عاملهای چندوظیفهای اهمیت دارد؟
بخش پنجم: مدیریت حافظه
تیتر: حافظه: فضایی برای اجرای برنامهها
توضیح:
این بخش به نحوه مدیریت حافظه اصلی (RAM) توسط سیستم عامل میپردازد. مفاهیمی مانند تخصیص حافظه، فضای آدرس مجازی، صفحهبندی (Paging) و تقسیمبندی (Segmentation) معرفی میشوند.
مثال:
حافظه اصلی را مانند یک میز کار در نظر بگیرید. سیستم عامل باید تصمیم بگیرد کدام پرونده (داده یا کد برنامه) را روی میز بگذارد و کدام را در کشو (حافظه ثانویه) قرار دهد تا فضای میز بهینه استفاده شود. صفحهبندی مانند این است که پروندهها را به برگههای کوچک تقسیم کنیم و فقط برگههای مورد نیاز را روی میز قرار دهیم.
خلاصه نکات کلیدی:
- مدیریت حافظه برای جلوگیری از تداخل برنامهها و استفاده بهینه از RAM ضروری است.
- فضای آدرس مجازی به برنامهها اجازه میدهد تا حافظه بیشتری از آنچه فیزیکی وجود دارد، در اختیار داشته باشند.
- صفحهبندی و تقسیمبندی روشهای کلیدی برای مدیریت حافظه هستند.
تمرین پایان فصل:
- مفهوم “حافظه مجازی” را توضیح دهید و بگویید چگونه به بهبود عملکرد سیستم کمک میکند.
- فرق بین صفحهبندی (Paging) و تقسیمبندی (Segmentation) چیست؟
بخش ششم: مدیریت فایل و ورودی/خروجی (I/O)
تیتر: سازماندهی اطلاعات و ارتباط با دنیای خارج
توضیح:
سیستم عامل نحوه ذخیرهسازی، بازیابی و سازماندهی فایلها در حافظههای ثانویه (هارد دیسک، SSD) را مدیریت میکند. همچنین، ارتباط با دستگاههای جانبی مانند کیبورد، ماوس، پرینتر و شبکه را از طریق درایورها برقرار میکند.
مثال:
سیستم فایل مانند یک کتابخانه است. پوشهها (Directories) قفسهها هستند و فایلها کتابها. سیستم عامل (کتابدار) به شما کمک میکند کتاب مورد نظر را پیدا کنید، آن را بخوانید (دسترسی) و پس از اتمام، سر جای خود قرار دهید (ذخیره).
خلاصه نکات کلیدی:
- سیستم فایل ساختار منطقی برای ذخیره دادهها فراهم میکند.
- درایورهای دستگاه واسط بین سیستم عامل و سختافزار I/O هستند.
- مدیریت ایمن و کارآمد دادهها اولویت دارد.
تمرین پایان فصل:
- نقش درایور دستگاه (Device Driver) در سیستم عامل چیست؟
- چند روش مختلف برای سازماندهی فایلها در یک سیستم فایل را نام ببرید.
بخش هفتم: مقدمهای بر رابط کاربری گرافیکی (GUI)
تیتر: تعامل بصری: پنجرهها، آیکونها و ماوس
توضیح:
رابط کاربری گرافیکی (GUI) روشی است که به کاربران اجازه میدهد از طریق عناصر بصری مانند پنجرهها، آیکونها، منوها و اشارهگر ماوس با کامپیوتر تعامل کنند. این برخلاف رابط خط فرمان (CLI) است.
مثال:
- GUI: ویندوز، macOS، رابط کاربری اندروید و iOS. شما با کلیک روی آیکونها یا کشیدن و رها کردن فایلها کار میکنید.
- CLI: خط فرمان در لینوکس (Bash) یا Command Prompt در ویندوز. شما دستورات متنی را تایپ میکنید.
خلاصه نکات کلیدی:
- GUI استفاده از کامپیوتر را برای عموم آسانتر کرده است.
- عناصر اصلی: پنجره، آیکون، منو، اشارهگر.
- درک نحوه کار GUI به درک تعامل کاربر با سیستم عامل کمک میکند.
تمرین پایان فصل:
- سه تفاوت اصلی بین رابط کاربری گرافیکی (GUI) و رابط خط فرمان (CLI) را بیان کنید.
- چرا GUI ها در مقایسه با CLI ها معمولاً برای کاربران تازهکار کاربرپسندتر تلقی میشوند؟
بخش هشتم: طراحی و اجزای رابط کاربری گرافیکی
تیتر: ساختار و اصول طراحی GUI
توضیح:
این بخش به بررسی مولفههای ساختاری GUI مانند پنجرهها، ویجتها (دکمهها، جعبههای متن، چکباکسها) و نحوه مدیریت رویدادها (کلیک ماوس، فشردن کلید) میپردازد. همچنین اصول طراحی کاربرپسند (Usability) مورد بحث قرار میگیرد.
مثال:
وقتی روی دکمه “ذخیره” در یک برنامه کلیک میکنید، GUI یک رویداد “کلیک” را تشخیص میدهد و آن را به سیستم عامل یا برنامه مربوطه ارسال میکند تا دستور ذخیرهسازی اجرا شود.
خلاصه نکات کلیدی:
- GUI ها از اجزای استاندارد (ویجتها) برای ایجاد رابطهای کاربری یکپارچه استفاده میکنند.
- مدیریت رویداد (Event Handling) اساس تعامل در GUI ها است.
- طراحی کاربرپسند به معنای سهولت، کارایی و رضایت کاربر است.
تمرین پایان فصل:
- چند نمونه از "ویجت"های رایج در رابطهای کاربری گرافیکی را نام ببرید و کاربرد هر کدام را توضیح دهید.
- مفهوم “کاربرپسندی” (Usability) در طراحی GUI به چه معناست و چگونه میتوان آن را ارزیابی کرد؟
بخش نهم: ارتباط سیستم عامل و GUI
تیتر: همکاری تنگاتنگ: چگونه سیستم عامل GUI را پشتیبانی میکند؟
توضیح:
در این بخش، نحوه تعامل سیستم عامل با GUI بررسی میشود. سیستم عامل وظایف سنگینی مانند مدیریت پنجرهها، رندر کردن گرافیک، مدیریت ورودی کاربر و اطمینان از اجرای روان برنامهها را بر عهده دارد.
مثال:
وقتی شما یک پنجره را جابجا میکنید، سیستم عامل مسئول ترسیم مجدد پسزمینه دسکتاپ و اطمینان از اینکه پنجره جدید در مکان درست نمایش داده شود، است. همچنین اطمینان حاصل میکند که پنجرهها روی هم قرار نگیرند یا به درستی بریده شوند.
خلاصه نکات کلیدی:
- سیستم عامل زیرساخت لازم برای اجرای GUI را فراهم میکند.
- مدیریت پنجرهها، گرافیک و ورودی کاربر از وظایف سیستم عامل در پشتیبانی از GUI است.
- یک سیستم عامل کارآمد، تجربه کاربری بهتری را با GUI تضمین میکند.
تمرین پایان فصل:
- چگونه سیستم عامل به مدیریت همپوشانی پنجرهها در یک محیط GUI کمک میکند؟
- چرا یک سیستم عامل کند میتواند تجربه استفاده از یک GUI مدرن را ناخوشایند کند؟