وب گردی
فرآیند میزبانی سرویس در ويندوز
فرآیند ميزباني سرويس يا Svchost.exe در ویندوز و کاربردهای آن را در این مطلب وب گردی دنبال نمایید.
به گزارش
خبرگزاري صدا وسيما، از بین تمام فرآیندهای سیستمی که در ویندوز اجرا میشوند، یکی از آنها بهنام svchost.exe بیشتر از هر چیز دیگر دلهرهآور و ترسناک است. تجربه کند شدن سرعت اینترنت برای همه ما پیش آمده است. شاید گاهی اوقات تصور میکنیم که دادههای ناشناخته همواره در حال دانلود هستند. حتی باور میکنیم که وجود بدافزار روی سیستم باعث بروز این مشکل است. اما، مشکل اصلی استفاده برخی از فرآیندهای ویندوز از پهنای باند موجود است. یکی از این فرآیندها svchost.exe است.
جهش بزرگ در توسعه سیستمعامل ویندوز زمانی بود که ویندوز NT ۳.۱ منتشر شد. مایکروسافت بهمنظور کاهش میزان استفاده از منابع سیستمی اقدام به بهینهسازی ویندوز کرد. فرآیند میزبانی سرویس (Svchost) اولین بار بههمراه ویندوز ۲۰۰۰ معرفی و ارائه شد.
فرآیند میزبانی سرویس یا همان Svchost.exe چیست؟
Svchost یک فرآیند عمومی میزبان با هدف برطرف کردن نیازهای چندین سرویس ویندوز بهطور همزمان است. اگر این کار صورت نگیرد و به هر سرویس، فرآیند مخصوص خودش واگذار شود بار سیستم بهشدت بالا میرود. فرآیند میزبانی وب به سرویسهای مختلف اجازه میدهد تا منابع موجود در سیستم از قبیل پردازنده، رم، هارد دیسک، و سایر قطعات را بهاشتراک بگذارند. این سرویسها بهکمک DLLها یا همان کتابخانههای پیوند پویا بهفرآیند SvcHost متصل میشوند.
سرویسهای ویندوز در گذشته از فایلهای EXE استفاده میکردند، اما هماکنون این DLLها هستند که بهعنوان جایگزین بهکار میروند. در واقع، این فایلها حاوی کدی هستند که میتواند توسط چندین برنامه و سرویس مورد استفاده قرار گیرد. بنابراین، یک فایل DLL عمومی میتواند توسط چندین سرویس مختلف استفاده شود و نهایتا ایجاد تغییرات در داخل این کد سادهتر است. با اینحال، فرآیند میزبانی سرویس همچنان یک فایل EXE که در داخل پوشه System۳۲ در درایو مربوط بهویندوز قرارد دارد را اجرا میکند.
فرآیند SvcHost میتواند همزمان برای چندین سرویس گوناگون مانند ویندوز آپدیت، Task Scheduler، Super Fetch، BITS و ... بهکار رود. بد نیست نگاهی به زبانه Processes در تسک منیجر داشته باشید تا نمونههای مختلفی که میزبان یک یا چندین سرویس هستند را مشاهده کنید. برای کسب اطلاعات بیشتر، به زبانه Details بروید تا از ID یا شناسه فرآیند، میزان فضایی که در حافظه اشغال میکند، وضعیت و مواردی از این دست مطلع شوید.
چرا به چندین نمونه از SvcHost نیاز داریم؟با بیان یک مثال ساده بهخوبی با نحوه کار فرآیند SvcHost که در تسک منیجر در حال اجرا است آشنا میشوید و آنرا بهخوبی درک میکنید. فرض کنید بهمیهمانی یک از دوستان خود رفتهاید. در این میهمانی صدها نفر حاضر هستند. در اینجا، دو راه برای پر کردن شکمهای گرسنه وجود دارد: یک راه آن است که به این شکمهای گرسنه (سرویسهای ویندوز) اجازه دهیم تا خودشان سر میز غذا بروند، که این روش تنها باعث ایجاد هرجومرج و بینظمی میشود اما روش دیگر و در عین حال مناسب، تعیین یک سرور (میزبان سرویس) بهمنظور تهیه غذا برای میهمانان است بهبیان سادهتر، SvcHost بهاین شکل کار میکند. با این روش، نه تنها سرور بهتر و کارآمدتر وضعیتهای گوناگون را مدیریت میکند، بلکه از هدر رفتن و اسراف غذا جلوگیری میشود.
حالا، تصور کنید که چندین غذای مختلف وجود داشته باشد. بعضیها ممکن است غذای ایرانی بخورند و بعضیها غذای فرنگی. پس، برای سرو غذاهای مختلف بهمشتریان میتوان سرورهای مختلف (چندین نمونه) در اختیار داشت. اگر تنها یک نفر برای سرو غذا وجود داشت، مدیریت کردن اوضاع و درخواستهای گوناگون بسیار دشوار بود. حتی، ممکن بود که برخی از مشتریان بهدلیل تأخیر در سرو غذا عصبانی شوند. همین شرایط برای سرویسهای متصل بهفرآیند SvcHost صادق است.
اگر یکی از سرویسها خراب شود، روی فرآیند و تمام سرویسهای مرتبط با آن تأثیر میگذارد. حتی، ممکن است منجر به اتفاقات ناخواسته مانند صفحه آبی مرگ شود. بههمین دلیل، همواره چندین نمونه از SvcHost وجود دارد.
چگونه سرویسهای در حال اجرا که با فرآیند SvcHost در ارتباط هستند را بررسی کنیم؟
برای این کار دو راه وجود دارد: یکی از آنها در بالا اشاره شد. تسک منیجر را باز میکنید تا لیست فرآیندهای میزبانی سرویس در حال اجرا در ویندوز ۱۰ را مشاهده کنید. این فرآیندها در قسمت Windows Processes قرار دارند.
برای مطلع شدن از سرویسهای متصل، روی نمونه میزبانی سرویس کلیک راست کنید و گزینه Go to Details را انتخاب کنید.
چگونه سرویسهای SvcHost را با استفاده از خط فرمان مشاهده کنیمدر قسمت اعلان فرمان ویندوز با استفاده از ابزار tasklist میتوانید لیست تمام سرویسهای در حال اجرا که با SvcHost.exe مرتبط هستند را بیرون بکشید. برای این منظور از دستور زیر استفاده کنید:
tasklist /svc /FI “imagename eq svchost.exe”
با اجرای این دستور لیست نمونههای فرآیند svchost.exe را همراه با شناسه فرآیند و سرویسهای ویندوز مرتبط با آنرا مشاهده میکنید.
آیا فرآیند SvcHost.exe ویروس است؟خیر. ظاهرا این فرآیند ویروس نیست. مگر اینکه زمانی برسد که مایکروسافت نظرش عوض شود. حداقل کاری که برای بررسی ویروس بودن Svchost میتوانید انجام دهید باز کردن تسک منیجر و کمی کنجکاوی است.
در زبانه Processes، روی فرآیند Svchost مشکوک کلیک راست کنید و گزینه Open File Location را انتخاب کنید. اگر به یک مکان سیستمی برده شدید یعنی اینکه مشکلی وجود دارد (یعنی جایی خارج از پوشه System۳۲).
اگر همه چیز عادی بهنظر میرسد، اما هنوز هم شک دارید میتوانید با استفاده از ویندوز دیفندر یا نرمافزارهای آنتیویروس سوم شخص سیستم را بهطور کامل اسکن کنید.
مصرف بالای اینترنت توسط (Svchost.exe (netsvcsیکی از بیشترین نگرانیها در این رابطه، فرآیند netsvcs است. این فرآیند در واقع یکی از زیرفرآیندهای میزبانی سرویس است که چندین وظیفه در ویندوز برعهده آن است. بعضی از سرویسهای ویندوز مانند ویندوز آپدیت و BITS از آن استفاده میکنند. گاهی اوقات کاربران مشاهده میکنند حتی زمانیکه سیستم استفاده نمیشود پهنای باند اینترنت آنها بهطور ناشناختهای در حال مصرف اینترنت است. دلیل آن، استفاده پهنای باند توسط BITS برای دانلود آپدیتهای سیستم است.
با رفتن به Task Manager > Services و کلیک راست بر روی (Background Intelligent Transfer Service (BITS آنرا متوقف کنید. کافی است روی Stop کلیک کنید تا فرآیند دانلود متوقف شود.
راه دیگر باز کردن Resource Monitor > Network tab است. روی (svchost.exxe (netsvcs کلیک راست کنید و End Process Tree را انتخاب کنید.
نکته مهم: متوقف کردن یکی از فرآیندهای svchost ممکن است تا حدودی باعث کاهش مصرف پهنای باند شود. اما، توصیه میشود که چنین کاری نکنید.فرآیند Svchost.exe در حال استفاده از حافظه است. چه کاری باید انجام دهیم؟برخی مواقع، کاربران متوجه مشکلاتی مانند مصرف صد درصدی پردازنده روی پیسی میشوند. به چند دلیل ممکن است Svchost شروع بهاستفاده از حافظه سیستم بکند بهطوری که باعث کند شدن دستگاه شود. برای آگاهی از این موضوع به زبانه Details بروید و در ستون Memory دنبال سرویسی باشید که بهطور قابل توجهی از حافظه استفاده میکند.
در صورت مشاهده چنین فرآیندی، روی آن کلیک راست کنید و سپس به (Go to Service (s بروید. در این قسمت، سرویسهای مرتبط که باعث استفاده زیاد از حافظه شدهاند با هایلایت مشخص میشوند.