Facebook Pixel
Searching...
فارسی
EnglishEnglish
EspañolSpanish
简体中文Chinese
FrançaisFrench
DeutschGerman
日本語Japanese
PortuguêsPortuguese
ItalianoItalian
한국어Korean
РусскийRussian
NederlandsDutch
العربيةArabic
PolskiPolish
हिन्दीHindi
Tiếng ViệtVietnamese
SvenskaSwedish
ΕλληνικάGreek
TürkçeTurkish
ไทยThai
ČeštinaCzech
RomânăRomanian
MagyarHungarian
УкраїнськаUkrainian
Bahasa IndonesiaIndonesian
DanskDanish
SuomiFinnish
БългарскиBulgarian
עבריתHebrew
NorskNorwegian
HrvatskiCroatian
CatalàCatalan
SlovenčinaSlovak
LietuviųLithuanian
SlovenščinaSlovenian
СрпскиSerbian
EestiEstonian
LatviešuLatvian
فارسیPersian
മലയാളംMalayalam
தமிழ்Tamil
اردوUrdu
The Design of the UNIX Operating System

The Design of the UNIX Operating System

توسط Maurice J. Bach 1986 471 صفحات
4.24
500+ امتیازها
گوش دادن
Listen to Summary

نکات کلیدی

1. یونیکس: پیشگام سیستم فایل سلسله‌مراتبی

سیستم فایل مفهوم مرکزی و یکپارچه‌کننده‌ی یونیکس است.

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

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

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

2. فرایندها: نبض یونیکس

یک فرایند نمونه‌ای از یک برنامه در حال اجرا است.

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

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

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

3. هسته: سیستم مدیریت مرکزی یونیکس

هسته قلب سیستم‌عامل است.

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

مسئولیت‌های کلیدی:

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

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

4. فایل‌ها: انتزاع جهانی یونیکس

inode تمام اطلاعات مربوط به یک فایل به جز نام و داده‌های واقعی آن را در بر دارد.

ساختار داده. inode‌ها ساختارهای داده‌ای هستند که متاداده‌ای درباره‌ی فایل‌ها، مانند مالکیت، مجوزها، اندازه و مکان بلوک‌های داده در دیسک را ذخیره می‌کنند. هر فایل یک شماره inode منحصر به فرد دارد که به‌عنوان شناسایی‌کننده آن در سیستم فایل عمل می‌کند. inode‌ها برای مدیریت مؤثر فایل‌ها حیاتی هستند.

فایل‌های عادی. فایل‌های عادی شامل داده‌های کاربر، مانند اسناد متنی، تصاویر یا برنامه‌های اجرایی هستند. داده‌ها در بلوک‌ها بر روی دیسک ذخیره می‌شوند و inode شامل اشاره‌گرهایی به این بلوک‌ها است. سیستم فایل مکانیزم‌هایی برای خواندن و نوشتن داده‌ها به این فایل‌ها فراهم می‌کند.

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

5. تماس‌های سیستمی: پل ارتباطی بین کاربر و هسته

تماس‌های سیستمی رابط بین برنامه‌های کاربری و هسته را فراهم می‌کنند.

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

تماس‌های سیستمی رایج:

  • open: یک فایل را برای خواندن یا نوشتن باز می‌کند.
  • read: داده‌ها را از یک فایل می‌خواند.
  • write: داده‌ها را به یک فایل می‌نویسد.
  • close: یک فایل را می‌بندد.
  • fork: یک فرایند جدید ایجاد می‌کند.
  • exec: یک برنامه جدید را اجرا می‌کند.

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

6. کنترل فرایند: مدیریت اجرا

شل یک برنامه کاربری است که دستورات کاربر را می‌خواند و آن‌ها را اجرا می‌کند.

ایجاد فرایند. تماس سیستمی fork یک فرایند جدید ایجاد می‌کند که کپی از فرایند فراخوانی‌کننده است. فرایند جدید، که فرایند فرزند نامیده می‌شود، می‌تواند سپس یک برنامه متفاوت را با استفاده از تماس سیستمی exec اجرا کند. این مکانیزم برای شروع برنامه‌ها و خدمات جدید استفاده می‌شود.

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

خاتمه فرایند. یک فرایند می‌تواند با فراخوانی تماس سیستمی exit خود را خاتمه دهد، یا می‌تواند توسط یک فرایند دیگر با استفاده از تماس سیستمی kill خاتمه یابد. زمانی که یک فرایند خاتمه می‌یابد، هسته منابع آن را بازپس می‌گیرد و به فرایند والد اطلاع می‌دهد. خاتمه صحیح فرایند برای پایداری سیستم ضروری است.

7. زمان‌بندی و زمان: هماهنگی منابع سیستم

زمان‌بند فرایند تعیین می‌کند که کدام فرایند باید بعدی اجرا شود.

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

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

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

8. مدیریت حافظه: تعادل

تعویض فرایند جابجایی کل فرایندها بین حافظه اصلی و ذخیره‌سازی ثانویه است.

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

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

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

9. زیرسیستم ورودی/خروجی: اتصال به جهان

درایورهای دستگاه رابط بین هسته و دستگاه‌های سخت‌افزاری را فراهم می‌کنند.

درایورهای دستگاه. درایورهای دستگاه ماژول‌های نرم‌افزاری هستند که رابطی بین هسته و دستگاه‌های سخت‌افزاری فراهم می‌کنند. هر دستگاه دارای درایور خاص خود است که مسئول مدیریت درخواست‌های ورودی/خروجی و مدیریت دستگاه است. درایورهای دستگاه برای تعامل سیستم با دستگاه‌های جانبی مانند دیسک‌ها، ترمینال‌ها و رابط‌های شبکه ضروری هستند.

تماس‌های سیستمی. برنامه‌های کاربری از طریق تماس‌های سیستمی مانند read، write و ioctl با دستگاه‌ها تعامل می‌کنند. هسته این تماس‌های سیستمی را به دستورات خاص دستگاه ترجمه کرده و آن‌ها را به درایور دستگاه منتقل می‌کند. سپس درایور عملیات درخواست‌شده را انجام داده و نتایج را به هسته بازمی‌گرداند.

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

10. ارتباط بین فرایندی: گفتگوی فرایندها

ارتباط بین فرایندی (IPC) به فرایندها اجازه می‌دهد تا داده‌ها را تبادل کرده و اجرای خود را همگام‌سازی کنند.

لوله‌ها. لوله‌ها یک شکل ساده از IPC هستند که به دو فرایند اجازه می‌دهند تا داده‌ها را به‌صورت یک‌طرفه تبادل کنند. یک فرایند داده‌ها را به لوله می‌نویسد و فرایند دیگر داده‌ها را از لوله می‌خواند. لوله‌ها معمولاً برای اتصال خروجی یک برنامه به ورودی برنامه دیگر استفاده می‌شوند.

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

پیام‌ها. صف پیام‌ها به فرایندها اجازه می‌دهد تا پیام‌ها را ارسال و دریافت کنند. پیام‌ها می‌توانند از انواع و اولویت‌های مختلفی باشند و ارتباطی انعطاف‌پذیرتر از لوله‌ها فراهم کنند. صف پیام‌ها معمولاً در برنامه‌های کلاینت-سرور استفاده می‌شود.

11. سیستم‌های چندپردازنده‌ای: پردازش موازی

سمفورها برای همگام‌سازی دسترسی به منابع مشترک در یک سیستم چندپردازنده‌ای استفاده می‌شوند.

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

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

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

12. سیستم‌های توزیع‌شده: گسترش جهان یونیکس

سیستم‌های توزیع‌شده به چندین کامپیوتر اجازه می‌دهند تا به‌عنوان یک سیستم واحد کار کنند.

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

ارتباط شبکه. ارتباط شبکه برای سیستم‌های توزیع‌شده ضروری است. پروتکل‌هایی مانند TCP/IP برای تبادل داده‌ها بین کامپیوترها استفاده می‌شوند. سیستم‌های توزیع‌شده می‌توانند از مدل‌های ارتباطی مختلفی، مانند کلاینت-سرور و همتا به همتا، استفاده کنند.

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

آخرین به‌روزرسانی::

نقد و بررسی

4.24 از 5
میانگین از 500+ امتیازات از Goodreads و Amazon.

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

درباره نویسنده

موریس جی. باخ به خاطر کارهای بنیادی‌اش در زمینه‌ی سیستم‌های عامل یونیکس شناخته شده است. کتاب او با عنوان «طراحی سیستم عامل یونیکس» که در سال 1365 منتشر شد، به یکی از متون اساسی در حوزه‌ی علوم کامپیوتر تبدیل شده است. تخصص موریس جی. باخ در زمینه‌ی جزئیات یونیکس و طراحی سیستم در سرتاسر کتاب مشهود است، که نمای کلی جامعی از معماری و الگوریتم‌های یونیکس ارائه می‌دهد. سبک نوشتاری واضح و مختصر باخ، همراه با دانش فنی عمیق او، این کتاب را به منبعی ماندگار برای دانشجویان، حرفه‌ای‌ها و علاقه‌مندان تبدیل کرده است. کار او به طور قابل توجهی به درک و توسعه‌ی سیستم‌های مبتنی بر یونیکس کمک کرده و نسل‌های مختلفی از دانشمندان و مهندسان کامپیوتر را تحت تأثیر قرار داده است.

0:00
-0:00
1x
Dan
Andrew
Michelle
Lauren
Select Speed
1.0×
+
200 words per minute
Home
Library
Get App
Create a free account to unlock:
Requests: Request new book summaries
Bookmarks: Save your favorite books
History: Revisit books later
Recommendations: Get personalized suggestions
Ratings: Rate books & see your ratings
Try Full Access for 7 Days
Listen, bookmark, and more
Compare Features Free Pro
📖 Read Summaries
All summaries are free to read in 40 languages
🎧 Listen to Summaries
Listen to unlimited summaries in 40 languages
❤️ Unlimited Bookmarks
Free users are limited to 10
📜 Unlimited History
Free users are limited to 10
Risk-Free Timeline
Today: Get Instant Access
Listen to full summaries of 73,530 books. That's 12,000+ hours of audio!
Day 4: Trial Reminder
We'll send you a notification that your trial is ending soon.
Day 7: Your subscription begins
You'll be charged on Apr 27,
cancel anytime before.
Consume 2.8x More Books
2.8x more books Listening Reading
Our users love us
100,000+ readers
"...I can 10x the number of books I can read..."
"...exceptionally accurate, engaging, and beautifully presented..."
"...better than any amazon review when I'm making a book-buying decision..."
Save 62%
Yearly
$119.88 $44.99/year
$3.75/mo
Monthly
$9.99/mo
Try Free & Unlock
7 days free, then $44.99/year. Cancel anytime.
Scanner
Find a barcode to scan

Settings
General
Widget
Appearance
Loading...
Black Friday Sale 🎉
$20 off Lifetime Access
$79.99 $59.99
Upgrade Now →