همروندی طراحی شده تا به سیستم عامل برای مدیریت اجرای چندین وظیفه مختلف به صورت موازی هم کمک کند. در دنیای محاسبات مدرن، سیستم عاملها نقش بسیار حیاتی را بازی میکنند. یکی از مهمترین وظایف این سامانهها این است که مطمئن شوند کامپیوتر میتواند چندین کار و وظیفه مختلف را به صورت همزمان انجام دهد. کلیدیترین گزینه برای کسب این اطمینان استفاده از تکنیک همروندی است. «همروندی در سیستم عامل» (Concurrency In OS) به چندین وظیفه و پردازش مختلف برای اجرا شدن به صورت همزمان کمک میکند. این تکنیک اجرای همزمان به صورت چشمگیری کارآمدی سیستم را ارتقا میدهد. هرچند پیادهسازی همروندی در سیستمهای عامل، همراه با خود چالشها و پیچیدگیهایی را نیز میآورد.
در این مطلب از مجله فرادرس به بررسی مفهوم همروندی و اصول آن برای اجرا در سیستم عامل، مزایا، محدودیتها و نقاط ضعف این تکنیک پرداختهایم. در ابتدا از تعریف همروندی شروع کرده و سپس اصول آن را بیان کردیم. در نهایت هم با انواع مزایا، معایب، چالشها و کاربردهای همروندی در دنیای واقعی آشنا شدهایم.
همروندی در سیستم عامل چیست؟
همروندی در سیستم عامل به توانایی سیستم برای مدیریت و اجرای چندین وظیفه و پردازش مجزا به صورت همزمان گفته میشود. همروندی از طریق ایجاد فضایی شبیه به کار موازی – حتی با وجود پردازشگر تک هستهای – به چندین وظیفه مختلف کمک میکند تا به صورت همزمان کار کنند.
همروندی با استفاده از چندین تکنیک مختلف مانند «چندوظیفهای» (Multitasking)، «چندنخی» (Multithreading) و «چندپردازشی» (Multiprocessing) ایجاد میشود. تمام این موارد را در فهرست پایین توضیح دادهایم.
- «چندوظیفهای» (Multitasking): چندوظیفهای شامل اجرای چندین وظیفه متفاوت از هم، همراه با امکان جابهجا شدن سریع بین آنها است. به هر وظیفه، محدوده زمانی خاصی برای اجرا داده میشود. سیستم عامل در زمان اجرا با سرعت بسیار زیادی بین این وظایف جابهجا شده و در نتیجه از دید ناظر بیرونی، وظایف مورد نظر به صورت همزمان اجرا میشوند.
- «چندنخی» (Multithreading): چندنخی از مزیتهای پردازندهها یا سی پی یو های مدرن استفاده میکند. این CPU-ها اکثرا از چندین هسته محاسباتی مختلف تشکیل شدهاند. با کمک این تکنیک، هر «نخ» (Thread) از فرایندی، بر روی هسته جداگانهای اجرا میشود. در نتیجه این نوع پردازش، موازی کاری واقعی با کمک پردازندههای مجزا روی میدهد.
- «چندپردازشی» (Multiprocessing): چندپردازشی حتی پا را یک قدم فراتر نیز میگذراد. این روش به صورت واقعی چند فرایند مجزا از هم را بر روی چندین هسته فیزیکی CPU مختلف اجرا میکند. در نتیجه به فنآوری اجرای موازی برنامهها همراه با سرعت بالاتر و کارآمدی بیشتر میرسیم.
چرا به همروندی در سیستم عامل نیاز داریم؟
به دلیل نیاز روزافزون به استفاده کارآمدتر از منابع کامپیوتر، تقاضا برای اجرای همروند برنامهها بوجود آمده است. در فهرست زیر درباره ضروری بودن استفاده از تکنیک همروندی چند دلیل اصلی را بیان کردهایم.
- بهرهبرداری از منابع: همروندی باعث میشود که CPU، حافظه و دیگر منابع به صورت بسیار بهینهتری استفاده شوند. بدون استفاده از همروندی، CPU ممکن است در زمان انتظار برای تکمیل بعضی از کارها مثلا مدیریت سختافزارها و نرم افزارهای ورودی و خروجی I/O بیکار و منتظر بماند. این مسئله هم منجر به بهرهبرداری ناکارآمد از منابع میشود.
- پاسخگویی: سیستمهای همروند توان پاسخگویی بسیار بیشتری دارند. در این نوع از سیستمها کاربران میتوانند با چندین اپلیکیشن مختلف به صورت همزمان تعامل کنند. به همین صورت سیستم عامل هم با سرعت بالایی بین این اپلیکیشنها جابهجا میشود. در نتیجه تجربه کاربری بسیار روانتری توسط سیستم برای کاربران فراهم میشود.
- توان عملیاتی: استفاده از تکینک همروندی باعث ارتقا توان عملیاتی کلی سیستم میشود. پردازش چند وظیفه به صورت همزمان، باعث انجام کار بسیار بیشتری در محدوده زمانی مشخص میشود.
- پردازش بیدرنگ: اپلیکیشنهای مشخصی، مانند نرمافزارهای پخش فایلهای چندرسانهای و بازیهای کامپیوتری نیاز به پردازش به صورت بیدرنگ دارند. همروندی اجرای بدون معطلی و وقفه این اپلیکیشنها را تضمین میکند. در نتیجه تجربه کاربری بسیار روانتری، فراهم میشود.
اصول همروندی در سیستم عامل
برای اینکه همروندی به صورت کارآمدی پیادهسازی شود، طراحان سیستم عامل از چند اصل کلیدی تبعیت میکنند. تمام این اصول مهم را در فهرست زیر توضیح دادهایم.
- «ایزولهسازی فرایند» (Process Isolation): هر فرایندی باید فضای حافظه و منابع مربوط به خود را داشته باشد. در این صورت است که از تداخل در کار و دسترسی به دادههای فرایند جاری توسط فرایندهای دیگر جلوگیری میشود. این ایزولهسازی برای محافظت از پایداری سیستم، بسیار ضروری است.
- «همگامسازی» (Synchronization): همروندی باعث بروز امکان تداخل دادهها و ایجاد فضای رقابتی برنامهها با یکدیگر میشود. مکانیزمهای مخصوص همگامسازی مانند «قفلها» (Locks)، «سمافورها» (Semaphores) و Mutexe-ها برای مطابقدادن دسترسی به منابع اشتراکی و تضمین انسجام دادهها بهکار برده میشوند.
- «جلوگیری از وقفه» (Deadlock Avoidance): سیستم عاملها الگوریتمهای مخصوصی را برای کشف و پیشگیری از بروز وقفه پیادهسازی میکنند. وقفه یا بنبست در پردازش، وقتی روی میدهد که فرایندها تا زمان نامحدودی منتظر آزاد شدن منبع خاصی برای استفاده باقی بمانند. این چنین بنبستهایی میتواند منجر به توقف کامل کار کل سیستم شود.
- «انصاف» (Fairness): سیستم عامل باید به صورت منصفانهای منابع خود از قبیل CPU را در میان تک به تک پردازشها تقسیم کند. این کار از استفاده انحصاری منابع سیستم توسط سایر پردازشهای سیستم عامل جلوگیری میکند.
آموزش سیستم عامل در فرادرس
سیستم عاملها اصلیترین نرمافزاری هستند که هر کامپیوتر باید داشته باشد. امروزه تقریبا همه دستگاههای دارای توان محاسباتی مانند تلویزیونها، موبایلها، رباتها، ساعتهای هوشمند، حتی خودروهای خودران و غیره نیز دارای سیستم عامل مخصوص به خود هستند. روزبهروز استفاده از کامپیوتر افزایش پیدا کرده و به همینترتیب دنیای طراحی سیستم عامل نیز درحال پیشرفتهتر شدن است. به همین دلیل برای تمام افراد فعال در این صنعت و دانشجویان مشغول به تحصیل لازم است که با نحوه کار سیستم عاملها و مدیریت فرایندهای آنها آشنا شوند.
وبسایت فرادرس یکی از بزرگترین منابع فیلمهای آموزشی داخل کشور است. این وبسایت از تمام دنیا قابل دسترسی است و آموزشهای خود را در همه سطوح علمی تولید میکند. فرادرس تلاش کرده که تمام حوزههای تحصیلی و تکنولوژیکی را پوشش دهد. سیستم عاملها هم یکی از زیر مجموعههای مهم حوزه علوم کامپیوتری هستند. به همین جهت در فرادرس فیلمهای آموزشی زیادی برای آموزش انواع سیستم عاملها تولید شدهاند که در بخش زیر چند مورد از آنها را معرفی کردهایم. در صورت نیاز با کلیک بر روی تصویر بالا به صفحه اصلی این مجموعه آموزشی رفته و از سایر فیلمها نیز دیدن کنید.
چالش ها مزایا محدودیت ها و معایب همروندی
مدیریت فرایندها در سیستم عامل یکی از حیاتیترین وظایفی است که برعهده این نرمافزارهای بزرگ قرار گرفته. اما سیستم عاملها کارهای پیچیده و مهم دیگری نیز انجام میدهند که آشنایی با آنها مهارت برنامهنویسان را در طراحی اپلیکیشنهای کاربردی افزایش میدهد. برای آموزش سیستم عامل میتوانید فیلم آموزش سیستم عامل به صورت جامع و کاربردی را از فرادرس مشاهده کنید. به منظور کمک به مخاطبان مجله لینک این فیلم را در پایین نیز قراردادهایم.
همینطور که تا به اینجا آموختیم، همروندی برای مدیریت اجرای برنامهها به صورت همزمان استفاده میشود. همروندی برای مدیریت ارسال پردازشها به CPU یا همان زمانبندی این تکنیک از الگوریتمهای مختلفی استفاده میکند. یکی از این گزینهها، الگوریتم RR است. برای آشنایی با این الگوریتم میتوانید مطلب الگوریتم RR چیست؟ توضیح الگوریتم زمان بندی نوبت گردشی را از مجله فرادرس مطالعه کنید.
با اینکه همروندی منافع بسیار زیادی را فراهم میکند، اما چند چالش و مشکل خاص را نیز ایجاد کرده است. در این بخش از مطلب با چالشها، مزایا، محدودیتها و معایب همروندی آشنا میشویم.
چالش های پیش روی همروندی در سیستم عامل
در زمان پیادهسازی همروندی، چالشهایی وجود دارند که به احتمال زیاد روی خواهند داد و توسعهدهندگان باید برای رفع آنها از پیش برنامهریزی کرده باشند. در بخش زیر این چالشها را معرفی کردهایم.
- شرایط رقابتی: این مسئله، زمانی روی میدهد که چندین نخ و فرایند مختلف به صورت همزمان و بدون همگامسازی مناسب به منابع اشتراکی، دسترسی پیدا کنند. در نبود مکانیزمهای موثر همگامسازی، شرایط رقابتی میتوانند منجر به رفتارهای غیرقابل پیشبینی و نابودی یا خرابی دادهها شوند. در نتیجه این اتفاقات، در دادههای به اشتراک گذاشته شده، تناقض یا ناپایداری ایجاد میشود. شاید اجرای اپلیکیشنها متوقف شود. یا حتی در صورت وجود دادههای حساس در فرایندهای در حال کار، ممکن است این اتفاق، باعث بروز نقاط ضعف امنیتی نیز بشود.
- بنبست: بنبست، زمانی اتفاق میافتد که دو فرایند به صورت همزمان منتظر استفاده از منبعی هستند که در دست فرایند دیگر است. برای مثال فرایند «آ» منبع اول را اشغال کرده و منتظر منبع دوم است تا به آنجا منتقل شود. در همین لحظه فرایند «ب» هم منبع دوم را اشغال کرده و منتظر منبع اول است تا به آنجا منتقل شود. این اتفاق ممکن است به صورت همزمان بین چند فرایند هم اتفاق بیافتد. در نتیجه تمام فرایندهای درگیر بنبست از ادامه کار خود باز میمانند. حالت بن بست بین فرایندها حتی میتواند کل سیستم را از کار بیاندازد. در نتیجه کاربران بر اثر ایجاد اختلال در انجام کارها دچار حس درماندگی خواهند شد.
- «وارونگی اولویت» (Priority Inversion): وارونگی اولویت، زمانی رخ میدهد که وظیفهای با اولویت پایین به صورت موقت منبعی را در اشغال خود نگهداشته است که وظیفههای با اولویت بالاتر نیاز دارند. این مسئله میتواند باعث بروز تاخیر در اجرای وظایف با اولویت بیشتر شود. در نتیجه کارآمدی و نسبت پاسخگویی سیستم کاهش پیدا میکند.
- گرسنگی منابع: گرسنگی منابع، زمانی روی میدهد که فرایندی نمیتواند به منبع مورد نیاز خود دسترسی پیدا کند. در نتیجه برای این فرایند، کارآمدی و پاسخگویی به میزان بسیار شدیدی کاهش پیدا میکند. این مسئله زمانی اتفاق میافتد که سیستم عامل فرایند تخصیص منبع را به درستی مدیریت نکند یا اینکه شاید فرایندهای مشخصی از منابع به صورت انحصاری استفاده میکنند.
مزایا استفاده از همروندی
همروندی در سیستم عامل شامل چندین مزیت مجزا و منحصر به فرد است. در این قسمت مهمترین مزیتهای این تکنیک را به صورت فهرستوار بیان کردهایم.
- افزایش بهرهوری سیستم: همروندی با استفاده موثر از منابع در دسترس به میزان چشمگیری بهرهوری سیستم را ارتقا میدهد. از طریق اجرای چندین وظیفه مختلف به صورت همروند، منابعی مانند CPU، حافظه و سخت افزارهای ورود و خروج اطلاعات I/O به صورت دائمی درگیر هستند. در نتیجه زمان بیکاری منابع کاهش پیدا کرده و توان عملیاتی سیستم به صورت کلی افزایش پیدا میکند.
- «پاسخگویی» (Responsiveness): همروندی تضمین میکند که کاربران با کمترین زمان پاسخ روبهرو شوند. حتی وقتی که با چندین اپلیکیشن مختلف کار میکنند. سیستم عاملی که بیمعطلی توانایی جابهجایی بین وظایف گوناگون را دارد، تصویری از اجرای عملیات چند وظیفهای را به صورت بسیار روان و مرتب ارائه میدهد، در نتیجه باعث ارتقای کیفیت تجربه کاربری میشود.
- مقیاسپذیری: همروندی در سیستم عامل به کامپیوترها کمک میکند که از طریق اضافه کردن پردازندهها و هستههای بیشتر مقیاس سطح عملیاتی خود را افزایش دهند. درنتیجه استفاده از این تکنیک برای هردو محیط محاسباتی تکهستهای یا چندهستهای مناسب است.
- «تحمل خطا» (Fault Tolerance): همروندی باعث ایجاد توان تحمل خطا در سیستم میشود. تحمل خطا، جنبه بسیار حیاتی از پایداری و استحکام سیستم عامل است. در سیستمهای چندپردازندهای، اگر یکی از پردازندهها با خطایی روبهرو شود، پردازندههای باقیمانده میتوانند به پردازش وظایف دیگر بپردازند. این افزونگی در توان محاسباتی، باعث کاهش زمان بیکاری سیستم شده و عملکرد بیوقفه سیستم را تضمین میکند.
محدودیت های همروندی
با اینکه همروندی یکی از ضروریترین و مفیدترین مکانیزمهای مدیریت فرایندها در سیستم عامل است. اما این مکانیزم هم دارای نقاط ضعف و محدودیتهایی است که برای پیادهسازی حرفهای سیستم باید نسبت به آنها مطلع باشیم. در فهرست زیر مهمترین محدودیتهای استفاده از همروندی را بیان کردهایم.
- پیچیدگی: دیباگ کردن و آزمایش کدهای همروند اغلب اوقات نسبت به کدهای مرتب و متوالی، سختتر و چالشآمیزتر است. زیرا خطاهای این نوع از کدها میتوانند غیرقابل پیشبینی باشند و برطرف کردن آنها نیز مشکل است. حل مشکلات کدهای برنامههای همروند، نیازمند برنامهریزی بسیار دقیق، استراتژیهای آزمایش کد مستحکم و طراحیهای سنجیده است.
- سربار: مکانیزمهای مربوط به همگامسازی باعث ایجاد سربار در هزینهها میشوند. در نتیجه منجر به کندتر شدن سرعت اجرای تمام وظایف به صورت کلی میشوند. مخصوصا در سناریوهایی که همگامسازی بیش از حد اتفاق میافتد، امکان بروز سربار بر روی هزینههای عملیاتی نیز بیشتر میشود.
- شرایط رقابتی: کار در شرایط رقابتی نیازمند ملاحظه بسیار دقیق در زمان طراحی و سختگیری در زمان آزمایش است. فقط در این صورت است که میتوان از خرابی دادهها و بروز رفتارهای پیشبینی نشده جلوگیری کرد.
- مدیریت منابع: حفظ تعادل در استفاده از منابع برای جلوگیری از گرسنگی منبع یا رقابت بیش از حد بر سر استفاده از منبع، یکی از ضروریترین وظایف سیستم عامل است. برای حفظ پایداری سیستم، وجود مدیریت دقیق بر روی مصرف منابع حیاتی است.
معایب همروندی
همروندی چندین مشکل بحرانی را ایجاد میکند که طراحان سیستم عامل و توسعهدهندگان نرمافزار حتما باید مدنظر داشته باشند. در فهرست پایین مهمترین موارد را جمعآوری و ارائه کردهایم.
- امنیت: اجرای چندین برنامه به صورت همروند، ممکن است که باعث دسترسی به دادهها بدون مجوز یا نشت دادهها شود. مدیریت کنترل دسترسی به داده و امنیت اطلاعات در محیطهای همروند، وظیفهای بسیار مهم و مشکل است. این کار نیازمند ملاحظات و برنامه ریزی بسیار دقیق است.
- تطبیقپذیری: در زمان یکپارچهسازی نرمافزارهای قدیمی با محیطهای همروند، شاید مشکلات مربوط به تطبیقپذیری رخ دهد. در نتیجه باعث کاهش کارآمدی محیط همروند میشود.
- آزمایش و عیبیابی: عیبیابی کدهای همروند، وظیفهای مشکل است. در سیستمهایی که چندین فرایند را به صورت همزمان پردازش میکنند، شناسایی و تکرار مشکلاتی مانند شرایط رقابتی و سایر مشکلات مربوط به همروندی به احتمال زیاد سختتر میشود.
- مقیاسپذیری: همروندی میتواند کارها را با سرعت بیشتری انجام دهد. اما همه وظایف را نمیتوان بهسادگی و در زمان یکسانی انجام داد. بسیار مهم است که بفهمیم کدام وظایف را میتوان به بخشهای جداگانهای از هم تقسیم کرد و کدام وظایف تقسیمپذیر نیستند. درک این مسئله به افزایش کارآمدی سیستم کمک میکند.
کاربردهای همروندی در دنیای واقعی
همروندی تقریبا در تمام بخشهای مدرن و پیشرفته سیستمهای کامپیوتری بهکار میرود. در این بخش از مطلب چند مورد از کاربردهای این ساختار مدیریت منابع را بیان کردهایم.
سرورهای اینترنتی چند نخی
سرورهای اینترنتی نیاز دارند که چندین درخواست مختلف رسیده از چند کاربر متفاوت را به صورت همزمان مدیریت کنند. وبسرور چندنخی از نخها برای مدیریت همه درخواستهای رسیده به صورت همروند استفاده میکند. در نتیجه کارآمدی و پاسخگویی سرور افزایش پیدا میکند.
پایگاه های داده همروند
برای بسیار از برنامهها استفاده از پایگاه داده حیاتی است. به همین ترتیب هم ضروری است که برای مدیریت دسترسی چندین کاربر مختلف به دادههای یکسان و به صورت همزمان از همروندی استفاده شود. پایگاههای داده همروند از مکانیزمهای قفلگذاری و ایزولهسازی نقل و انتقالات داده استفاده میکنند. در این صورت از دسترسی چندین کاربر به پایگاه داده به صورت امن و کاربردی مطمئن میشوند.
محاسبات موازی
محاسبات موازی شامل تجزیه مسائل بزرگ به وظایف کوچکتری است که میتوانند به صورت همزمان بر روی چندین پردازشگر یا کامپیوتر مختلف اجرا شوند. این رویکرد را میتوان در حوزه محاسبات علمی، تحلیل داده و یادگیری ماشین بهکار گرفت. در این نوع از مسائل، استفاده از پردازشهای موازی به میزان چشمگیری کارایی الگوریتمهای پیچیده را ارتقا میدهد.
مجموعه جامع فیلم های آموزش برنامه نویسی
در دنیای آینده، برنامه نویسی یکی از مهمترین مهارتهایی است که نه تنها برای دانشجویان رشته مهندسی کامپیوتر، بلکه برای سایر رشتهها و زمینهها نیز به شکل ضروری، مورد نیاز خواهد بود. هر روز بر تعداد موقعیتهای شغلی مرتبط با برنامهنویسی افزوده میشود. از طرفی، کار با کامپیوتر و توانایی پیادهسازی ایدهها و الگوریتمها تبدیل به بخشی جداییناپذیر از فرایند تحقیق و پژوهش در اکثر شاخههای علمی، شده است. در نتیجه همه دانشجویان نیازمند یادگیری و کسب مهارتهای برنامهنویسی هستند. در ادامه چند مورد از فیلمهای آموزشی برنامهنویسی مربوط به زبانهای مختلف را در فرادرس معرفی کردهایم. در صورت تمایل با کلیک بر روی تصویر زیر به صفحه اصلی این مجموعه آموزشی رفته و از گزینههای بسیار زیاد موجود دیدن کنید.
جمعبندی
در این مطلب از مجله فرادرس به بررسی همروندی پرداختیم. همروندی عنصری حیاتی در سیستمعاملهای مدرن است. با کمک این مکانیزم نرخ استفاده کارآمد از منابع افزایش پیدا میکند. کارآمدی سیستم ارتقا پیدا کرده و در نهایت کاربر هم با پاسخگویی بسیار بهتری روبهرو میشود. در انجام اینکار باید چالشهایی مانند «شرایط رقابتی» (Race Conditions)، «بنبستها» (Deadlocks) و پیچیدگی مدیریت منابع را با دقت و برنامهریزی حل کرد. برای پیادهسازی سامانه همروند کارآمد، باید از اصول بنیادین مانند ایزولهسازی فرایندها، همگامسازی، پیشگیری از بنبست و تخصیص منابع منصفانه تبعیت کرد.
همروندی در سیستم عامل، مزایایی مانند افزایش کارایی، مقایسپذیری، تحمل خطا و پاسخگویی را ارائه میدهد. اما در مقابل، مشکلاتی مانند افزایش پیچیدگی، «سربار همگامسازی» (Synchronization Overhead) و احتمال رویداد «شرایط رقابتی» را نیز به وجود میآورد. طراحان سیستم عامل و توسعهدهندگان در زمان افزودن همروندی باید مشکلات مربوط به امنیت دادهها، تطبیقپذیری، آزمایش کدها،عیبیابی و مقیاسپذیری را حل کنند. این مسائل به میزان زیادی بر روی نحوه کار سیستم و تجربه کاربر تاثیر میگذارند.
مصطفی رشیدی دانشآموخته مقطع لیسانس مهندسی نرم افزار است. علاقه بسیار زیادی به هوش مصنوعی و دیتاساینس دارد. برای مجله فرادرس در زمینه هوش مصنوعی و برنامهنویسی و مطالب مرتبط با علوم کامپیوتری مینویسد.
source