Как компьютер перезапускает себя?

Как компьютер может перезапустить себя? После того, как это будет выключено, как это говорит себе возвращаться на снова? Какое программное обеспечение - это, который может сделать это?

491
задан 24.10.2012, 19:15

1 ответ

tl;dr: состояния питания в вашем компьютере контролируются реализацией ACPI (расширенная конфигурация и интерфейс питания). В конце процесса выключения операционная система устанавливает команду ACPI, указывающую, что компьютер должен перезагрузиться. В ответ системная плата сбрасывает все компоненты, используя соответствующие команды или строки сброса, а затем следует процесс загрузки. На самом деле материнская плата никогда не выключается, она сбрасывает только различные компоненты, а затем ведет себя так, как будто только что нажата кнопка питания.

Длинный и блуждающий, но (на мой взгляд) более интересный ответ:

Soft Power и как она работает

В старые времена (ну, ладно, для такого студента колледжа, как я, 90-е годы были очень давно), у нас были материнские платы AT (Advanced Technology) с управлением AT power. Система питания AT была очень, очень простой. Кнопка питания на вашем компьютере была аппаратным переключателем (вероятно, в задней части корпуса), и ваш 120-вакуумный вход проходил через него. Она физически включала и выключала питание, а когда этот переключатель находился в положении Off, все в компьютере было полностью мертво (это делало CMOS батарею очень важной, потому что без нее не было блока питания, чтобы держать аппаратные часы тикающими). Поскольку выключатель питания был физическим механизмом, не было программного способа включения и выключения. Windows показывала знаменитое сообщение "Теперь безопасно выключить компьютер", потому что, хотя все было припарковано и готово к выключению, операционная система не могла на самом деле перевернуть выключатель питания. Эту конфигурацию иногда называли жесткой силой , потому что это все аппаратное обеспечение.

В настоящее время все по-другому, из-за чудес материнских плат ATX и ATX power (это Advanced Technology eXtended, если вы следите за развитием событий). Наряду с рядом других достижений (mini-DIN PS/2, кто-нибудь?), ATX принесsoft power. Мягкая мощность означает, что питание компьютера может управляться программным обеспечением. Это принесло несколько изменений в импорте:

  • Резервное питание: вы могли видеть разъем "5v SB" или "5v standby", помеченный в пинаутах блока питания. Блок питания в режиме ожидания - это линия 5В на материнской плате, которая всегда включена, даже когда компьютер выключен. Поэтому при обслуживании современных компьютеров важно отсоединить или выключить жесткий переключатель блока питания (если таковой имеется), потому что даже при выключенном питании вы можете закоротить 5В SB и повредить материнскую плату. Это также является причиной того, что CMOS-батареи больше не так важны - 5v SB используется для замены CMOS-батареи всякий раз, когда блок питания имеет питание от сети, так что CMOS-батарея используется только тогда, когда вы полностью отсоединяете компьютер от сети. Линия 5v SB позволяет компонентам вашего компьютера (прежде всего BIOS и сетевым адаптерам) продолжать работать с каким-нибудь простым программным обеспечением, даже когда компьютер выключен.
  • Интеллектуальное управление блоком питания. Если вы посмотрите на выводной разъем материнской платы (P1) блока питания, вы заметите два вывода, обычно помеченных PS_ON и PS_RDY. Эти обозначения означают "Блок питания включен" и "Блок питания готов". Если Вы хотите поэкспериментировать, возьмите блок питания не в компьютере, подключите его и осторожно замыкайте заземляющий провод (один из черных проводов) на линию PS_ON (зеленый провод). Блок питания будет заметно включаться, при этом вентилятор будет вращаться. Компоненты материнской платы, работающие в режиме +5v SB, на самом деле включают и выключают блок питания, подключая его к контакту PS_ON. Так как в блоке питания есть некоторые конденсаторы и другие компоненты, которые требуют момента для зарядки, напряжение на основных выходах блока питания может быть не стабильным сразу после включения блока питания. Для этого и нужен вывод PS_RDY, он включается, когда внутренняя логика блока питания определяет, что блок питания "готов" и будет обеспечивать стабильное питание. Системная плата ждет, пока PS_RDY включится, чтобы продолжить загрузку.

Таким образом, переключатель питания больше не "включает" компьютер. Вместо этого он подключается к базовым контроллерам материнской платы, которые определяют, что кнопка нажата, и выполняют ряд шагов для подготовки системы к работе, в том числе зажигают PS_ON, чтобы питание было доступно. Кнопка питания - это не единственный способ инициировать процесс запуска, устройства на вашей шине расширения также могут это сделать. Это важно, потому что ваши сетевые адаптеры ethernet фактически остаются включенными, когда ваш компьютер выключен, и ищут очень специфический пакет, часто называемый "волшебным пакетом". Если они обнаружат этот пакет, адресованный их MAC-адресу, они запустят процесс запуска. Вот как работает "Wake-on-LAN" (WoL). Часы также могут инициировать загрузку (большинство BIOS позволяет устанавливать время, в которое компьютер должен загружаться каждый день), а устройства USB и FireWire могут инициировать загрузку, хотя я не знаю, как это реализовано.

Понимание управления питанием

Ну, я объясняю штуку Soft Power как потому, что я думаю, что это интересно (всегда главная причина, по которой я все объясняю), так и потому, что это позволяет вам понять, как питание и состояние запуска/выключения вашего компьютера контролируется программным обеспечением. В большинстве современных компьютеров эта программная система является реализацией Advanced Configuration and Power Interface, или ACPI. ACPI - это стандартизированная, унифицированная система, позволяющая программному обеспечению управлять системой электропитания вашего компьютера. Возможно, вы слышали о состоянии питания ACPI . Основной механизм управления питанием - это "состояния питания", когда операционная система переключается в режимы питания, подготавливая коммутатор (процессы выключения/закрытия, которые происходят до отключения питания), а затем отдавая материнской плате команду на переключение состояний питания. Состояния питания выглядят следующим образом:

  • G0: Рабочий (состояние "вкл" вашего компьютера)
  • G1: Спящий (состояние ожидания вашего компьютера, разделенное на S подсостояний)
    • S1: питание процессора и оперативной памяти остается включенным, но процессор не выполняет инструкции. Периферийные устройства выключены.
    • S2: питание процессора и оперативной памяти остается включенным, но процессор не выполняет инструкции.
    • S3: Все компоненты выключены, за исключением оперативной памяти и устройств, которые вызовут возобновление работы (клавиатура). Когда вы говорите операционной системе "Сон", она останавливает процессы и переходит в этот режим.
    • S4: Спящий режим. Абсолютно все выключено. Когда вы говорите операционной системе "Спящий режим", она останавливает процессы, сохраняет содержимое оперативной памяти на диск, а затем переходит в этот режим.
  • G2: Soft Off. Это состояние вашего компьютера "выключено". Питание выключено на все, кроме устройств, которые могут вызвать загрузку.
  • G3: Механическое выключение.

Как происходит перезагрузка на самом деле

Вы заметите, что перезагрузка не является одним из этих состояний. Так что же на самом деле происходит, когда компьютер перезагружается? Ответ может быть удивительным, потому что с точки зрения управления питанием это почти ничего . Есть команда сброса ACPI. Когда вы говорите операционной системе перезагрузиться, она следует своему обычному процессу выключения (останавливает все ваши процессы, выполняет некоторое обслуживание, демонтирует файловые системы и т.д.), а затем, в качестве последнего шага, вместо того, чтобы отправить машину в состояние питания G2 (как это было бы, если бы вы просто сказали ей Shut Down), она устанавливает команду Reset. Обычно её называют "регистром сброса", потому что, как и большинство ACPI интерфейсов, это просто адрес, на который нужно записать определённое значение, чтобы запросить сброс. Я процитирую спецификацию 2.0 о том, что она делает:

Дополнительный механизм сброса ACPI указывает стандартный механизм, который обеспечивает полный сброс системы. Когда этот механизм реализован, он должен сбросить всю систему. Сюда входят процессоры, логика ядра, все шины и все периферийные устройства. С точки зрения OSPM, утверждение механизма сброса является логическим эквивалентом цикла питания машины. Получив управление после сброса, ОССПМ будет выполнять действия подобно холодной загрузке.

Итак, когда регистр сброса установлен, некоторые вещи происходят последовательно.

  • Вся логика сбрасывается. Это означает посылку соответствующих команд сброса на различные биты оборудования, включая CPU, контроллер памяти, периферийные контроллеры и т.д. В большинстве случаев это просто означает подсветку физического RST провода, как АндрейяКо показал выше
  • Компьютер затем загружается. Это часть "выполнять действия подобно холодной загрузке". Материнская плата выполняет те же действия, что и если бы блок питания был готов к работе после нажатия кнопки питания.

Конечный результат этих двух действий (которые на самом деле разбиваются на гораздо больше шагов) заключается в том, что все выглядит так же, как будто компьютер только что загрузился, но питание на самом деле было включено все время. Это означает меньшее время, необходимое для выключения и запуска (так как вам не нужно ждать, пока блок питания будет готов к работе), и, что очень важно, позволяет начать загрузку при выключении операционной системы. Это означает, что нет необходимости использовать другой триггер запуска (WoL и т.д.), и позволяет использовать Перезагрузку как эффективный способ удалённого сброса системы, когда у вас нет возможности запустить загрузку.


Это был долгий ответ. Но, надеюсь, теперь вы знаете больше об управлении питанием компьютера. Я, конечно, узнал кое-что, исследуя это.

598
ответ дан 07.12.2019, 07:33

Это разнотравье местоположение ввода-вывода, которое вытягивает строку данных низко, которая говорит ЦП, что это должно остановить то, что это делает и начинает выполнять код от определенного местоположения в BIOS.

10
ответ дан 07.12.2019, 07:33

Вот отправная точка:

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

Так как же это масштабируется на более крупные системы, такие как современные ПК? Ну, современные компьютеры иногда делаются из самих компьютеров. Поэтому, когда вы устанавливаете компьютер в режим сброса, "компьютеры", которые делают компьютер, начнут сохранять свои состояния (если сброс управляется), или просто будут вытаскивать свои контакты сброса.

Некоторые процессоры и микроконтроллеры (которые являются миниатюрными автономными компьютерами, обычно на 20 лет отстающими от современных настольных компьютеров) могут сбрасывать свои состояния с помощью внутренних переключателей. Как я уже говорил, как только сигнал, генерирующий сброс, исчезнет, компьютер запустится. Поэтому предпосылка в вопросе не совсем верна. Компьютер не знает, когда включить. В знании того, когда нужно "выключить" или перезагрузить, а когда сигнал, который его удерживает, исчезнет, он включится.

Такое поведение может выглядеть странно на современном компьютере, который можно настроить на включение в определенное время или по сети и так далее. Как я уже говорил, компьютеры сделаны из компьютеров. Так что, хотя главный процессор может быть выключен, внутри него может находиться множество других микросхем и микроконтроллеров, которые включены. Самым очевидным случаем являются часы реального времени, которые часто питаются от батарей. Затем он может включить другие чипы, которые будут включать другие чипы, и цепная реакция будет продолжаться до тех пор, пока весь компьютер не включится. На современных компьютерах есть линия БП, называемая +5 В постоянного тока Standby Voltage. Она обеспечивает мощность около 50 мВт для различных устройств, которые включены, когда компьютер "выключен".

Немного мелочей: Сброс на процессоре Intel 386 EX - это контактный номер 110.

386EX datasheet figure 2

На Intel i7-900 - это наземный номер AL39.

Надеюсь, кто-нибудь сможет дать ответ, который объяснит, как все работает с точки зрения высокого уровня, так как это довольно сложная система.

-
81
ответ дан 07.12.2019, 07:33

Есть еще одна вещь под названием сторожевой пёс. Это устройство служит переключателем мертвеца. Компьютер должен подавать сигнал сторожевому псу каждую минуту. что он все еще жив. Когда компьютер выходит из строя, например. столкнувшись с бесконечным циклом, он не сможет сигнал сторожевому псу, что он все еще работает, как и планировалось, в этом случае сторожевой пёс выполнит аппаратный сброс. Это было продемонстрировано в популярной телевизионной серии терминатора, где робот был вырублен скачком высокого напряжения. он перезагрузится через 2 минуты.

9
ответ дан 07.12.2019, 07:33

Этот пост в блоге описывает, как Linux запускает перезагрузку.

Выдержка:

Linux имеет кучу различных способов сброса x86. Некоторые из них только 32-битные, поэтому я просто проигнорирую их, потому что, честно говоря, просто то, что вы делаете со своей жизнью. Также, они ужасны. Итак, осталось пять из них.

  • kbd - перезагрузка через контроллер клавиатуры. В оригинальном IBM PC линия перезагрузки процессора была привязана к контроллеру клавиатуры. Запись соответствующего магического значения пульсирует в строке, и машина сбрасывает процессор. Все это очень просто, за исключением того, что современные машины не имеют контроллеров клавиатуры (на самом деле они являются частью встроенного контроллера), а еще более современные машины даже не претендуют на то, что у них есть контроллер клавиатуры. Теперь, встроенные контроллеры работают под управлением программного обеспечения. И, как мы все знаем, программное обеспечение ужасно. Но, что еще хуже, программное обеспечение на встроенном контроллере написано авторами BIOS. Так что очевидно, что любое притворство, что это когда-либо работает, это какая-то замысловатая выдумка. Некоторые машины очень придирчиво относятся к аппаратному обеспечению, находящемуся в том состоянии, которое запрограммировала бы Windows. Некоторые машины работают 9 раз из 10, а затем блокируются из-за какой-то странной временной проблемы. А другие просто не работают вообще. Ура!

  • тройной - попытка сгенерировать тройной дефект. Это делается загрузкой пустой таблицы дескрипторов прерываний и последующим вызовом int(3). Прерывание не срабатывает (нет IDT), обработчик ошибки не срабатывает (нет IDT) и процессор входит в условие, которое, теоретически, должно спровоцировать перезагрузку. За исключением того, что, похоже, нет требования, чтобы это произошло, и это просто не работает на кучке машин.

  • pci - на самом деле, не pci. Традиционный доступ к конфигурационному пространству PCI достигается записью 32-битного значения в io порт 0xcf8 для идентификации шины, устройства, функции и конфигурационного регистра. Порт 0xcfc затем содержит соответствующий регистр. Но если вы запишите соответствующую пару магических значений в 0xcf9, машина перезагрузится. Захватывающе! И ни в коей мере не стандартизирован (уж точно не входит в спецификацию PCI), поэтому разные наборы микросхем могут иметь разные требования. Booo.

  • efi - службы времени выполнения EFI обеспечивают точку входа для перезагрузки машины. Обычно это даже работает! До тех пор, пока службы времени выполнения EFI работают вообще, что может быть растяжкой.

  • acpi - Последние версии спецификации ACPI позволяют указать адрес (обычно память или системное пространство ввода-вывода) и значение для записи туда. Идея заключается в том, что запись значения по адресу сбрасывает систему. Оказывается, что это часто не удается. Также невозможно представить метод PCI перезагрузки через ACPI, потому что метод PCI перезагрузки требует пару значений и ACPI дает только одно.

27
ответ дан 07.12.2019, 07:33

Еще в старые добрые времена до управления электропитанием компьютеры, конечно, могли перезагружаться. (Кто-нибудь помнит, когда замороженная программа означала, что для перезагрузки компьютера нужно было использовать Ctrl+Alt+Delete?)

На моем старом 486-м компьютере команда ассемблера JMP FFFF:0000 (т.е. установить указатель инструкций процессора на указанный адрес) привела бы к перезагрузке всего компьютера. Другими словами, FFFF:0000 адресует место в BIOS, которое содержит инструкции о том, что должен делать компьютер при первом запуске. Я подозреваю, что Reset Pin, описанный ответом АндреяКо, или кнопки сброса в дни перед включением питания, также заставили бы указатель инструкций работать по тому же адресу.

A Поиск в Google JMP FFFF:0000 обнаруживает много интересных страниц об этом.

.
10
ответ дан 07.12.2019, 07:33

Теги

Похожие вопросы