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


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


482
2018-06-08 19:04


происхождения


@ jer.salamon: На самом деле это совершенно разные пути. Выключение вызывает процедуру ACPI, которая посылает сигнал на источник питания ATX, который отключает рельсы основного напряжения. - Ignacio Vazquez-Abrams
Это контролируется через BIOS - если память обслуживается, ключевыми словами, представляющими интерес, являются APM и APIC - pst
Он никогда не отключается при перезагрузке. - Moab
Нет глупых вопросов. Нет, может быть, - но я думаю, что это действительно очень интересно. Избранные как вопрос о кандидате в неделю, - slhck
Я использовал телеработу на удаленном сервере, который был в основном просто ПК без экрана или клавиатуры в центрах обработки данных компании. Мой сервер никогда не отключался вообще, но иногда я перезагружал его с моего конца, используя WinXP Start-> TurnOffComputer-> Restart, чтобы разобраться в нестабильности, вызванной тестированием моего собственного кода. Я часто работал по разным причинам, когда центр обработки данных был беспилотным. это было очень утомительный, что я случайно выбрал Выключить как окончательный вариант, и ему пришлось подождать до двух дней, чтобы оператор мог пойти и нажать на переключитесь на меня! - FumbleFingers


ответы:


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

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

Мягкая сила и как она работает

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

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

  • Питание в режиме ожидания: вы, возможно, видели разъем «5v SB» или «5v standby», обозначенный в контактах питания. резервный источник питания это 5-вольтовая линия на вашей материнской плате, которая всегда включена, даже когда компьютер выключен. Вот почему при обслуживании современных компьютеров важно отключить или отключить жесткий диск PSU (если он имеется), потому что даже когда он выключен, вы можете сократить 5V 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, чтобы мощность была доступна. Кнопка питания не является единственным способом запуска процесса запуска, устройства на шине расширения также могут это сделать. Это важно, потому что ваши сетевые сетевые адаптеры фактически остаются включенными, когда ваш компьютер выключен, и найдите очень специфический пакет, который часто называют «Magic пакетом». Если они обнаружат этот пакет, адресованный их MAC-адресу, они инициируют процесс запуска. Так работает «Wake-on-LAN» (WoL). Часы также могут инициировать загрузку (большинство BIOS позволяют установить время, которое компьютер должен загружать каждый день), а устройства USB и FireWire могут запускать загрузку, хотя я не знаю о какой-либо реализации этого.

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

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

  • G0: Работа (состояние вашего компьютера «включено»)
  • G1: Спящий режим (состояние ожидания вашего компьютера, разделенное на S-подстанции)
    • S1: питание процессора и ОЗУ остается включенным, но CPU не выполняет инструкции. Периферийные устройства отключены.
    • S2: питание процессора выключено, ОЗУ поддерживается
    • S3: все компоненты отключены, за исключением ОЗУ и устройств, которые будут запускать возобновление (клавиатура). Когда вы укажете ОС на «Сон», он остановит процессы, а затем войдет в этот режим.
    • S4: Гибернация. Абсолютно все выключено. Когда вы сообщаете операционной системе Hibernate, она останавливает процессы, сохраняет содержимое ОЗУ на диск и затем переходит в этот режим.
  • G2: мягкое выключение. это состояние «выключено» вашего компьютера. Питание отключается от всех, кроме устройств, которые могут запускать загрузку.
  • G3: Отключено.

Как происходит сброс

Вы заметите, что перезагрузка не является одним из этих состояний. Итак, что на самом деле происходит, когда ваш компьютер при перезагрузке? Ответ может быть неожиданным, поскольку с точки зрения управления энергопотреблением это почти ничего, Там есть команда сброса ACPI, Когда вы сообщаете операционной системе о перезагрузке, она следует за его нормальным процессом останова (останавливает все процессы, выполняет некоторое обслуживание, отключает ваши файловые системы и т. Д.), А затем в качестве последнего шага вместо отправки машины в состояние питания G2 (как если бы вы просто сказали ему «Завершить работу»), он устанавливает команду «Сброс». Обычно это называется «регистр сброса», поскольку, как и большинство интерфейсов ACPI, это просто адрес, для которого необходимо записать определенное значение, чтобы запросить сброс. Я приведу спецификацию 2.0 о том, что она делает:

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

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

  • Вся логика сбрасывается. Это означает отправку соответствующих команд сброса на различные биты аппаратного обеспечения, включая процессор, контроллер памяти, периферийные контроллеры и т. Д. В большинстве случаев это просто означает включение физического провода RST, как показало AndrejaKo выше.
  • Затем компьютер загрузится. Это «выполнять действия подобным образом на холодную загрузку». Материнская плата выполняет те же шаги, что и в случае, если источник питания только что был готов после нажатия кнопки питания.

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


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


595
2018-06-08 21:06



+1. Очень информативный и полезный ответ. Только одно очко - PS_ON активен низким, т.е. переключается на 0V, а не на +5VSB, чтобы включить основные выходы. - MikeJ-UK
Для устройств USB, запускающих загрузку, некоторые BIOS имеют возможность разбудить компьютер с помощью двойного щелчка или нажатия клавиши. Кроме того, на некоторых клавиатурах Mac есть кнопки питания (традиция все возвращается к оригиналу). - Stuart P. Bentley
Отличный ответ, я, конечно, многому научился. Один вопрос остается, хотя: с точки зрения материнской платы, в чем разница между состояниями S4 и G2? Сохранение ОЗУ на диск выполняется ОС, поэтому S4 звучит так же, как «мягкое отключение» для аппаратного обеспечения. - EMP
Я считаю, что S4 функционально эквивалентен G2, но разница сохраняется. Кажется, что некоторые BIOS выполняют «быструю POST», начиная с S4, но с полным POST, начиная с G2. Я не думаю, что есть какая-то причина для этого, кроме того, что люди хотят, чтобы S4 возобновлялось быстро. - jcrawfordor
Это на самом деле немного упрощенно; существует (много) способов не ACPI для перезагрузки компьютера, и иногда ACPI не работает: superuser.com/questions/294681/... - Tobu


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

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

Итак, как это масштабируется для более крупных систем, таких как современные ПК? Хорошо современные компьютеры сделаны из компьютеров, которые иногда изготавливаются из самих компьютеров. Поэтому, когда вы устанавливаете компьютер для сброса, «компьютеры», которые заставляют компьютер запускать сохранение своих состояний (если контроль сброса), или просто вытащить их сбросные контакты.

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

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

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

386EX datasheet figure 2

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

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


79
2018-06-08 19:39



Вау, тщательный ответ. - Seth Carnegie
@Seth Carnegie Это не так уж здорово. Я просто коснулся низкоуровневого материала, который справедлив для большинства компьютеров, от одного в холодильнике до ПК. Я даже не упомянул о ACPI, APM и других современных энергосистемах или о том, как на старых ПК Intel 8042 микроконтроллер, который контроллер может перезагрузить процессор, как работает POST, перезагружать векторы и многое другое. - AndrejaKo
@netvope Слишком много, чтобы представить, я бы сказал. Вероятно, у вас, по крайней мере, один в вашей мыши, один на клавиатуре, более 10 для самых основных частей материнской платы (даже если мы учитываем высокоинтегрированные «чипсеты»), возможно, один в блоке питания, по крайней мере один в каждом диске (более вероятно 2-3), несколько в каждой карте расширения ... Мониторы тоже серьезны, и у моего принтера теперь больше памяти, чем у моего первого настольного компьютера. - AndrejaKo
Говоря о памяти, кеши некоторых новых жестких дисков и процессоров теперь больше, чем оперативная память первого компьютера, который я использовал. Теперь мы можем запустить Windows 95 полностью в кэше L2 и сохранить весь системный раздел в кэше накопителя! - netvope


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

Выдержка:

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

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

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

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

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

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


27
2018-06-08 23:11



Это актуально, но ответ будет более полезен, если вы разместите здесь выдержку из другой информации. - calvinf
tl; dr есть много способов перезагрузки; некоторые платы ломаются достаточно плохо, притворяться окнами, эвристика, которая включает в себя несколько попыток и спят немного, является единственным способом. - Tobu


Он блокирует местоположение ввода-вывода, которое вытягивает низкую линию передачи данных, которая сообщает CPU, что он должен прекратить все, что он делает, и запустить запуск кода из определенного места в BIOS.


10
2017-07-28 20:19



... и это местоположение указано в коде, который передается системному вызову reboot? - Knight Samar
@Knight Samar: Нет; расположение ввода-вывода, как правило, является константой архитектуры, которую ядро ​​знает. Вы можете видеть это, например. в коде перезагрузки Linux, например arch / x86 / kernel / reboot.c. - sleske
есть ли у кого-нибудь хороший источник для дальнейшего чтения по этому вопросу? - matthias krull
@ mugen.kenichi и все, друг дал мне эту ссылку howstuffworks.com/bios.htm/printable - Knight Samar
Я предлагаю superuser.com/a/347115/38062 , - JdeBP


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

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

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


10
2018-06-12 14:38



Вам также нужно было написать определенное значение до 0040: 0072, чтобы определить, была ли холодная (0x0000) или теплая загрузка (0x1234). - Synetech


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


9
2018-06-09 14:24



Это правильно, но на самом деле не отвечает на вопрос. - sleske
Существуют ли сторожевые псы, которые фактически перезагружают весь компьютер? Я знаю, что они иногда используются для различных микроконтроллеров внутри компьютера, но есть ли они на одном уровне компьютера? Мой личный опыт заставляет меня сказать «нет», но некоторые доказательства или против будут приветствоваться. - AndrejaKo
@AndrejaKo: Я работал в компании, которая создавала серверы связи (в основном блейд-серверы с подключенными модемами). У них был сторожевой таймер, который был подключен к разъемам сброса на материнской плате. Таймер периодически наводился фоновой утилитой на материнской плате, поэтому, если процессор висел, сторожевой таймер в конце концов нажимает кнопку сброса. Он был привязан к схеме, которая заставляла телефонную линию заняты, а материнская плата перезагружалась. - Robert Harvey


Вернувшись на старый IBM PC-1, контроллер клавиатуры, как ни странно, перезагрузился. IBM применила небольшой микропроцессор для работы с клавиатурой, и у него были резервные линии ввода-вывода, поэтому они использовали одну из линий для управления строкой сброса основного процессора. Команда, отправленная на контроллер клавиатуры, приведет к сбросу CPU, как только питание только что было включено.

Я предполагаю, что эта традиция продолжалась и в эпоху «AT», и, возможно, остатки ее останутся в ACPI сегодня.

Добавлено: Есть интересная информация о вышеупомянутой схеме сброса. Во время ранней последовательности загрузки код искал определенный шаблон в ОЗУ, который мог быть установлен предыдущим исполняемым кодом. Если этот код присутствовал, некоторые из тестов POST (самотестирование при включении) были пропущены. Шаблон будет присутствовать только на «теплой» загрузке.


4
2017-12-03 04:47