نکات کلیدی
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 برای تبادل دادهها بین کامپیوترها استفاده میشوند. سیستمهای توزیعشده میتوانند از مدلهای ارتباطی مختلفی، مانند کلاینت-سرور و همتا به همتا، استفاده کنند.
چالشها. سیستمهای توزیعشده چالشهای جدیدی را معرفی میکنند، مانند تأخیر شبکه، تحمل خطا و امنیت. تأخیر شبکه میتواند بر عملکرد تأثیر بگذارد. تحمل خطا اطمینان میدهد که سیستم میتواند به کار خود ادامه دهد حتی اگر برخی از اجزا خراب شوند. امنیت برای محافظت از دادهها و جلوگیری از دسترسی غیرمجاز مهم است.
آخرین بهروزرسانی::
نقد و بررسی
کتاب "طراحی سیستمعامل یونیکس" به عنوان یک متن کلاسیک در زمینهی جزئیات داخلی یونیکس شناخته میشود. خوانندگان از پوشش جامع آن در زمینهی فراخوانیهای سیستمی، مدیریت حافظه و الگوریتمهای اصلی تقدیر میکنند. بسیاری آن را برای درک سیستمهای یونیکس/لینوکس ضروری میدانند، با وجود اینکه زمان زیادی از انتشار آن میگذرد. این کتاب به خاطر توضیحات واضح، نمودارهای مفید و تمرکز بر تعامل فضای هسته و کاربر ارزشمند است. در حالی که برخی به محتوای قدیمی آن در زمینهی پردازش چندگانه و شبکهسازی اشاره میکنند، اکثر افراد بر این باورند که این کتاب همچنان برای طراحان سیستم، مدیران و هر کسی که به اصول سیستمعامل علاقهمند است، مرتبط و آموزنده باقی مانده است.