• Главная
  • Карта сайта
Не найдено

Визначення часу завантаження в ОС на базі Windows

Напевно, багато користувачів стикалися з тим, що з часом операційна система починає завантажуватися все повільніше. Чим більше програм і різних додатків встановлено на комп'ютері, тим довше система вантажиться. Більш того, час відгуку системи на дії користувача безпосередньо залежить від кількості і якості встановлених додатків. Пояснюється це тим, що багато програм не тільки займають місце на диску, але і заносять інформацію про себе в різні реєстри операційної системи. При цьому неважливо, чи будуть це записи про асоціацію конкретних файлів з цим додатком, автозапуск деяких модулів або інша інформація, так як при завантаженні ОС всі ці дані так чи інакше перевіряються і повторно записуються в реєстрі ОС. Відповідно чим більше таких записів, тим довше вантажиться операційна система, оскільки реєстр, як і будь-яка інша база даних, зі збільшенням зберігається в ньому інформації, а також розширенням структури даних повільніше відгукується на будь-які запити. Найкращим способом вирішення даної проблеми є одне популярне, але в той же час складне для багатьох користувачів дію - видалення і нова установка операційної системи. Очищення реєстру за допомогою спеціальних програм у багатьох випадках може дати негативний результат: не тільки порушиться цілісність тих чи інших програм, але і може стати непрацездатною операційна система.
У цій статті ми не будемо розглядати прийоми щодо прискорення завантаження операційної системи - наше завдання полягає в тому, щоб проаналізувати, яким чином можна оцінити час її завантаження. Спробуємо розібратися, як визначити час завантаження системи на базі операційних систем Windows Vista і Windows 7.

У порівнянні з попередніми версіями Windows на базі Windows NT 5.0 / 5.1 (Windows 2000 і XP), нова платформа NT 6.0 / 6.1 (Windows Vista і 7) дозволила досягти великих успіхів у прискоренні завантаження операційної системи за рахунок застосування деяких нових технологій. Однак в більшості своїй ці технології націлені на завантаження операційної системи не при холодному старті, а при виході зі сплячого режиму або «сну». Це логічно, оскільки багато користувачів або не вимикають свої комп'ютери взагалі, або переводять їх в режим «сну», з якого вони потім автоматично переходять в режим гібернації. Вимірювання часу завантаження операційної системи слід виконувати тільки в разі холодного старту системи, так як в режимі «сну» або глибокого сну початковий стан при запуску ОС буде різним, оскільки зліпок системи кожен раз буде змінюватися в залежності від працюючих служб і додатків. Створити умова для цього режиму, в якому зліпок системи був би ідентичним, - складна і трудомістка задача. Тому ми будемо розглядати час завантаження системи після включення комп'ютера. Відзначимо, що в операційній системі Windows 8 буде застосовуватися нова технологія завантаження, що представляє собою своєрідний гібрид між завантаженням з нуля і режимом глибокого сну. Для того щоб зрозуміти, як це буде працювати, розглянемо етапи завантаження і виключення операційної системи в Windows 7.

Вимкнення системи (Shutdown):

  1. Користувач за допомогою кнопки Shutdown (Вимкнення) або натиснувши кнопку вимикання на системному блоці активізує функцію API ExitWindowsEx (); якщо виключення відбувається за допомогою будь-якої програми, то виконується API-функція InitiateShutdown ();
  2. Операційна система посилає команду всім працюючим програмам про те, що система буде виключена і їм необхідно зберегти поточні дані якомога швидше. У свою чергу, додатки можуть кілька затримати процес виключення, задіявши механізм виділення додаткового часу для виходу з програми;
  3. Після успішного закриття додатків або їх примусової зупинки система закриває всі призначені для користувача сесії на комп'ютері;
  4. Вимикаються працюють сервіси операційної системи. При цьому частина сервісів вимикається в певному порядку, так як вони залежать один від одного. Решта сервіси вимикаються в кілька потоків одночасно. Якщо сервіс не відповідає, то система зупиняє його примусово;
  5. Після виключення всіх сервісів Windows посилає команду виключення всім периферійних пристроїв, які підтримують автоматичне відключення;
  6. Система закриває основну системну сесію (вона має альтернативну назву - session 0), перевіряє цілісність збережених призначених для користувача і системних даних на диску і згодом відсилає сигнал через ACPI-інтерфейс для повного виключення комп'ютера.

Відзначимо, що процес перезапуску відбувається приблизно так само, за винятком деяких специфічних команд сервісів і іншої команди ACPI-інтерфейсу. Режими «сну» і глибокого сну сильно відрізняються від процесу вимикання / перезапуску системи. Режим «сну» має на увазі миттєву паузу всієї системи (запущених додатків і сервісів) і переклад комп'ютера в режим зниженого енергоспоживання, при якому основні пристрої все одно залишаються включеними. При глибокого сну вміст оперативної пам'яті записується на незалежне пристрій (жорсткий диск), а комп'ютер вимикається за допомогою спеціальної команди через інтерфейс ACPI і більшість його компонентів відключаються від харчування. При наступному включенні комп'ютера вміст оперативної пам'яті відновлюється з копії на диску - таким чином, користувач може продовжити роботу з того місця, на якому він зупинився (залишаються запущені програми, не збережені документи). Також слід зазначити, що в операційній системі Windows Vista з'явилася додаткова функція Гібридний сплячий режим, коли вміст оперативної пам'яті скидається на диск, але харчування більшості пристроїв не відключається. Якщо комп'ютер був відключений або пропало електроживлення, ОС відновлюється з диска, якщо немає - система виходить з режиму очікування ACPI.

Процес запуску операційної системи при холодному старті складається з наступних етапів:

  1. Натискання на кнопку харчування призводить до завантаження BIOS комп'ютера і процедури тестування його основних компонентів - POST (Power-On Self Test). При цьому визначається і фізичний диск, з якої почнеться старт операційної системи;
  2. BIOS зчитує інформацію з MBR (Master Boot Record) і таким чином запускає утиліту Bootmgr.exe, яка, в свою чергу, шукає завантажувач Windows (Winload.exe) на диску і запускає його;
  3. Завантажувач ініціалізує завантаження основних драйверів для подальшого запуску операційної системи і сервісу сесій (session manager process - Smss.exe);
  4. Завантаження Smss.exe і являє собою завантаження основної сесії системи (session 0), коли завантажуються всі драйвери, сервіси та інші елементи операційної системи;
  5. Після успішного запуску основної сесії завантажуються віконний менеджер і групові політики для локального ПК і домену, а потім після входу в систему запускається основна сесія користувача (User session) за допомогою сервісу Winlogon.exe;
  6. Починається завантаження робочого столу користувача і старт всіх його додатків, які промарковані до автозапуску.

В операційній системі Windows 8 фахівці Microsoft впровадили нову функцію швидкого запуску системи, об'єднавши режими глибокого сну і повного виключення комп'ютера. Аналіз дій користувачів ноутбуків і настільних комп'ютерів показав, що хоча режими «сну» і глибокого сну популярні для портативних пристроїв (застосовуються приблизно в 50% випадків), багато користувачів до сих пір повністю включають / вимикають комп'ютер. Одних, мабуть, лякає саме слово і процес, інші не використовують режим «сну» через економію електроенергії, а треті хочуть, щоб при включенні комп'ютера створювалася чиста нова сесія користувача без запущених раніше додатків. Нова функція швидкого завантаження системи в Windows 8 відповідає цим вимогам і діє в такий спосіб (рис. 1). При виключенні живлення операційна система закриває призначену для користувача сесію повністю, тобто всі додатки і сервіси вимикаються. Однак основна системна сесія (session 0) не закривається, а переводиться в режим гібернації - на диску зберігається зліпок стану сервісів і додатків даної сесії з оперативної пам'яті. Після цього комп'ютер повністю вимикається, що призводить до нульового енергоспоживання. Тут варто зазначити, що не вся основна системна сесія переводиться в режим гібернації - деяка частина, що відноситься до драйверів пристроїв, може не перекладатися в режим гібернації, якщо користувач перед цим видалив або додав нові драйвери. Такий метод виключення, дійсно, повинен стати більш ефективним, оскільки системна сесія практично не схильна до зміни з боку користувача, а більшість інформації, що зберігається в оперативній пам'яті інформації цієї сесії відновити роботу до перезапуску не змінюється. Завантаження основного ядра системи на льоту дозволяє скоротити загальний час завантаження системи на 30-70%. На сайті підрозділу Microsoft по зв'язку з розробниками ПЗ (Microsoft Developer Network, msdn.com) цієї нової технології присвячена окрема стаття. Вихід Windows 8 намічений на осінь поточного року, і тоді, напевно, можна буде судити, як ця технологія працює, а поки повернемося до завантаження операційних систем Windows Vista і 7.

Вихід Windows 8 намічений на осінь поточного року, і тоді, напевно, можна буде судити, як ця технологія працює, а поки повернемося до завантаження операційних систем Windows Vista і 7

Рис. 1. Принцип швидкого запуску ОС в Windows 8

В Інтернеті описано безліч способів, як визначити час завантаження операційної системи. Така необхідність виникає з різних причин: комусь це потрібно виключно в практичних цілях, а кому-то просто зі спортивного інтересу або щоб було чим похвалитися перед друзями.

Розглянемо основні способи отримання даних про час запуску системи. Перший і найпростіший спосіб - це використання секундоміра, наявного зараз в будь-яких електронному годиннику або мобільному телефоні. Тут все просто - методика вимірювання не потребує пояснень. Зазвичай найпростіший шлях є і найправильнішим, але для даного методу характерна велика похибка вимірювань. Отже, застосовувати його на практиці можна лише в тому випадку, якщо точність результатів не надто важлива.

Другим способом є аналіз вбудованих в Windows Vista / 7 лічильників і засобів вимірювання продуктивності. Для того щоб оцінити час завантаження операційної системи, необхідно відкрити спеціальне оснащення Перегляд відомостей про продуктивність в журналі подій. Для цього потрібно послідовно пройти за наступними посиланнями: Панель управління -> Система -> та знаряддя -> Додаткові інструменти -> Перегляд відомостей про продуктивність в журналі подій.

В цей журнал надходить інформація не тільки по завантаженню, але і по завершенню роботи операційної системи. Кожному події присвоюється певний код, за яким можна визначити його приналежність. Ось приклади основних кодів системи в цьому журналі:

  • код 100 - загальний час завантаження;
  • коди 101-199 - пристрої, сервіси та додатки, де виникли затримки при запуску;
  • код 200 - загальний час завершення роботи;
  • коди 201-299 - пристрої, сервіси та додатки, де виникли затримки при виході.

Відзначимо, що дані про завантаження системи потрапляють в цей журнал не відразу, а через деякий час після запуску. Тому бувають випадки, коли відомості про щойно завантаженої операційній системі в журналі відсутні, отже, необхідно почекати кілька хвилин, а краще близько півгодини.

Для кожної події можна подивитися детальний опис і таким чином дізнатися подробиці завантаження. Всі дані в журналі вказуються в мілісекундах. У події з кодом 100 також можна відобразити ваші дані по конкретним етапам завантаження:

  • MainPathBootTime - час для появи робочого столу, включаючи всі критичні сервіси і драйвери, необхідні для основної роботи системи;
  • BootKernelInitTime - ініціалізація ядра;
  • BootDriverInitTime - ініціалізація драйверів;
  • BootDevicesInitTime - ініціалізація заліза;
  • BootSmssInitTime - ініціалізація диспетчера сеансу;
  • BootPostBootTime - час запуску всіх некритичних сервісів.

Як видно з перерахованих етапів, в цьому випадку можна діагностувати час завантаження лише основних елементів системи, а не призначених для користувача програм. Дотримуючись цих даних, можна точно визначити час завантаження всієї операційної системи в цілому, тобто від старту до моменту, коли робочий стіл буде відгукуватися на дії користувача, а на кожну програму вже будуть запущені і почнуть функціонувати.

Третім способом визначення часу завантаження операційної системи є використання сторонніх утиліт. Подібного роду програмних інструментів в Мережі можна знайти чимало. Всі вони досить прості і безкоштовні. Не можна не відзначити, що в деяких з них реалізована функція оптимізації процесів завантаження Windows, скориставшись якою можна трохи прискорити старт операційної системи. Однак більшість таких програм базуються на лічильниках продуктивності, описаних у другому способі. По суті, вони є оболонкою для відображення даних з описаної вище оснащення. Ніяких додаткових можливостей по визначенню часу завершення завантаження операційної системи після показу робочого столу в них немає.

Четвертий спосіб - застосування спеціального програмного рішення від компанії Microsoft під назвою Windows Performance Analysis Tools (WPT). Це набір з трьох спеціалізованих утиліт: Xperf, Xperfview і Xbootmgr. Програмне рішення поставляється разом з серверної операційної системою Windows 2008 R2 і служить для аналізу продуктивності при завантаженні системи. За допомогою нехитрих команд, докладно описаних в документації до утиліт, користувач може визначити час завантаження кожного елемента основний системної сесії операційної системи, а також отримати інформацію про виникаючі в процесі запуску помилках і затримках. На жаль, і ці утиліти не дозволяють однозначно визначити час повного завантаження системи, коли для користувача сесія і всі супутні їй додатки запущені і не віднімають процесорного часу.

Уважний читач, напевно, запитає, чому особливу увагу в описаних тут способах приділяється часу завантаження додатків користувача, а не старту системи в цілому до процесу ініціалізації робочого столу користувача. Пояснення тут досить просте: для того щоб оцінити час завантаження окремого ПК, правильніше починати відлік часу лише після того, як всі програми користувача будуть запущені, а система буде перебувати в «режимі» режимі. Наприклад, на чистій операційній системі швидкість завантаження між двома різними комп'ютерами зі схожими конфігураціями, але з різними типами дисків SSD і HDD в більшості випадків буде приблизно однаковою. Щоб оцінити переваги використання того чи іншого диска, необхідно імітувати справжній робочий комп'ютер з купою додаткових додатків і сервісів. Більш того, користувачеві, який намагається виміряти час завантаження операційної системи, важливіше отримати універсальний засіб визначення завантаження системи, а не її окремих елементів.

Проаналізувавши можливі способи, ми прийшли до висновку, що оцінити час завантаження операційної системи можна лише за допомогою спеціального додатку, яке запускалося б разом з сесією користувача і аналізувало поведінку системи при завантаженні інших додатків. Поняття чуйності системи після запуску досить розпливчасто, але в той же час може бути з більшою часткою ймовірності визначено за допомогою програмного методу. Нерідкі випадки, коли користувач, побачивши свій робочий стіл, не може запустити жодного додатка. Це пояснюється тим, що система, не дивлячись на промальовування всіх елементів робочого столу, продовжує довантажувати програми і об'єктів у програмах, описаних в автозапуску. Визначити, коли система повністю готова до дій користувача, можна шляхом аналізу поточної черги завдань процесора і основного жорсткого диска. Простіше кажучи, виходячи зі ступеня завантаженості центрального процесора і системного диска, можна оцінити готовність системи для роботи. Але перш, ніж описати цей метод, розглянемо процес автозапуску додатків для користувача сесії.

В операційній системі Windows Vista і 7 існує декілька етапів автоматичного завантаження додатків користувача. У реєстрі ОС є три основні записи про автозавантаження додатків в гілках:

  • "HKLM \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Run";
  • "HKCU \ Software \ Microsoft \ Windows \ CurrentVersion \ Run";
  • "HKLM \ SOFTWARE \ Wow6432Node \ Microsoft \ Windows \ CurrentVersion \ Run" (тільки для 64-бітової версії ОС).

До того ж є дві папки автозапуску, а збережені в них символічні посилання дозволяють автоматично запускати додатки при завантаженні системи:

  • % SystemDrive% \ ProgramData \ Microsoft \ Windows \ Start Menu \ Programs \ Startup;
  • % SystemDrive% \ Users \% USERNAME% \ AppData \ Roaming \ Microsoft \ Windows \ Start Menu \ Programs \ Startup,

де% SystemDrive% - це змінна системного диска, а% USERNAME% - ім'я поточного користувача системи.

Кроме опис елементів автозавантаження, існують и кілька прихований можлива з автоматичного запуску Додатків, Якими в основному корістуються вирусописатели. Всі Додатки з автозавантаження почінають завантажуватіся одночасно при актівації користувача Сесії, тобто после завантаження робочого столу. Дізнатися, який елемент буде завантажуватися першим, точно не можна, але в процесі наших досліджень було встановлено, що додатки починають стартувати саме в тому порядку, в якому вони розташовані в списках вище. Вони стартують з різницею всього в декілька мікросекунд.

Перш за все спробуємо визначити, яким чином починати відлік часу запуску операційної системи. Заходити в BIOS і засікати час запуску не є правильне рішення, оскільки цей спосіб не забезпечує точності вимірювань. На щастя, компанія Microsoft впровадила в свої операційні системи своєрідний таймер запуску, який ініціалізується, по всій видимості, на початку завантаження основної системної сесії. В англійському варіанті операційної системи параметр часу запуску операційної системи називається System Boot Time. У російськомовній версії він носить назву Час завантаження системи. Отримати ці дані можна, набравши в командному рядку від імені адміністратора команди, зображені на рис. 2 і 3.

2 і 3

Рис. 2. Команда для російськомовної версії ОС

Команда для російськомовної версії ОС

Рис. 3. Команда для англомовної версії ОС

Якщо з часом старту системи все досить просто, то виявлення часу готовності операційної системи до дій користувача пов'язане з багатьма труднощами. На наш погляд, точно визначити час готовності ОС в цьому випадку не можна. Можна лише зафіксувати той момент, коли операційна система перестає запускати додатки, описані в автозапуску, і переходить в своєрідний «режим очікування». В даному випадку під «чекають режимом» ми маємо на увазі момент, коли програми не працюють з жорстким диском. При цьому навантаження на процесор складає на понад 5%. Для визначення продуктивності цих компонентів - процесора і диска - в операційних системах на базі Windows є спеціальні лічильники продуктивності.

Рядовий користувач може вивести інформацію про поточне завантаження процесора і диска за допомогою спеціального оснащення. Вона називається Системний монітор (рис. 4) і знаходиться в Панель управління ® Всі елементи панелі управління ® Адміністрування. За замовчуванням при відкритті системного монітора користувачеві вже показується загальна поточне завантаження центрального процесора. При необхідності він може додати лічильник завантаженості кожного з дисків (Додати лічильники ® Фізичний диск), встановлених в комп'ютері. Аналізуючи ці показники, можна визначити той момент, коли на протязі тривалого часу завантаження цих параметрів мінімальна, що говорить про те, що система повністю завантажилася і готова до роботи. Тобто всі програми і сервіси користувача, що знаходяться в автозапуску, успішно запущені і функціонують. Не можна не відзначити, що показання лічильників продуктивності можна отримати не тільки через описану оснащення, а й через спеціальні запити до бази даних Windows Management Instrumentation (WMI). WMI - це інструментарій управління Windows, тобто одна з базових технологій для централізованого управління і стеження за роботою різних частин комп'ютерної інфраструктури під управлінням платформи Windows. У ній знаходиться маса даних про стан комп'ютера, а доступ до неї можна отримати через запити мови VBA або інших аналогічних, які можуть задіяти API операційної системи.

Рис. 4. Оснащення Системний монітор

У наступній статті ми спробуємо проаналізувати час завантаження операційної системи в залежності від типу встановлених носіїв - SSD і HDD. Однак ще раз зазначимо, що чітко визначити час повного завантаження операційної системи, включаючи додатки користувача, не можна. Такі дані можна отримати, тільки грунтуючись на поточних показаннях роботи процесора і дискової підсистеми комп'ютера, а в деяких випадках - і мережевих адаптерів.

КомпьютерПресс 05'2012


Провайдеры:
  • 08.09.2015

    Batyevka.NET предоставляет услуги доступа к сети Интернет на территории Соломенского района г. Киева.Наша миссия —... 
    Читать полностью

  • 08.09.2015
    IPNET

    Компания IPNET — это крупнейший оператор и технологический лидер на рынке телекоммуникаций Киева. Мы предоставляем... 
    Читать полностью

  • 08.09.2015
    Boryspil.Net

    Интернет-провайдер «Boryspil.net» начал свою работу в 2008 году и на данный момент является одним из крупнейших поставщиков... 
    Читать полностью

  • 08.09.2015
    4OKNET

    Наша компания работает в сфере телекоммуникационных услуг, а именно — предоставлении доступа в сеть интернет.Уже... 
    Читать полностью

  • 08.09.2015
    Телегруп

    ДП «Телегруп-Украина» – IT-компания с 15-летним опытом работы на рынке телекоммуникационных услуг, а также официальный... 
    Читать полностью

  • 08.09.2015
    Софтлинк

    Высокая скоростьМы являемся участником Украинского центра обмена трафиком (UA — IX) с включением 10 Гбит / сек... 
    Читать полностью