در علوم کامپیوتر پروسه، (فرآیند یا process یا پردازه) قسمت در حال اجرای یک برنامه کامپیوتری است. پروسه محتوی کد برنامه و فعالیت جاری آن است. بسته به نوع سیستم عامل ، یک پروسه ممکن است از "رشته های چند گانه اجرا" (multiple threads) تشکیل شده باشد که دستور عمل ها را همزمان اجرا می کنند. یک برنامه کامپیوتری مجموعه ای غیر فعال از دستورعمل ها است؛ یک پروسه اجرای حقیقی آن دستورعمل ها است. چندین پروسه نیز می تواند به یک برنامه وابسته باشد. برای مثال ، باز شدن چندین قسمت یک برنامه به معنی است که بیش از یک پروسه در حال اجرا است. عملکرد "چند وظیفه ای" (multitasking) متدی است که اجازه می دهد پروسه های چندگانه که پردازنده ها و دیگر منابع سیستم را به اشتراک بگذارند. هر CPU یک وظیفه را در آن واحد اجرا می کند. به هر حال چند وظیفه ای به هر پردازنده اجازه می دهد که بین وظیفه هایی که در حال اجرا هستند، سوئیچ کنند بدون اینکه منتظر پایان یافتن هر وظیفه باشد. بسته به پیاده سازی سیستم عامل ، سوئیچ ها ممکن است در هنگام اجرای عملیات ورودی-خروجی، هنگامی که یک وظیفه اشاره می کند که می تواند تعویض شود یا در اینتراپت های سخت افزاری انجام شود.
فرم متداولی از چند وظیفه ای ، "اشتراک وقت" است. اشتراک وقت متدی است که پاسخ های سریع برای برنامه های کاربری تعاملی را میسر می سازد. در سیستم اشتراک زمان، تعویض های محتوا (context switches) به سرعت اجرا می شود. این باعث می شود که به نظر رسد که پروسه های چندگانه همزمان در یک پردازنده در حال اجرا است. اجرای پردازش های چندگانه ظاهرا به صورت همزمان را "همزمانی" (concurrency) می گویند. برای دلایل امنیتی و قابلیت اعتماد اکثر سیستم عامل های مدرن از ارتباطات مستقیم بین پروسه های مستقل ممانعت می کنند و عملکرد ارتباطات غیر مستقیم و کنترل شده ی بین پروسه ای (inter-process) را ارائه می دهند.
یک سیستم عامل چند وظیفه ای ممکن است فقط بین پروسه ها سوئیچ کند تا این تصویر را بدهد که پروسه های بسیاری همزمان اجرا می شوند، اگرچه در حقیقت فقط یک پروسه در یک زمان خاص در یک پردازنده تک هسته ای می تواند اجرا شود. (مگر اینکه از multi-threading یا فناوری مشابه استفاده کند).
(وظیفه "task" و پروسه "process" اساسا به موجودیت یکسانی اشاره دارند. و اگرچه تا حدودی تاریخچه اصطلاحی متفاوتی دارند، به عنوان مترادف به کار می روند. امروزه واژه "پروسه" بر واژه ی "وظیفه" ترجیح داده می شود به جز وقتی به multitasking یا چند وظیفه ای برمی گردیم زیرا اصطلاح "چند پروسه ای" می تواند با واژه "چند پردازنده ای" اشتباه گرفته شود.)
حالت های پروسه :
هسته ی سیستم عامل که عملکرد چند وظیفه ای را میسر می کند به پروسه ها با حالت های خاص و مشخص نیاز دارد. نام این حالات استاندارد خاصی ندارند ولی عاملیت های مشابهی دارند.
- در ابتدا پروسه "موجود" (ایجاد شده) است. آن از حافظه های جانبی مانند هارد دیسک یا سی دی به حافظه اصلی بارگذاری می شود. بعد از آن "زمان بند پروسه " (process scheduler) آن را به حالت "در حال انتظار" تغییر می دهد.
- تا زمانی که پروسه در حالت "در حال انتظار" است ، منتظر "زمان بند" می ماند تا یک "تعویض محتوا" را انجام دهد و پروسه را در پردازنده بارگذاری کند. پروسه به حالت " در حال اجرا" در می آید و پردازنده دستورعمل های پروسه را اجرا می کند.
- اگر دیگر پروسه به انتظار نیاز نداشته باشد حالت آن دوباره به صورت "در حال انتظار" در می آید.
- هنگامی که اجرای دستور عمل های پروسه پایان میابد یا به وسیله ی سیستم عامل از بین می رود، دیگر به آن نیازی نیست و از حافظه ی اصلی پاک می شود. پروسه فورا نابود می شود یا به حالت "teminated" یا "پایان یافته" در می آید.
inter-process communication :
ارتباط بین پروسه های مختلف را "ارتباطات بین پروسه ای" یا IPC می نامند. پروسه ها بایستی مرتبا در ارتباط باشند. برای مثال در ساختار هایی باید خروجی پروسه اول به پروسه ی بعدی منتقل شود و به همین ترتیب به پروسه های بعدی ادامه یابد. این حتی برای دو پروسه که در دو دستگاه مختلف اجرا می شوند نیز ممکن است. سیستم عامل های این دو وسیله ممکن است تفاوت داشته باشند ، پس در این مواقعی به میانجی هایی به نام "پروتکل" نیاز است.