موضوع مقاله: چندکارگی (رایانه) | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # چندکارگی (رایانه) | مقدمه: این تصویر نشان می‌دهد لینوکس مینت همزمان در حال اجرا در محیط دسکتاپ فایرفاکس، یک برنامه ماشین‌حساب، تقویم داخلی، ویم، گیمپ و وی‌ال‌سی مدیا پلیر است. | ## بخش 1: چندکارگی (رایانه) | وظایف جدید می‌توانند کارهایی را که قبلاً شروع شده‌اند، قبل از پایان کار قطع کنند؛ به جای اینکه منتظر بمانند تا پایان یابد. ویژگی چندوظیفگی به طور خودکار برنامه در حال اجرا را قطع می‌کند، حالت آن را ذخیره می‌کند (نتایج جزئی، محتویات حافظه و محتویات ثبات‌های رایانه) و حالت ذخیره شده برنامه دیگری را بار می‌گیرد و کنترل را به آن منتقل می‌کند. این «تغییر زمینه» ممکن است در فواصل زمانی مشخص (چند وظیفگی پیشگیرانه) شروع شود، یا برنامه در حال اجرا کدگذاری شود تا هنگام قطع شدن آن به نرم افزار نظارتی سیگنال داده شود (چند وظیفگی مشارکتی). حتی در رایانه‌های چند پردازنده‌ای، چندوظیفگی اجازه می‌دهد کارهای بیشتری نسبت به پردازنده‌های مرکزی انجام شود. این ویژگی اجازه می‌دهد تا استفاده کارآمدتر از سخت‌افزار کامپیوتر انجام گیرد و زمانی که یک برنامه منتظر برخی از رویدادهای خارجی مانند ورودی کاربر یا انتقال ورودی/خروجی با یک وسیله جانبی برای تکمیل است، پردازنده مرکزی می‌تواند با برنامه دیگری استفاده شود. در یک سیستم به اشتراک گذاری زمان، چندین اپراتور انسانی از پردازنده یکسانی استفاده می‌کنند که گویی به استفاده آنها اختصاص یافته‌است؛ در حالی که در پشت صحنه رایانه با انجام چندوظیفگی برنامه‌های شخصی خود، در حال خدمت‌رسانی به بسیاری از کاربران است. در سیستم‌های چندوظیفگی در رایانه، یک کار تا زمانی اجرا می‌شود که باید منتظر یک رویداد خارجی باشد یا اینکه زمان‌بندی (رایانش) سیستم عامل به زور وظیفه در حال اجرا را از CPU خارج کند. سیستم‌های بی‌درنگ مانند آنهایی که برای کنترل ربات‌های صنعتی طراحی شده‌اند، به پردازش به موقع نیاز دارند. ممکن است یک پردازنده واحد بین محاسبات حرکت ماشین، ارتباطات و رابط کاربری به اشتراک گذاشته شود. غالباً سیستم‌عامل‌های چند وظیفه‌ای اقداماتی را برای تغییر اولویت کارهای فردی در نظر گرفته اند، به طوری که برای کارهای مهم‌تر نسبت به کارهایی که اهمیت کمتری دارند، زمان بیشتری برای استفاده از پردازنده اختصاص می‌یابد. بسته به سیستم عامل، یک کار ممکن است به اندازه کل برنامه کاربردی بزرگ باشد، یا ممکن است از ریسمان (رایانش)‌های کوچکتر تشکیل شده باشد که قسمت‌های کلی برنامه را انجام می‌دهد. پردازنده‌ای که برای استفاده با سیستم‌عامل‌های چندوظیفه‌ای در نظر گرفته شده است، ممکن است شامل سخت‌افزار ویژه‌ای برای پشتیبانی ایمن از چندین کار مانند حفاظت از حافظه و حلقه حفاظتی باشد که اطمینان حاصل می‌کند نرم افزار نظارتی توسط خطاهای برنامه حالت کاربر آسیب نمی‌بیند یا برانداز می‌شود. اصطلاح «چندوظیفگی» به یک اصطلاح بین‌المللی تبدیل شده‌است، زیرا همان کلمه در بسیاری از زبان‌های دیگر مانند آلمانی، ایتالیایی، هلندی، دانمارکی و نروژی نیز استفاده می‌شود. چند برنامه‌ریزی در روزهای اولیه رایانش، اختصاص زمان پردازنده پرهزینه بود و دستگاه جانبی بسیار کند بودند. هنگامی که رایانه برنامه‌ای را اجرا می‌کند که به دسترسی به یک دستگاه جانبی احتیاج دارد، واحد پردازش مرکزی (CPU) مجبور بود دستورالعمل‌های برنامه را هنگام پردازش دستگاه جانبی، متوقف کند. اولین رایانه‌ای که از سیستم چند برنامه‌ای استفاده می‌کرد ، Leo III انگلیس بود که متعلق به J. در طی پردازش دسته‌ای، چندین برنامه مختلف در حافظه رایانه بارگیری شد و برنامه اول شروع به اجرا کرد. هنگامی که اولین برنامه به دستورالعمل منتظر یک وسیله جانبی رسید، متن این برنامه دور نگه داشته شد و به برنامه دوم در حافظه فرصت داده شد که اجرا شود. در واقع، اولین برنامه ممکن است بدون نیاز به دسترسی به وسایل جانبی، ساعت‌ها اجرا شود. کاربران یک کارت پانچ را به یک اپراتور تحویل می‌دادند و چند ساعت بعد برای نتایج چاپی برمی‌گشتند. | ## بخش 2: چندکارگی (رایانه) | چندوظیفگی تعاونی سیستم‌های چند وظیفه‌ای اولیه از برنامه‌هایی استفاده می‌کردند که داوطلبانه زمان را به یکدیگر واگذار می‌کردند. این رویکرد که در نهایت توسط بسیاری از سیستم‌عاملهای رایانه پشتیبانی شد، امروزه به عنوان چند وظیفه‌ای مشارکتی شناخته می‌شود. همانطور که یک سیستم چندوظیفه‌ای مشترک به هر فرآیند متکی است و مرتباً وقت خود را به سایر فرایندهای سیستم می‌دهد، یک برنامه ضعیف طراحی‌شده می‌تواند تمام وقت پردازنده را برای خود مصرف کند، یا با انجام محاسبات گسترده یا با انتظار مشغول که هر دوی این اتفاقات باعث هنگ شدن کل سیستم می‌شود. در یک محیط سرور، این خطری است که باعث می‌شود کل محیط به طرز غیرقابل قبولی شکننده باشد. چند وظیفه ای پیشگیرانه چند وظیفگی پیشگیرانه این امکان را به سیستم کامپیوتر می دهد تا "قطعه" منظم زمان کار را برای هر فرآیند با اطمینان بیشتری تضمین کند. همچنین به سیستم این امکان را می دهد تا به سرعت به وقایع مهم خارجی مانند داده های ورودی که ممکن است نیاز به توجه فوری یک فرآیند دیگر داشته باشد ، رسیدگی کند. سیستم عامل ها برای بهره گیری از این قابلیت های سخت افزاری و اجرای پیشگیرانه چندین فرآیند تولید شده اند. این یک ویژگی اصلی در همه سیستم عامل های مشابه یونیکس است ، مانند لینوکس ، سولاریس و BSD با مشتقات آن و همچنین نسخه های مدرن ویندوز. در هر زمان خاص ، پردازش ها را می توان به دو دسته تقسیم کرد: دسته هایی که منتظر ورود یا خروجی هستند ("I / O bound" نامیده می شود) ، و پردازش هایی که به طور کامل از CPU استفاده می کنند ("CPU bound").در سیستم های ابتدایی ، نرم افزار اغلب در حال "سرکشی‌کردن (علوم رایانه)" یا "انتظار مشغول" است و برای ورودی درخواستی (مانند ورودی دیسک ، صفحه کلید یا شبکه) "نظرسنجی" می کند. با ظهور وقفه ها و چند وظیفگی پیشگیرانه ، می توان فرآیندهای متصل به ورودی / خروجی را مسدود کرد یا در حالت انتظار نگه داشت ، تا رسیدن داده های لازم ، به سایر فرایندها اجازه می دهد تا از پردازنده استفاده کنند. از آنجا که ورود داده های درخواستی باعث ایجاد وقفه می شود ، می توان برای فرآیندهای مسدود شده ، بازگشت به موقع به اجرا را تضمین کرد. Amiga کمودور ، که در سال بعد منتشر شد ، اولین رایانه خانگی تجاری موفق بود که از این فناوری استفاده کرد و توانایی های چندرسانه ای آن را به عنوان یک جد آشکار از رایانه های شخصی چند وظیفه ای معاصر تبدیل کرده است. مایکروسافت در اوایل دهه 1990 هنگام توسعه ویندوز NT 3.1 و سپس ویندوز 95 ، انجام چند وظیفه پیشگیرانه را به یکی از ویژگی های اصلی سیستم عامل شاخص خود تبدیل کرد. یک مدل مشابه در ویندوز 9x و خانواده NT ویندوز ، که در آن برنامه های 32 بیتی به صورت پیش فرض چند وظیفه ای هستند ، استفاده می شود. نسخه های 64 بیتی ویندوز ، چه برای x86-64 و چه برای معماری Itanium ، دیگر از برنامه های 16 بیتی قدیمی پشتیبانی نمی کنند و بنابراین چند وظیفگی پیشگیرانه را برای همه برنامه های پشتیبانی شده فراهم می کنند. به موقع دلیل دیگر چندوظیفگی در طراحی سیستم‌های محاسباتی رایانش بی‌درنگ بود، جایی که تعدادی از فعالیت های خارجی احتمالاً غیر مرتبط وجود دارد که برای کنترل توسط یک سیستم پردازنده واحد مورد نیاز است. در چنین سیستم‌هایی، یک سیستم وقفه سلسله مراتبی با اولویت بندی فرآیند همراه است تا اطمینان حاصل شود که فعالیت‌های کلیدی سهم بیشتری از زمان فرآیند موجود را دارند. چند رشته‌ای از آنجایی که چندوظیفگی توان عملیاتی رایانه‌ها را بسیار بهبود بخشید، برنامه‌نویسان شروع به اجرای برنامه‌ها به عنوان مجموعه‌ای از فرایندهای همکاری کردند (به عنوان مثال، فرآیند جمع‌آوری داده‌های ورودی، یک پردازش داده‌های ورودی یک پردازه‌، و نوشتن نتایج روی دیسک). با این وجود ، این ابزارها به برخی ابزارها نیاز داشتند تا به پردازش‌ها امکان تبادل مؤثر داده‌ها را بدهند. ریسمان (رایانش)ها از این ایده متولد شده‌اند که به اشتراک‌گذاری کل فضای حافظه آنها کارآمدترین راه برای همکاری در فرآیندها است. | ## بخش 3: چندکارگی (رایانه) | ریسه‌ها به عنوان فرآیندهای سبک توصیف می‌شوند زیرا جابجایی بین ریسه‌ها به تغییر زمینه حافظه منجر نمی‌شود. درحالیکه ریسه‌ها به صورت پیش فرض برنامه‌ریزی می‌شوند، برخی از سیستم‌عامل‌ها نوع مختلفی را برای ریسه‌ها ، به نام الیاف، که به‌صورت مشترک برنامه‌ریزی می‌شوند ، ارائه می‌دهند. در سیستم‌عامل‌هایی که الیاف ارائه نمی‌دهند ، برنامه‌ای ممکن است فیبر (علوم رایانه) خود را با استفاده از تماس‌های مکرر با توابع کارگر پیاده‌سازی کند. الیاف حتی سبک تر از ریسه‌ها هستند و برنامه‌ریزی آنها تا حدودی آسان‌تر است ، اگرچه تمایل دارند برخی از مزایای ریسه‌ها را در دستگاه‌های دارای چندپردازشی از دست بدهند. دسترسی به حافظه باید کاملاً مدیریت شود تا اطمینان حاصل شود که هیچ فرآیندی نمی تواند سهوی یا عمداً در مکانهای حافظه خارج از فضای آدرس فرآیند بخواند یا بنویسد. این کار با هدف ثبات عمومی سیستم و یکپارچگی داده ها و همچنین امنیت داده انجام می شود. به طور کلی ، مدیریت دسترسی به حافظه با ترکیب مکانیزم های سخت افزاری که قابلیت های پشتیبانی کننده مانند واحد مدیریت حافظه (MMU) را دارند ، به عهده هسته سیستم عامل است. اگر فرآیندی بخواهد به یک مکان حافظه در خارج از فضای حافظه خود دسترسی پیدا کند ، MMU درخواست را رد می کند و به هسته سیگنال می دهد تا اقدامات مناسب را انجام دهد. بسته به نرم افزار و طراحی هسته و خطای خاص مورد نظر ، ممکن است کاربر پیام خطای دسترسی مانند "خطای تقسیم بندی" را دریافت کند. در یک سیستم چند وظیفه ای که به خوبی طراحی شده و به درستی پیاده سازی شده ، یک فرآیند داده شده هرگز نمی تواند مستقیماً به حافظه ای که متعلق به فرآیند دیگری است دسترسی پیدا کند. به عنوان مثال ، در مکانیسم ارتباطی بین فرآیند System V هسته به حافظه اجازه می دهد تا به طور متقابل توسط چندین فرآیند به اشتراک گذاشته شود. سازوکارهای محافظت از حافظه ناکافی ، به دلیل نقص در طراحی آنها یا پیاده سازی ضعیف ، امکان آسیب پذیری های امنیتی را فراهم می کند که ممکن است توسط نرم افزارهای مخرب مورد سو استفاده قرار گیرند. تعویض حافظه استفاده از یک حافظه مجازی یا پارتیشن مبادله راهی برای سیستم عامل است که می تواند با نگه داشتن بخشهایی از حافظه اصلی در حافظه ثانویه ، حافظه بیشتری از آنچه از نظر فیزیکی در دسترس است ، فراهم کند. در حالی که چند وظیفه ای و تعویض حافظه دو تکنیک کاملاً نامرتبط هستند ، اما آنها اغلب در کنار هم استفاده می شوند ، زیرا تعویض حافظه امکان بارگیری همزمان کارهای بیشتر را فراهم می کند. به طور معمول ، یک سیستم چند وظیفه ای هنگامی که فرایند در حال اجرا به نقطه ای منتقل می شود که باید منتظر بماند تا بخشی از حافظه از حافظه ثانویه بارگیری شود ، فرآیند دیگری را اجرا می کند. برنامه نویسی فرآیندهای کاملاً مستقل برای برنامه ریزی در یک محیط چند وظیفه ای مشکل چندانی ندارند. از تکنیک های رایانش همزمان برای جلوگیری از مشکلات احتمالی ناشی از تلاش های متعدد برای دستیابی به همان منبع استفاده می شود. در سیستم های بزرگتر گاهی با پردازنده (های) مرکزی و تعدادی از پردازنده های ورودی / خروجی ، نوعی چندپردازشی نامتقارن ساخته می شوند. | ## جمع‌بندی | سیستم عامل های مدرن به طور کلی شامل مکانیزم های جزئی برای اولویت بندی فرایندها هستند ، در حالی که چندپردازی متقارن پیچیدگی ها و قابلیت های جدیدی را به همراه آورده است.