وضعیت پردازه

در یک سیستم کامپیوتری چند وظیفه‌ای، فرایندهای ممکن است انواع وضعیت‌های مختلف داشته باشند. این وضعیت‌های متمایز ممکن است در واقع به عنوان چیزی که هستند توسط هسته سیستم عامل شناخته نشوند. با این حال آنها یک انتزاع مفید برای درک فرایندهای هستند.
وضعیتهای پردازه اولیه
این وضعیت‌های پردازه معمولی که در زیر آمده در همه نوع سیستم‌های کامپیوتری امکان‌پذیر است. در بیشتر این وضعیت‌ها پردازه‌ها در حافظه اصلی ذخیره شده‌اند.
تولید شده
همچنین شناخته شده به عنوان (new) هنگامی که یک فرایند برای اولین بار ایجاد می‌شود، وضعیت created یا new را اشغال می‌کند. در این وضعیت پردازه منتظر اجازه ورود به وضعیت «آماده» می‌شود. تایید یک پردازه توسط برنامه‌ریز بلند مدت تایید می‌شود یا به تعویق می‌افتد. به طور معمول در بسیاری از سیستم کامپیوتر رومیزی، این پذیرش به صورت خودکار انجام می‌شود. با این حال، برای سیستم عامل‌های زمان واقعی این پذیرش ممکن است با تاخیر انجام شود. در یک سیستم زمان واقعی، فرستادن تعداد زیادی از پردازه‌ها به وضعیت «آماده» ممکن است به اشباع در منابع سیستم ختم شود که منجر به ناتوانی در اتمام پردازه در زمان مناسب شود.
آماده
یک پردازه در حالت «آماده» یا «انتظار» در حافظه اصلی بارگذاری شده و در انتظار اجرا در پردازنده است. (که توسط توزیع کننده یا برنامه‌ریز کوتاه مدت تعویض زمینه شود) ممکن است فرایندهای بسیاری در هر نقطه از اجرای سیستم در وضعیت «آماده» وجود داشته باشند. به عنوان مثال، در یک سیستم یک پردازنده، تنها یک فرایند می‌توان در هر زمان اجرا شود، و تمام فرایندهای «به صورت همزمان اجرا» منتظر اجرا خواهند شد.
یک صف آماده یا صف اجرا در برنامه‌ریزی کامپیوتر استفاده می‌شود. کامپیوترهای مدرن قادر به اجرای بسیاری از برنامه‌ها یا فرایندهای مختلف به صورت هم‌زمان هستند. با این حال، پردازنده تنها قادر به، به دست گرفتن یک فرایند در یک زمان است. فرایندهایی که آماده برای پردازنده هستند در یک صف برای فرایندهای «آماده» نگهداری می‌شود. فرایندهای دیگر که در حال انتظار برای یک رویداد هستند، مانند بارگذاری اطلاعات از یک هارد دیسک یا انتظار در اتصال به اینترنت، در صف آماده نیست.
در حال اجرا
پردازه زمانی که برای اجرا انتخاب شده است، به وضعیت در حال اجرا می‌رود. دستورالعمل پردازه‌ها توسط یکی از پردازنده‌ها (یا هسته‌ها) از سیستم اجرا می‌شوند. حداکثر یک فرایند در حال اجرا در پردازنده یا هسته وجود دارد. پردازه می‌تواند در هر یک از دو سطح، یعنی سطح هسته یا سطح کاربر اجرا شود.
سطح هسته
فرایندهای در سطح هسته می‌تواند هر دو (آدرس هسته و کاربر) دسترسی داشته باشند.
سطح هسته اجازه می‌دهد تا دسترسی نامحدود به سخت‌افزار از جمله اجرای دستورالعمل ممتاز انجام شود.
دستورالعمل‌های مختلف (مانند دستورالعمل‌های I / O و دستورالعمل توقف) مزیت دارند و تنها می‌توانند در سطح هسته اجرا شوند.
فراخوانی سیستم از یک برنامه برای کاربران منجر به یک سوئیچ به سطح هسته است.
سطح کاربر (user mode)
فرایندهای در سطح کاربر می‌تواند به دستورالعمل‌ها و داده‌های خود دسترسی داشته باشند اما نه به دستورالعمل‌ها و داده‌های هسته (یا آنهایی که از پردازه‌های دیگر هستند).
هنگامی که سیستم‌های کامپیوتری در حال اجرا به نمایندگی از یک نرم‌افزار کاربر است، سیستم در سطح کاربر است. با این حال، هنگامی که یک برنامه کاربر درخواست خدمات از سیستم عامل را دارد (از طریق فراخوانی سیستم)، سیستم باید برای انجام این درخواست، سطح کاربر به سطح هسته انتقال انجام دهد.
سطح کاربر از شکست‌های مختلف فاجعه بار اجتناب می‌کند:
-یک فضای آدرس مجازی جدا برای هر فرایند در سطح کاربر وجود دارد.
-سطح کاربر اجرای متمایز هر یک از پردازه‌ها را طوری که آن پردازه روی دیگر پردازه‌ها تاثیر نگذارد تضمین می‌کند.
- دسترسی مستقیم به هیچ دستگاه سخت‌افزاری مجاز نیست.
مسدود (blocked)
روند انتقال پردازه به حالت مسدود زمانی است که نمی‌تواند آن را بدون تغییر خارجی در وضعیت یا رخداد رویداد ادامه دهد. برای مثال، یک فرایند ممکن است در یک تماس به دستگاه I/O مانند چاپگر (در صورتی که چاپگر در دسترس نیست) مسدود شود. پردازه‌ها نیز معمولا زمانی مسدود می‌شوند که نیاز به ورودی کاربر، یا نیاز به دسترسی به یک بخش بحرانی (critical section) که باید اتمی اجرا شود را دارند. چنین بخش بحرانی با استفاده از یک شی هماهنگ سازی مانند semaphore یا mutexها محافظت شده‌اند.
خاتمه یافته (terminated)
فرایند ممکن است خاتمه یابد، حال یا از وضعیت "در حال اجرا با تکمیل اجرای آن، یا با کشته شدن. در هر کدام از این موارد، پردازه به وضعیت "خاتمه" حرکت می‌کند. این برنامه زمینه دیگر اجرا نمی‌شود، ولی پردازه در جدول پردازه به عنوان پردازه زامبی باقی می‌ماند تا زمانی که پردازه والدش فراخوانی سیستم "wait" را صدا بزند تا وضعیت خارج شدن آن را بخواند؛ که در آن نقطه پردازه از جدول فرایند حذف شده، در نهایت پایان دادن به عمر این روند انجام می‌شود. اگر والد موفق به صدا زدن "wait" نشود، همچنان به مصرف ورود جدول پردازه می‌پردازد (مشخص شناسه فرایند یا PID)، و باعث نشت منابع می‌شود.
وضعیت‌های پردازه اضافه
دو وضعیت بیشتر برای پردازه‌ها در سیستم‌هایی که حافظه مجازی را پشتیبانی می‌کنند در دسترس هستند. در هر دو این وضعیت‌ها، پردازه‌ها «ذخیره شده» بر روی حافظه‌های ثانویه (معمولا یک هارد دیسک) هستند.
جابجا شده ودر حال انتظار (swapped out and waiting)
(همچنین شناخته شده به عنوان "suspended and waiting" (به حالت تعلیق و انتظار)). در سیستم‌هایی که حافظه مجازی را پشتیبانی می‌کنند، یک پردازه ممکن است جابجا شود، یعنی از حافظه اصلی حذف شود و در حافظه خارجی توسط برنامه‌ریز قرار داده شود. از اینجا پردازه ممکن است به وضعیت انتظار برگردد.
جابجا شده و مسدود شده (swapped out and blocked)
(همچنین شناخته شده به عنوان "suspended and blocked" (به حالت تعلیق و مسدود شده)). فرایندهایی که مسدود شده‌اند نیز ممکن است جابجا شوند. در این رویداد پردازه، هم جابجا شده و هم مسدود، و ممکن است دوباره تحت شرایط مشابه به عنوان یک فرایند جابجا شده و در حال انتظار برگردد. (اگر چه در این مورد، پردازه به وضعیت مسدود شده حرکت خواهد کرد، و ممکن است هنوز در انتظار یک منبع باشد تا قابل دسترس شود)