امروز،
Service Control Manager (مدیر کنترل سرویس های ویندوزی) یا SCM یک پراسس سیستم خاص است که از زمان ویندوز NT نیز وجود داشته است.
SCM در تعامل با آغاز و یا متوقف کردن سرویس ها است.محل قرارگیری SCM در سیستم عامل ویندوز در مسیر SystemRoot%\System32\services.exe% میباشد.سرویس های ویندوز
از طریق API ها با SCM ارتباط برقرار میکنند و همان API بطور داخلی با کنسول مدیریتی MMC snap-in در تعامل است.
پیاده سازی :
در زمان استارت آپ سیستم عامل ویندوز برنامه services.exe توسط پراسسی به نام wininit اجرا میشود.تابع اصلی این فرآیند ()SvcCtrlMain است که تمام سرویس هایی که برای استارت شدن
در زمان بوت سیستم عامل ویندوز پیکربندی شده اند را به حالت اجرایی در می آورد.اولین دیتابیس داخلی لینک قابل نمایش نیست . لطفا ثبت نام کنید و یا وارد سایت شوید از سرویس های نصب شده توسط دو کلید رجیستری مهم زیر آغاز سازی میشود :
HKEYLOCALMACHINE\SYSTEM\CurrentControlSet\Control\ServiceGroupOrder\List :
این کلید رجیستری شامل نام ها و ترتیب service groups یا گروه های سرویس میباشد.هر کلید رجیستری شامل یک Group Value اختیاری است که ترتیب آغاز سازی کار سرویس
مورد نظر و یا درایور سخت افزارها را با توجه به service group های دیگر کنترل میکند.
HKEYLOCALMACHINE\SYSTEM\CurrentControlSet\Services :
که شامل دیتابیس واقعی از سرویس ها و درایور های سخت افزار ها است که در دیتابیس داخلی SCM خوانده میشود.SCM هر Group Value ی سرویس ها را میخواند و همچنین وابستگی های
هر سرویس را با توجه به کلید های رجیستری DependOnGroup و DependOnService بارگذاری میکند.
در گام بعد تابع اصلی SCM یا همان ()SvcCtrlMain تابع ()ScGetBootAndSystemDriverState فراخوانی میکند تا زمانیکه در لینک قابل نمایش نیست . لطفا ثبت نام کنید و یا وارد سایت شوید حین بوت شدن سیستم عامل درایور های سخت افزاری به درستی باگذاری شوند
را چک کند.طبیعی است که درایور هایی که به درستی بارکذاری نشده اند در لیستی به نام ScFailedDrivers قرار میگیرند.سپس رابط \Pipe\Ntsvc\ به عنوان رابط سرویس Remote Procedure Call یا RPC که
با سرویس های خاصی در ویندوز در تعامل است ایجاد میشود.بعد از آن تابع ()ScAutoStartServices را فراخوانی میکند.زمانیکه این تابع فراخوانی میشود تمام سرویس هایی که در زمان بوت شدن سیستم عامل ویندوز
برای بارگذاری شدن به طور خودکار علامت گذاری شده اند با توجه بر load-order dependencies بارگذاری میشوند.به بیان واضح تر اگر یک وابستگی حلقوی در این شرایط به وجود بیاید خطایی رخ میدهد و سرویس وابسته
پ به یک سرویس دیگر که در یک گروه Load order هستند نادیده گرفته میشوند.برای سرویس های در وضعیت delayed auto-start گروه بندی سرویس ها لینک قابل نمایش نیست . لطفا ثبت نام کنید و یا وارد سایت شوید تحت تاثیر قرار نمیگیرند و آنها در یک مرحله بعد از یک startup دیگر بارگذاری میشوند.
برای هر سرویسی که میخواهد اجرا شود ، SCM تابع ()ScStartService را فراخوانی میکند که این تابع نام فایلی که Service Process در آن است را چک میکند آن هم با اطمینان حاصل کردن از اینکه اکانت اختصاص
یافته به آن سرویس همان اکانتی است که در Service Process در حال اجراست.
هر سرویسی که با یک اکانت(Service Account) به فعالیت نمیپردازد توسط تابع LSASS که مخفف کلمه های Local Security Authority Subsystem Service لاگین شده به فعالیت میپردازد.برای هر کدام از
پراسس های LSASS که شبیه به پسورد های خالی هستند بوسیله SCP و توسط API ای به نام ()LsaStorePrivateData در مسیر \HKLM\SECURITY\Policy\Secrets ذخیره میشوند،البته زمانیکه سرویسی به درستی پیکربندی شده باشد.
سپس تابع ()ScLogonAndStartImage هر سرویسی که یک service process است و در حال اجرا نیست را فراخوانی میکند.service process ها بوسیله API ای به نام ()CreateProcessAsUser در وضعیت Suspended ایجاد میشوند.
قبل از اینکه فراِیند اجرایی service process ادامه یابد کانال ارتباطی به نام Pipe\Net\NtControlPipeX\ (که در اینجا X عددی است که با تکرار هر لینک قابل نمایش نیست . لطفا ثبت نام کنید و یا وارد سایت شوید سرویس یکی به مقدارش افزوده میشود است) بین SCM و service process ایجاد میشود
.service process با فراخوانی تابع ()StartServiceCtrlDispatcher به کانال ارتباطی(Pipe) متصل میشود که بعد از آن SCM دستور "start" را به سرویس ارسال میکند.
Delayed auto-start services چگونه اجرا میشوند ؟
سرویس های Delayed auto-start از زمان ویندوز ویستا اضافه شدند.هدف از ارئه این قابلیت حل مشکل طولانی بودن زمان startup ویندوز بود که در این حین سرویس های حیاتی ویندوز که نمیتوانستند با تاخیر(delay) اجرا شوند
سرعت اجرایشان افزایش یافت.در اصل ، متد auto-start برای آغاز کار سرویس ها برای سرویس های حساس و حیاتی ویندوز طراحی شده است که آن هم بر اساس سایر اپلیکشین ها و سرویس های وابسته عمل میکند.
SCM سرویس های Delayed را با فراخوانی تابع ()ScInitDelayStart اجرایی میکند که آن هم بعد از زمانی است لینک قابل نمایش نیست . لطفا ثبت نام کنید و یا وارد سایت شوید که تمام سرویس های auto-start را هندل کرد.تابع مذکور با تاخیری حدود 120 ثانیه(به طور پیشفرض)
متناظر با worker-thread ها کار میکند.این به این خاطر است که دگیر بیش از آن که تابع بعد از مدت زمان تاخیر معینی شروع به کار کند تفاوتی بین سرویس های non-delayed و delayed پیدا نمیشود.
در مرحله بعدی BIOS بر اساس تنظیماتی که در آن انجام شده است سخت افزار مورد نظر برای یافتن بوت سکتور را انتخاب کرده و ادامه فرآیند بوت سیستم را جلو میبرد.در اینجا فرض میکنیم که هارد دیسک
را برای اولین بوت در BIOS در نظر گرفته اند.خب بریم ادامه ماجرا .. بوت سکتور MBR را که در اولین بخش از هارد دیسک که در Active Partition قرار دارد پیدا کرده و آنرا در حافظه RAM بارگزاری میکند و MBR در
نهایت Volume Boot Code را اجرا کرده و در نهایت بوت لودر یا Boot Manager را در حافظه RAM بارگزاری میکند.محض استحضار اینکه در نسخه های جدید ویندوز از بوت لودر BOOTMGR و در سیستم عامل لینوکس از بوت لودر GRUB v2 استفاده میکنند.
تذکر : حال لزومی ندارد که بوت سکتور حتما MBR باشد زیرا میتوان از GPT هم استفاده کرد.دقت کنید که لازمه استفاده از GPT این است که از UEFI استفاده کنیم نه BIOS.
بعد از اینکه بوت لودر در حافظه RAM بارگذاری و اجرا شد بوت لودر فایل هسته یا کرنل سیستم عامل لینک قابل نمایش نیست . لطفا ثبت نام کنید و یا وارد سایت شوید را از محل ذخیره شده مورد نظر پیدا کرده و در حافظه رم بارگذاری و اجرا میکند بعد از اینکه
کرنل سیستم عامل در رم اجرا شد کنترل سیستم به دست سیستم عامل سپرده میشود و سیستم عامل درایور های مورد نیاز و سرویس هایش را با توجه به ساختار اختصاصی خودش در حافظه رم بارگذاری و اجرا میکند.
چنامچه همه ی این کار ها به خوبی پیش رفت شما میتوانید صفحه لاگین به سیستم عامل را مشاهده کنید و عملیات لاگین را انجام دهید.
Soft (Warm) Booting در مقایسه با Hard (Cold) Booting :
شما شاید در مورد hardcold booting و softwarm booting چیز هایی شنیده باشید و پیش خود فکر کنید که آنها به چه معنی هستند؟
Cold Boot زمانی اتفاق می افتد که کامپیوتر شما خاموش یا بعبارتی shutdown شده باشد و به بیان واضح تر هیچ جریان برقی در قطعات کامپیوتر جاری نباشد.در Hard boot هم که با Cold boot هیچ تفاوتی ندارد
همانطور پیشتر صحبت کردیم فرآیند POST در ابتدا انجام میشود.شاید پیش خود فکر کنید که در زمان ریستارت کردن کامپیوتر هم Cold Boot انجام میشود اما پاسخ ما خیر است زیرا بعد از اینکه سیستم را ریستارت کردید
دیگر فرآیند POST انجام نمیشود و ممکن است سایر پروسس ها و برنامه ها نیز که در با خاموش کردن کامپیوتر از بین لینک قابل نمایش نیست . لطفا ثبت نام کنید و یا وارد سایت شوید میرفتند یا بعبارتی از حافظه رم سیستم پاک میشدند از بین نمیروند.توجه کنید که در انواع سیستم عامل ها
این موضوع فرق میکند.در اصلاح به فرآیند بوت شدن سیستم عامل بعد از ریستارت Soft Booting نیز میگویند.پس نتیجه میگیریم که بوت معمولی سیستم عامل همان Cold Booting است و بوت بعد از ریستارت سیستم همان Soft/Warm Booting میباشد.
در این مقاله کوتاه ما فرآیند بوت شدن سیستم را فارغ از هر سیستم عاملی بررسی کردیم.فرآیند بوت شدن سیستم عامل به خودی خود میتواند بسیار پیچیده تر و با جزئیات ریزتر ی همراه باشد
که در حوصله این مقاله نبود تا به جزئیات وارد شویم.امیدوارم از خواندن این مقاله لذت و بهره کافی را برده باشید
SCM در تعامل با آغاز و یا متوقف کردن سرویس ها است.محل قرارگیری SCM در سیستم عامل ویندوز در مسیر SystemRoot%\System32\services.exe% میباشد.سرویس های ویندوز
از طریق API ها با SCM ارتباط برقرار میکنند و همان API بطور داخلی با کنسول مدیریتی MMC snap-in در تعامل است.
پیاده سازی :
در زمان استارت آپ سیستم عامل ویندوز برنامه services.exe توسط پراسسی به نام wininit اجرا میشود.تابع اصلی این فرآیند ()SvcCtrlMain است که تمام سرویس هایی که برای استارت شدن
در زمان بوت سیستم عامل ویندوز پیکربندی شده اند را به حالت اجرایی در می آورد.اولین دیتابیس داخلی لینک قابل نمایش نیست . لطفا ثبت نام کنید و یا وارد سایت شوید از سرویس های نصب شده توسط دو کلید رجیستری مهم زیر آغاز سازی میشود :
HKEYLOCALMACHINE\SYSTEM\CurrentControlSet\Control\ServiceGroupOrder\List :
این کلید رجیستری شامل نام ها و ترتیب service groups یا گروه های سرویس میباشد.هر کلید رجیستری شامل یک Group Value اختیاری است که ترتیب آغاز سازی کار سرویس
مورد نظر و یا درایور سخت افزارها را با توجه به service group های دیگر کنترل میکند.
HKEYLOCALMACHINE\SYSTEM\CurrentControlSet\Services :
که شامل دیتابیس واقعی از سرویس ها و درایور های سخت افزار ها است که در دیتابیس داخلی SCM خوانده میشود.SCM هر Group Value ی سرویس ها را میخواند و همچنین وابستگی های
هر سرویس را با توجه به کلید های رجیستری DependOnGroup و DependOnService بارگذاری میکند.
در گام بعد تابع اصلی SCM یا همان ()SvcCtrlMain تابع ()ScGetBootAndSystemDriverState فراخوانی میکند تا زمانیکه در لینک قابل نمایش نیست . لطفا ثبت نام کنید و یا وارد سایت شوید حین بوت شدن سیستم عامل درایور های سخت افزاری به درستی باگذاری شوند
را چک کند.طبیعی است که درایور هایی که به درستی بارکذاری نشده اند در لیستی به نام ScFailedDrivers قرار میگیرند.سپس رابط \Pipe\Ntsvc\ به عنوان رابط سرویس Remote Procedure Call یا RPC که
با سرویس های خاصی در ویندوز در تعامل است ایجاد میشود.بعد از آن تابع ()ScAutoStartServices را فراخوانی میکند.زمانیکه این تابع فراخوانی میشود تمام سرویس هایی که در زمان بوت شدن سیستم عامل ویندوز
برای بارگذاری شدن به طور خودکار علامت گذاری شده اند با توجه بر load-order dependencies بارگذاری میشوند.به بیان واضح تر اگر یک وابستگی حلقوی در این شرایط به وجود بیاید خطایی رخ میدهد و سرویس وابسته
پ به یک سرویس دیگر که در یک گروه Load order هستند نادیده گرفته میشوند.برای سرویس های در وضعیت delayed auto-start گروه بندی سرویس ها لینک قابل نمایش نیست . لطفا ثبت نام کنید و یا وارد سایت شوید تحت تاثیر قرار نمیگیرند و آنها در یک مرحله بعد از یک startup دیگر بارگذاری میشوند.
برای هر سرویسی که میخواهد اجرا شود ، SCM تابع ()ScStartService را فراخوانی میکند که این تابع نام فایلی که Service Process در آن است را چک میکند آن هم با اطمینان حاصل کردن از اینکه اکانت اختصاص
یافته به آن سرویس همان اکانتی است که در Service Process در حال اجراست.
هر سرویسی که با یک اکانت(Service Account) به فعالیت نمیپردازد توسط تابع LSASS که مخفف کلمه های Local Security Authority Subsystem Service لاگین شده به فعالیت میپردازد.برای هر کدام از
پراسس های LSASS که شبیه به پسورد های خالی هستند بوسیله SCP و توسط API ای به نام ()LsaStorePrivateData در مسیر \HKLM\SECURITY\Policy\Secrets ذخیره میشوند،البته زمانیکه سرویسی به درستی پیکربندی شده باشد.
سپس تابع ()ScLogonAndStartImage هر سرویسی که یک service process است و در حال اجرا نیست را فراخوانی میکند.service process ها بوسیله API ای به نام ()CreateProcessAsUser در وضعیت Suspended ایجاد میشوند.
قبل از اینکه فراِیند اجرایی service process ادامه یابد کانال ارتباطی به نام Pipe\Net\NtControlPipeX\ (که در اینجا X عددی است که با تکرار هر لینک قابل نمایش نیست . لطفا ثبت نام کنید و یا وارد سایت شوید سرویس یکی به مقدارش افزوده میشود است) بین SCM و service process ایجاد میشود
.service process با فراخوانی تابع ()StartServiceCtrlDispatcher به کانال ارتباطی(Pipe) متصل میشود که بعد از آن SCM دستور "start" را به سرویس ارسال میکند.
Delayed auto-start services چگونه اجرا میشوند ؟
سرویس های Delayed auto-start از زمان ویندوز ویستا اضافه شدند.هدف از ارئه این قابلیت حل مشکل طولانی بودن زمان startup ویندوز بود که در این حین سرویس های حیاتی ویندوز که نمیتوانستند با تاخیر(delay) اجرا شوند
سرعت اجرایشان افزایش یافت.در اصل ، متد auto-start برای آغاز کار سرویس ها برای سرویس های حساس و حیاتی ویندوز طراحی شده است که آن هم بر اساس سایر اپلیکشین ها و سرویس های وابسته عمل میکند.
SCM سرویس های Delayed را با فراخوانی تابع ()ScInitDelayStart اجرایی میکند که آن هم بعد از زمانی است لینک قابل نمایش نیست . لطفا ثبت نام کنید و یا وارد سایت شوید که تمام سرویس های auto-start را هندل کرد.تابع مذکور با تاخیری حدود 120 ثانیه(به طور پیشفرض)
متناظر با worker-thread ها کار میکند.این به این خاطر است که دگیر بیش از آن که تابع بعد از مدت زمان تاخیر معینی شروع به کار کند تفاوتی بین سرویس های non-delayed و delayed پیدا نمیشود.
در مرحله بعدی BIOS بر اساس تنظیماتی که در آن انجام شده است سخت افزار مورد نظر برای یافتن بوت سکتور را انتخاب کرده و ادامه فرآیند بوت سیستم را جلو میبرد.در اینجا فرض میکنیم که هارد دیسک
را برای اولین بوت در BIOS در نظر گرفته اند.خب بریم ادامه ماجرا .. بوت سکتور MBR را که در اولین بخش از هارد دیسک که در Active Partition قرار دارد پیدا کرده و آنرا در حافظه RAM بارگزاری میکند و MBR در
نهایت Volume Boot Code را اجرا کرده و در نهایت بوت لودر یا Boot Manager را در حافظه RAM بارگزاری میکند.محض استحضار اینکه در نسخه های جدید ویندوز از بوت لودر BOOTMGR و در سیستم عامل لینوکس از بوت لودر GRUB v2 استفاده میکنند.
تذکر : حال لزومی ندارد که بوت سکتور حتما MBR باشد زیرا میتوان از GPT هم استفاده کرد.دقت کنید که لازمه استفاده از GPT این است که از UEFI استفاده کنیم نه BIOS.
بعد از اینکه بوت لودر در حافظه RAM بارگذاری و اجرا شد بوت لودر فایل هسته یا کرنل سیستم عامل لینک قابل نمایش نیست . لطفا ثبت نام کنید و یا وارد سایت شوید را از محل ذخیره شده مورد نظر پیدا کرده و در حافظه رم بارگذاری و اجرا میکند بعد از اینکه
کرنل سیستم عامل در رم اجرا شد کنترل سیستم به دست سیستم عامل سپرده میشود و سیستم عامل درایور های مورد نیاز و سرویس هایش را با توجه به ساختار اختصاصی خودش در حافظه رم بارگذاری و اجرا میکند.
چنامچه همه ی این کار ها به خوبی پیش رفت شما میتوانید صفحه لاگین به سیستم عامل را مشاهده کنید و عملیات لاگین را انجام دهید.
Soft (Warm) Booting در مقایسه با Hard (Cold) Booting :
شما شاید در مورد hardcold booting و softwarm booting چیز هایی شنیده باشید و پیش خود فکر کنید که آنها به چه معنی هستند؟
Cold Boot زمانی اتفاق می افتد که کامپیوتر شما خاموش یا بعبارتی shutdown شده باشد و به بیان واضح تر هیچ جریان برقی در قطعات کامپیوتر جاری نباشد.در Hard boot هم که با Cold boot هیچ تفاوتی ندارد
همانطور پیشتر صحبت کردیم فرآیند POST در ابتدا انجام میشود.شاید پیش خود فکر کنید که در زمان ریستارت کردن کامپیوتر هم Cold Boot انجام میشود اما پاسخ ما خیر است زیرا بعد از اینکه سیستم را ریستارت کردید
دیگر فرآیند POST انجام نمیشود و ممکن است سایر پروسس ها و برنامه ها نیز که در با خاموش کردن کامپیوتر از بین لینک قابل نمایش نیست . لطفا ثبت نام کنید و یا وارد سایت شوید میرفتند یا بعبارتی از حافظه رم سیستم پاک میشدند از بین نمیروند.توجه کنید که در انواع سیستم عامل ها
این موضوع فرق میکند.در اصلاح به فرآیند بوت شدن سیستم عامل بعد از ریستارت Soft Booting نیز میگویند.پس نتیجه میگیریم که بوت معمولی سیستم عامل همان Cold Booting است و بوت بعد از ریستارت سیستم همان Soft/Warm Booting میباشد.
در این مقاله کوتاه ما فرآیند بوت شدن سیستم را فارغ از هر سیستم عاملی بررسی کردیم.فرآیند بوت شدن سیستم عامل به خودی خود میتواند بسیار پیچیده تر و با جزئیات ریزتر ی همراه باشد
که در حوصله این مقاله نبود تا به جزئیات وارد شویم.امیدوارم از خواندن این مقاله لذت و بهره کافی را برده باشید
لینک قابل نمایش نیست . لطفا ثبت نام کنید و یا وارد سایت شوید
لینک قابل نمایش نیست . لطفا ثبت نام کنید و یا وارد سایت شوید
لینک قابل نمایش نیست . لطفا ثبت نام کنید و یا وارد سایت شوید
لینک قابل نمایش نیست . لطفا ثبت نام کنید و یا وارد سایت شوید
لینک قابل نمایش نیست . لطفا ثبت نام کنید و یا وارد سایت شوید
لینک قابل نمایش نیست . لطفا ثبت نام کنید و یا وارد سایت شوید
لینک قابل نمایش نیست . لطفا ثبت نام کنید و یا وارد سایت شوید
لینک قابل نمایش نیست . لطفا ثبت نام کنید و یا وارد سایت شوید
لینک قابل نمایش نیست . لطفا ثبت نام کنید و یا وارد سایت شوید