عند بدء تشغيل نظام التشغيل Windows، يتم تشغيل العديد من الخدمات بصمت في الخلفية، وهي تشكل حجر الزاوية المهم لاستقرار نظام التشغيل. تقع مسؤولية بدء تشغيل هذه الخدمات وإدارتها في الغالب على عاتق مدير التحكم في الخدمة (SCM). SCM هي عملية نظام خاصة تقع ضمن نظام التشغيل Windows NT، وهي مسؤولة عن بدء وإيقاف والتفاعل مع عمليات خدمة Windows.
تبدأ الوظيفة الرئيسية لـ SCM بوظيفتها الرئيسية SvcCtrlMain()، والتي تبدأ تشغيل جميع الخدمات التي تم تكوينها للبدء تلقائيًا.
يوجد ملف SCM القابل للتنفيذ services.exe في %SystemRoot%\System32\ ويتم تشغيله بواسطة عملية Wininit في وقت مبكر من بدء تشغيل النظام. عندما يبدأ SCM في العمل، فإنه يقوم أولاً بتهيئة قاعدة البيانات الداخلية الخاصة به للخدمات المثبتة، والتي تتضمن قراءة مفاتيح التسجيل المحددة.
على وجه التحديد، يقوم بتهيئة قاعدة البيانات الداخلية من خلال قراءة مفتاحي التسجيل التاليين:
<أول>يحدد SCM ترتيب تحميل الخدمات استنادًا إلى قيمة المجموعة وتبعيات كل خدمة. أثناء هذه العملية، إذا تم العثور على اعتماد دائري، فسوف يقوم SCM بتسجيل خطأ وتخطي الخدمة التي تعتمد على المجموعة المحملة متأخرًا.
الخطوة التالية في SCM هي التحقق مما إذا كانت برامج تشغيل الأجهزة التي يجب تشغيلها أثناء بدء تشغيل النظام قد تم تحميلها بنجاح وحفظ برامج التشغيل الفاشلة في قائمة تسمى ScFailedDrivers.
ثم يقوم SCM باستدعاء الدالة ScAutoStartServices()، والتي تقوم بالمرور على جميع الخدمات المحددة للبدء التلقائي وتبدأ تشغيلها وفقًا لذلك. بالنسبة لكل خدمة، يقوم SCM باستدعاء الدالة ScStartService() للتأكد من تشغيل عملية الخدمة تحت الحساب الصحيح. إذا لم تكن الخدمة قيد التشغيل ضمن حساب النظام، يقوم SCM باستدعاء وظيفة LSASS LogonUserEx() للحصول على كلمة المرور "السرية" التي تم تخزينها بشكل آمن عند تكوين الخدمة في البداية.
ليس هذا فحسب، بل يوجد أيضًا نوع خاص من الخدمات - خدمة بدء التشغيل التلقائي المتأخر. تم تقديم هذا النوع من الخدمة في نظام التشغيل Windows Vista لحل مشكلة بطء بدء تشغيل النظام. لن يبدأ SCM في تهيئة خدمات بدء التشغيل التلقائي المتأخر حتى تتم معالجة جميع خدمات بدء التشغيل التلقائي غير المتأخرة.
على الرغم من وجود تأخير في بدء تشغيل هذه الخدمات، إلا أنها لا تختلف كثيرًا عن الخدمات الأخرى باستثناء الترتيب الذي يتم البدء به.
من الجدير بالذكر أن SCM يتعامل أيضًا بشكل خاص مع خدمات برنامج تشغيل الجهاز. قيمة تسجيل النوع لهذه الخدمات هي SERVICE_KERNEL_DRIVER أو SERVICE_FILE_SYSTEM_DRIVER. عندما يقوم SCM باستدعاء ScStartService()، فإنه يقوم أيضًا باستدعاء وظيفة ScLoadDeviceDriver() لتحميل برنامج التشغيل المقابل.
من خلال نداء النظام NtLoadDriver، يتأكد SCM من تحميل برنامج التشغيل بشكل صحيح. أثناء عملية بدء التشغيل الأولية، يكون SCM مسؤولاً أيضًا عن إعلام التطبيقات الأخرى، مثل Windows Explorer، عندما تتغير حالة اتصال محرك الشبكة عن طريق بث رسالة Windows WM_DEVICECHANGE.
ومع ذلك، وعلى الرغم من الدور الحاسم الذي تلعبه إدارة سلسلة التوريد في بدء تشغيل النظام، فإن العديد من المستخدمين لا يفهمون حقًا كيفية عملها. وراء كل عملية من عمليات إدارة سلسلة التوريد، توجد تقنية معقدة وفعّالة. في الواقع، تسمح هذه التقنية للمستخدمين باستخدام تلك التطبيقات والخدمات التي تبدو عادية دون أي عوائق.يتيح هذا التصميم للمستخدمين إدارة موارد النظام والخدمات الخاصة بهم بشكل أفضل، مما يضمن التشغيل السلس لنظام التشغيل.
في الإصدارات المستقبلية من Windows، كيف سيتطور نظام إدارة سلسلة التوريد لتلبية احتياجات المستخدمين المتنوعة بشكل متزايد؟