فرایند (رایانش)
فرایند، پردازه یا پروسه (به انگلیسی: Process) در رایانش، یک نمونه از یک برنامه رایانهای است که توسط یک یا بیشتر ریسه درحالاجرا میباشد. یک پردازه، شامل یک برنامه و کنشهای مرتبط با آن (پشته، مقدار فعلی ثباتها، منابع (مانند فایلهای بازشده)، ساختار بلاک کنترل فرایند و …) است. بر اساس نوع سیستمعامل (OS)، یک پردازه میتواند از چندین ریسه تشکیل شود، که دستورالعملها را به صورت همروند اجرا میکنند.
درحالیکه یک «برنامه» رایانهای، یک گردآورد غیرفعال از دستورالعمل است که معمولاً در یک فایل روی دیسک ذخیره شدهاست، یک «پردازه» در واقع اجرای آن دستورالعملها است مستلزم آن است که برنامه قبل از آن از روی دسیک به حافظه بارگذاری گردد. چندین پردازه را میتوان به یک برنامه مشابه مرتبط کرد، برای مثال، بازکردن چندین نمونه از یک برنامه مشابه، معمولاً منجر به ایجاد بیش از یک پردازه درحالاجرا از آن برنامه میشود.
چندوظیفگی روشی برای آن است که چندین پردازه، پردازندهها (CPUها) و دیگر منابع سیستمی را به اشتراک بگذارند. هر CPU (هسته) در هر زمان فقط یک وظیفه را اجرا میکند. با این حال چندوظیفگی به هر پردازنده امکان آن را میدهد، تا بین وظایف درحالاجرا تعویض شود، و این کار را بدون منتظرشدن برای تکمیل هر وظیفه انجام میدهد (پیشاجرایی). بر اساس پیادهسازی سیستمعامل، تعویض را میتوان موقعی اجرا کرد که وظایف، فعالیتهای ورودی/خروجی را شروع میکنند یا برای تکمیلشان صبر میکنند، یا موقعی که یک وظیفه، به صورت ارادی منجر به یک عمل CPU میشود، یا در وقفههای سختافزاری، یا موقعی که زمانبند سیستمعامل میفهمد که یک پردازه، زمان عادلانه اشتراک CPU را منقضی کردهاست (مثلا با زمانبند کاملاً عادلانه در هسته لینوکس).
یک حالت معمول چندوظیفگی، روش اشتراک زمانی CPU است، که روشی برای درهمگذاری اجرای فرایندها و ریسههای کاربر، و حتی وظایف مستقل هسته است، اگرچه ویژگی در آخر ذکر شده، تنها در هستههای پیشاجرا، مثل لینوکس، قابل انجام است. پیشاجرایی یک اثرجانبی مهم برای «پردازههای تعاملی دارای اولویت بالاتر نسبت به پردازههای وابسته با CPU» دارد، از این رو به کاربران، به صورت فوری (در موقع اعمال سادهای مثل فشار یک کلید یا حرکت ماوس) منابع رایانشی داده میشود. بعلاوه، به برنامههای کاربردی (مثل اجرای ویدیو و موسیقی) یک نوع اولویت بلادرنگ داده میشود، که در نتیجه آن هر فرایند با اولویت پایینتر را پیشاجرا میکند. در سامانههای اشتراک-زمانی، تعویض زمینه آنقدر سریع انجام میشود، که آن را مثل موقعی میکند که چندین پردازه به صورت همزمان روی تنها یک پردازنده اجرا میشوند. به اجرای همزمان چندین پردازه، همروندی گفته میشود.
به دلایل امنیتی و اطمینانپذیری، بیشتر سیستمعاملهای جدید، از ارتباطات مستقیم بین پردازههای مستقل جلوگیری میکنند، که این موضوع باعث ایجاد قابلیت ارتباطی موکداً واسطدار و کنترلشده بین پردازهها میشود.
هر فرایند دارای فضای آدرس مخصوص به خود است. فضای آدرس، یک لیست از مکانهای حافظه از یک حداقل تا یک حداکثر است که فرایند میتواند از آن فضا بخواند یا در آن بنویسد. فضای آدرس شامل برنامه اجرایی، دادههای برنامه و پشته آن است. همچنین هر فرایند برای خودش دارای یک مجموعه از رجیسترها است که شامل شمارنده، اشاره گر پشته و دیگر رجیسترهای سختافزاری و نیز اطلاعات متنوع دیگری که برای اجرای برنامه مورد نیاز است میباشد. پردازش یک برنامه کامپیوتر که اجرای ان شروع شدهاست شامل کد برنامه و فعالیتهای جاری است. پردازش میتواند از چند بخش کوچک در حال اجرا تشکیل شده باشد. برنامههای کامپیوتر مجموعهای از دستورالعملهای غیرفعال است. پردازش یک اجرای واقعی از دستور العملهای برنامه است.
وضعیتهای فرایند
- در حال اجرا: فرایند توسط پردازنده در حال اجراست.
- آماده: حالتی است که فرایند حافظه مخصوص به خود دارد و برای اجرا آمادهاست.
- در حال انتظار: به دلیل یک فراخوان سیستمی مانند وقفه دستگاههای ورودی-خروجی یا تمام شدن زمان اختصاص داده شده به فرایند، سیستمعامل پردازنده را از فرایند میگیرد، آن را به حالت انتظار برده و پردازنده را به فرایند دیگری میدهد.
- در حال انتظار و معلق: چنانچه فرایند در وضعیت در حال انتظار باشد و سیستمعامل با مشکل کمبود حافظه مواجه شود، اطلاعات فرایند به دیسک منتقل شده و وضعیت فرایند به در حال انتظار و معلق تغییر مییابد. سپس فضای فرایند در حافظه اصلی آزاد میگردد.
- آماده و معلق: چنانچه فرایند در وضعیت در حال انتظار و معلق باشد و بتواند به وضعیت آماده برود، اما همچنان فضای کافی موجود نباشد، سیستمعامل وضعیت آن را به آماده و معلق تغییر میدهد. در این حالت، فرایند همچنان روی دیسک باقی میماند، ولی آماده اجرا است.
- پایان یافته: وضعیتی است که پردازش فرایند بهطور کامل انجام شده باشد و از سیستم بیرون برود.
پانویس
- ↑ «واژهنامه مرجع برای ترجمه محیط لینوکس» (PDF). شورای عالی انفورماتیک. بایگانیشده از اصلی (PDF) در ۱۲ ژانویه ۲۰۱۲. دریافتشده در ۲۷ دسامبر ۲۰۱۱.
- ↑ Silberschatz, Abraham; Cagne, Greg; Galvin, Peter Baer (2004). "Chapter 4. Processes". Operating system concepts with Java (Sixth ed.). John Wiley & Sons. ISBN 0-471-48905-0.
- ↑ Vahalia, Uresh (1996). "Chapter 2. The Process and the Kernel". UNIX Internals: The New Frontiers. Prentice-Hall Inc. ISBN 0-13-101908-2.