چند برنامه ای چیست ؟ — راهنمای کاربردی
در این مطلب، مفهوم چند برنامه ای مورد بررسی قرار گرفته است.
چند برنامه ای چیست ؟
در ادامه، تفاوت سه اصطلاح مهم چند وظیفه ای ، چند نخی و چند برنامه ای در حوزه سیستمعامل مورد بررسی قرار گرفته است؛ سپس مفهوم چند برنامه ای تشریح میشود.
- چند برنامهای: کامپیوتری که بیش از یک برنامه را به طورهمزمان اجرا میکند، چندبرنامهای گفته میشود. مثالی از این مورد، اجرای همزمان نرمافزارهای اکسل و فایرفاکس به طور همزمان در سیستمعامل ویندوز است.
- چندپردازشی: کامپیوتری که از بیش از یک پردازنده استفاده میکند را چند پردازشی میگویند.
- چندوظیفهای: وظایف، یک منبع مشترک را به اشتراک میگذارند (مانند یک پردازنده).
- چندنخی: یک افزونه از چند وظیفهای است.
چندبرنامهای
در سیستمهای کامپیوتری مدرن، معمولا چندین فرایند کاربردی همروند وحود دارد که باید اجرا شود. اکنون، وظیفه سیستمعامل است که همه فرایندها را به صورت کارا و موثر مدیریت کند. یکی از مهمترین جنبههای سیستمعامل، چندبرنامهای است. در سیستم کامپیوتری، چندین فرایند وجود دارد که در انتظار اجرا هستند. برای مثال، آنها منتظر میمانند تا هنگامی که CPU به آنها تخصیص داده شود و آنها شروع به اجرا شدن کنند. این فرایندها با عنوان کار (Job) شناخته شدهاند.
اکنون، حافظه اصلی کوچکتر از آن است که همه این فرایندها یا کارها را جا دهد. بنابراین، این فرایندها از ابتدا در ناحیهای نگهداری میشوند که به آنها استخر کار گفته میشود. این استخر کار شامل همه فرایندهایی است که منتظر تخصیص حافظه اصلی و پردازنده هستند. CPU یکی از کارها را از میان همه این کارها انتخاب و آن را از استخر کارها به حافظه اصلی میاورد و شروع به اجرا میکند. پردازنده یک کار را تا هنگامی اجرا میکند که به وسیله یک عامل خارجی متوقف شود یا برای انجام یک وظیفه I/O برود.
سیستم با عملکرد غیر برنامهای
در یک سیستم غیر چندبرنامه ای، تا هنگامی که یک کار پردازنده را ترک نکند (برای مثال ورودی/خروجی)، پردازنده در حالت توقف قرار میگیرد. CPU تا هنگامی منتظر میماند که این کار (که پیشتر اجرا شده) بازگردد و اجرای خود را با پردازنده ادامه دهد. بنابراین، CPU برای همه این مدت بیکار میماند.
اکنون اشکال و در واقع بیفایدگی بیکار ماندن پردازنده برای مدت زمان طولانی به وجود میاید. همچنین، دیگر کارها نیز که منتظر اجرا هستند شانس اینکه اجرا شوند را پیدا نمیکنند، زیرا پردازنده به کار دیگری (کار اولیه) تخصیص پیدا کرده است. این موضوع یک مشکل بسیار جدی را ایجاد میکند که حتی برای کارهایی که آماده اجرا هستند نیز وجود دارد؛ CPU به کارها تخصیص پیدا نمیکند حتی اگر توسط کار دیگری مورد استفاده نباشد (کار دیگری که پردازنده به آن تخصیص پیدا کرده، درگیر ورودی خروجی است).
این کا رامکانپذیر نیست که یک کار برای یک ساعت از پردازنده استفاده کند و دیگر کارها پنج ساعت در صف انتظار باقی بمانند. برای اجتناب از شرایط مشابهی مانند این و استفاده موثر از پردازنده، مفهوم چندبرنامهای به وجود آمد. ایده اصلی چند برنامهای، بیشینه کردن زمان کار پردازنده است.
کارکرد یک سیستم چند برنامهای
در یک سیستم چند برنامهای، تا هنگامی که یک کار ورودی/خروجی در حال انجام است، سیستمعامل آن کار را برای پردازنده متوقف میکند، کار دیگری را از استخر کارها (صف انتظار) انتخاب میکند، پردازنده را به این کار جدید تخصیص میدهد و اجرای آن را آغاز میکند. کار پیشین به انجام کار ورودی/خروجی خود ادامه میدهد؛ پردازنده کار سوم را انتخاب و اجرای آن را آغاز میکند. به محض اینکه کار (Job) عملیات ورودی/خروجی خود را به پایان میبرد و به وظایف CPU باز میگردد، پردازنده هب آن تخصیص پیدا میکند.
بدین شکل، زمان پردازنده به وسیله سیستم برای تکمیل شدن عملیات ورودی خروجی هدر نمیرود. بنابراین، هدف نهایی چندبرنامهای مشغول نگه داشتن پردازنده تا هنگامی است که فرایندها آماده اجرا باشند. بدین شکل، برنامههای گوناگون با اجرای بخشی از برنامه در هر زمان روی یک پردازنده یکتا قابل اجرا هستند؛ یک بخش دیگر از برنامه پس از این قسمت اجرا میشود و سپس بخش دیگری از برنامه و به همین ترتیب اجرای برنامه ادامه خواهد داشت. بنابراین، پردازنده هیچ وقت در حالت بیکار قرار نمیگیرد.
در تصویر زیر، برنامه A برای مدت زمانی اجرا میشود و سپس به حالت انتظار میرود. در همین حال، برنامه B شروع به اجرا میکند. بنابراین، پردازنده منابع خود را هدر نمیدهد و در عوض، فرصت اجرا را در اختیار برنامه B قرار میدهد.
اگر این مطلب برای شما مفید بوده است، آموزشها و مطالب زیر نیز به شما پیشنهاد میشوند:
- مجموعه آموزشهای برنامه نویسی پایتون
- آموزش پایتون (Python) | برنامه نویسی پایتون مقدماتی
- مجموعه آموزشهای برنامهنویسی
- آموزش پایتون (Python) — مجموعه مقالات جامع وبلاگ فرادرس
- زبان برنامه نویسی پایتون (Python) — از صفر تا صد
- آموزش اینترنت اشیا با پایتون (Python IoT) | گام به گام و به زبان ساده
- ۲۰ سایت آموزش آنلاین پایتون | راهنمای شروع یادگیری
منبع [+]