سیستمعاملها
سیستمعامل لایهای از نرمافزار است که سختافزار رایانه را مدیریت میکند و خدماتی را به برنامههای کاربردی ارائه میدهد، پردازنده، حافظه، فضای ذخیرهسازی و دستگاهها را بین برنامهها مالتیپلکس میکند، در حالی که حفاظت و انتزاع را اعمال مینماید.
Definition
سیستمعامل نرمافزار سیستمی است که منابع سختافزاری را مدیریت میکند، انتزاعاتی مانند فرآیندها، فایلها و فضاهای آدرس را فراهم میآورد و بین برنامههای کاربردی و ماشین زیرین واسطه میشود، در حالی که جداسازی و اشتراکگذاری عادلانه را اعمال میکند.
Scope
این حوزه اصول و ساختار سیستمعاملها را پوشش میدهد: فرآیندها و نخها، زمانبندی CPU، مدیریت حافظه و حافظه مجازی، سیستمهای فایل، همزمانی و همگامسازی، مدیریت دستگاه و ورودی/خروجی، و حفاظت. این حوزه سیستمعامل را به عنوان مدیر منابع و لایه انتزاعی بین سختافزار و برنامههای کاربردی در نظر میگیرد. این حوزه با سلسلهمراتب حافظه و کشها (زیرا حافظه مجازی را مدیریت میکند) و سیستمهای ذخیرهسازی و ورودی/خروجی (زیرا دستگاهها و پایداری را مدیریت میکند) هممرز است و هماهنگی توزیعشده بین ماشینها را که تحت محاسبات توزیعشده و موازی بررسی میشود، شامل نمیشود.
Sub-topics
Core questions
- سیستمعامل چگونه انتزاع فرآیندها و نخهای مستقل را بر روی سختافزار مشترک ایجاد میکند؟
- زمانبند چگونه تصمیم میگیرد کدام وظیفه آماده اجرا شود و با چه اهدافی؟
- سیستمعامل چگونه حافظه را مدیریت میکند و حافظه مجازی و صفحهبندی را پیادهسازی میکند؟
- سیستمهای فایل چگونه دادههای پایدار را به طور قابل اعتماد بر روی دستگاههای ذخیرهسازی سازماندهی میکنند؟
- سیستمعامل چگونه حفاظت، جداسازی و دسترسی کنترلشده به منابع را فراهم میکند؟
Key concepts
- هسته و حالت کاربر
- فرآیند و نخ
- سوئیچ زمینه
- زمانبندی CPU
- حافظه مجازی و صفحهبندی
- سیستم فایل
- همزمانی و همگامسازی
- بنبست (deadlock)
- فراخوانهای سیستمی
- حفاظت و جداسازی
Key theories
- انتزاع فرآیند و فضای آدرس
- سیستمعامل CPU و حافظه را مجازیسازی میکند تا هر برنامه طوری اجرا شود که گویی مالک ماشین است: یک فرآیند شامل فضای آدرس، زمینه اجرا و منابع است، و هسته بین فرآیندها جابجا میشود و آنها را از یکدیگر محافظت میکند.
- مدیریت حافظه مجموعه کاری
- مدل مجموعه کاری دنینگ، مجموعهای از صفحات را که یک فرآیند به طور فعال در یک بازه زمانی استفاده میکند، مشخص میکند؛ نگه داشتن مجموعه کاری هر فرآیند در حافظه از پدیده «thrashing» جلوگیری میکند و تصمیمات صفحهبندی و پذیرش را در سیستمهای حافظه مجازی هدایت میکند.
Mechanisms
هسته سیستمعامل (kernel) در حالت ممتاز (privileged mode) اجرا میشود و دسترسی به سختافزار را واسطهگری میکند. این هسته برنامههای در حال اجرا را به عنوان فرآیندها و نخها (threads) نمایش میدهد و از طریق سوئیچهای زمینه (context switches) که توسط زمانبند (scheduler) هدایت میشوند، بین آنها جابجا میشود. حافظه از طریق صفحهبندی (paging) و ترجمه آدرس مجازی (virtual address translation) مدیریت میشود؛ دادههای پایدار توسط سیستمهای فایل سازماندهی میشوند؛ و وضعیت مشترک با استفاده از ابزارهای همگامسازی (synchronization primitives) مانند قفلها (locks)، سمافورها (semaphores) و مانیتورها (monitors) هماهنگ میشود. فراخوانهای سیستمی (system calls) به برنامههای کاربردی امکان ورود کنترلشده به خدمات هسته را میدهند.
Clinical relevance
سیستمعاملها اساساً زیربنای تمام محاسبات هستند: از سرورها و رایانههای رومیزی گرفته تا تلفنها و دستگاههای تعبیهشده (embedded devices). طراحی آنها عملکرد، قابلیت اطمینان و امنیت را تعیین میکند — زمانبندی بر پاسخگویی تأثیر میگذارد، مدیریت حافظه بر توان عملیاتی تأثیر میگذارد، و مکانیزمهای جداسازی اساس امنیت سیستم و مجازیسازی هستند. هستههای پرکاربرد مانند لینوکس و ویندوز این اصول را در مقیاس جهانی تجسم میبخشند.
History
سیستمعاملها از مانیتورهای دستهای (batch monitors) دهه ۱۹۵۰ از طریق سیستمهای چندبرنامگی (multiprogramming) و اشتراک زمانی (time-sharing) مانند CTSS و Multics در دهه ۱۹۶۰ تکامل یافتند. یونیکس (UNIX)، که توسط تامپسون و ریچی در حدود سال ۱۹۷۰ ایجاد شد، انتزاعاتی ماندگار را پایهگذاری کرد که هنوز در سیستمهای مدرن قابل مشاهده است. کار دایکسترا بر روی سمافورها و همزمانی و مدل مجموعه کاری (working-set model) دنینگ، مبانی نظری را بنا نهادند، و سیستمهای شخصی، موبایل و مجازیسازی شده این حوزه را در دهههای بعدی گسترش دادند.
Debates
- طراحی یکپارچه (Monolithic) در مقابل ریزهسته (Microkernel)
- یک بحث طولانیمدت، هستههای یکپارچه را که بیشتر خدمات را در حالت ممتاز برای عملکرد اجرا میکنند، در مقابل ریزهستهها که خدمات را برای ماژولار بودن و قابلیت اطمینان به فضای کاربر منتقل میکنند، مقایسه میکند؛ سیستمهای مدرن هر دو رویکرد را با هم ترکیب میکنند.
Key figures
- Edsger W. Dijkstra
- Peter J. Denning
- Per Brinch Hansen
- Ken Thompson
- Dennis Ritchie
- Abraham Silberschatz
- Andrew S. Tanenbaum
Related topics
Seminal works
- silberschatz2018
- tanenbaum2014os
- denning1968
Frequently asked questions
- تفاوت بین فرآیند و نخ چیست؟
- فرآیند یک اجرای برنامه مستقل با فضای آدرس و منابع خاص خود است. نخ یک واحد اجرایی در داخل یک فرآیند است؛ چندین نخ فضای آدرس فرآیند را به اشتراک میگذارند که ارتباط را ارزان میکند اما برای جلوگیری از رقابت (races) نیاز به همگامسازی دارد.
- هسته چه کاری انجام میدهد که برنامههای عادی نمیتوانند؟
- هسته در حالت پردازنده ممتاز اجرا میشود که به آن اجازه میدهد مستقیماً به سختافزار دسترسی داشته باشد، نگاشتهای حافظه را مدیریت کند، وقفهها را مدیریت کند و فرآیندها را تغییر دهد. برنامههای کاربردی این خدمات ممتاز را از طریق فراخوانهای سیستمی درخواست میکنند، نه اینکه خودشان آنها را انجام دهند، که جداسازی و حفاظت را حفظ میکند.