Войти

Показать полную графическую версию : [решено] Как загрузчик ОС определяет: возобновление работы или обычная загрузка.


Страниц : [1] 2

bish
05-02-2009, 00:13
Интересно узнать: как Windows "даёт знать" загрузчику, что она "уснула", т.е. в спящем режиме ? Если в boot.ini, то что там пишет?
Может кто знает?

Vadikan
05-02-2009, 03:44
bish, для чего вам это нужно знать?

Leshiy
05-02-2009, 18:10
Компьютерный форум OSzone.net » Компьютеры + Интернет » Хочу все знать так вроде такой раздел :tomato2:

dmitryst
05-02-2009, 18:33
Vadikan, мне тоже интересно :)

Den47
05-02-2009, 18:35
А загрузчик это не определяет. Система во время перехода в спящий режим пишет об этом в реестре или в каком-то файле. А потом при запуске это читает. Что тут сложного?

Coutty
05-02-2009, 18:39
Den47, а если стоит Виста и XP, то какая система в каком реестре определяет, что именно XP переходила в спящий режим, а не Виста.
Более того, если стоит ещё и Линукс, то его загрузчик грузится первым. Должен грузиться первым. Но если Windows переходила в спящий режим, то именно Windows и восстановится в обход линуксового загрузчика.
Т.ч. не всё так просто, как вы говорите)

Vadikan
05-02-2009, 19:11
так вроде такой раздел »
мне тоже интересно »
Ну вот и мне интересно - зачем? :) Из любопытства, с точки зрения разработки программного обеспечения, еще зачем-то...

Den47
05-02-2009, 19:15
Я знаю, что, когда Windows в спящем режиме, Linux не имеет доступа к NTFS разделу, пишет, что не может смонтировать. А, когда Windows нормально завершила работу, тогда имеет доступ.

dmitryst
05-02-2009, 19:23
Но если Windows переходила в спящий режим, то именно Windows и восстановится в обход линуксового загрузчика. »
во-во, пару раз так обламывался, когда вместо сервера грузилась винда с игрушками :jester: , поэтому, уважаемый Vadikan, вопрос отнюдь не абстрактный

когда Windows в спящем режиме, Linux не имеет доступа к NTFS разделу »
это если их загрузчики на разных дисках :)

Vadikan
05-02-2009, 19:32
dmitryst, я не обладаю достаточными знаниями в области управления питанием... В общем, загрузчик тут ни причем. При подаче питания, которое инциализируется кнопкой или по событию, сначала инициализруется BIOS, который потом передает управление ОС. Могу предложить такое: Power Management In Windows Vista (http://download.microsoft.com/download/5/b/9/5b97017b-e28a-4bae-ba48-174cf47d23cd/CPA075_WH06.ppt) (слайды 27 - 30, в частности 28).

А процесс загрузки детально описан тут The PC Boot Process - Windows XP. (http://dotnetjunkies.com/WebLog/unknownreference/articles/12284.aspx)

Котяра
05-02-2009, 20:02
При подаче питания, которое инциализируется кнопкой или по событию, сначала инициализруется BIOS, который потом передает управление ОС. »
А вот ОС смотрит, просыпаться или грузится.
Vadikan, вы не путаете спящий режим (hiberfil.sys) со ждущим?

NTLDR
Initial Phase
После нее уже идет определение гибернейта вроде.
Гибернейт - это тоже выключение, после него даже можно извлечь вилку ПК из розетки (сам не проверял, но это даже используется в ноутбуках и ИБП).

bish
06-02-2009, 00:34
После нее уже идет определение гибернейта вроде »
А как?? Может всё-же через boot.ini ? Надо проверить: уйти в спящий, потом загрузиться c Live CD и посмотреть boot.ini .
Гибернейт - это тоже выключение, после него даже можно извлечь вилку ПК из розетки (сам не проверял, »
Разумеется, можно и выключить БП и вилку извлечь.

Vadikan, спасибо за ссылки, но там, к сожалению, нет ничего про выход из спящего режима.

Vadikan
06-02-2009, 02:16
Vadikan, вы не путаете спящий режим (hiberfil.sys) со ждущим?
NTLDR
Initial Phase
После нее уже идет определение гибернейта вроде. »
Вроде или источник есть? Система же загружена, она просто выходит из состояния гибернации...

спасибо за ссылки, но там, к сожалению, нет ничего про выход из спящего режима. »
Почему же? Там как раз про S3 System Sleeping States (http://msdn.microsoft.com/en-us/library/ms798270.aspx)
System Power State S3

System power state S3 is a sleeping state with the following characteristics:
Power consumption
Less consumption than in state S2. Processor is off and some chips on the motherboard also might be off.
Software resumption
After the wake-up event, control starts from the processor's reset vector.
Hardware latency
Almost indistinguishable from S2.
System hardware context
Only system memory is retained. CPU context, cache contents, and chipset context are lost.

Надо проверить: уйти в спящий, потом загрузиться c Live CD и посмотреть boot.ini . »
Как только вы подадите питание, система начнет выходить из спящего режима - загрузиться с CD никак не получится.

dmitryst
06-02-2009, 10:34
Как только вы подадите питание, система начнет выходить из спящего режима »
т.е. все-таки биос "знает " об этом?

bish
06-02-2009, 12:44
Как только вы подадите питание, система начнет выходить из спящего режима - загрузиться с CD никак не получится. »
Это почему-же? Выбор порядка загрузки в BIOS: CD - ставим вперёд, и загружаемся с CD.
Надо проверить: уйти в спящий, потом загрузиться c Live CD »
Проверил - boot.ini не изменяется. Поискал с помощью проги AVSearch на загрузочном HDD вхождение слов "Возобновление Windows", нашёл в файле ntldr эти слова. Выходит загрузчик как-то всё-же узнаёт, что система была в спящем режиме. Там-же есть слово hiberfil.sys . Возможно, в hiberfil.sys проверяется какая-то сигнатура и ntldr сам возобновляет ОС - загружает hiberfil.sys в ОЗУ и передаёт управление .... кому?

Кстати, в Linux тоже ведь есть режимы "Спящий, Ждущий". А как там возобновление ОС происходит?

Petya V4sechkin
06-02-2009, 12:48
а если стоит Виста и XP, то какая система в каком реестре определяет, что именно XP переходила в спящий режим, а не Виста.
Более того, если стоит ещё и Линукс, то его загрузчик грузится первым. Должен грузиться первым. Но если Windows переходила в спящий режим, то именно Windows и восстановится в обход линуксового загрузчика.
Т.ч. не всё так просто, как вы говорите)
Наверное, это из-за путаницы с русским переводом микрософтской терминологии.
В XP Standby = "ждущий режим", Hibernate = "спящий режим".
В Висте Sleep = "спящий режим", Hibernate = "гибернация".

Что касается Hibernate:
Когда система переходит в состояние S4, диспетчер электропитания сохраняет содержимое памяти в сжатой форме в файле спящего режима (Hiberfil.sys), который помещается в корневой каталог системного тома. (Этот файл должен быть такого размера, чтобы в нем могло уместиться несжатое содержимое всей памяти; сжатие используется для того, чтобы свести к минимуму операции ввода-вывода на диске, а также ускорить переход в спящий режим и выход из него.) Сохранив содержимое памяти, диспетчер электропитания отключает компьютер. При последующем включении компьютера происходит обычный процесс загрузки — с тем исключением, что Ntldr проверяет наличие действительного образа памяти, сохраненного в файле спящего режима. Если в этом файле сохранены данные о состоянии системы, Ntldr считывает его содержимое в память и возобновляет выполнение с точки, зафиксированной в Hiberfil.sys.

Coutty
06-02-2009, 12:54
Наверное, это из-за путаницы с русским переводом микрософтской терминологии. В XP Standby = "ждущий режим", Hibernate = "спящий режим". В Висте Sleep = "спящий режим", Hibernate = "гибернация". »
Путаница от MS - это одно дело. Но мы все говорим про тот режим, который позволяет отключать компьютер от розетки и потом быстро восстанавливать ОС. Тот, который "гибернация" в Висте.
При последующем включении компьютера происходит обычный процесс загрузки — с тем исключением, что Ntldr проверяет наличие действительного образа памяти, сохраненного в файле спящего режима. Если в этом файле сохранены данные о состоянии системы, Ntldr считывает его содержимое в память и возобновляет выполнение с точки, зафиксированной в Hiberfil.sys. »
Хорошо, а что с линуксовым загрузчиком? Он же обычно грузится перед ntldr. Почему тогда он не отображается при включении после спящего режима/гибернации?

bish
06-02-2009, 14:19
Цитата Марк Руссинович: »
Можно узнать откуда цитата, из какого документа? Ссылку можно?

Petya V4sechkin
06-02-2009, 14:48
из какого документа?
Внутреннее устройство Microsoft Windows (http://lib.rus.ec/s/4937)
Книга посвящена внутреннему устройству и алгоритмам работы основных компонентов операционной системы Microsoft Windows — Windows Server 2003, Windows XP и Windows 2000 — и файловой системы NTFS.

Котяра
06-02-2009, 15:12
Система же загружена, она просто выходит из состояния гибернации »
Компьютер в спящем режиме полностью выключается:
Разумеется, можно и выключить БП и вилку извлечь »

Возможно, в hiberfil.sys проверяется какая-то сигнатура и ntldr сам возобновляет ОС - загружает hiberfil.sys в ОЗУ и передаёт управление .... кому? »
Вот тоже вариант. Хотя стоит проверить boot.ini

с тем исключением, что Ntldr проверяет наличие действительного образа памяти, сохраненного в файле спящего режима »
И как он это проверяет?




© OSzone.net 2001-2012