Di era digital saat ini, startup yang cepat dan pengoperasian sistem yang efisien sangat penting bagi pengguna. Sistem Windows dapat memulai banyak layanan dalam waktu singkat, dan di balik ini terdapat proses sistem yang disebut Service Control Manager (SCM). Pengoperasian SCM sangat penting untuk meningkatkan kecepatan startup sistem. Mari kita bahas secara mendalam cara kerja proses ini.
SCM adalah proses sistem khusus di bawah sistem operasi seri Windows NT. Proses ini bertanggung jawab untuk memulai, menghentikan, dan mengelola proses layanan Windows.
File yang dapat dieksekusi SCM terletak di %SystemRoot%\System32\services.exe. Tugas utamanya adalah memulai semua layanan yang dikonfigurasi untuk memulai secara otomatis. Saat sistem dimulai, proses Wininit akan memulai SCM lebih awal dan memulai serangkaian pekerjaan inisialisasi.
Selama proses startup, SCM akan terlebih dahulu membaca informasi tentang layanan dari registri. Ini melibatkan dua kunci registri utama:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ServiceGroupOrder\List - Berisi nama dan urutan startup grup layanan.HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services - Basis data aktual layanan dan driver perangkat.Informasi ini membantu SCM menentukan urutan startup dan saling ketergantungan setiap layanan. SCM juga memeriksa apakah driver perangkat yang harus dimulai selama proses boot berhasil dimuat dan menyimpan driver yang gagal dalam daftar yang disebut ScFailedDrivers.
Saat memproses setiap layanan yang dimulai secara otomatis, SCM juga akan mempertimbangkan ketergantungan urutan pemuatan untuk menghindari terjadinya ketergantungan siklik.
Setelah semua pemrosesan layanan auto-start yang tidak tertunda selesai, SCM akan mulai memuat layanan auto-start yang tertunda, yang merupakan fitur baru yang diperkenalkan sejak Windows Vista untuk mempercepat startup sistem. Biasanya, layanan yang tertunda ini diinisialisasi sekitar 120 detik setelah startup sistem.
Untuk setiap layanan yang akan dimulai, SCM memanggil fungsi ScStartService() untuk memverifikasi bahwa akun tempat proses berjalan cocok dengan akun yang ditentukan oleh layanan. Selama proses ini, jika layanan tidak berjalan di bawah akun sistem, SCM akan memanggil fungsi LSASS LogonUserEx() untuk mendapatkan informasi login pengguna yang diperlukan. Informasi ini disimpan dalam kunci registri HKLM\SECURITY\Policy\Secrets\, dan hanya layanan dengan akses penuh yang dapat memperoleh kata sandi "rahasia" ini.
Proses layanan ditempatkan dalam status jeda saat dibuat, dan eksekusinya tidak akan dilanjutkan hingga koneksi jalur dibuat.
Setelah proses layanan berhasil dimulai, SCM akan membuat saluran komunikasi dengan proses layanan dengan membuat jalur bernama. Proses layanan bergabung dengan jalur ini dengan memanggil fungsi StartServiceCtrlDispatcher(), dan SCM kemudian akan mengirim perintah "mulai" ke layanan.
Keberadaan layanan startup otomatis tertunda sangat meningkatkan keseimbangan startup sistem. Meskipun layanan ini secara teknis tidak jauh berbeda dari layanan auto-start normal, layanan ini dirancang untuk diinisialisasi pada berbagai tahap startup sistem untuk memastikan kelancaran pengoperasian sistem.
SCM juga mengelola driver perangkat. Jenis layanan tersebut ditandai dalam registri sebagai SERVICE_KERNEL_DRIVER atau SERVICE_FILE_SYSTEM_DRIVER. Dalam kasus ini, SCM akan memanggil fungsi ScLoadDeviceDriver() untuk memuat driver terkait ke dalam sistem, yang biasanya memerlukan pemicuan panggilan sistem NtLoadDriver.
SCM juga dapat mengirim pesan ke aplikasi GUI seperti Windows Explorer untuk memberi tahu mereka tentang perubahan pada koneksi huruf driver jaringan.
Singkatnya, manajer kontrol layanan sistem Windows memainkan peran yang sangat penting dalam proses startup sistem. Ia memuat layanan dan driver perangkat yang diperlukan secara efisien untuk mempertahankan respons cepat dan operasi sistem secara keseluruhan yang stabil. Ketika kita menggunakan teknologi ini, apakah kita telah mempertimbangkan prinsip operasi yang mendasarinya dan tantangan teknis?