چند روز پیش، وقتی مشغول نوشتن یک راهنما بودم، "Chrome" شروع به کند شدن کرد و مجبور شدم "Task Manager" را باز کنم تا فرآیند مرتبط را متوقف کنم. متوجه شدم که یک تب دیگر به نام "Services" وجود دارد و شروع به فکر کردن کردم که تفاوت بین این دو چیست؟ چرا حتی وقتی میتوانید یک برنامه را از تب "Processes" متوقف کنید، آن تب را در "Task Manager" قرار دادهاید؟

این موضوع ذهن من را به دنبال خود به عمق "rabbit hole" کشاند. به هر حال، تفاوت بین "process" و "service" در ویندوز 10 چیست؟ بیایید بفهمیم که چگونه این دو با یکدیگر متفاوت هستند، چرا به یکدیگر نیاز دارند و چگونه مشابه هستند.
بیایید شروع کنیم.
1. چقدر با هم متفاوت هستند
یک فرآیند نمونهای از یک برنامه کامپیوتری یا یک اپلیکیشن است که شما آن را باز کرده و روی کامپیوترتان اجرا میکنید. این فرآیند میتواند با استفاده از یک یا چند "thread" اجرا شود. یک برنامه میتواند چندین فرآیند را اجرا کند. بیایید یک مثال بزنیم. وقتی "Chrome" را باز میکنید، حتی زمانی که یک پنجره باز است، چندین فرآیند "Chrome" را در "Task Manager" زیر زبانه "Processes" مشاهده خواهید کرد.

من متوجه شدهام که این موضوع برای همه مرورگرها صدق میکند. در مثال بالا، شما متوجه خواهید شد که "Brave Browser" نیز فرآیندهای زیادی در حال اجرا دارد حتی با وجود اینکه من هیچ "extension" نصب نکردهام. به هر حال، فرآیندها به طور مستقیم با برنامهای که در حال حاضر روی "Windows" کامپیوتر ما اجرا میشود مرتبط هستند، آنها یک رابط کاربری برای تعامل دارند و معمولاً به صورت دستی شروع میشوند.

بنابراین، وقتی "Skitch" را اجرا میکنم، یک فرآیند اجرا میشود. مثالهای دیگری شامل "Skype"، برنامههای "MS Office"، ویرایشگرهای تصویر و غیره هستند.
از طرف دیگر، سرویسها برنامههای کامپیوتری هستند که در پسزمینه کار میکنند، چه شما یک برنامه در پیشزمینه باز داشته باشید یا نه. این بدان معناست که آنها دقیقاً برای کاربران نهایی ساخته نشده یا اجرا نمیشوند، اما به برنامهها کمک میکنند تا وظایف خود را انجام دهند.

سرویسها رابط کاربری ندارند. قبل از "Windows Vista" رابط "GUI" داشتند، اما منسوخ شد. یک سرویس معمولاً توسط خود سیستم عامل شروع میشود. با این حال، یک کاربر میتواند آن را به صورت دستی شروع یا راهاندازی مجدد کند.
سرویسها همچنین میتوانند زمانی که یک شرط برآورده میشود، مانند یک رویداد، شروع شوند. مثالی از یک رویداد میتواند راهاندازی سیستم عامل باشد. برای مثال، ثبت رویداد، گزارش خطا، چاپ، بهینهسازی دستگاه و خدمات مربوط به حسگر.
2. چگونه آنها مشابه هستند
بیایید مثالی از یک "service" که همچنین یک "process" است را بررسی کنیم. "Antivirus" دارای یک واسط کاربری (UI) است، اما میتواند در پیشزمینه نیز اجرا شود. این به این دلیل است که یک "service" یک "process" است، اما یک "process" ممکن است یک "service" باشد یا نباشد. بیایید عمیقتر بررسی کنیم.
یک "process" نمونهای از یک فایل اجرایی است. به همین دلیل است که هر بار که یک اپلیکیشن را باز میکنید، حداقل یک "process" در حال اجرا است.
از سوی دیگر، یک "service" به عنوان نمونهای از "svchost.exe process" اجرا میشود، که بیشتر شامل فایلهای DLL است. این "Windows service host process" است. توجه کنید که چگونه "svchost" نیز یک فایل اجرایی است و "service host" خود یک "process" است؟ دوباره، یک "service" میتواند یک "process" باشد، اما یک "process" ممکن است یک "service" باشد یا نباشد.

بیایید یک مثال دیگر بزنیم. "Clock". "Clock" همیشه روی کامپیوتر شما در حال اجرا است، چه آن را باز کرده باشید یا نه. حتی زمانی که کامپیوتر شما در حالت "sleep" یا "hibernate" است، همچنان در حال اجراست. حتی وقتی که کامپیوترتان را برای ساعتها خاموش میکنید، همچنان تاریخ و زمان صحیح را دریافت میکند.
این به این دلیل است که این یک فرآیند با یک سرویس ("W32Time") است که در پسزمینه اجرا میشود بدون اینکه نیازی به کاربر داشته باشد که به آن بگوید چه کاری انجام دهد. با این حال، اگر بخواهید، میتوانید با استفاده از یک رابط کاربری از "Settings" که یک فرآیند است، آن را به دلخواه خود ویرایش کنید.

سرویسها کاملاً قادر هستند بهتنهایی و بدون ورودی کاربر اجرا شوند، برخلاف فرآیندها که نیاز دارند به آنها گفته شود چه کاری باید انجام دهند. وقتی یک بسته (.msi files) نصب میکنید، به "Windows installer services" نیاز دارد که در پسزمینه اجرا شود. اما بیشتر اوقات، یک فرآیند زمانی که برنامه مرتبط با آن را ببندید، خاتمه مییابد. سرویس همچنان در پسزمینه اجرا میشود حتی اگر یک فرآیند مرتبط با رابط کاربری داشته باشد که بسته شده است.

تفاوت مهم دیگر این است که یک "process" طراحی شده تا زمانی که رابط کاربری، "GUI window"، باز است اجرا شود، در حالی که یک "service" برای اجرا در مدت زمان طولانیتر در پسزمینه طراحی شده است. معمولاً، "services" نیز حقوق مدیریتی بیشتری نسبت به "processes" دارند. این به این دلیل است که یک "process" یک سرویس کاربر (طراحی شده برای کاربر نهایی) است در حالی که یک "service" یک سرویس ویندوز (طراحی شده برای سیستمعامل ویندوز) است.
برای مثال، برخی از برنامهها ("user processes") وجود دارند که فقط زمانی میتوانید از آنها استفاده کنید که به عنوان کاربری با حقوق مدیریتی وارد شده باشید. اما "services" (فرآیندهای ویندوز) در پسزمینه اجرا میشوند، بدون توجه به پروفایل کاربری که با آن وارد شدهاید. دوباره، ساعت مثالی عالی است که برای همه کاربران کار میکند.
ارائه خدمات یک فرآیند است
Processes و Services دو روی یک سکه هستند. یکی برای کاربر نهایی توسعه داده شده است در حالی که دیگری برای سیستم. به این ترتیب، یکی دارای یک "GUI" است در حالی که دیگری ندارد. گاهی اوقات، آنها با یکدیگر تداخل پیدا میکنند و آن زمانی است که یک Service یک Process را اجرا میکند اما برعکس آن صادق نیست.
Next up: میخواهید تفاوت بین یک برنامه و یک اپلیکیشن در "Windows 10" را یاد بگیرید؟ برای پیدا کردن، بر روی لینک زیر کلیک کنید.






