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

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

480 голосов | спросил Seth Carnegie 8 J0000006Europe/Moscow 2011, 23:04:08

7 ответов


594

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

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

Мягкая мощность и как она работает

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

В наши дни все по-другому, из-за чудес материнских плат ATX и ATX power (это продвинутая технология 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 power . Основным механизмом управления мощностью являются эти «состояния мощности», ваша операционная система переключается через режимы питания, готовясь к переключению (процессы выключения /спящего режима, которые происходят до фактического отключения питания), а затем командуя материнской плате переключать состояния питания , Силовые состояния выглядят следующим образом:

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

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

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

  

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

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

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

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


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

ответил jcrawfordor 9 J0000006Europe/Moscow 2011, 01:06:26
79

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

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

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

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

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

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

386EX datasheet figure 2

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

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

ответил AndrejaKo 8 J0000006Europe/Moscow 2011, 23:39:31
27

Это сообщение в блоге описывает, как 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 предоставляет только один.

  •   
ответил jabiko 9 J0000006Europe/Moscow 2011, 03:11:01
10

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

ответил Ignacio Vazquez-Abrams 29 J000000Thursday10 2010, 00:19:00
10

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

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

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

ответил krubo 12 J0000006Europe/Moscow 2011, 18:38:55
9

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

ответил Marcel 9 J0000006Europe/Moscow 2011, 18:24:53
4

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

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

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

ответил Daniel R Hicks 3 SatEurope/Moscow2011-12-03T08:47:44+04:00Europe/Moscow12bEurope/MoscowSat, 03 Dec 2011 08:47:44 +0400 2011, 08:47:44

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

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132