رایانش همزمان کیست؟ توضیح بده.
رایانش هم‌رو یا رایانش همزمان نوعی رایانش است که در آن چندین محاسبه به صورت همروند (یعنی در بازه‌های زمانی مشترک و روی‌هم) اجرا می‌شود - به جای آنکه پشت‌سرهم باشند (که در این حالت قبل از شروع دومی، اولی باید تمام شود).محاسبات همزمان نوعی محاسبات است که در آن چندین محاسبه همزمان – در طول مدت زمانی با هم تداخل دارند - به جای اینکه به‌طور متوالی، با یک تکمیل قبل از شروع بعدی انجام می‌شود.این خاصیت یک سیستم است - چه برنامه ای، رایانه‌ای یا شبکه ای - که در آن یک نقطه اجرای جداگانه یا «موضوع کنترل» مجزا برای هر فرایند وجود دارد. سیستم همزمان یک سیستم است که در آن محاسبات می‌تواند پیشرفت کند بدون اینکه منتظر بماند تمام محاسبات دیگر انجام شود. محاسبات همزمان نوعی برنامه‌نویسی مدولار است. در الگوی خود، یک محاسبه کلی به زیرمجموعه‌ها تبدیل شده‌است که ممکن است همزمان انجام شود. پیشگامان در زمینه محاسبات همزمان شامل هموار می‌شود.مقدمه.مفهوم محاسبات همزمان اغلب با مفهوم مرتبط اما متمایز محاسبات موازی اشتباه گرفته می‌شود ، [۲] [۳] اگرچه هر دو را می‌توان به عنوان «چندین فرآیند در همان مدت زمان اجرا» توصیف کرد. در محاسبات موازی، اجرای در همان لحظه فیزیکی اتفاق می‌افتد: به عنوان مثال: در پردازنده‌های جداگانه یک ماشین چند پردازنده، با هدف سرعت بخشیدن به محاسبات –– محاسبات موازی بر روی یک پردازنده تک (یک هسته‌ای) غیرممکن است، زیرا فقط یک محاسبه در هر لحظه ممکن است رخ دهد (در طول هر چرخه ساعت واحد). در مقابل، محاسبات همزمان شامل طول عمر فرایند است که با هم همپوشانی دارد، اما اجرای آن نباید در همان لحظه اتفاق بیفتد. هدف در اینجا الگوبرداری از فرایندهای موجود در دنیای خارج است که همزمان اتفاق می‌افتد، مانند چندین مشتری که به‌طور همزمان به یک سرور دسترسی دارند. ساختار سیستم‌های نرم‌افزاری که از چندین قطعه همزمان تشکیل شده‌اند، می‌توانند برای مقابله با پیچیدگی، صرف‌نظر از اینکه قطعات به صورت موازی اجرا شوند می‌تواند مفید باشد. {۴}:۱ببه عنوان مثال، فرآیندهای همزمان با یکپارچه کردن مراحل اجرای هر فرایند از طریق برش‌های به اشتراک گذاری زمان می‌توانند بر روی یک هسته انجام شوند: فقط یک فرایند در یک زمان اجرا می‌شود، و اگر در طول برش زمانی خود کامل نشود، متوقف می‌شود، فرایند دیگری متوقف می‌شود. شروع یا از سر گرفته می‌شود و بعداً مراحل اصلی از سر گرفته می‌شود. به این ترتیب، چندین فرایند به صورت جزئی در یک لحظه اجرا می‌شوند، اما فقط یک فرایند در آن لحظه اجرا می‌شود. (نیاز به استناد).محاسبات همزمان ممکن است به صورت موازی انجام شود ، [۲] [۵] برای مثال، با اختصاص هر فرایند به یک هسته پردازنده یا هسته پردازنده جداگانه، یا توزیع یک محاسبه در یک شبکه. اما به‌طور کلی، زبانها، ابزارها و تکنیک‌های برنامه‌نویسی موازی ممکن است برای برنامه‌نویسی همزمان مناسب نباشد و بالعکس. (نیاز به استناد)زمان‌بندی دقیق اجرای وظایف در یک سیستم همزمان بستگی به زمانبندی دارد و وظایف همیشه نباید همزمان انجام شوند. به عنوان مثال، با توجه به دو وظیفهT1 و) :T2نیاز به استناد(T1ممکن است قبل از T2اجرا یا به پایان برسد یا برعکس (سریال و متوالی)T1و T2 ممکن است به‌صورت متناوب اجرا شوند (سریال و همزمان(T1 و T2 ممکن است همزمان در همان لحظه از زمان اجرا شوند (موازی و همزمان)کلمه «دنباله» به عنوان یک متضاد برای «همزمان» و «موازی» استفاده می‌شود. هنگامی که اینها به‌طور مشخص می‌شوند، همزمان / دنباله ای و موازی / سریال به عنوان جفت‌های مخالف استفاده می‌شوند. [۶] برنامه ای که در آن وظایف یک بار اجرا شود (یک سریال و بدون موازی) بدون در هم آمیختن (پی در پی، بدون همزمانی: هیچ کاری شروع نمی‌شود تا اینکه کار قبلی تمام شود) به یک برنامه سریال گفته می‌شود. مجموعه ای از کارهایی که می‌توانند به صورت سریال برنامه‌ریزی شوند، سریال هستند که کنترل همزمانی را ساده می‌کند. (نیاز به استناد).هماهنگی دسترسی به منابع مشترک.اصلی‌ترین چالش در طراحی برنامه‌های همزمان ، کنترل همزمان است: حصول اطمینان از توالی صحیح تعامل یا ارتباطات بین اجراهای مختلفمحاسباتی، و هماهنگی دسترسی به منابعی که در بین اجراها مشترک هستند(۵) مشکلات بالقوه شامل شرایط مسابقه، بن‌بست و گرسنگی منابع است. به عنوان مثال، الگوریتم زیر را در نظر بگیرید تا برداشت‌ها را از یک حساب تأیید نشان داده شده توسط مانده منابع مشترک:فرض کنید تعادل = ۵۰۰، و دو موضوع همزمان باعث می‌شود تماسها گرفته(۳۰۰) و خارج شوند (۳۵۰). اگر خط ۳ در هر دو عملیات قبل از خط ۵ اجرا شود، هر دو عملیات می‌یابند که تعادل&gt; = برداشت به صورت صحیح ارزیابی می‌شود و اجرای آن به کم کردن مقدار برداشت ادامهمی‌یابد. با این حال، از آنجا که هر دو فرایند برداشت‌های خود را انجام می‌دهند، در کل مبلغ برداشت شده بیشتر از مانده اصلی خواهد بود. این نوع مشکلات با منابع مشترک از استفاده از کنترل همزمان استفاده می‌کند یا الگوریتم‌های غیر مسدود کننده.مزایا.مزایای محاسبات همزمان شامل موارد زیر است:مدل‌ها برای درک و تجزیه و تحلیل سیستم‌های محاسبات همزمان شامل موارد زیر است:پیاده‌سازی.ببرای اجرای برنامه‌های همزمان می‌توان از چندین روش مختلف استفاده کرد، مانند اجرای هر یک از اجرای محاسباتی به عنوان یک فرایند سیستم عامل یا اجرای فرایندهای محاسباتی به عنوان مجموعه موضوعات در یک فرایند سیستم عامل واحد.تعامل و ارتباطات.در برخی از سیستم‌های محاسبات همزمان، ارتباط بین اجزای همزمان از برنامه‌نویس پنهان است (به عنوان مثال، با استفاده از آینده)، در حالی که در برخی دیگر باید صریحاً اداره شود. ارتباطات صریح را می‌توان به دو طبقه تقسیم کرد:تاریخچه.محاسبات همزمان از سالهای ۱۹ و اوایل قرن ۲۰ از کارهای قبلی در مورد راه‌آهن و تلگراف ایجاد شده‌است و برخی از اصطلاحات به این دوره مانند سمفورها مربوط است. اینها برای پاسخ به این سؤال است که چگونه می‌توان چندین قطار را در همان سیستم راه‌آهن اداره کرد (جلوگیری از برخورد و حداکثر بهره‌وری) و چگونگی اداره انتقال چندگانه بر روی یک مجموعه مشخص از سیم (بهبود کارایی) از جمله از طریق تقسیم زمان چند برابر (۱۸۷۰).مطالعه آکادمیک الگوریتم‌های همزمان در دهه ۱۹۶۰ آغاز شد و دیجکسترا (۱۹۶۵) به عنوان اولین مقاله در این زمینه شناخته شد و محرومیت متقابل را شناسایی و حل کرد. (۷)شیوع.همزمانی در محاسبات گسترده‌است، از سخت‌افزار سطح پایین در یک تراشه به شبکه‌های جهانی رخ می‌دهد. نمونه‌های زیر:در سطح سیستم عامل:در سطح شبکه، سیستم‌های شبکه به‌طور کلی با ماهیت خود همزمان هستند، زیرا از دستگاه‌های جداگانه تشکیل شده‌اند.زبانهایی که از برنامه‌نویسی همزمان پشتیبانی می‌کنند.زبانهای برنامه‌نویسی همزمان زبان‌های برنامه‌نویسی هستند که از سازه‌های زبانی برای همزمانی استفاده می‌کنند. این سازه‌ها ممکن است شامل چند رشته، پشتیبانی از محاسبات توزیع شده ، انتقال پیام، منابع مشترک (از جمله حافظه مشترک) یا آینده و وعده‌ها باشد. چنین زبانهایی گاهی به عنوان زبانهای همگرا محور یا زبانهای برنامه‌نویسی همزمان محور توصیف می‌شود.امروزه متداول‌ترین زبان‌های برنامه‌نویسی که دارای سازه‌های خاص برای همزمانی هستند Java و C # هستند. هر دوی این زبانها اساساً از یک مدل همزمانی حافظه مشترک استفاده می‌کنند، و از قفل ارائه شده توسط مانیتورها استفاده می‌شود (اگرچه مدل‌های ارسال پیام در بالای مدل حافظه مشترک مشترک وجود دارد). از بین زبانهایی که از الگوی همگام سازی پیام انتقال استفاده می‌کنند احتمالاً ارلانگ امروزه بیشترین کاربرد را در صنعت دارد. نیاز به استناد.بسیاری از زبانهای برنامه‌نویسی همزمان بیشتر به عنوان زبان‌های تحقیقاتی (به عنوان مثال Picو نه به عنوان زبان‌هایی برای استفاده در تولید، توسعه یافته‌اند) با این حال زبانهایی مانند ارلانگ، لیمبو و اوکام در ۲۰ سال گذشته در زمانهای مختلف شاهد استفاده صنعتی بوده‌اند. زبانهایی که همزمانی نقش مهمی را ایفا می‌کنند عبارتند از:هدف کلی Ada با پشتیبانی بومی برای ارسال پیام و همزمانی مبتنی بر نظارت بر آنها هست.Alefهمزمان با ارسال موضوعات و پیام برای برنامه‌نویسی سیستم در نسخه‌های اولیه برنامه ۹ از آزمایشگاه‌های بل انجام می‌گیرد.منابع.۱-پترسون و هنسی ۲۰۱۳، ص. ۵۰۳""Making reliable distributed systems in the presence of software errors"(PDF)"برنامه‌نویسی همزمان و موازی در جولیاhttps://juliacon.talkfunnel.com/2015/21-concurrent-and-parallel-programming-in-juliaپترسون، دیوید ا. هنسی، جان ال (۲۰۱۳). سازمان و طراحی رایانه: رابط سخت‌افزار / نرم‌افزار. مجموعه مورگان کافمن در معماری و طراحی رایانه (چاپ ۵). مورگان کافمن شابک ۹۷۸-۰-۱۲۴۰۷۸۸۶-۴ رسانه‌های مربوط به برنامه‌نویسی همزمان در Wikimedia Commonsکتابخانه مجازی سیستمهای همزمان می‌باشد.