Service Host Process (svchost.exe) là gì và tại sao lại có quá nhiều quy trình đ

Tác giả sysadmin, T.Mười 20, 2023, 08:50:17 SÁNG

« Chủ đề trước - Chủ đề tiếp »

0 Thành viên và 1 Khách đang xem chủ đề.

Service Host Process (svchost.exe) là gì và tại sao lại có quá nhiều quy trình đang chạy?


Tại sao có rất nhiều? Service Host Process (svchost.exe) là một trình bao để tải các dịch vụ từ các tệp DLL. Các dịch vụ được tổ chức thành các nhóm và mỗi nhóm được chạy bên trong một phiên bản khác nhau của Service Host Process. Thường có nhiều phiên bản svchost.exe đang chạy vì Windows yêu cầu nhiều dịch vụ để hoạt động chính xác.

Nếu đã từng duyệt qua Trình quản lý tác vụ, bạn có thể thắc mắc tại sao có nhiều Service Host Process đang chạy như vậy. Bạn không thể giết chúng và bạn chắc chắn không bắt đầu chúng. Vậy chúng là gì?

1. Service Host Process là gì?

Đây là câu trả lời, theo Microsoft: Svchost.exe là tên tiến trình máy chủ chung cho các dịch vụ chạy từ thư viện liên kết động.

Nhưng điều đó thực sự không giúp ích gì nhiều cho chúng ta. Cách đây một thời gian, Microsoft đã bắt đầu thay đổi nhiều chức năng của Windows từ việc dựa vào các dịch vụ Windows nội bộ (chạy từ tệp EXE) sang sử dụng tệp DLL. Từ góc độ lập trình, điều này làm cho mã có thể tái sử dụng nhiều hơn và được cho là dễ cập nhật hơn. Vấn đề là bạn không thể khởi chạy tệp DLL trực tiếp từ Windows giống như cách bạn có thể thực hiện với tệp thực thi. Thay vào đó, một shell được tải từ một tệp thực thi sẽ được sử dụng để lưu trữ các dịch vụ DLL này. Và thế là tiến trình Service Host (svchost.exe) ra đời.

2. Tại sao có quá nhiều Service Host Process đang chạy?

Nếu bạn đã từng xem qua phần Services trong Control Panel, bạn có thể nhận thấy rằng Windows yêu cầu rất nhiều dịch vụ. Nếu mọi dịch vụ đều chạy theo một Service Host Process, thì một lỗi trong một dịch vụ có thể làm sập toàn bộ Windows. Thay vào đó, chúng được tách ra.

Các dịch vụ được tổ chức thành các nhóm logic có phần nào liên quan đến nhau và sau đó một phiên bản Máy chủ dịch vụ duy nhất được tạo để lưu trữ từng nhóm. Ví dụ: một Service Host Process chạy ba dịch vụ liên quan đến tường lửa. Một Service Host Process khác có thể chạy tất cả các dịch vụ liên quan đến giao diện người dùng, v.v. Ví dụ: trong hình ảnh bên dưới, bạn có thể thấy rằng một Service Host Process chạy một số dịch vụ mạng liên quan, trong khi một quy trình khác chạy các dịch vụ liên quan đến lệnh gọi thủ tục từ xa.


3. Tôi có thể làm gì với tất cả thông tin này không?

Thành thật mà nói, không nhiều. Vào thời của Windows XP (và các phiên bản trước), khi PC có nhiều tài nguyên hạn chế hơn và hệ điều hành không được tinh chỉnh tốt, việc ngăn Windows chạy các dịch vụ không cần thiết thường được khuyến nghị. Ngày nay, chúng tôi không khuyên bạn nên tắt dịch vụ nữa. Các PC hiện đại có xu hướng được trang bị bộ nhớ và bộ xử lý công suất cao. Thêm vào đó là thực tế là cách xử lý các dịch vụ Windows trong các phiên bản hiện đại (và những dịch vụ nào chạy) đã được sắp xếp hợp lý và việc loại bỏ các dịch vụ mà bạn cho rằng mình không cần thực sự không còn ảnh hưởng nhiều nữa.

Điều đó có nghĩa là, nếu bạn nhận thấy rằng một phiên bản cụ thể của Máy chủ dịch vụ — hoặc dịch vụ liên quan — đang gây ra sự cố, chẳng hạn như liên tục sử dụng CPU hoặc RAM quá mức, thì bạn có thể kiểm tra các dịch vụ cụ thể có liên quan. Điều đó ít nhất có thể cho bạn ý tưởng về nơi bắt đầu khắc phục sự cố. Có một số cách để biết chính xác dịch vụ nào đang được lưu trữ bởi một phiên bản cụ thể của Máy chủ dịch vụ. Bạn có thể kiểm tra mọi thứ trong Trình quản lý tác vụ hoặc sử dụng ứng dụng tuyệt vời của bên thứ ba có tên Process Explorer.

4. Kiểm tra các dịch vụ liên quan trong Trình quản lý tác vụ

Nếu bạn đang sử dụng Windows 10 hoặc Windows 11, các quy trình sẽ được hiển thị trên tab "Quy trình" của Trình quản lý tác vụ theo tên đầy đủ của chúng. Nếu một quy trình đóng vai trò là máy chủ lưu trữ cho nhiều dịch vụ, bạn có thể xem các dịch vụ đó bằng cách mở rộng quy trình. Điều này giúp dễ dàng xác định dịch vụ nào thuộc về từng phiên bản của Service Host Process.


Bạn có thể nhấp chuột phải vào bất kỳ dịch vụ riêng lẻ nào để dừng dịch vụ, xem dịch vụ đó trong ứng dụng Bảng điều khiển "Dịch vụ" hoặc thậm chí tìm kiếm trực tuyến để biết thông tin về dịch vụ.


Nếu bạn đang sử dụng Windows 7, mọi thứ sẽ khác một chút. Trình quản lý tác vụ Windows 7 không nhóm các tiến trình theo cùng một cách, cũng như không hiển thị tên tiến trình thông thường - nó chỉ hiển thị tất cả các phiên bản "svchost.exe" đang chạy. Bạn phải khám phá một chút để xác định các dịch vụ liên quan đến bất kỳ phiên bản cụ thể nào của "svchost.exe".

Trên tab "Quy trình" của Trình quản lý tác vụ trong Windows 7, nhấp chuột phải vào quy trình "svchost.exe" cụ thể, sau đó chọn tùy chọn "Chuyển đến dịch vụ".


Thao tác này sẽ chuyển bạn sang tab "Dịch vụ", trong đó tất cả các dịch vụ chạy trong quy trình "svchost.exe" đó đều được chọn.


Sau đó, bạn có thể xem tên đầy đủ của từng dịch vụ trong cột "Mô tả", do đó, bạn có thể chọn tắt dịch vụ nếu không muốn dịch vụ đó chạy hoặc khắc phục sự cố khiến dịch vụ đó gây ra sự cố cho bạn.

5. Kiểm tra các dịch vụ liên quan bằng Process Explorer

Microsoft cũng cung cấp một công cụ nâng cao tuyệt vời để làm việc với các quy trình như một phần của dòng Sysinternals. Chỉ cần tải xuống Process Explorer và chạy nó - đây là một ứng dụng di động nên không cần phải cài đặt. Process Explorer cung cấp tất cả các loại tính năng nâng cao - và chúng tôi thực sự khuyên bạn nên đọc hướng dẫn của chúng tôi để hiểu Process Explorer để tìm hiểu thêm.

Tuy nhiên, vì mục đích của chúng tôi ở đây, Process Explorer nhóm các dịch vụ liên quan theo từng phiên bản của "svchost.exe". Chúng được liệt kê theo tên tệp nhưng tên đầy đủ của chúng cũng được hiển thị trong cột "Mô tả". Bạn cũng có thể di con trỏ chuột lên bất kỳ quy trình "svchost.exe" nào để xem cửa sổ bật lên có tất cả các dịch vụ liên quan đến quy trình đó — ngay cả những dịch vụ hiện không chạy.


6. Service Host Process có phải là vi-rút không?

Bản thân tiến trình này là một thành phần chính thức của Windows. Mặc dù có khả năng vi-rút đã thay thế Máy chủ dịch vụ thực bằng một tệp thực thi của chính nó nhưng điều đó rất khó xảy ra. Nếu muốn chắc chắn, bạn có thể kiểm tra vị trí tệp cơ bản của quy trình. Trong Trình quản lý tác vụ, nhấp chuột phải vào bất kỳ Service Host Process nào và chọn tùy chọn "Mở vị trí tệp".


Nếu tệp được lưu trữ trong thư mục Windows\System32 thì bạn có thể khá chắc chắn rằng mình không phải xử lý vi-rút.


Điều đó có nghĩa là, nếu bạn vẫn muốn yên tâm hơn một chút, bạn luôn có thể quét vi-rút bằng trình quét vi-rút ưa thích của mình. Cẩn tắc vô ưu!