Jak komputer może się zrestartować? Po wyłączeniu, jak to się mówi, aby wrócić ponownie? Jakie to oprogramowanie może to zrobić?
Jak komputer może się zrestartować? Po wyłączeniu, jak to się mówi, aby wrócić ponownie? Jakie to oprogramowanie może to zrobić?
Odpowiedzi:
tl; dr: stany zasilania w twoim komputerze są kontrolowane przez implementację ACPI (zaawansowana konfiguracja i interfejs zasilania). Po zakończeniu procesu zamykania system operacyjny ustawia polecenie ACPI wskazujące, że komputer powinien się zrestartować. W odpowiedzi płyta główna resetuje wszystkie komponenty za pomocą odpowiednich poleceń lub linii resetowania, a następnie postępuje zgodnie z procesem ładowania. Płyta główna nigdy się tak naprawdę nie wyłącza, resetuje tylko różne komponenty, a następnie zachowuje się tak, jakby właśnie naciśnięto przycisk zasilania.
Długa i chaotyczna, ale (moim zdaniem) ciekawsza odpowiedź:
W dawnych czasach (no cóż, dla studenta takiego jak ja lata 90. dawno temu) mieliśmy płyty główne AT (Advanced Technology) z mocą ATzarządzanie. System zasilania AT był bardzo, bardzo prosty. Przycisk zasilania na twoim komputerze był przełącznikiem sprzętowym (prawdopodobnie z tyłu obudowy) i twoje wejście 120vac przeszło przez to. Fizycznie włączał i wyłączał zasilanie twojego zasilacza, a kiedy ten przełącznik był w pozycji Off, wszystko w twoim komputerze było całkowicie martwe (to sprawiło, że bateria CMOS była bardzo ważna, ponieważ bez niej nie było zasilacza, aby utrzymać sprzęt tykanie zegara). Ponieważ przełącznik zasilania był mechanizmem fizycznym, nie było żadnego programowego sposobu włączania i wyłączania zasilania. Windows wyświetli słynny komunikat „Teraz można bezpiecznie wyłączyć komputer”, ponieważ chociaż wszystko było zaparkowane i gotowe do wyłączenia, system operacyjny nie był w stanie przekręcić przełącznika zasilania. Ta konfiguracja była czasami określana jakotwarda moc , ponieważ to wszystko sprzęt.
W dzisiejszych czasach jest inaczej, ze względu na cuda płyt głównych ATX i mocy ATX (to Advanced Technology eXtended, jeśli śledzisz). Wraz z wieloma innymi postępami (mini-DIN PS / 2, ktoś?) ATX przyniósł miękką moc . Miękkie zasilanie oznacza, że zasilanie komputera może być kontrolowane przez oprogramowanie. Przyniosło to kilka zmian importu:
Tak więc przełącznik zasilania nie „włącza” komputera. Zamiast tego jest podłączony do podstawowych kontrolerów płyty głównej, które wykrywają naciśnięcie przycisku i wykonują szereg kroków w celu przygotowania systemu, w tym zapalają PS_ON, aby zapewnić dostęp do zasilania. Przycisk zasilania nie jest jedynym sposobem na uruchomienie procesu uruchamiania, urządzenia na szynie rozszerzeń mogą to zrobić. Jest to ważne, ponieważ karty sieciowe Ethernet pozostają włączone, gdy komputer jest wyłączony, i szukają bardzo konkretnego pakietu, często nazywanego „pakietem Magic”. Jeśli wykryją ten pakiet zaadresowany na swój adres MAC, uruchomią proces uruchamiania. Tak działa „Wake-on-LAN” (WoL). Zegar może również zainicjować rozruch (większość systemu BIOS pozwala ustawić czas uruchamiania komputera każdego dnia),
Cóż, wyjaśniam kwestię Soft Power zarówno dlatego, że uważam, że jest interesująca (zawsze kluczowy powód, dla którego wyjaśniam rzeczy), a także dlatego, że pozwala ci zrozumieć, w jaki sposób zasilanie i stan uruchamiania / wyłączania komputera są kontrolowane przez oprogramowanie. W większości obecnych komputerów ten system oprogramowania jest implementacją interfejsu zaawansowanej konfiguracji i zasilania lub interfejsu ACPI . ACPI to ustandaryzowany, zunifikowany system umożliwiający oprogramowanie do sterowania systemem zasilania komputera. Być może słyszałeś o stanach zasilania ACPI. Podstawowym mechanizmem kontroli mocy są te „stany zasilania”, system operacyjny przełącza tryby zasilania, przygotowując się do przełączenia (procesy zamykania / hibernacji, które występują przed faktycznym wyłączeniem zasilania), a następnie nakazując płycie głównej przełączanie stanów zasilania . Stany mocy wyglądają następująco:
Zauważysz, że ponowne uruchomienie nie jest jednym z tych stanów. Co się dzieje, gdy komputer uruchamia się ponownie? Odpowiedź może być zaskakująca, ponieważ z punktu widzenia zarządzania energią jest prawie niczym . Istnieje polecenie resetowania ACPI. Gdy mówisz, aby system operacyjny uruchomił się ponownie, postępuje on zgodnie z normalnym procesem zamykania (zatrzymuje wszystkie procesy, wykonuje konserwację, odinstalowuje systemy plików itp.), A następnie jako ostatni krok, zamiast wysyłać maszynę do stanu zasilania G2 (tak jakby to było po prostu polecenie wyłączenia) ustawia polecenie resetowania. Jest to ogólnie nazywane „Resetuj rejestr”, ponieważ podobnie jak większość interfejsu ACPI, jest to tylko adres, na który należy zapisać określoną wartość, aby zażądać resetu. Przytoczę specyfikację 2.0 dotyczącą jej działania:
Opcjonalny mechanizm resetowania ACPI określa standardowy mechanizm zapewniający całkowite zresetowanie systemu. Po wdrożeniu ten mechanizm musi zresetować cały system. Obejmuje to procesory, logikę rdzenia, wszystkie magistrale i wszystkie urządzenia peryferyjne. Z perspektywy OSPM stwierdzenie, że mechanizm resetowania jest logicznym odpowiednikiem włączania i wyłączania zasilania maszyny. Po uzyskaniu kontroli po resecie OSPM wykona działania w podobny sposób jak zimny rozruch.
Po ustawieniu rejestru resetowania kilka rzeczy dzieje się po kolei.
Efektem końcowym tych dwóch kroków (które faktycznie dzielą się na znacznie więcej kroków) jest to, że wygląda na wszystko tak, jak komputer właśnie się uruchomił, ale moc była właściwie przez cały czas. Oznacza to mniej czasu potrzebnego na zamknięcie i uruchomienie (ponieważ nie trzeba czekać na przygotowanie zasilacza), i co ważne, umożliwia uruchomienie rozruchu przez zamknięcie systemu operacyjnego. Oznacza to, że nie trzeba używać kolejnego wyzwalacza uruchamiania (WoL itp.), I umożliwia użycie opcji Uruchom ponownie jako skutecznego sposobu zdalnego resetowania systemu, gdy nie ma możliwości uruchomienia rozruchu.
To była długa odpowiedź. Ale hej, mam nadzieję, że wiesz już więcej na temat zarządzania energią komputera. Z pewnością nauczyłem się kilku rzeczy, badając to.
Oto punkt wyjścia:
Żetony zwykle nie wyłączają się, a następnie nie włączają. Zamiast tego istnieje linia zerowania, która wprowadzi procesor w tak zwany stan resetowania, gdy zwykle cała pamięć jest czyszczona, a procesor wygląda, jakby dopiero co został włączony. Podczas gdy ten pin jest trzymany wysoko (lub nisko, w zależności od procesora), procesor jest resetowany. Po zwolnieniu pin będzie kontynuował normalne uruchamianie, tak jakby był włączony po raz pierwszy. Chodzi o to, że samo nie ma odcięcia zasilania.
Jak to się skaluje do większych systemów, takich jak nowoczesne komputery? Dobrze współczesne komputery są zbudowane z komputerów, które czasami są wykonane z samych komputerów. Kiedy więc ustawisz resetowanie komputera, „komputery”, które powodują, że komputer zacznie zapisywać swoje stany (jeśli resetowanie jest kontrolowane), lub po prostu zostaną wyciągnięte szpilki resetowania.
Niektóre procesory i mikrokontrolery (które są miniaturowymi samodzielnymi komputerami, zwykle 20 lat za nowoczesnymi komputerami stacjonarnymi) mogą się zresetować za pomocą wewnętrznych przełączników. Jak powiedziałem, po zniknięciu sygnału generującego reset komputer uruchomi się. Zatem przesłanka zawarta w pytaniu nie jest całkowicie poprawna. Komputer nie wie, kiedy włączyć. Wiesz, kiedy trzeba go wyłączyć lub zresetować, a kiedy sygnał, który go utrzymuje, zniknie, włączy się.
To zachowanie może wyglądać dziwnie na nowoczesnym komputerze, który można ustawić tak, aby włączał się o określonej godzinie lub w sieci i tak dalej. Jak powiedziałem, komputery są zbudowane z komputerów. Tak więc, chociaż główny procesor może być wyłączony, wewnątrz może być wiele innych układów i mikrokontrolerów. Najbardziej oczywistym przypadkiem jest zegar czasu rzeczywistego, który często jest zasilany z baterii. Następnie może włączyć inne układy, które włączą inne układy, a reakcja łańcuchowa trwa do momentu włączenia całego komputera. Na dzisiejszych komputerach istnieje linia zasilacza o nazwie +5 VDC Standby Voltage. Zapewnia około 50 mW mocy różnym urządzeniom, które są włączone, gdy komputer jest wyłączony.
Trochę ciekawostek: pin resetujący na procesorze Intel 386 EX ma numer pin 110.
Na Intel i7-900 jest to numer telefonu AL39.
Mam nadzieję, że ktoś będzie w stanie udzielić odpowiedzi, która wyjaśni, jak wszystko działa z wysokiego poziomu, ponieważ jest to dość skomplikowany system.
Ten post na blogu opisuje, w jaki sposób Linux uruchamia ponowne uruchomienie.
Fragment:
Linux ma wiele różnych sposobów resetowania x86. Niektóre z nich są tylko 32-bitowe, więc zignoruję je, bo szczerze mówiąc, co robisz ze swoim życiem. Są też okropne. Pozostaje nam więc ich pięć.
kbd - uruchom ponownie za pomocą kontrolera klawiatury. Oryginalny komputer IBM miał linię resetowania procesora podłączoną do kontrolera klawiatury. Zapisanie odpowiedniej wartości magicznej pulsuje linią i maszyna resetuje się. Wszystko to jest bardzo proste, z wyjątkiem faktu, że nowoczesne maszyny nie mają kontrolerów klawiatury (w rzeczywistości są częścią wbudowanego kontrolera), a nawet bardziej nowoczesne maszyny nawet nie udają, że mają kontroler klawiatury. Teraz wbudowane kontrolery uruchamiają oprogramowanie. Jak wszyscy wiemy, oprogramowanie jest straszne. Co gorsza, oprogramowanie wbudowanego kontrolera zostało napisane przez autorów BIOS-u. Tak oczywiste jest, że wszelkie pozory, że to zawsze działa, są pewnego rodzaju wyszukaną fikcją. Niektóre maszyny są bardzo wybredne, ponieważ sprzęt znajduje się w dokładnie takim stanie, w jakim programowałby go system Windows. Niektóre maszyny działają 9 razy na 10, a następnie blokują się z powodu dziwnych problemów z taktowaniem. A inni po prostu w ogóle nie działają. Hurra!
triple - próba wygenerowania potrójnego błędu. Odbywa się to poprzez załadowanie pustej tabeli deskryptorów przerwań, a następnie wywołanie int (3). Przerwanie kończy się niepowodzeniem (nie ma IDT), procedura obsługi błędów kończy się niepowodzeniem (nie ma IDT), a procesor przechodzi w stan, który teoretycznie powinien wywołać reset. Tyle że wydaje się, że nie ma takiego wymogu i po prostu nie działa na wielu komputerach.
pci - właściwie nie pci. Tradycyjny dostęp do przestrzeni konfiguracji PCI uzyskuje się poprzez zapisanie 32-bitowej wartości na porcie io 0xcf8 w celu identyfikacji magistrali, urządzenia, funkcji i rejestru konfiguracji. Port 0xcfc następnie zawiera rejestr, o którym mowa. Ale jeśli zapiszesz odpowiednią parę magicznych wartości do 0xcf9, maszyna uruchomi się ponownie. Spektakularny! I nie jest w żaden sposób znormalizowany (z pewnością nie jest częścią specyfikacji PCI), więc różne chipsety mogą mieć różne wymagania. Booo.
efi - Usługi uruchomieniowe EFI zapewniają punkt wejścia do ponownego uruchomienia komputera. Zwykle nawet działa! Dopóki usługi uruchomieniowe EFI w ogóle działają, co może być rozciągnięte.
acpi - Najnowsze wersje specyfikacji ACPI umożliwiają podanie adresu (zwykle pamięci lub systemowego miejsca we / wy) i wartości do zapisania w nim. Chodzi o to, że zapisanie wartości na adres resetuje system. Okazuje się, że tak często się nie udaje. Nie można również przedstawić metody ponownego uruchomienia PCI za pomocą ACPI, ponieważ metoda ponownego uruchomienia PCI wymaga pary wartości, a ACPI daje tylko jedną.
Frobuje lokalizację I / O, która obniża linię danych, która mówi procesorowi, że powinien przerwać cokolwiek robi i zacząć uruchamiać kod z określonej lokalizacji w BIOS-ie.
Oczywiście w dawnych czasach przed zarządzaniem energią komputery mogły się zrestartować. (Czy ktoś pamięta, kiedy zamrożony program wymagał użycia Ctrl + Alt + Delete, aby ponownie uruchomić komputer?)
Na moim starym 486 polecenie języka asemblera JMP FFFF:0000
(tj. Ustaw wskaźnik instrukcji procesora na wspomniany adres) spowoduje ponowne uruchomienie całego komputera. Innymi słowy, FFFF: 0000 odnosi się do lokalizacji w systemie BIOS, w której znajdują się instrukcje dotyczące tego, co powinien zrobić komputer przy pierwszym uruchomieniu. Podejrzewam, że PIN resetowania opisany w odpowiedzi AndrejaKo lub przyciski resetowania w dniach poprzedzających zarządzanie energią również zmusiłyby wskaźnik instrukcji do tego samego adresu.
Wyszukiwania Google dla JMP FFFF: 0000 ujawnia wiele interesujących stron na ten temat.
Istnieje również coś o nazwie watchdog. To urządzenie służy jako przełącznik martwego człowieka. Komputer musi co sekundę sygnalizować stróżowi, że wciąż żyje. Gdy komputer ulegnie awarii, np. Po uruchomieniu w nieskończonej pętli, nie będzie sygnalizował watchdogowi, że nadal działa zgodnie z przeznaczeniem, przy której okazji watchdog wykona reset sprzętowy. Zostało to zademonstrowane w popularnej serii telewizyjnej terminatora, w której robot został ogłuszony przez skok napięcia wysokiego napięcia. zresetuje się za 2 minuty.
Z powrotem na starym IBM PC-1 kontroler klawiatury, co dziwne, obsłużył restart. IBM osadził mały mikroprocesor do obsługi klawiatury i miał kilka wolnych linii we / wy, więc użyli jednej z linii do sterowania linią resetowania głównego procesora. Polecenie wysłane do kontrolera klawiatury spowoduje zresetowanie procesora, tak jakby właśnie włączono zasilanie.
Zgaduję, że ta tradycja przetrwała również w erze „AT” i mogą pozostać jej ślady w ACPI.
Dodano: Istnieje interesujący szczegół na temat powyższego schematu resetowania. Podczas wczesnej sekwencji rozruchowej kod szukał określonego wzorca w pamięci RAM, który mógł zostać ustawiony przez poprzednio wykonywany kod. Jeśli ten kod był obecny, niektóre z testów POST (autotest po włączeniu zasilania) zostały pominięte. Wzór będzie obecny tylko na „ciepłym” bucie.