Operating System
Operating System
سیستم عامل
الگوریتم اخیرا استفاده نشده )(Not Recently Used / NRU
مقدمه
جایگزینی صفحه :مکانیزمی در سیستمعاملها برای مدیریت حافظه وقتی که یک فرآیند به صفحات بیشتری •
هدف :حداقل کردن خطاهای صفحه و حداکثر کردن عملکرد سیستم با مدیریت کارآمد استفاده از حافظه. •
مقدمهای بر NRU
) :Not Recently Used (NRUالگوریتم جایگزینی صفحهای که صفحات را بر اساس تاریخچه استفاده •
تقسیمبندی میکند.
مفهوم اساسی :صفحات به چهار دسته تقسیم میشوند بر اساس اینکه آیا به آنها ارجاع داده شده و تغییر داده •
دستهبندی صفحات
.1دسته :۰نه ارجاع داده شده ،نه تغییر داده شده )(NRU = 00
.2دسته :۱نه ارجاع داده شده ،تغییر داده شده )(NRU = 01
.3دسته :۲ارجاع داده شده ،نه تغییر داده شده )(NRU = 10
عملکرد NRU
سیستمعامل بهطور دورهای بیتهای مرجع تمام صفحات را بازنشانی میکند (معموالً در فواصل زمانی منظم). •
اگر صفحات موجود در دسته ۰وجود نداشته باشند ،الگوریتم به دسته بعدی میرود تا صفحهای برای جایگزینی •
پیدا کند.
بیت مرجع
بیت مرجع :یک بیت منفرد مرتبط با هر صفحه که نشان میدهد آیا صفحه از آخرین بار بازنشانی به آن ارجاع •
سیستمعامل میتواند این بیت را پس از دسترسی به ۱تنظیم کند و بهطور دورهای (مثالً در هر ضربه ساعت) آن •
مزایای NRU
.2کارایی :از یک پرچم بیت ساده برای تعیین ارزشمندی یک صفحه استفاده میکند.
.3سازگار :به الگوهای دسترسی متغیر سازگار است زیرا بیتهای مرجع را بهطور دورهای بازنشانی میکند.
معایب NRU
.1غیرقطعی :انتخاب تصادفی صفحات میتواند منجر به عملکرد ضعیف در موارد خاص شود.
.2گرسنگی :صفحات موجود در دسته ۳ممکن است بهطور نامحدود حفظ شوند اگر همواره ارجاع داده و تغییر داده
شوند که منجر به استفاده ناکارآمد از حافظه میشود.
.3بار اضافی :بازنشانی دورهای بیتهای مرجع مقداری بار اضافی را معرفی میکند ،بهویژه در سیستمی با تعداد
زیادی صفحه.
مالحظات پیادهسازی
جدول صفحه :هر صفحه در جدول صفحه باید یک بیت مرجع و ممکن است یک بیت تغییر ) (modifiedداشته •
بازنشانی دورهای :یک وقفه تایمری میتواند برای بازنشانی دورهای بیتهای مرجع استفاده شود .فرکانس این •
بازنشانی باید بین بار اضافی و نیازهای عملکرد تعادل برقرار کند.
ارزیابی عملکرد
نسبت برخورد) : (Hit Ratioکارایی الگوریتم NRUمیتواند با تجزیه و تحلیل نسبت برخورد ،که نسبت •
تحلیل مقایسهای NRU :میتواند تحت بارهای مختلف با سایر الگوریتمهای جایگزینی صفحه )مانند ،FIFO •
نتیجهگیری
الگوریتم جایگزینی صفحه ) Not Recently Used (NRUیک استراتژی ساده و مؤثر برای مدیریت حافظه •
درک NRUبه فهم مفاهیم وسیعتر مدیریت حافظه ،استراتژیهای جایگزینی صفحه و بهینهسازی عملکرد کمک •
میکند.
تعویض متن :عمل ذخیرهسازی وضعیت (زمینه) یک فرایند یا رشته CPUدر حال اجرا و بارگذاری وضعیت •
فرایند یا رشته دیگری برای اجرا .این شامل بهروزرسانی چندین ثبات ،شمارندههای برنامه و اطالعات مدیریت
حافظه است.
اهمیت تعویض متن
امکان چندوظیفهای :اجازه میدهد تا چندین فرایند بهطور همزمان اجرا شوند و این توهم را ایجاد میکند که •
اشتراک منابع :با تغییر بین فرایندها بر اساس وضعیت آنها (آماده ،در انتظار ،در حال اجرا) حداکثر استفاده از •
پاسخگویی :با اطمینان از اینکه فرایندهای با اولویت باال میتوانند بهموقع به CPUدسترسی پیدا کنند، •
هنگام وقوع یک تعویض متن ،سیستمعامل وضعیت فعلی فرایند در حال خارجشدن را ذخیره میکند. o
این شامل:
بلوک کنترل فرایند ) PCB :(PCBتمام اطالعات مربوط به یک فرایند را شامل میشود ،از ▪
سیستمعامل وضعیت فرایند بعدی که قرار است اجرا شود را بارگذاری میکند که شامل: o
.1اختالل رخ میدهد :یک اختالل زمانبندی یا یک رویداد باعث میشود که فرایند فعلی CPUرا ترک
کند.
.2ذخیره زمینه فعلی :سیستمعامل وضعیت فعلی فرایند در حال اجرا را در PCBآن ذخیره میکند.
.3انتخاب فرایند بعدی :زمانبند فرایند بعدی برای اجرا را بر اساس الگوریتم زمانبندی )مانند ،FCFS
(Round Robin ،SJFانتخاب میکند.
.4بارگذاری زمینه بعدی :سیستمعامل زمینه فرایند انتخاب شده را از PCBآن بارگذاری میکند.
تعریف
زمان تعویض متن :زمان کلی الزم برای انجام یک تعویض متن .این شامل زمان صرف شده برای ذخیره •
سرعت سختافزارCPU :ها و حافظههای سریعتر میتوانند زمان تعویض متن را کاهش دهند. •
اندازه وضعیت فرایند :هرچه دادههای بیشتری باید ذخیره شود (مانند مجموعههای بزرگ ثبات ،نقشههای •
طراحی سیستمعامل :ساختارها و الگوریتمهای کارآمد در سیستمعامل میتوانند زمان تعویض متن را به •
حداقل برسانند.
کشینگ :استفاده مؤثر از کشهای CPUمیتواند بازیابی دادههای فرایند را تسریع کند. •
اندازهگیری
زمان تعویض متن میتواند بهصورت چرخههای CPUیا زمان (میلیثانیه) اندازهگیری شود .معموالً در دامنه •
چند میکروثانیه تا چند میلیثانیه بسته به معماری سیستم و بار کاری قرار دارد.
تأثیر تعویض متن بر عملکرد
سربار
تعویض متنهای مکرر می توانند منجر به سربار قابل توجهی شوند و عملکرد کلی سیستم را کاهش دهند. •
زمان صرف شده برای تعویض متن بهجای اجرای فرایندهای کاربری. o
افزایش عدم تطابق کش به دلیل سوئیچ کردن فرایندها ،که منجر به کاهش کارایی کش میشود. o
تجارت
باید تعادلی بین پاسخگویی (کاهش زمان انتظار برای فرایندهای تعاملی) و سربار (کاهش فراوانی تعویض •
الگوریتمهای زمانبندی
الگوریتمهای زمانبندی مختلف دارای ویژگیهای تعویض متن متفاوتی هستند: •
:Round Robinمیتواند منجر به تعویض متنهای زیاد اگر زمانهای کوچک باشد. o
زمانبندی پیشبینیپذیر :شامل تعویض متن بهمحض اینکه یک فرایند با اولویت باالتر آماده میشود، o
مثال )۱سوال زیر را با زمانبندی ) FCFS (First-Come, First-Servedو زمان تعویض متن گفته شده حل کنید.
Arrival Context
Process BurstTime زمان شروع زمان پایان زمان کل
Time Switching Time
P1 0 4 0 4 2 6
مثال )۲سوال زیر را با زمانبندی SJFو زمان تعویض متن گفته شده حل کنید.
Arrival Burst
فرایند زمان شروع زمان پایان زمان تعویض زمینه زمان کل
Time Time
P1 0 8 0 8 1 9
مثال )۳سوال زیر را با زمانبندی Round Robinو زمان تعویض متن گفته شده حل کنید.
Arrival Burst
فرایند زمان شروع زمان پایان زمان تعویض زمینه زمان کل
Time Time
P1 0 5 0 9 2 11
مثال )۴سوال زیر را با زمانبندی Priorityو زمان تعویض متن گفته شده حل کنید.
Arrival Burst
فرایند زمان شروع زمان پایان زمان تعویض زمینه زمان کل
Time Time
P1 0 3 0 3 3 6
مثال )5سوال زیر را با زمانبندی MultiLevel Queueو زمان تعویض متن گفته شده حل کنید.
Arrival Burst
فرایند زمان شروع زمان پایان زمان تعویض زمینه زمان کل
Time Time
P1 0 6 0 6 1 7
مثال )6سوال زیر را با زمانبندی FCFSو زمان تعویض متن ۲میلیثانیه حل کنید.
Arrival Burst
فرایند زمان شروع زمان پایان زمان تعویض زمینه زمان کل
Time Time
P1 0 4 0 4 2 6
مثال )7سوال زیر را با زمانبندی SJFو زمان تعویض متن ۲میلیثانیه حل کنید.
Arrival Burst
فرایند زمان شروع زمان پایان زمان تعویض زمینه زمان کل
Time Time
P1 0 6 0 6 2 8
Arrival Burst
فرایند زمان شروع زمان پایان زمان تعویض زمینه زمان کل
Time Time
P1 0 5 0 9 2 11
مثال )9سوال زیر را با زمانبندی Priorityو زمان تعویض متن ۲میلیثانیه حل کنید.
Arrival Burst
فرایند زمان شروع زمان پایان زمان تعویض زمینه زمان کل
Time Time
P1 0 3 0 3 2 5
مثال )۱۰سوال زیر را با زمانبندی MultiLevel Queueو زمان تعویض متن ۲میلیثانیه حل کنید.
Arrival Burst
فرایند زمان شروع زمان پایان زمان تعویض زمینه زمان کل
Time Time
P1 0 6 0 6 2 8
مقدمهای بر NUMA
تعریف :دسترسی غیر یکنواخت به حافظه ) (NUMAطراحی حافظهای است که در معماریهای چندپردازندهای •
استفاده میشود ،جایی که زمان دسترسی به حافظه بسته به موقعیت حافظه نسبت به پردازنده متغیر است.
مقابل با :UMAدر معماریهای دسترسی یکنواخت به حافظه ) ، (UMAتمام پردازندهها یک فضای حافظه •
مشترک دارند و زمانهای دسترسی به حافظه یکنواخت است .در ،NUMAزمانهای دسترسی به حافظه تحت
تأثیر نزدیکی حافظه به پردازندهای است که به آن دسترسی دارد.
سیستمهای چندپردازندهای NUMA :معموالً در سیستمهای چندپردازندهای مورد استفاده قرار میگیرد ،جایی •
سازماندهی حافظه :حافظه به نودها تقسیم میشود که هر نود شامل یک یا چند CPUو یک حافظه محلی •
است .پردازندهها میتوانند به حافظه محلی خود سریعتر از حافظه متصل به پردازندههای دیگر دسترسی پیدا
کنند.
دسترسی به حافظه محلی :دسترسی سریع به حافظهای که به صورت فیزیکی در همان نود به عنوان o
CPUقرار دارد.
دسترسی به حافظه از راه دور :دسترسی کندتر به حافظهای که بخشی از نود دیگری است. o
مقیاسپذیری :معماریهای NUMAنسبت به UMAمقیاسپذیری بیشتری دارند و اجازه میدهند تعداد •
مزایای NUMA
بهبود عملکرد :با فراهم کردن دسترسی سریعتر به حافظه محلی NUMA ،میتواند عملکرد برنامههای چند •
بهینهسازی بهتر منابع :میتواند حافظه و منابع CPUرا بهتر به کار گیرد ،زیرا پردازندههای مختلف میتوانند بر •
چالشهای NUMA
پیچیدگی مدیریت حافظه :سیستمعاملها باید تکنیکهای مدیریت حافظه پیچیدهای را پیادهسازی کنند تا •
مسائل تاخیر :پیچیدگی افزایش یافته میتواند منجر به مسائل تاخیر هنگام دسترسی به حافظههای دور شود. •
تعادل بار :اطمینان از تعادل بار در بین پردازندهها و نودهای حافظه میتواند چالشبرانگیز باشد. •
تخصیص مبتنی بر محلیّت :حافظهای را به گونهای تخصیص میدهد که رشتهها تا حد ممکن به حافظه o
متناوبسازی :صفحات حافظه را در بین نودها توزیع میکند تا بارهای دسترسی به حافظه را متعادل o
کند.
زمانبندی با وابستگی :رشتهها را به پردازندههای خاص اختصاص میدهد ،ترجیحاً آنهایی که بهترین o
الگوریتمهای تعادل بار :الگوریتمهایی را پیادهسازی میکند که هم بار CPUو هم بارهای حافظه را در o
سیستمهایعامل آگاه از :NUMAسیستمهایعامل مدرن ،مانند لینوکس و ویندوز ،به پشتیبانی از مدیریت •
حافظه آگاه از NUMAپرداختهاند که به آنها اجازه میدهد بهینهترین روشهای دسترسی به حافظه را مدیریت
کنند.
مالحظات برنامهنویسی NUMA
برنامههای آگاه از :NUMAتوسعهدهندگان میتوانند برنامهها را برای NUMAبهینهسازی کنند با: •
استفاده از APIهایی که کنترل بر تخصیص حافظه را فراهم میکنند )مانند )(،numa_alloc o
پیادهسازی تنظیمات وابستگی رشتهها برای بستن رشتهها به پردازندهها و نودهای حافظه خاص. o
تاخیر حافظه :زمان صرف شده برای دسترسی به حافظه محلی نسبت به حافظه دور را اندازهگیری کنید. •
نرخ انتقال :مقدار دادههای پردازششده در یک بازه زمانی مشخص برای هر دو نوع دسترسی محلی و دور را •
ارزیابی کنید.
استفاده از : CPUتجزیه و تحلیل کنید که چگونه به طور مؤثر منابع CPUبا توجه به دسترسیهای حافظه •
استفاده میشود.
برنامههای NUMA
محاسبات با عملکرد باال ) : (HPCغالباً در ابررایانهها و مراکز دادهای که محاسبات بزرگ مقیاس نیاز به •
سیستمهای پایگاه داده NUMA :میتواند عملکرد برنامههای پایگاه داده را که نیاز به دسترسی سریع به مجموعه •
تعریف :مجازیسازی تکنیکی است که اجازه میدهد چندین سیستم عامل به طور همزمان بر روی یک ماشین •
هدف :بهبود استفاده از منابع ،ایزوالسیون ،امنیت و مدیریت بارهای کاری. •
انواع مجازیسازی
شرح :ماشینهای مجازی ) (VMsایجاد میکند که به نظر میرسد مانند کامپیوترهای مستقل عمل o
شرح :نمونههای ایزولهشده در فضای کاربری (کانتینرها) از همان هسته سیستمعامل استفاده میکنند. o
شرح :برنامهها در محیطهای ایزوله اجرا میشوند که به آنها اجازه میدهد مستقل از سیستمعامل o
شرح :منابع فیزیکی ذخیرهسازی را انتزاع میکند تا نمایی منطقی واحد ایجاد کند. o
شرح :منابع شبکه سختافزاری و نرمافزاری را به یک شبکه مجازی واحد ترکیب میکند. o
مثالها) VLANs :شبکههای محلی مجازی() SDN ،شبکهسازی تعریفشده توسط نرمافزار(. o
تکنولوژیهای مجازیسازی
نوع : (Bare-metal) ۱مستقیماً بر روی سختافزار اجرا میشود )مثالً ،VMware ESXi o
(Microsoft Hyper-V
نوع : (Hosted) ۲بر روی یک سیستمعامل میزبان اجرا میشود )مثالً ،VMware Workstation o
.(Oracle VirtualBox
کانتینرها: •
الیهای است که اجازه میدهد چندین نمونه سیستمعامل بهطور مستقل عمل کنند و اجرای VMsرا o
مدیریت میکند.
مزایای مجازیسازی
استفاده بهینه از منابع :استفاده مؤثر از سختافزار فیزیکی با تجمیع بارهای کاری. •
ایزوالسیون :ماشینهای مجازی ایزوالسیون فرآیند را فراهم میکنند و امنیت و ثبات را افزایش میدهند. •
چالشهای مجازیسازی
بار اضافی عملکرد :مجازیسازی ممکن است باعث تأخیر به دلیل انتزاع منابع شود. •
پیچیدگی :مدیریت محیطهای مجازیسازی میتواند پیچیده باشد و به مهارتهای تخصصی نیاز دارد. •
مجوزدهی و رعایت قوانین :مسائل مربوط به مجوزهای نرمافزاری در محیطهای مجازی. •
ریسکهای امنیتی :پتانسیل آسیبپذیریهای هایپر وایزر و حمالت متقابل .VM •
مدیریت مجازیسازی
مدیریت هایپر وایزر :ابزارهایی برای ایجاد ،پیکربندی و مدیریت( VMsمثالًHyper-V Manager). ، vCenter •
مدیریت کانتینر :ابزارهایی برای مدیریت کانتینرها در مقیاس( مثالً کوبرنتیسDocker Swarm). ، •
تغییرات هسته :برخی از تکنولوژیهای مجازیسازی به تغییراتی در هسته سیستمعامل برای پشتیبانی از •
درایورهای دستگاه مجازیVMs :و کانتینرها با سختافزار مجازی شده از طریق درایورهای خاص تعامل میکنند. •
فراخوانیهای سیستمی :مجازیسازی اغلب شامل درک فراخوانیهای سیستمی برای مدیریت مؤثر منابع است. •
محاسبات بدون سرور :مدیریت زیرساخت را انتزاع میکند و بر روی استقرار برنامهها بدون مدیریت سرورها تمرکز •
میکند.
محاسبات لبه :گسترش مجازیسازی به دستگاههای لبه برای پردازش دادهها نزدیک به منبع. •
هوش مصنوعی و یادگیری ماشین :بهبود تخصیص منابع و نظارت بر عملکرد در محیطهای مجازیسازی. •
اجرا در پسزمینه :دیمنها در پسزمینه اجرا میشوند و از جلسات کاربری تعاملی جدا هستند .آنها معموالً هیچ •
فرایندهای بلندمدت :آنها بهگونهای طراحی شدهاند که در زمان راهاندازی سیستم شروع شوند و تا زمان خاموشی •
ارائه خدمات :دیمن ها اغلب خدمات خاصی مانند مدیریت اتصاالت شبکه ،پردازش وظایف چاپ یا نگهداری •
قواعد نامگذاری :بسیاری از دیمنها دارای نامهایی هستند که با حرف ' 'dخاتمه مییابند ،مانند ( httpdبرای •
انواع دیمنها
.1دیمنهای سیستم :این دیمنها بخشی از سیستمعامل هستند و وظایف سطح سیستم را مدیریت میکنند.
نمونهها شامل:
.2دیمنهای کاربردی :این دیمنها خدماتی به برنامهها ارائه میدهند .نمونهها شامل:
.1راهاندازی :دیمنها معموالً در زمان بوت سیستم راهاندازی میشوند ،یا از طریق اسکریپتهای راهاندازی یا از طریق
یک مدیر خدمات مانند .systemd
.2حالت اجرایی :پس از شروع ،دیمن به حالت اجرایی وارد میشود ،جایی که منتظر رویدادها یا درخواستها برای
پردازش است.
.3پایان :دیمنها میتوانند بهطور محترمانه (در زمان خاموشی یا راهاندازی مجدد سیستم) یا بهطور ناگهانی (اگر
کشته شوند یا خراب شوند) خاتمه یابند.
ایجاد یک دیمن
.1فرک کردن :فرایند یک فرایند فرزند ایجاد میکند که در پسزمینه اجرا میشود و در حالی که فرایند والد خارج
میشود.
.2رهبر جلسه :فرایند فرزند از )( setsidبرای تبدیل شدن به رهبر جلسه استفاده میکند و از ترمینال کنترل
جدا میشود.
.3تغییر دایرکتوری کاری :دیمن معموالً دایرکتوری کاری خود را به ریشه ) (/تغییر میدهد تا از نگهداشتن هر
دایرکتوری در حال استفاده جلوگیری کند.
.4هدایت توصیفگرهای فایل استاندارد :ورودی ،خروجی و خطای استاندارد به /dev/nullیا به فایلهای گزارش
هدایت میشوند تا از تعامل دیمن با ترمینال جلوگیری شود.
دیمنها معموالً از روشهای مختلف IPCبرای ارتباط با سایر فرایندها استفاده میکنند:
سوکتها :برای دیمنهای مبتنی بر شبکه ،آنها بر روی پورتهای خاصی برای اتصاالت ورودی گوش میدهند. •
مدیران خدمات :ابزارهایی مانند systemdیا init.dبرای شروع ،متوقف کردن و راهاندازی مجدد دیمنها مدیریت •
میشوند.
گزارشگیری :دیمنها معموالً فعالیتهای خود را به فایلهای گزارش سیستم ثبت میکنند که میتوانند برای •
فایلهای پیکربندی :دیمنها معموالً فایلهای پیکربندی را میخوانند که رفتار آنها را تعیین میکند ،مانند اینکه •
بر روی کدام پورتهای شبکه گوش دهند یا چند وقت یکبار وظایف را انجام دهند.
مالحظات امنیتی
تفکیک امتیاز :بسیاری از دیمنها با امتیازات کاهشیافته اجرا میشوند تا تأثیر یک نقض امنیتی را محدود کنند. •
بهعنوان مثال ،یک دیمن سرور وب ممکن است بهعنوان یک کاربر غیر ریشه اجرا شود.
محصورسازی :تکنیکهایی مانند زندانهای chrootیا کانتینرها میتوانند دیمنها را از بقیه سیستم جدا کنند. •
شبیهسازی )(Emulation
شبیهسازی فرآیندی است که در آن رفتار یک سیستم (سختافزار یا نرمافزار) بر روی یک سیستم دیگر تقلید میشود.
این امکان را فراهم میکند که سیستمی نرمافزار یا دستورات طراحیشده برای یک معماری متفاوت را اجرا کند.
اهداف
حفظ نرمافزارهای قدیمی از طریق اجرای آنها روی سختافزارهای مدرن. •
.1شبیهسازی سختافزاری:
.2شبیهسازی نرمافزاری:
مثالQEMU :که معماریهای مختلفی مثل ARMروی x86را شبیهسازی میکند. o
تبدیل کد ماشین از یک معماری به معماری دیگر در زمان اجرا یا قبل از آن. o
تکنیکها: o
شبیهسازی به دلیل نیاز به تفسیر یا ترجمه دستورات ،هزینه عملکرد دارد. o
بین دقت در شبیهسازی سیستم اصلی و سرعت اجرای آن ،تعادلی وجود دارد. o
دقت باال ممکن است به هزینه عملکرد بیشتر منجر شود. o
اجرای نرمافزار یک سیستمعامل روی سیستمعامل دیگر (مانند اجرای برنامههای اندروید روی ویندوز با o
استفاده از .)Bluestacks
.2مجازیسازی سیستم:
اجرای نرمافزارهای قدیمی روی سیستمهای مدرن( مانند شبیهسازهای بازیهای کنسولهای قدیمی o
مثل NESیاPlayStation).
.4توسعه و آزمایش:
.5ابزارهای آموزشی:
آموزش مفاهیم سیستمعامل یا سختافزار از طریق امکان آزمایش با سیستمهای شبیهسازیشده. o
QEMU: .1
یک شبیهساز رایگان و متنباز که از شبیهسازی سختافزاری و مجازیسازی پشتیبانی میکند. o
ویژگیها: o
Wine: .2
اجرای برنامههای ویندوزی روی سیستمهای شبیه یونیکس. o
Bluestacks: .3
شبیهساز اندروید برای اجرای برنامههای موبایلی روی دسکتاپ. o
چالشهای شبیهسازی
.1گلوگاههای عملکردی:
.2مشکالت سازگاری:
همه ویژگیها یا دستورات ممکن است بهطور کامل شبیهسازی نشوند. o
.3ریسکهای امنیتی:
شبیهسازی سیستمهای غیرقابلاعتماد یا اجرای نرمافزارهای قدیمی میتواند آسیبپذیریهایی ایجاد o
کند.
.4پیچیدگی:
شبیهسازی دقیق محیطهای سختافزاری یا نرمافزاری پیشرفته ممکن است چالشبرانگیز باشد. o
مزایای شبیهسازی
معایب شبیهسازی
ممکن است نتواند تمام قابلیتهای سختافزار/نرمافزار را کامالً بازتولید کند. •
.2توسعه میانمعماری:
.3شبیهسازهای بازی:
اسپین الک الکی است که از روش چرخش ) (spinningبرای انتظار برای آزاد شدن الک استفاده میکند .برخالف
الکهای سنتی که یک نخ را در حین انتظار به خواب میفرستند ،یک نخ بهطور مداوم بررسی میکند (یا "چرخش"
میکند) تا ببیند آیا الک در دسترس است یا خیر .وقتی الک در دسترس میشود ،نخ آن را بهدست میآورد و ادامه
میدهد.
چرخش فعال :نخها بهطور فعال در انتظار میمانند و به بررسی در دسترس بودن الک میپردازند که باعث مصرف •
چرخههای CPUمیشود.
دستیابی به الک :برای بخشهای بحرانی کوتاه و با رقابت کم ،سریع و سبک است. •
بدون تعویض متن :از آنجا که نخها به خواب نمیروند ،هیچ هزینهای مرتبط با بیدار کردن آنها وجود ندارد. •
مزایا
هزینه کم :بهویژه برای بخشهای بحرانی کوتاه که رقابت برای الک نادر است ،سودمند است. •
قابل پیشبینی :اسپین الکها زمان اجرای قابل پیشبینی دارند زیرا نخها هیچ هزینهای برای تعویض متن •
نمیپردازند.
ساختار بدون الک :میتوانند در پیادهسازی ساختارهای داده بدون الک استفاده شوند که در آن نخها بهطور •
معایب
اتالف منابع : CPUاگر یک نخ برای مدت طوالنی در انتظار بماند ،منابع CPUرا هدر میدهد که میتواند •
اسپین الکها به مسائل چرخش اولویت نمیپردازند که میتواند منجر به مسدود شدن کارهای:چرخش اولویت •
پیادهسازی
یک پیاده سازی معمول از اسپین الک شامل استفاده از عملیات اتمیک برای اطمینان از اینکه دستیابی و رهاسازی الک
: در اینجا یک مثال کد شبهزبان آورده شده است.بهصورت امن و بدون تداخل انجام میشود
using System;
using System.Threading;
/// <summary>
/// Acquires the lock. Busy-waits until the lock is available.
/// </summary>
public void Lock()
{
while (true)
{
// Try to acquire the lock atomically
if (Interlocked.CompareExchange(ref _lockState, 1, 0) == 0)
{
// Successfully acquired the lock
return;
}
/// <summary>
/// Releases the lock.
/// </summary>
public void Unlock()
{
// Set the lock state to 0 (unlocked)
Interlocked.Exchange(ref _lockState, 0);
}
}
// Example usage
class Program
{
private static SpinLock spinLock = new SpinLock();
private static int sharedCounter = 0;
t1.Start();
t2.Start();
t1.Join();
t2.Join();
کاربردها
. برای محافظت از ساختارهای داده مشترک زمانی که پیشتوقف غیرمجاز است:مدیران وقفه •
اسپین الک تطبیقی :نسخهای پیشرفتهتر که در صورت رقابت باال ،چرخش را کاهش میدهد و اگر الک بالفاصله •
بهدست نیاید ،پردازنده را رها میکند و در نتیجه از اتالف چرخههای CPUجلوگیری میکند.
مقایسهها
اسپین الک در مقابل : mutexدر حالی که هر دو برای همزمانسازی استفاده میشوندmutex ،ها نخ را مسدود •
میکنند و در صورت عدم دسترسی به الک آن را به خواب میفرستند ،در حالی که اسپین الکها نخ را فعال نگه
میدارند .اسپین الکها معموالً برای زمانهای انتظار کوتاه کارآمدتر هستند ،در حالی که mutexها برای
زمانهای انتظار طوالنیتر بهتر عمل میکنند.
بهترین شیوهها
محدود کردن استفاده :از اسپین الکها تنها برای بخشهای بحرانی کوتاه و بدون رقابت استفاده کنید. •
اجتناب از استفاده در فضای کاربر :به دلیل اتالف ، CPUبرای برنامههای فضای کاربر بهتر است از mutexها یا •
ترکیب با استراتژیهای پسزمینه :هنگام استفاده از اسپین الکها در سناریوهای با رقابت باال ،استراتژیهای •