- Исправляем BSOD с кодом «CRITICAL_SERVICE_FAILED» в Windows 10
- Устранение ошибки «CRITICAL_SERVICE_FAILED»
- Способ 1: Проверка диска
- Способ 2: Восстановление при загрузке
- Способ 3: Восстановление из точки
- Способ 4: Удаление обновлений
- Способ 5: Предыдущая сборка
- Способ 6: Возврат ПК к исходному состоянию
- Способ 7: Заводские настройки
- Заключение
- Critical Section Objects
Исправляем BSOD с кодом «CRITICAL_SERVICE_FAILED» в Windows 10
Устранение ошибки «CRITICAL_SERVICE_FAILED»
Дословно перевести текст на синем экране можно как «Критическая ошибка службы». Это может быть сбой в работе сервисов или драйверов, а также их конфликт. Обычно проблема возникает после установки какого-либо ПО или обновлений. Существует и еще одна причина – неполадки с системным жестким диском. С нее и следует начать исправлять ситуацию.
Способ 1: Проверка диска
Одним из факторов возникновения данного BSOD могли стать ошибки на загрузочном диске. Для того чтобы их устранить, следует выполнить проверку встроенной в Windows утилитой CHKDSK.EXE. Если систему удалось загрузить, то вызвать это средство можно непосредственно из графического интерфейса или «Командной строки».
В ситуации, когда загрузка невозможна, следует воспользоваться средой восстановления, запустив в ней «Командную строку». Данное меню откроется после того, как исчезнет синий экран с информацией.
- Жмем кнопку «Дополнительные параметры».
Идем в раздел «Поиска и устранения неисправностей».
Здесь также открываем блок с «Дополнительными параметрами».
Открываем «Командную строку».
Запускаем консольную дисковую утилиту командой
Просим показать нам список всех разделов на дисках в системе.
Ищем системный диск. Поскольку утилита чаще всего меняет букву тома, определить нужный можно только по размеру. В нашем примере это «D:».
Завершаем работу Diskpart.
Теперь запускаем проверку и исправление ошибок соответствующей командой с двумя аргументами.
Здесь «d:» — литера системного носителя, а /f /r – аргументы, разрешающие утилите исправлять «битые» сектора и программные ошибки.
После того как процесс будет завершен, выходим из консоли.
Пробуем запустить систему. Сделать это лучше выключив, а затем снова включив компьютер.
Способ 2: Восстановление при загрузке
Данное средство также работает в среде восстановления, в автоматическом режиме проверяя и исправляя всевозможные ошибки.
- Выполняем действия, описанные в пунктах 1 – 3 предыдущего способа.
- Выбираем соответствующий блок.
Ждем, пока средство завершит работу, после чего произойдет автоматическая перезагрузка ПК.
Способ 3: Восстановление из точки
Точки восстановления — это особые записи на диске, содержащие данные о параметрах и файлах Windows. Ими можно воспользоваться в том случае, если была включена защита системы. Эта операция отменит все изменения, которые были сделаны до определенной даты. Это касается установки программ, драйверов и обновлений, а также настроек «винды».
Способ 4: Удаление обновлений
Эта процедура позволяет удалить последние исправления и обновления. Она поможет в тех случаях, когда вариант с точками не сработал или они отсутствуют. Найти опцию можно все в той же среде восстановления.
Обратите внимание, что данные действия лишат вас возможности воспользоваться инструкциями в способе 5, так как будет удалена папка Windows.old.
- Проходим пункты 1 – 3 из предыдущих способов.
- Жмем «Удалить обновления».
Переходим в раздел, указанный на скриншоте.
Нажимаем кнопку «Удалить обновление компонентов».
Способ 5: Предыдущая сборка
Данный метод будет эффективен, если сбой происходит периодически, но система загружается и мы имеем доступ к ее параметрам. При этом проблемы стали наблюдаться после очередного глобального обновления «десятки».
- Открываем меню «Пуск» и переходим к параметрам. Тот же результат даст сочетание клавиш Windows+I.
Идем в раздел обновления и безопасности.
Переходим на вкладку «Восстановление» и жмем кнопку «Начать» в блоке возврата к предыдущей версии.
Начнется непродолжительный процесс подготовки.
Ставим галку напротив предполагаемой причины восстановления. Здесь не важно, что мы выберем: на течении операции это никак не скажется. Жмем «Далее».
Система предложит проверить обновления. Отказываемся.
Внимательно читаем предупреждение. Особое внимание стоит уделить резервным копиям файлов.
Еще одно предупреждение о необходимости запомнить пароль от своей учетной записи.
На этом подготовка завершена, нажимаем «Вернуться к более ранней сборке».
Ждем завершения восстановления.
Если средство выдало ошибку или кнопка «Начать» неактивна, переходим к следующему способу.
Способ 6: Возврат ПК к исходному состоянию
Под исходным следует понимать то состояние, в котором система была сразу после установки. Запустить процедуру можно как из работающей «винды», так и из среды восстановления при загрузке.
Способ 7: Заводские настройки
Это еще один вариант восстановления Windows. Он подразумевает чистую установку с автоматическим сохранением софта, установленного производителем, и лицензионных ключей.
Заключение
Если применение инструкций, приведенных выше, не помогли справиться с ошибкой, то поможет только новая установка системы с соответствующего носителя.
Кроме того, стоит обратить внимание и на жесткий диск, на который записана Windows. Возможно, он вышел из строя и требует замены.
Critical Section Objects
A critical section object provides synchronization similar to that provided by a mutex object, except that a critical section can be used only by the threads of a single process. Critical section objects cannot be shared across processes.
Event, mutex, and semaphore objects can also be used in a single-process application, but critical section objects provide a slightly faster, more efficient mechanism for mutual-exclusion synchronization (a processor-specific test and set instruction). Like a mutex object, a critical section object can be owned by only one thread at a time, which makes it useful for protecting a shared resource from simultaneous access. Unlike a mutex object, there is no way to tell whether a critical section has been abandoned.
Starting with Windows ServerВ 2003 with Service PackВ 1 (SP1), threads waiting on a critical section do not acquire the critical section on a first-come, first-serve basis. This change increases performance significantly for most code. However, some applications depend on first-in, first-out (FIFO) ordering and may perform poorly or not at all on current versions of Windows (for example, applications that have been using critical sections as a rate-limiter). To ensure that your code continues to work correctly, you may need to add an additional level of synchronization. For example, suppose you have a producer thread and a consumer thread that are using a critical section object to synchronize their work. Create two event objects, one for each thread to use to signal that it is ready for the other thread to proceed. The consumer thread will wait for the producer to signal its event before entering the critical section, and the producer thread will wait for the consumer thread to signal its event before entering the critical section. After each thread leaves the critical section, it signals its event to release the other thread.
Windows ServerВ 2003 and WindowsВ XP: Threads that are waiting on a critical section are added to a wait queue; they are woken and generally acquire the critical section in the order in which they were added to the queue. However, if threads are added to this queue at a fast enough rate, performance can be degraded because of the time it takes to awaken each waiting thread.
The process is responsible for allocating the memory used by a critical section. Typically, this is done by simply declaring a variable of type CRITICAL_SECTION. Before the threads of the process can use it, initialize the critical section by using the InitializeCriticalSection or InitializeCriticalSectionAndSpinCount function.
A thread uses the EnterCriticalSection or TryEnterCriticalSection function to request ownership of a critical section. It uses the LeaveCriticalSection function to release ownership of a critical section. If the critical section object is currently owned by another thread, EnterCriticalSection waits indefinitely for ownership. In contrast, when a mutex object is used for mutual exclusion, the wait functions accept a specified time-out interval. The TryEnterCriticalSection function attempts to enter a critical section without blocking the calling thread.
When a thread owns a critical section, it can make additional calls to EnterCriticalSection or TryEnterCriticalSection without blocking its execution. This prevents a thread from deadlocking itself while waiting for a critical section that it already owns. To release its ownership, the thread must call LeaveCriticalSection one time for each time that it entered the critical section. There is no guarantee about the order in which waiting threads will acquire ownership of the critical section.
A thread uses the InitializeCriticalSectionAndSpinCount or SetCriticalSectionSpinCount function to specify a spin count for the critical section object. Spinning means that when a thread tries to acquire a critical section that is locked, the thread enters a loop, checks to see if the lock is released, and if the lock is not released, the thread goes to sleep. On single-processor systems, the spin count is ignored and the critical section spin count is set to 0 (zero). On multiprocessor systems, if the critical section is unavailable, the calling thread spins dwSpinCount times before performing a wait operation on a semaphore that is associated with the critical section. If the critical section becomes free during the spin operation, the calling thread avoids the wait operation.
Any thread of the process can use the DeleteCriticalSection function to release the system resources that are allocated when the critical section object is initialized. After this function is called, the critical section object cannot be used for synchronization.
When a critical section object is owned, the only other threads affected are the threads that are waiting for ownership in a call to EnterCriticalSection. Threads that are not waiting are free to continue running.