Bí mật của việc tự động khởi động dịch vụ: Hệ thống Windows tăng tốc khởi động như thế nào?

Trong thời đại số ngày nay, việc khởi động nhanh và vận hành hệ thống hiệu quả là vô cùng quan trọng đối với người dùng. Hệ thống Windows có thể khởi động nhiều dịch vụ trong một khoảng thời gian ngắn. Đằng sau đó là một quy trình hệ thống gọi là Service Control Manager (SCM). Hoạt động của SCM rất quan trọng để cải thiện tốc độ khởi động hệ thống. Chúng ta hãy xem xét kỹ hơn cách thức hoạt động của quy trình này.

SCM là một quy trình hệ thống đặc biệt trong hệ điều hành Windows NT. Nó chịu trách nhiệm khởi động, dừng và quản lý các quy trình dịch vụ Windows.

Tệp thực thi của SCM nằm trong %SystemRoot%\System32\services.exe và nhiệm vụ chính của nó là khởi động tất cả các dịch vụ được cấu hình để tự động khởi động. Khi hệ thống khởi động, tiến trình Wininit sẽ khởi động SCM sớm và thực hiện một loạt các tác vụ khởi tạo.

Trong quá trình khởi động, SCM trước tiên sẽ đọc thông tin về dịch vụ từ sổ đăng ký. Điều này liên quan đến hai mục nhập sổ đăng ký quan trọng:

  • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ServiceGroupOrder\List - Chứa tên và thứ tự khởi động của các nhóm dịch vụ.
  • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services - cơ sở dữ liệu thực tế của các dịch vụ và trình điều khiển thiết bị.

Thông tin này giúp SCM xác định thứ tự khởi động của từng dịch vụ và mối quan hệ phụ thuộc lẫn nhau của chúng. SCM cũng kiểm tra xem trình điều khiển thiết bị phải được khởi động trong quá trình khởi động có được tải thành công hay không và lưu trữ các trình điều khiển bị lỗi trong danh sách có tên ScFailedDrivers.

Khi xử lý từng dịch vụ được khởi động tự động, SCM cũng sẽ xem xét sự phụ thuộc của thứ tự tải để tránh xảy ra tình trạng phụ thuộc tuần hoàn.

Sau khi tất cả các dịch vụ tự động khởi động không bị trì hoãn được xử lý, SCM sẽ bắt đầu tải các dịch vụ tự động khởi động bị trì hoãn, đây là tính năng mới được giới thiệu kể từ Windows Vista để tăng tốc độ khởi động hệ thống. Thông thường, các dịch vụ bị trì hoãn này được khởi tạo khoảng 120 giây sau khi hệ thống khởi động.

Xác minh dịch vụ và khởi động

Đối với mỗi dịch vụ được khởi động, SCM sẽ gọi hàm ScStartService() để xác minh rằng tài khoản mà quy trình đang chạy có khớp với tài khoản do dịch vụ chỉ định hay không. Trong quá trình này, nếu dịch vụ không chạy dưới tài khoản hệ thống, SCM sẽ gọi hàm LSASS LogonUserEx() để lấy thông tin đăng nhập người dùng cần thiết. Thông tin này được lưu trữ trong khóa sổ đăng ký HKLM\SECURITY\Policy\Secrets\ và chỉ những dịch vụ có quyền truy cập đầy đủ mới có thể lấy được những mật khẩu "bí mật" này.

Quy trình dịch vụ được đặt ở trạng thái tạm dừng khi được tạo và quá trình thực thi sẽ không tiếp tục cho đến khi kết nối đường ống được thiết lập.

Khi quy trình dịch vụ được khởi động thành công, SCM sẽ thiết lập kênh liên lạc với quy trình dịch vụ bằng cách tạo một đường ống có tên. Quy trình dịch vụ tham gia kênh này bằng cách gọi hàm StartServiceCtrlDispatcher() và sau đó SCM gửi lệnh "bắt đầu" tới dịch vụ.

Dịch vụ tự động khởi động chậm độc đáo

Sự tồn tại của dịch vụ khởi động tự động bị trì hoãn cải thiện đáng kể sự cân bằng của quá trình khởi động hệ thống. Mặc dù về mặt kỹ thuật, các dịch vụ này không khác nhiều so với các dịch vụ tự động khởi động thông thường, nhưng chúng được thiết kế để khởi tạo ở các giai đoạn khác nhau của quá trình khởi động hệ thống nhằm đảm bảo hệ thống hoạt động trơn tru.

Quá trình khởi động trình điều khiển thiết bị

SCM cũng quản lý trình điều khiển thiết bị. Các loại dịch vụ của các dịch vụ này được đánh dấu là SERVICE_KERNEL_DRIVER hoặc SERVICE_FILE_SYSTEM_DRIVER trong sổ đăng ký. Trong những trường hợp này, SCM gọi hàm ScLoadDeviceDriver() để tải trình điều khiển tương ứng vào hệ thống, thường yêu cầu gọi lệnh gọi hệ thống NtLoadDriver.

SCM cũng có thể gửi tin nhắn đến các ứng dụng GUI như Windows Explorer để thông báo cho chúng về những thay đổi đối với kết nối chữ cái ổ đĩa mạng.

Tóm lại, trình quản lý dịch vụ kiểm soát của hệ thống Windows đóng vai trò không thể thiếu trong quá trình khởi động hệ thống. Nó tải các dịch vụ và trình điều khiển thiết bị cần thiết một cách hiệu quả để duy trì phản hồi nhanh và hoạt động ổn định của toàn bộ hệ thống. Khi sử dụng những công nghệ này, chúng ta đã cân nhắc đến nguyên lý hoạt động và những thách thức kỹ thuật đằng sau chúng chưa?

Trending Knowledge

Bí ẩn màn hình xanh: Những thay đổi đáng ngạc nhiên nào sẽ xảy ra nếu bạn chấm dứt services.exe?
Trong các hệ điều hành Windows hiện đại, Service Control Manager (SCM) hay services.exe là một trong những thành phần cốt lõi trong hoạt động của hệ thống. Quá trình này chịu trách nhiệm
Người bảo vệ bí mật của Windows: Trình quản lý dịch vụ kiểm soát hoạt động âm thầm như thế nào?
Khi bạn khởi động hệ thống Windows, nhiều dịch vụ sẽ chạy ngầm trong nền, đây là nền tảng quan trọng cho sự ổn định của hệ điều hành. Việc khởi động và quản lý các dịch vụ này chủ yếu là trách nhiệm c

Responses