Перейти к содержимому

Memory size decrease что это

  • автор:

Освобождение памяти при переходе приложения в фоновый режим

В этой статье рассказывается о том, как уменьшить потребление приложением, когда оно переходит в фоновое состояние, чтобы приложение не было приостановлено или, возможно, завершено.

Новые фоновые события

В Windows 10 версии 1607 впервые представлены два новых события жизненного цикла приложений: EnteredBackground и LeavingBackground. Эти события позволяют приложению определить, когда оно входит в фоновый режим и выходит из него.

Когда приложение переходит в фоновый режим, принудительные системные ограничения памяти могут измениться. Используйте эти события, чтобы проверить текущее потребление памяти и свободные ресурсы и не превысить лимит. В случае превышения лимита работа вашего приложения будет приостановлена и, возможно, завершена, пока оно находится в фоновом режиме.

События для контроля использования памяти приложения

MemoryManager.AppMemoryUsageLimitChanging создается сразу перед тем, как поменяется лимит общей памяти, доступной приложению. Например, если приложение переходит в фоновый режим и выполняется на Xbox, лимит памяти меняется с 1024 МБ до 128 МБ.
Очень важно правильно обработать это событие, чтобы платформа не приостановила и не завершила работу приложения.

MemoryManager.AppMemoryUsageIncreased создается, если потребление памяти приложением выросло до более высокого значения в перечислении AppMemoryUsageLevel. Например, с Low на Medium. Обрабатывать это событие не обязательно, но рекомендуется, поскольку приложение по-прежнему не должно превышать лимит.

MemoryManager.AppMemoryUsageDecreased создается, если потребление памяти приложением снизилось до более низкого значения в перечислении AppMemoryUsageLevel. Например, с High до Low. Обрабатывать это событие необязательно, однако оно указывает на то, что приложение при необходимости может иметь возможность выделить дополнительную память.

Обработка перехода между передним планом и фоновым режимом

Когда приложение переходит с переднего плана в фоновый режим, создается событие EnteredBackground. Когда приложение возвращается на передний план, вызывается событие LeavingBackground. Во время создания приложения можно регистрировать обработчики для этих событий. Для этого в шаблоне проекта по умолчанию это выполняется в конструкторе классов приложений в файле App.xaml.cs.

Так как работа в фоновом режиме уменьшает объем памяти, доступный приложению, вам также следует зарегистрировать события AppMemoryUsageIncreasedи AppMemoryUsageLimitChanging, которые можно использовать, чтобы проверять текущий объем используемой памяти и текущее ограничение. Обработчики этих событий показаны в следующих примерах. Дополнительные сведения о жизненном цикле приложений UWP см. в разделе Жизненный цикл приложения.

public App() < this.InitializeComponent(); this.Suspending += OnSuspending; // Subscribe to key lifecyle events to know when the app // transitions to and from foreground and background. // Leaving the background is an important transition // because the app may need to restore UI. this.EnteredBackground += AppEnteredBackground; this.LeavingBackground += AppLeavingBackground; // During the transition from foreground to background the // memory limit allowed for the application changes. The application // has a short time to respond by bringing its memory usage // under the new limit. Windows.System.MemoryManager.AppMemoryUsageLimitChanging += MemoryManager_AppMemoryUsageLimitChanging; // After an application is backgrounded it is expected to stay // under a memory target to maintain priority to keep running. // Subscribe to the event that informs the app of this change. Windows.System.MemoryManager.AppMemoryUsageIncreased += MemoryManager_AppMemoryUsageIncreased; >

Когда вызывается событие EnteredBackground, задайте переменной отслеживания значение, чтобы указать, что сейчас приложение работает в фоновом режиме. Это полезно, когда вы создаете код для уменьшения использования памяти.

/// /// The application entered the background. /// /// /// private void AppEnteredBackground(object sender, EnteredBackgroundEventArgs e) < _isInBackgroundMode = true; // An application may wish to release views and view data // here since the UI is no longer visible. // // As a performance optimization, here we note instead that // the app has entered background mode with _isInBackgroundMode and // defer unloading views until AppMemoryUsageLimitChanging or // AppMemoryUsageIncreased is raised with an indication that // the application is under memory pressure. >

Когда приложение переходит в фоновый режим, система снижает ограничение доступной ему памяти, чтобы у приложения на переднем плане было достаточно ресурсов.

Обработчик события AppMemoryUsageLimitChanging позволяет приложению узнать, что объем доступной памяти уменьшен, а также предоставляет новое ограничение в аргументах события, переданных в обработчик. Сравните свойство MemoryManager.AppMemoryUsage, которое предоставляет сведения о текущем используемом объеме памяти приложения, и свойство NewLimit аргументов события, которое определяет новое ограничение. Если вы превышаете ограничение, необходимо сократить потребление памяти.

В данном примере это делается во вспомогательном методе ReduceMemoryUsage, определенного ниже в этой статье.

/// /// Raised when the memory limit for the app is changing, such as when the app /// enters the background. /// /// /// If the app is using more than the new limit, it must reduce memory within 2 seconds /// on some platforms in order to avoid being suspended or terminated. /// /// While some platforms will allow the application /// to continue running over the limit, reducing usage in the time /// allotted will enable the best experience across the broadest range of devices. /// /// /// private void MemoryManager_AppMemoryUsageLimitChanging(object sender, AppMemoryUsageLimitChangingEventArgs e) < // If app memory usage is over the limit, reduce usage within 2 seconds // so that the system does not suspend the app if (MemoryManager.AppMemoryUsage >= e.NewLimit) < ReduceMemoryUsage(e.NewLimit); >> 

В некоторых конфигурациях устройства приложение может работать при превышении нового ограничения памяти, пока система не столкнется с дефицитом ресурсов, а в других конфигурациях это невозможно. Так, на консолях Xbox приложения будут приостановлены или закрыты, если они не уменьшат объем используемой памяти в течение 2 секунд. Это значит, что для оптимальной работы на самом широком спектре устройств используйте это событие, чтобы снизить объем используемых ресурсов в течение двух секунд после возникновения события.

Бывает так, что использование ресурсов памяти приложением в настоящее время, после первого перехода в фоновый режим, находится в допустимых пределах памяти для фоновых приложений, впоследствии расходование памяти увеличивается и начинает приближаться к лимиту. Обработчик события AppMemoryUsageIncreased позволяет проверить ваше текущий объем используемых ресурсов и, при необходимости, освободить память.

Если значение AppMemoryUsageLevel равно High или OverLimit, уменьшите объем используемой памяти. В этом примере процесс реализуется вспомогательным методом ReduceMemoryUsage. Вы также можете подписаться события AppMemoryUsageDecreased, чтобы убедиться, что ваше приложение не превышает ограничение, и при необходимости выделить дополнительные ресурсы.

/// /// Handle system notifications that the app has increased its /// memory usage level compared to its current target. /// /// /// The app may have increased its usage or the app may have moved /// to the background and the system lowered the target for the app /// In either case, if the application wants to maintain its priority /// to avoid being suspended before other apps, it may need to reduce /// its memory usage. /// /// This is not a replacement for handling AppMemoryUsageLimitChanging /// which is critical to ensure the app immediately gets below the new /// limit. However, once the app is allowed to continue running and /// policy is applied, some apps may wish to continue monitoring /// usage to ensure they remain below the limit. /// /// /// private void MemoryManager_AppMemoryUsageIncreased(object sender, object e) < // Obtain the current usage level var level = MemoryManager.AppMemoryUsageLevel; // Check the usage level to determine whether reducing memory is necessary. // Memory usage may have been fine when initially entering the background but // the app may have increased its memory usage since then and will need to trim back. if (level == AppMemoryUsageLevel.OverLimit || level == AppMemoryUsageLevel.High) < ReduceMemoryUsage(MemoryManager.AppMemoryUsageLimit); >> 

ReduceMemoryUsage — это вспомогательный метод , который вы можете реализовать, чтобы освободить память, когда приложение превышает ограничение для приложений, работающих в фоновом режиме. Способ освобождения памяти зависит от конкретного приложения, но в общем случае рекомендуется освобождать ресурсы пользовательского интерфейса и другие ресурсы, связанные с визуализацией. Для этого убедитесь, что работаете в фоновом режиме, затем задайте для свойства Содержимое окна вашего приложения значение null и отмените регистрацию обработчиков событий ИП, а затем удалите любые существующие ссылки на страницу. Если вы не отмените регистрацию своих обработчиков событий пользовательского интерфейса и не удалите все ссылки на страницу, ресурсы страницы освобождены не будут. Затем вызовите метод GC.Collect, чтобы немедленно воспользоваться освободившейся памятью. Обычно сбор мусора не запускается принудительно, потому что система берет эту заботу на себя. В этом конкретном случае мы сокращаем объем памяти, выделенной этому приложению, при его переходе в фоновый режим, чтобы снизить вероятность того, что система завершит работу приложения для высвобождения памяти.

/// /// Reduces application memory usage. /// /// /// When the app enters the background, receives a memory limit changing /// event, or receives a memory usage increased event, it can /// can optionally unload cached data or even its view content in /// order to reduce memory usage and the chance of being suspended. /// /// This must be called from multiple event handlers because an application may already /// be in a high memory usage state when entering the background, or it /// may be in a low memory usage state with no need to unload resources yet /// and only enter a higher state later. /// public void ReduceMemoryUsage(ulong limit) < // If the app has caches or other memory it can free, it should do so now. // > // Additionally, if the application is currently // in background mode and still has a view with content // then the view can be released to save memory and // can be recreated again later when leaving the background. if (isInBackgroundMode && Window.Current.Content != null) < // Some apps may wish to use this helper to explicitly disconnect // child references. // VisualTreeHelper.DisconnectChildrenRecursive(Window.Current.Content); // Clear the view content. Note that views should rely on // events like Page.Unloaded to further release resources. // Release event handlers in views since references can // prevent objects from being collected. Window.Current.Content = null; >// Run the GC to collect released resources. GC.Collect(); > 

Если содержимое окна собирается, каждый Frame начинает процесс отключения. Если в визуальном дереве объектов в разделе содержимого окна есть страницы, будут вызываться события Unloaded. Страницы невозможно полностью удалить из памяти, если не удалить все ссылки на них. В обратном вызове Unloaded выполните следующие действия, чтобы быстро освободить память.

  • Очистите все крупные структуры данных на странице и присвойте им значение null .
  • Отмените регистрацию всех обработчиков событий, в которых есть методы обратного вызова на странице. Зарегистрируйте эти обратные вызовы в обработчике события Loaded для страницы. Событие Loaded наступает, когда пользовательский интерфейс восстанавливается, а страница добавляется в визуальное дерево объектов.
  • Вызовите метод GC.Collect в конце обратного вызова Unloaded, чтобы быстро собрать мусор всех крупных структур данных, которым вы присвоили значение null . Опять же, обычно сбор мусора не запускается принудительно, потому что система берет эту заботу на себя. В этом конкретном случае мы сокращаем объем памяти, выделенной этому приложению, при его переходе в фоновый режим, чтобы снизить вероятность того, что система завершит работу приложения для высвобождения памяти.
private void MainPage_Unloaded(object sender, RoutedEventArgs e) < // > // Disconnect event handlers for this page so that the garbage // collector can free memory associated with the page Window.Current.Activated -= Current_Activated; GC.Collect(); > 

В обработчике событий LeavingBackground следует задать переменную отслеживания ( isInBackgroundMode ), чтобы указать, что приложение больше не работает в фоновом режиме. Затем проверьте, не присвоено ли свойству Content текущего окна значение null , что происходит, если вы удалили представления приложения, чтобы очистить память в фоновом режиме. Если содержимого окна имеет значение null , перестройте представление приложения. В этом примере содержимое окна создано во вспомогательном методе CreateRootFrame.

/// /// The application is leaving the background. /// /// /// private void AppLeavingBackground(object sender, LeavingBackgroundEventArgs e) < // Mark the transition out of the background state _isInBackgroundMode = false; // Restore view content if it was previously unloaded if (Window.Current.Content == null) < CreateRootFrame(ApplicationExecutionState.Running, string.Empty); >> 

Вспомогательный метод CreateRootFrame воссоздает содержимое представления приложения. Код в этом методе почти идентичен коду обработчика OnLaunched, представленного в шаблоне проекта. Единственное отличие состоит в том, что обработчик Launching определяет предыдущее состояние выполнения на основе свойства PreviousExecutionState объекта LaunchActivatedEventArgs, а метод CreateRootFrame просто получает предыдущее состояние, переданное в качестве аргумента. Чтобы не дублировать код, можно выполнить рефакторинг кода обработчика событий Launching по умолчанию, чтобы вызывать CreateRootFrame.

void CreateRootFrame(ApplicationExecutionState previousExecutionState, string arguments) < Frame rootFrame = Window.Current.Content as Frame; // Do not repeat app initialization when the Window already has content, // just ensure that the window is active if (rootFrame == null) < // Create a Frame to act as the navigation context and navigate to the first page rootFrame = new Frame(); // Set the default language rootFrame.Language = Windows.Globalization.ApplicationLanguages.Languages[0]; rootFrame.NavigationFailed += OnNavigationFailed; if (previousExecutionState == ApplicationExecutionState.Terminated) < //TODO: Load state from previously suspended application >// Place the frame in the current Window Window.Current.Content = rootFrame; > if (rootFrame.Content == null) < // When the navigation stack isn't restored navigate to the first page, // configuring the new page by passing required information as a navigation // parameter rootFrame.Navigate(typeof(MainPage), arguments); >> 

Рекомендации

Переход с переднего плана в фоновый режим

При перемещении приложения с переднего плана в фоновый режим система действует от имени приложения, чтобы освободить ресурсы, которые не требуются в фоновом режиме. Например, платформы ИП удаляют кэшированные текстуры, а подсистема видео освобождает память, выделенную от имени приложения. Однако приложению по-прежнему необходимо тщательно отслеживать использование памяти, чтобы его работа не была приостановлена или прекращена системой.

Когда приложения перемещается с переднего плана в фоновый режим, оно сначала получает событие EnteredBackground, а затем — AppMemoryUsageLimitChanging.

  • Используйте событие EnteredBackground,чтобы освободить ресурсы ИП, которые, насколько вам известно, не нужны приложению в фоновом режиме. Например, можно освободить изображение обложки для композиции.
  • Используйте событие AppMemoryUsageLimitChanging, чтобы убедиться, что приложение потребляет меньше памяти, чем указано в лимите для фонового режима. В противном случае не забудьте освободить ресурсы. Если этого не сделать, работа приложения может быть приостановлена или прекращена в соответствии с политикой для конкретного устройства.
  • Вызывайте сборщик мусора вручную, если приложение превышает лимит использования памяти, когда создается событие AppMemoryUsageLimitChanging.
  • Используйте событие AppMemoryUsageIncreased, чтобы продолжить мониторинг использования памяти приложения, работая в фоновом режиме, если вы допускаете, что этот показатель может измениться. Если AppMemoryUsageLevel имеет значение High или OverLimit, не забудьте освободить ресурсы.
  • Оцените целесообразность освобождения ресурсов ИП в обработчике событий AppMemoryUsageLimitChanging вместо EnteredBackground в качестве средства оптимизации производительности. Используйте логическое значение, заданное в обработчиках событий EnteredBackground/LeavingBackground, чтобы отследить, работает ли приложение в фоновом режиме или на переднем плане. Затем в обработчике событий AppMemoryUsageLimitChanging можно освободить ресурсы ИП, если AppMemoryUsage превышает лимит и приложение работает в фоновом режиме (на основе логического значения).
  • Не выполняйте длительные операции в событии EnteredBackground, поскольку в этом случае переключение между приложениями может казаться пользователю медленнее.

Переход с фонового режима на передний план

Когда приложения перемещаются с фонового режима на передний план, приложение сначала получит событие AppMemoryUsageLimitChanging, а затем — LeavingBackground.

  • Используйте событие LeavingBackground, чтобы восстановить ресурсы ИП, освобожденные приложением при переходе в фоновый режим.

Связанные темы

  • Пример воспроизведения мультимедиа в фоновом режиме — показывает, как освободить память при переходе приложения в фоновый режим.
  • Диагностические инструменты — используйте диагностические инструменты, чтобы наблюдать за событиями сбора мусора и убедиться, что приложение освобождает память ожидаемым образом.

Memory size decrease что это

Настройка BIOS Setup Сообщения CMOS Memory Size Mismatch

Если на экране появилось сообщение CMOS Memory Size Mismatch, это значит, что размер установленной оперативной памяти не совпадает с данными в БИОС. Ошибка возникает если пользователем добавлялись/удалялись модули памяти, а также в случае неисправности модуля памяти. Для решения данной проблемы необходимо в BIOS Setup установить реальные характеристики (объем, тип) оперативной памяти.

Ошибка также может иметь название:

Memory Size Decreased

Memory Size Has Changed Since Last Boot

Memory Size Increased

POST коды для системных плат настольных ПК

post-card-signals-show

В этом документе определены звуковые сигналы, сообщения об ошибках и POST-коды (post-code), относящиеся к некоторым версиям BIOS на базе интерфейса EFI (Extensible Framework Interface). Содержание:
Звуковые сигналы
Сообщения об ошибках, выдаваемые BIOS
POST-коды порта 80h
Отображение POST-кодов
Диапазоны POST-кодов
POST-коды
Последовательность типовых POST-кодов Звуковые сигналы
Встроенный динамик выдает звуковые коды ошибок во время процедуры POST.Не все системные платы для настольных ПК содержат встроенный динамик, поэтому необходимо подключить так называемую пищалку.

Напечатайте Образец Frequency
Ошибка памяти Три длинных сигнала 1,280 Гц
Предупреждение системы охлаждения Четыре перемежающихся сисгнала:
Высокий тон, низкий тон, высокий тон, низкий тон
Высокий тон: 2,000 Гц
Низкий тон: 1,600 Гц

Сообщения об ошибках, выдаваемые BIOS

Сообщение об ошибке Описание
Обнаружен процессор, который не предназначен для использования с данной системной платой. Использование неподдерживаемых процессоров может привести к неправильной работе, повреждению системной платы для настольных ПК или процессора, или сокращению срока эксплуатации. Система отключится через 10 секунд. Установленный процессор не совмести с системной платой для настольных ПК.
CMOS Battery Low Возможна, разрядка батареи. Замените батарею.
CMOS Checksum Bad Ошибка проверки контрольной суммы ОЗУ. Возможно, память CMOS повреждена. Запустите программу BIOS Setup для обновления значений.
Memory Size Decreased Объем памяти уменьшился со времени последней загрузки. Если модули памяти не были удалены, возможно, память неисправна.
No «Boot» Device Available Система не нашла загрузочного устройства.

POST-коды порта 80h
Во время теста POST BIOS генерирует коды прохождения (POST-коды [post-code]) и направляет их в порт ввода/вывода 80h. Если процедура POST завершилась неудачно, последний сгенерированный POST-код остается в порту 80h. Этот код можно использовать для определения причины ошибки.

Отображение POST-кодов
Для отображения POST-кодов можно использовать один из следующих методов.

POST-плата (дополнительная плата для шины PCI) POST-плата декодирует данные порта и отображает их на светодиодном дисплее. POST-плату необходимо устанавливать на разъем 1 PCI-шины. pcipostcard
Встроенный светодиодный дисплей для отображения POST-кодов Некоторые Системные платы для настольных ПК Intel® включают встроенный Ведомый для показа Кодов POST onboardpost

Диапазоны POST-кодов порта 80h
В таблицах ниже все POST-коды и значения представлены в шестнадцатеричном формате.

Диапазон Категория/Подсистема
00 – 0F Коды отладки: Могут использоваться, как средство для отладки любым модулем PEIM/драйвером
10 – 1F Процессоры системы
20 – 2F Память/набор микросхем
30 – 3F Восстановление
40 – 4F Зарезервировано для использования
50 – 5F Шины ввода/вывода: PCI, USB, ISA, ATA и т.д.
60 – 6F Сейчас не используется
70 – 7F Устройства вывода: Все консоли вывода
80 – 8F Зарезервировано для будущего использования (для новых кодов консоли вывода)
90 – 9F Устройства ввода: Клавиатура/Мышь
A0 – AF Зарезервировано для будущего использования (для новых кодов консоли ввода)
B0 – BF Загрузочные устройства: Включают в себя стационарные и съемные носители.
C0 – CF Зарезервировано для использования
D0 – DF Выбор загрузочного устройства
E0 – FF E0 – EE: Другие коды
F0 – FF: FF — ошибка прерывания процессора

POST-коды порта 80h

Код POST Описание эксплуатации POST
00 — 0F Коды отладки: может использоваться, как средство для отладки любым модулем PEIM/диском
10 — 1F Процессор системы
10 Включение процессора системы (загрузочный процессор)
11 Инициализация кэш-памяти процессора (включая SP)
12 Начало инициализации приложений процессора
13 Инициализация SMM
14 Инициализация сетевого подключения
15 Преждевременный выход при инициализации драйвера платформы
16 Инициализация драйвера SMBUS
17 Вход в исполнимый код SMBUS в режиме чтения/записи
19 Вход в режим программирования тактового генератора CK505
1F Невосстановимая ошибка процессора
20 — 2F Память/набор микросхем
21 Инициализация компонентов набора микросхем
22 Чтение SPD через модули памяти DIMM
23 Идентификация модулей памяти DIMM
24 Программирование параметров тактовой частоты с помощью контроллера памяти и модулей DIMM
25 Конфигурирование памяти
26 Оптимизация установок памяти
27 Инициализация памяти, например ECC
28 Тестирование памяти
2F Системе не удалось обнаружить память или пригодную память
30 — 3F Восстановление
30 Восстановление после сбоя было запущено по запросу пользователя
31 Восстановление после сбоя было запущено ПО (повреждено флэш-устройство)
34 Загрузка капсулы восстановления
35 Передача управления капсуле восстановления
3F Невозможно восстановить
50 — 5F Шины ввода/вывода (PCI, USB, ISA, ATA и т.д)
50 Нумерация шин PCI
51 Передача ресурсов на шину PCI
52 Инициализация контроллера Hot Plug PCI
53 – 57 Зарезервировано для шины PCI
58 Переустановка шины USB
59 Зарезервировано для USB
5A Переустановка шины PATA/SATA и всех устройств
5B Зарезервировано для ATA
5C Переустановка SMBUS
5D Зарезервировано для SMBUS
5F Невосстановимая ошибка шины ввода/вывода
60 — 6F Сейчас нет действительных POST-кодов в диапазоне 60 — 6F.

Если POST-код будет отображен в данном диапазоне, это код из диапазона B0 — BF. (На 7-сегментном ЖК-дисплее, символ ‘b’ выглядит как 6).

Типичный порт 80-я последовательность POST
Обычно значения кодов порта 80h увеличиваются в процессе загрузки. Меньшие значения кодов относятся к подсистемам, расположенным ближе к процессору, а большие значения кодов – к периферийным устройствам. Обычно используется следующий порядок инициализации: Процессор -> Память -> Шины -> Устройства ввода-вывода -> Устройства загрузки. Последовательность POST-кодов зависит от используемой системы.

Код POST Описание
21 Инициализация компонентов набора микросхем
22 Чтение SPD через модули памяти DIMM
23 Идентификация модулей памяти DIMM
25 Конфигурирование памяти
28 Тестирование памяти
34 Загрузка капсулы восстановления
E4 Начало фазы DXE
12 Начало инициализации приложений процессора

13Инициализация SMM50Нумерация шин PCI51Передача ресурсов на шину PCI92Обнаружение присутствия клавиатуры90Переустановка клавиатуры94Очистка входного буфера клавиатуры95Самотестирование клавиатурыEBВызов графических режимов BIOS58Переустановка шины USB5AПереустановка шины PATA/SATA и всех устройств92Обнаружение присутствия клавиатуры90Переустановка клавиатуры94Очистка входного буфера клавиатуры5AПереустановка шины PATA/SATA и всех устройств28Тестирование памяти90Переустановка клавиатуры94Очистка входного буфера клавиатурыE7Ожидание воода данных пользователем01INT 1900Готово для перезагрузки

— Этот материал подготовлен с использованием человеческого и машинного перевода для удобства пользователей. Данная информация предоставляется в ознакомительных целях и не должна расцениваться как исключительная, либо безошибочная.

Звуковые сигналы и ошибки POST различных версий BIOS

Вступление

Ошибки возникают в работе любого оборудования и часто в самый неожиданный момент, например, во время игры происходит зависание, после которого компьютер отказывается грузиться и показывает неизвестную вам надпись или просто пищит. Чтобы быстро решить проблему нужно знать, что привело к появлению ошибки: умерла какая-то плата, посыпался винчестер или просто запылился вентилятор на процессоре и произошёл перегрев.

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

6 декабря 2010, понедельник 23:42
blog_user_t_r_knight [ ] для раздела Блоги

реклама

Вступление

Ошибки возникают в работе любого оборудования и часто в самый неожиданный момент, например, во время игры происходит зависание, после которого компьютер отказывается грузиться и показывает неизвестную вам надпись или просто пищит. Чтобы быстро решить проблему нужно знать, что привело к появлению ошибки: умерла какая-то плата, посыпался винчестер или просто запылился вентилятор на процессоре и произошёл перегрев.

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

Процедура тестирования — POST

    инициализируются и настраиваются процессор, чипсет, оперативная пямять и видеоадаптер;
    проверяется контрольная сумма CMOS-памяти и состояние батарейки (в случае неправильной контрольной суммы CMOS-памяти настройки сбрасываются);
    тестируются процессор и оперативная память;
    инициализируются и настраиваются периферийные устройства;
    распределяются ресурсы между устройствами;
    инициализируются устройства с собственной BIOS;
    вызывается загрузчик операционной системы;

В случае успешного завершения процедуры POST, запускается система инициации загрузочного сектора (на приведённом ниже скриншоте POST не пройден из-за ошибки контрольной суммы CMOS). Если обнаружена ошибка, проверка останавливается с подачей звуковых сигналов или вывода сообщения на экран монитора.

Основные сообщения об ошибках для AMI, Award и Phoenix BIOS

    8042 Gate — A20 Error — ошибка линии A20, которая управляется при помощи контроллера клавиатуры.
    Adress Line Short — ошибка схемы адресации памяти.
    Bad Cache Memory — Do not Enable — кэш-память неисправна.
    Bad PnP Serial ID Checksum — ошибка контрольной суммы идентификационного номера Plug and Play-устройсва.
    Boot Error — Press To Retry — система не обнаружила ни одного загрузочного диска.
    BIOS ROM Checksum error — System halted — система заблокирована из-за неправильной контрольной суммы BIOS.
    BIOS Update For Installed CPU Failed — ошибка в обновлении микрокода центрального процессора.
    BootSector Write! — обнаружена попытка записи в загрузочный сектор жёсткого диска.
    C: Drive Error — ошибка жёсткого диска.
    C: Drive Failure — ошибка жёсткого диска.
    Driver Error C: — ошибка жёсткого диска.
    Cache Memory Bad — неисправность кэш-памяти.
    CH -2 Timer Error — ошибка второго таймера системной платы.
    Checking NVRAM — обновление конфигурации компьютера.
    CMOS Battery State Low — батарея питания CMOS на системной плате разрядилась.
    CMOS Battery Failed — батарея питания CMOS на системной плате разрядилась.
    System Battery Is Dead — батарея питания CMOS на системной плате разрядилась.
    CMOS Checksum Failure — ошибка контрольной суммы CMOS-памяти, все настройки BIOS будут выставлены по умолчанию.
    CMOS Checksum Error — Defaults Loaded — ошибка контрольной суммы CMOS-памяти, все настройки BIOS будут выставлены по умолчанию.
    CMOS Memory Size Mismatch — объём оперативной памяти не совпадает с данными CMOS-памяти.
    CMOS System Options Not Set — значения в CMOS-памяти ошибочны либо отсутствуют.
    CMOS Time and Date Not Set — значения времени и даты в CMOS-памяти нарушены либо отсутствуют.
    CPU Has Been Changed, Or CPU Ratio Changed Fail — частота шины или коэффициент умножения были изменены.
    Disk Boot Failure, Insert System Disk And Press Enter — не было обнаружено загрузочное устройство.
    Diskette Boot Failure — ошибка при загрузке дискеты.
    DMA Error — ошибка контроллера DMA.
    DMA #1 Error — ошибка канала первичного контроллера DMA.
    DMA #2 Error — ошибка канала вторичного контроллера DMA.
    DMA Bus Time out — неисправность контроллера DMA или одного из периферийных устройств.
    Multi-Bit ECC Error — множественная ошибка чётности в модуле памяти.
    Parity Error — критическая ошибка контроля чётности, продолжение работы будет остановлено.
    RAM R/W test failed — POST чтения/записи оперативной памяти не пройден.
    CMOS Memory Size Wrong — объём оперативной памяти не соответствует данным CMOS.
    Boot Failure. — ошибка загрузки.
    Invalid Boot Diskette — дискета не является загрузочной.
    Drive Not Ready — устройство не готово.
    Insert BOOT diskette in A: — вставьте загрузочную дискету в дисковод «A”.
    Reboot and Select proper Boot device or Insert Boot Media in selected Boot device — перезагрузите ПК и выберите другое загрузочное оборудование или вставьте загрузочный диск в выбранное устройство.
    NO ROM BASIC — не найдено ПЗУ с интерпретатором BASIC.
    Primary Master Hard Disk Error — ошибка подключения накопителя как основного к первичному каналу стандартного IDE/SATA-контроллера.
    Primary Slave Hard Disk Error — ошибка подключения накопителя как дополнительного к первичному каналу стандартного IDE/SATA-контроллера.
    Primary Master Drive — ATAPI Incompatible — накопитель, подключенный как основной к первичному каналу стандартного IDE/SATA-контроллера, не является ATAPI-устройством.
    Primary Slave Drive — ATAPI Incompatible — накопитель, подключенный как ведомый к первичному каналу стандартного IDE/SATA-контроллера, не является ATAPI-устройством.
    S.M.A.R.T. Capable but Command Failed — ошибка при отправке команды накопителю с поддержкой S.M.A.R.T.
    S.M.A.R.T. Command Failed — ошибка при отправке команды накопителю с поддержкой S.M.A.R.T.
    S.M.A.R.T. Status BAD, Backup and Replace — накопитель, поддерживающий S.M.A.R.T., находится в неудовлетворительном состоянии.
    S.M.A.R.T. Capable and Status BAD — накопитель, поддерживающий S.M.A.R.T., находится в неудовлетворительном состоянии.
    VIRUS: Continue (Y/N)? — запрос на перезапись загрузочного сектора.
    Microcode Error — ошибка загрузки микрокода в процессор, исправляющий известные ошибки.
    NVRAM Checksum Bad, NVRAM Cleared — ошибка контрольной суммы содержимого CMOS-памяти, CMOS-память очищена.
    Resource Conflict — конфликт ресурсов: несколько устройств пытаются использовать одни и те же системные ресурсы.
    NVRAM Ignored — системная конфигурация, сохранённая в CMOS-памяти, проигнорирована.
    NVRAM Bad — в системной конфигурации содержатся ошибки.
    Static Resource Conflict — несколько устройств пытаются использовать одни и те же системные ресурсы.
    PCI I/O conflict — конфликт ресурсов ввода/вывода устройств на шине PCI.
    PCI ROM conflict — конфликт ресурсов устройств на шине PCI.
    PCI IRQ conflict — устройства на шине PCI используют один и тот же ресурс — прерывание.
    PCI IRQ routing table Error — ошибка назначения прерываний для устройств на шине PCI.
    Timer Error — ошибка в работе системного таймера.
    Refresh timer test failed — ошибка прохождения POST системного таймера.
    Interrupt Controller-1 Error — ошибка инициализации первичного контроллера прерываний.
    Interrupt Controller-2 Error — ошибка инициализации вторичного контроллера прерываний.
    CMOS Settings Wrong — данные в CMOS-памяти ошибочны.
    KBC BAT Test failed — контроллер клавиатуры не прошёл POST.
    Keyboard Error — неисправность или отсутствие клавиатуры.
    PS2 Keyboard not found — PS/2-клавиатура не обнаружена.
    PS2 Mouse not found — PS/2-мышь не обнаружена.
    Keyboard/Interface Error — клавиатура/контроллер клавиатуры неисправен.
    Unlock Keyboard — клавиатура заблокирована.
    System Halted — система остановлена.
    «INS» Pressed — была нажата клавиша Ins во время загрузки, настройки BIOS будут выставлены по умолчанию.
    Password check failed — введён неверный пароль.
    Unknown BIOS Error. Error code = 004Ah — модуль меню BIOS не найден.
    Unknown BIOS Error. Error code = 004Bh — языковой модуль BIOS не найден.
    Floppy Controller Failure — не найден контроллер дисковода.
    Warning! Unsupported USB device found and disabled! — найдено USB-устройство, загрузка с которого невозможна, устройство отключено.
    Warning! Port 60h/64h emulation is not supported by this USB Host Controller! — USB-контроллер не может обеспечить поддержку USB-клавиатуры в BIOS.
    Warning! EHCI controller disabled. It requires 64bit data support in the BIOS — EHCI-интерфейс USB-контроллера отключен, USB-контроллер будет работать в режиме USB 1.1.
    Not enough space in Runtime area! SMBIOS data will not be available — размер данных BIOS превышает доступное для их хранения пространство.
    Warning! This system board does not support the power requirements of the installed processor. The processor will be run at a reduced frequency, which will impact system performance — установлен процессор с тепловым пакетом, превышающим возможности материнской платы: он будет работать на пониженных частотах, что снизит производительность системы.
    Insufficient Runtime space for MPS data! System may operate in PIC or Non-MPS mode — недостаточно места для сохранения таблицы MPS, компьютер будет функционировать в однопроцессорном режиме со стандартным режимом контроллера прерываний.
    Mem Optimal Error – разный объём памяти на каналах.
    Memory Parity Error — ошибка контроля чётности памяти.
    Memory Size Decrease Error — уменьшение количества системной памяти.
    Memory size has changed since last boot — объём оперативной памяти был изменён с момента последней загрузки.
    Memory test fail — проверка оперативной памяти не пройдена.
    Missing Operation System — отсутствие операционной системы.
    Missing OS — отсутствие операционной системы.
    No Operating System Found — операционная система не обнаружена.
    NVRAM Cleared by Jumper — системные данные очищены при помощи перемычки на системной плате.
    Operating System Not Found — операционная система не найдена.
    Override enabled — Defaults — система не загрузилась, поэтому были загружены значения по умолчанию.
    Press a key to reboot — нажмите любую клавишу для перезагрузки системы.
    Press ESC to skip Memory Test — нажмите Esc, чтобы пропустить тест проверки памяти.
    Press F1 to disable NMI, F2 to reboot — ошибка не маскируемого прерывания NMI, нажмите F1, чтобы отключить NMI, F2 — перезагрузиться.
    Press TAB to show POST Screen — нажмите Tab, для показа результатов POST.
    Primary IDE channel no 80 conductor cable installed — на первичном IDE-канале используется не 80-жильный кабель.
    Resuming disk, Press TAB to show POST screen — восстановление системы с жёсткого диска, нажмите Tab, чтобы увидеть окно с результатами POST.
    Software Port NMI Inoperational — ошибка порта немаскируемого прерывания NMI.
    SPD Toler Error Serial Presence Detect — ошибка чтения данных из чипа SPD.
    Unknown PCI Error — неизвестная ошибка шины PCI.
    Update failed — обновления закончились неудачно.
    Update OK — обновления закончились успешно.[list] Warning! CPU has been changed or Overclock fail — система будет загружена в безопасном режиме после неудачного разгона.

В тех случаях, когда система не может вывести сообщение о неисправности на экран, используются звуковые сигналы, но некоторые современные корпуса не имеют динамиков (speaker), а значит, мы не услышим звукового сигнала об ошибке. В таком случае можно воспользоваться индикатором POST-кодов (о них вы узнаете в конце статьи).

Звуковые сигналы

    отсутствуют — неисправен блок питания или материнская плата.
    1 короткий — ошибки отсутствуют.
    2 коротких — ошибка чётности оперативной памяти.
    3 коротких — неисправны первые 64 Кб оперативной памяти.
    4 коротких — неисправен системный таймер.
    5 коротких — неисправен процессор.
    6 коротких — неисправен контроллер клавиатуры.
    7 коротких — неисправна материнская плата.
    8 коротких — ошибка видеопамяти.
    9 коротких — неправильная контрольная сумма BIOS.
    10 коротких — ошибка записи в CMOS-память.
    11 коротких — ошибка кэш-памяти.
    1 длинный 2 коротких — неисправна видеокарта.
    1 длинный 3 коротких — неисправна видеокарта.
    2 длинный 2 коротких — ошибка контроллера гибких дисков.

    Отсутствуют — неисправен блок питания или материнская плата.
    1 короткий — отсутствие ошибок.
    Повторяющийся короткий — блок питания неисправен, ошибка оперативной памяти.
    1 длинный — ошибка оперативной пямяти.
    Повторяющийся длинный — ошибка оперативной пямяти.
    1 длинный 2 коротких — видеокарта необнаружена или ошибка видеопамяти.
    1 длинный 3 коротких — ошибка видеоадаптера или ошибка клавиатуры.
    3 длинных — ошибка контроллера клавиатуры.
    1 длинный 9 коротких — ошибка чтения BIOS или неисправен чип BIOS.
    2 коротких — критическая ошибка.

Индикаторы POST-кодов

Если причину неполадки не удалось определить по звуковому сигналу или сообщению на экране, то стоит посмотреть POST-код ошибки и расшифровать его. На некоторых материнских платах встроены индикаторы POST-кодов, а расшифровка их находится в руководстве пользователя данного оборудования.

Также, существуют POST-карты — платы расширения с цифровым индикатором, на который выводятся коды инициализации материнской платы. С помощью такого устройсва достаточно просто определить почти любую неполадку. Имея возможность определить неисправность компьютера, можно своими силами вернуть его в рабочее состояние и прилично сэкономить на ремонте.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *