컴퓨터를 어떻게 다시 시작할 수 있습니까? 꺼진 후에 다시 다시 오도록하려면 어떻게해야합니까? 이 작업을 수행 할 수있는 소프트웨어는 무엇입니까?
컴퓨터를 어떻게 다시 시작할 수 있습니까? 꺼진 후에 다시 다시 오도록하려면 어떻게해야합니까? 이 작업을 수행 할 수있는 소프트웨어는 무엇입니까?
답변:
tl; dr : 컴퓨터의 전원 상태는 ACPI (고급 구성 및 전원 인터페이스)의 구현에 의해 제어됩니다. 종료 프로세스가 끝나면 운영 체제는 컴퓨터를 재부팅해야 함을 나타내는 ACPI 명령을 설정합니다. 이에 대응하여, 마더 보드는 각각의 재설정 명령 또는 라인을 사용하여 모든 구성 요소를 재설정 한 다음 부트 스트랩 프로세스를 따릅니다. 마더 보드는 실제로 전원이 꺼지지 않으며 다양한 구성 요소 만 재설정 한 다음 전원 버튼을 누른 것처럼 작동합니다.
길고 엉망이지만 (제 생각에는) 더 흥미로운 답변 :
예전에는 (90 년대가 오래 전에 나와 같은 대학생들에게) AT 전력을 갖춘 AT (Advanced Technology) 마더 보드가있었습니다.조치. AT 전원 시스템은 매우 간단했습니다. 컴퓨터의 전원 버튼은 하드웨어 토글 (아마도 후면에 있음)이며 120vac 입력이 바로 통과했습니다. 물리적으로 전원 공급 장치의 전원을 켜고 끄고이 스위치가 꺼짐 위치에 있으면 컴퓨터의 모든 것이 완전히 죽었습니다 (CMOS 배터리가 없으면 하드웨어를 유지할 전원 공급 장치가 없기 때문에 CMOS 배터리가 매우 중요했습니다) 시계 똑딱). 전원 스위치는 물리적 메커니즘이기 때문에 전원을 켜고 끄는 소프트웨어 방법이 없었습니다. 모든 것이 주차되어 꺼질 준비가되었지만 OS가 실제로 전원 스위치를 뒤집을 수는 없기 때문에 Windows는 유명한 "컴퓨터를 끄는 것이 안전합니다"라는 메시지를 표시합니다. 이 구성은 때때로그것은 모든 하드웨어이기 때문에 하드 파워 .
요즘 ATX 마더 보드와 ATX 파워 의 경이로 인해 상황이 다릅니다 . ATX는 다른 많은 발전 (미니 DIN PS / 2, 누구?)과 함께 소프트 파워를 가져 왔습니다 . 소프트 파워는 소프트웨어로 컴퓨터의 전원을 제어 할 수 있음을 의미합니다. 이로 인해 몇 가지 가져 오기 변경이 이루어졌습니다.
따라서 전원 스위치가 더 이상 컴퓨터를 "켜지"않습니다. 대신, 메인 보드의 기본 컨트롤러에 연결되어 있습니다.이 컨트롤러는 버튼을 눌렀 음을 감지하고 PS_ON을 켜서 전원을 사용할 수 있도록 시스템 준비를위한 여러 단계를 실행합니다. 전원 단추는 시작 프로세스를 트리거 할 수있는 유일한 방법이 아니며 확장 버스의 장치도 그렇게 할 수 있습니다. 이것은 컴퓨터가 꺼져있을 때 이더넷 네트워크 어댑터가 실제로 켜져 있고 종종 "매직 패킷"이라고하는 매우 특정한 패킷을 찾기 때문에 중요합니다. MAC 주소로 지정된이 패킷을 감지하면 시작 프로세스가 시작됩니다. 이것이 "WoL (Wake-on-LAN)"작동 방식입니다. 시계는 부팅을 시작할 수도 있습니다 (대부분의 BIOS에서는 컴퓨터가 매일 부팅되는 시간을 설정할 수 있습니다).
글쎄, Soft Power에 대해서는 흥미롭고 (항상 설명해야하는 중요한 이유), 컴퓨터의 전원 및 작동 / 해제 상태가 모두 소프트웨어에 의해 어떻게 제어되는지 이해할 수 있기 때문에 Soft Power에 대해 설명합니다. 대부분의 최신 컴퓨터에서이 소프트웨어 시스템은 ACPI (Advanced Configuration and Power Interface )의 구현입니다 . ACPI는 소프트웨어가 컴퓨터의 전원 시스템을 제어 할 수 있도록하는 표준화 된 통합 시스템입니다. ACPI 전원 상태에 대해 들어 보셨을 것입니다. 전원 제어의 기본 메커니즘은 이러한 "전원 상태"이며 운영 체제는 스위치 (전원이 실제로 꺼지기 전에 발생하는 종료 / 최대 절전 프로세스)를 준비한 다음 마더 보드에 전원 상태를 전환하도록 명령하여 전원 모드를 통해 전환합니다. . 전원 상태는 다음과 같습니다.
재부팅은 이러한 상태 중 하나가 아님을 알 수 있습니다. 컴퓨터가 재부팅 될 때 실제로 어떻게됩니까? 전원 관리의 관점에서 볼 때 거의 아무것도 아니기 때문에 대답은 놀랍습니다 . 이 ACPI를 리셋 명령. 운영 체제가 재부팅하도록 지시하면 운영 체제가 정상적인 종료 프로세스 (모든 프로세스 중지, 약간의 유지 관리 수행, 파일 시스템 분리 등)를 수행 한 다음 시스템을 전원 상태로 보내는 대신 최종 단계로 수행합니다. G2 (간단하게 시스템 종료를 지시 한 것처럼)는 재설정 명령을 설정합니다. 대부분의 ACPI 인터페이스와 마찬가지로 재설정을 요청하기 위해 특정 값을 작성해야하는 주소 일 뿐이므로 일반적으로 "재설정 레지스터"라고합니다. 2.0 사양에 대해 인용하겠습니다.
선택적 ACPI 재설정 메커니즘은 완전한 시스템 재설정을 제공하는 표준 메커니즘을 지정합니다. 구현시이 메커니즘은 전체 시스템을 재설정해야합니다. 여기에는 프로세서, 코어 로직, 모든 버스 및 모든 주변 장치가 포함됩니다. OSPM 관점에서 리셋 메커니즘을 가정하는 것은 머신의 전원을 껐다 켜는 것과 논리적으로 같습니다. 재설정 후 제어권을 확보하면 OSPM은 콜드 부팅과 유사한 방식으로 작업을 수행합니다.
따라서 리셋 레지스터가 설정되면 몇 가지 일이 순서대로 발생합니다.
이 두 단계의 최종 효과 (실제로 더 많은 단계로 세분화 됨)는 컴퓨터가 방금 부팅 한 것처럼 모든 것을 보지만 실제로는 항상 전원이 켜져 있다는 것입니다. 즉, 전원 공급 장치가 준비 될 때까지 기다릴 필요가 없기 때문에 시스템을 종료하고 시작하는 데 걸리는 시간이 줄어들고 운영 체제를 종료하여 부팅을 시작할 수 있습니다. 즉, 다른 시작 트리거를 사용할 필요가 없으며 (WoL 등) 부트를 트리거 할 방법이 없을 때 시스템을 원격으로 재설정하는 효과적인 방법으로 재부팅을 사용할 수 있습니다.
긴 대답이었습니다. 그러나 이제 컴퓨터 전원 관리에 대해 더 많이 알고 있기를 바랍니다. 나는 이것을 연구하는 것들을 확실히 배웠다.
시작점은 다음과 같습니다.
칩은 일반적으로 껐다가 켜지지 않습니다. 대신, 일반적으로 모든 메모리가 지워지고 프로세서가 전원이 켜진 것처럼 보일 때 프로세서를 소위 리셋 상태로 만드는 리셋 라인이 있습니다. 해당 핀이 높게 (또는 프로세서에 따라 낮게) 유지되는 동안 프로세서는 재설정됩니다. 핀을 놓으면 처음 전원을 켜는 것처럼 정상적으로 부팅을 계속합니다. 요점은 전원 차단 자체가 없다는 것입니다.
그렇다면 현대 PC와 같은 더 큰 시스템으로 어떻게 확장 할 수 있습니까? 현대 컴퓨터는 컴퓨터로 만들어지며 때로는 컴퓨터 자체로 만들어집니다. 따라서 컴퓨터를 재설정하도록 설정하면 컴퓨터가 상태를 저장하기 시작하거나 (리셋이 제어되는 경우) 재설정 핀을 당기는 "컴퓨터"가됩니다.
일부 프로세서 및 마이크로 컨트롤러 (일반적으로 최신 데스크탑 컴퓨터보다 20 년이 지난 소형 독립형 컴퓨터)는 내부 스위치를 사용하여 스스로 재설정 할 수 있습니다. 내가 말했듯이 재설정을 생성하는 신호가 사라지면 컴퓨터가 시작됩니다. 따라서 질문의 전제는 정확하지 않습니다. 컴퓨터는 언제 켜야할지 모른다. 언제 "off"가되어야하는지 또는 리셋 상태가되어야하는지 그리고 그것을 유지하는 신호가 사라지면 알 수 있습니다.
특정 시간이나 네트워크를 통해 켜도록 설정할 수있는 최신 컴퓨터에서는이 동작이 이상하게 보일 수 있습니다. 내가 말했듯이 컴퓨터는 컴퓨터로 만들어졌습니다. 따라서 메인 프로세서는 꺼져있을 수 있지만 내부에는 수많은 다른 칩과 마이크로 컨트롤러가있을 수 있습니다. 가장 명백한 경우는 종종 배터리로 구동되는 실시간 시계입니다. 그런 다음 다른 칩을 켜서 다른 칩을 켜고 전체 컴퓨터가 켜질 때까지 연쇄 반응이 진행됩니다. 오늘날의 컴퓨터에는 + 5VDC 대기 전압이라는 PSU 라인이 있습니다. 컴퓨터가 "꺼져있을 때"켜져있는 다양한 장치에 약 50mW의 전원을 공급합니다.
약간의 퀴즈 : Intel 386 EX 프로세서의 재설정 핀은 핀 번호 110입니다.
Intel i7-900에서는 토지 번호 AL39입니다.
누군가가 시스템이 복잡하기 때문에 높은 수준의 관점에서 어떻게 작동하는지 설명하는 답변을 제공 할 수 있기를 바랍니다.
이 블로그 포스트 는 리눅스가 재부팅을 어떻게 트리거하는지 설명합니다.
발췌 :
Linux에는 x86을 재설정하는 다양한 방법이 있습니다. 그들 중 일부는 32 비트 전용이므로 솔직히 인생에서하는 일을하기 때문에 무시할 것입니다. 또한 그들은 끔찍합니다. 그래서, 그 중 다섯이 남았습니다.
kbd-키보드 컨트롤러를 통해 재부팅합니다. 원래 IBM PC에는 CPU 재설정 라인이 키보드 컨트롤러에 연결되어있었습니다. 적절한 매직 값을 쓰면 라인이 펄스 화되고 기계가 재설정됩니다. 현대 컴퓨터에는 키보드 컨트롤러가 없으며 (실제로는 내장 컨트롤러의 일부 임) 더 현대적인 컴퓨터에는 키보드 컨트롤러가없는 척하는 경우를 제외하고는 매우 간단합니다. 이제 임베디드 컨트롤러는 소프트웨어를 실행합니다. 그리고 우리 모두 알고 있듯이 소프트웨어는 무섭습니다. 그러나 내장 컨트롤러의 소프트웨어는 BIOS 작성자가 작성했습니다. 이것이 분명히 효과가 있다고 주장하는 것은 일종의 정교한 픽션입니다. 일부 컴퓨터는 Windows가 프로그래밍하는 정확한 상태에있는 하드웨어에 대해 매우 까다 롭습니다. 일부 기계는 10 회 중 9 회 작동 한 다음 이상한 타이밍 문제로 인해 잠 깁니다. 그리고 다른 사람들은 전혀 작동하지 않습니다. 만세!
triple-트리플 결함 생성을 시도하십시오. 빈 인터럽트 디스크립터 테이블을로드 한 다음 int (3)를 호출하면됩니다. 인터럽트 실패 (IDT 없음), 결함 처리기 실패 (IDT 없음) 및 CPU는 이론적으로 리셋을 트리거해야하는 조건으로 들어갑니다. 이것이 일어날 필요가없는 것만 제외하고는 많은 기계에서 작동하지 않습니다.
pci-실제로는 pci가 아닙니다. 기존의 PCI 구성 공간 액세스는 32 비트 값을 io 포트 0xcf8에 기록하여 버스, 장치, 기능 및 구성 레지스터를 식별함으로써 달성됩니다. 포트 0xcfc는 문제의 레지스터를 포함합니다. 그러나 적절한 매직 값 쌍을 0xcf9에 쓰면 머신이 재부팅됩니다. 훌륭합니다! 그리고 어떤 방식 으로든 표준화되지 않았으므로 (PCI 사양의 일부가 아님) 칩셋마다 요구 사항이 다를 수 있습니다. 멍청 아
efi-EFI 런타임 서비스는 시스템을 재부팅하기위한 진입 점을 제공합니다. 일반적으로 작동합니다! EFI 런타임 서비스가 전혀 작동하지 않는 한 확장 될 수 있습니다.
acpi-최신 버전의 ACPI 사양을 사용하면 주소 (일반적으로 메모리 또는 시스템 IO 공간)와 여기에 쓸 값을 제공 할 수 있습니다. 아이디어는 주소에 값을 쓰면 시스템을 재설정한다는 것입니다. 그렇게하는 것이 종종 실패한다는 것이 밝혀졌습니다. PCI 재부팅 방법에는 한 쌍의 값이 필요하고 ACPI는 하나만 제공하기 때문에 ACPI를 통해 PCI 재부팅 방법을 나타내는 것도 불가능합니다.
그것은 데이터 라인을 낮게 잡아 당기는 I / O 위치를 frobs하여 CPU가 수행중인 작업을 중단하고 BIOS의 특정 위치에서 코드를 실행해야 함을 알려줍니다.
전원 관리 이전에는 컴퓨터가 여전히 다시 시작될 수있었습니다. (동결 된 프로그램이 컴퓨터를 재부팅하기 위해 Ctrl + Alt + Delete를 사용해야했던 것을 기억하십니까?)
이전 486에서 어셈블리 언어 명령 JMP FFFF:0000
(즉, CPU의 명령어 포인터를 해당 주소로 설정)으로 인해 전체 컴퓨터가 다시 시작될 수 있습니다. 다시 말해, FFFF : 0000은 BIOS에서 컴퓨터가 처음 시작될 때 수행 할 작업에 대한 지침이있는 위치를 지정합니다. AndrejaKo의 답변에 설명 된 재설정 핀 또는 전원 관리 전날의 재설정 버튼도 명령 포인터를 동일한 주소로 강제 할 것이라고 생각합니다.
JMP FFFF에 대한 Google 검색 : 0000 이것에 대해 많은 흥미로운 페이지를 보여준다.
워치 독이라는 것도 있습니다. 이 장치는 망자의 스위치 역할을합니다. 컴퓨터는 매 순간마다 감시 장치에 여전히 살아 있다는 신호를 보내야합니다. 예를 들어 무한 루프를 실행하여 컴퓨터가 충돌하면 워치 독이 의도 한대로 여전히 실행중인 워치 독에게 신호를 보내지 않습니다.이 경우 워치 독은 하드웨어 재설정을 수행합니다. 이것은 고전압 전력 서지로 인해 로봇이 고장난 인기있는 터미네이터 TV 시리즈에서 시연되었습니다. 2 분 안에 재설정됩니다.
이전 IBM PC-1 키보드 컨트롤러로 돌아가서 이상하게도 재부팅을 처리했습니다. IBM은 키보드를 처리하기 위해 작은 마이크로 프로세서를 내장했으며 여분의 I / O 라인이 있었으므로 라인 중 하나를 사용하여 기본 CPU의 리셋 라인을 구동했습니다. 키보드 컨트롤러로 전송 된 명령은 전원이 방금 켜진 것처럼 CPU를 재설정합니다.
나는이 전통이 "AT"시대에도 잘 맞았다 고 추측하고 있으며, 오늘날 ACPI에는 그 흔적이 남아있을 수 있습니다.
추가 : 위의 재설정 체계에 대한 흥미로운 세부 사항이 있습니다. 초기 부팅 시퀀스 동안 코드는 이전에 실행 된 코드에 의해 설정되었을 수있는 RAM의 특정 패턴을 찾았습니다. 이 코드가 있으면 일부 POST (전원 공급자가 테스트) 진단을 건너 뛰었습니다. 이 패턴은 "따뜻한"부팅에서만 나타납니다.