컴퓨터는 어떻게 시간을 추적합니까?


68

컴퓨터가 매번 정확한 시간과 날짜를 어떻게 알 수 있습니까?

컴퓨터를 닫을 때마다 (종료) 내부의 모든 연결과 프로세스가 중지됩니다. 컴퓨터를 다시 열면 정확한 시간을 어떻게 알 수 있습니까? 컴퓨터를 종료해도 컴퓨터가 완전히 종료되지 않습니까? 아직 실행중인 프로세스가 있습니까? 그러나 배터리를 꺼내고 모든 프로세스를 강제로 중지하고 며칠 후에 다시 시작하면 랩톱에서 올바른 시간을 어떻게 알 수 있습니까?


3
이 질문 이이 사이트의 주제 에 관한 것 입니까? 슈퍼 유저 에게는 나에게 더 적합한 것 같습니다 .
Ilmari Karonen

3
@IlmariKaronen이 용어를 올바르게 이해한다면 이것은 "컴퓨터 아키텍처"에 대한 질문으로 간주됩니다.
PyRulez

답변:


96

컴퓨터에는 "실시간 시계"가 있습니다. 즉, 시간을 유지하는 특수 하드웨어 장치 (예 : 석영 크리스탈 포함)가 마더 보드에 있습니다. 컴퓨터를 종료하더라도 항상 전원이 켜집니다. 또한 마더 보드에는 컴퓨터의 전원을 분리 할 때에도 시계 장치에 전원을 공급하는 데 사용되는 소형 배터리가 있습니다. 배터리는 영원하지 않지만 최소 몇 주 동안 지속됩니다. 이렇게하면 컴퓨터가 꺼져 있어도 컴퓨터가 시간을 추적 할 수 있습니다. 실시간 시계는 많은 전력을 필요로하지 않으므로 에너지를 낭비하지 않습니다. 주 배터리를 제거하고 전원 케이블을 분리하는 것 외에도 시계 배터리를 꺼내면 컴퓨터에서 시간을 잃어 컴퓨터를 다시 시작할 때 시간과 날짜를 입력하라는 메시지가 표시됩니다.

자세한 내용은 실시간 시계CMOS 배터리왜 마더 보드에 배터리가 있습니까?를 참조하십시오 .

또한 많은 컴퓨터에서 컴퓨터를 인터넷 연결에 연결하면 OS는 네트워크에서 시간 서버를 찾아 현재 시간에 대한 시간 서버를 쿼리합니다. OS는이를 사용하여 컴퓨터의 로컬 시계를 매우 정확하게 설정할 수 있습니다. NTP라고도 하는 네트워크 시간 프로토콜을 사용합니다 .


1
OS가 BIOS 시간을 설정할 수 있습니까? 내 말은, 하드웨어 시계를 강제로 재설정 한 다음 NTP로 부팅 및 연결하거나 시계를 직접 설정하면 BIOS가이를 인식합니까?
고양이

1
예. OS의 시스템 시간을 변경하면 BIOS 시간과 같은 실시간 시계가 설정됩니다. 내부적으로 시계는 Epoch (보통 1970 년 1 월 1 일 00:00) 이후 초 (또는 밀리 초)를 계산하기 때문에 많은 작업을 수행하지 않고 몇 년 동안 동전 크기 배터리로 구동 될 수 있습니다. OS의 상위 레벨 기능은 해당 카운트를 날짜 / 시간으로 변환하여 표시하는 작업을 수행합니다.
Chris Nava

쿼츠 크리스탈은 시간을 추적하는 특별한 하드웨어 장치 가 아닙니다 (단 하나의 구성 요소 임에도 불구하고).
user253751

1
@tatan 아니오, 휴대 전화는 항상 배터리로 구동됩니다. PC가 종료되었을 때 전원 버튼을 눌러 PC를 켤 수 있지만 벽 콘센트에서 분리되지 않은 경우와 거의 동일합니다.
Ruslan

1
마지막 단락을 바꾸어 컴퓨터를 OS로 변경합니다. 인터넷에 연결된 모든 PC는 그렇지 않을 수도 있고 그 반대도 마찬가지입니다. 하드웨어를 포함하는 PC가 아니라 OS를 수행하는 것이 OS 작업입니다.
MatthewRock

13

마더 보드에서 배터리를 제거하면 컴퓨터에 시간을 알리는 방법이 없습니다.

휴대 전화에서도 마찬가지입니다. 휴대 전화를 방전 한 다음 몇 주 이상 재충전하지 않으면 소형 보조 배터리가 완전히 방전되고 실시간 시계에 전원이 공급되지 않기 때문에 "시간을 잊어 버립니다".

오래된 휴대 전화가 있으면 전원을 켜고 "시간을 잊어 버렸습니다"라는 것을 직접 확인할 수 있습니다.

이것이 배터리의 모습입니다. https://yandex.com/images/touch/search?text=mobo%20battery&source=tabbar

나는 하루에 그보다 적게 지속되기 시작했을 때 몇 번 구매해야했습니다. PC를 켤 때마다 시계를 구성해야했습니다.


3
많은 운영 체제는 이제 NTP (Network Time Protocol)를 사용하며 시작시 자동으로 재설정하기 위해이를 사용할 수 있으므로 실제로 내장 시계가 필요하지 않습니다.
James Snell

3
@JamesSnell 그러나 NTP가 시작되기 전에 부팅 중에 수정 된 파일뿐만 아니라 로그 파일의 타임 스탬프도 엉망으로 만듭니다.
kasperd

@kasperd-타임 스탬프는 많은 시스템이 다른 메타 데이터 (버전 관리)를 사용하는 것만 큼 중요하지 않습니다. 라우터 또는 라즈베리 파이와 같은 RTC가없는 시스템의 부팅 로그를보고 시간이 업데이트 될 때 (및 수행 할 작업) 기록합니다. 연결이 끊어진 시스템에서는 더 중요 할 수 있지만 시간이 지남에 따라 그 중요성이 줄어들고 있습니다.
제임스 스넬

1
@JamesSnell 표준 x86 운영 체제를 실행할 수있는 여러 개의 단일 보드 컴퓨터가 있지만 배터리 지원 RTC가 없습니다. 결국 디스크 액세스가 발생하기 전에`ntpdate '를 실행하기 위해 램 디스크 내에서 최소의 네트워크 스택을 실행하도록했습니다.
kasperd

@JamesSnell 예. 그러나 랩톱 및 태블릿은 부팅 후 Wi-Fi에 연결하고 (적어도 대부분은 그렇게 함) 이더넷 연결이 없으므로 거의 모든 컴퓨터에서 배터리를 사용하고 있습니다. 또한 데스크톱 컴퓨터에는 항상 인터넷이 없습니다. 어떤 사람들은 밤에 라우터를 닫거나 게임을하거나 영화를보고 라우터를 켜지 않으면 항상 인터넷을 사용하지 않습니다. 모든 사람이 항상 인터넷에 연결되기를 원하는 것은 아닙니다.
yoyo_fun

2

Windows를 시작하면 RTC (Real Time Clock)의 메모리에 직접 액세스 할 수 있으며 해당 날짜 및 시간 값을 사용하여 컴퓨터 날짜 및 시간을 설정합니다. 타이머 인터럽트는 Windows가 실행 중일 때 컴퓨터 시간을 유지합니다. Windows의 시간 데몬은 Windows가 시작된 후 약 1 시간마다 실행됩니다. Time Daemon은 Windows의 시간과 RTC의 시간을 비교합니다. 두 시간이 1 분 이상 떨어져 있으면 Windows는 RTC와 일치하도록 시간과 날짜를 변경합니다. Time Daemon이 실행되는 시간 간격을 변경할 수 없습니다.

Windows NT 4.0 Resource Kit에 포함 된 TimeServ.exe 도구와 같은 시간 동기화 서비스를 사용하면이 도구는 Windows 및 컴퓨터의 RTC의 시간을 업데이트합니다. Windows 시간 서비스가 Windows 2000 기반 컴퓨터에서 실행되는 경우 Windows가 시작된 후 1 시간마다 Windows의 시간 데몬이 약 1 시간 씩 실행될 수 없습니다.

자세한 내용을 보려면 다음 링크를 방문하십시오. http://msdn2.microsoft.com/en-us/library/ms724936.aspxhttp://msdn2.microsoft.com/en-us/library/ms724942.aspx


흥미 롭군 그렇다면 Windows는 프로그램의 호출에 응답하기 위해 현재 정확한 시간 (마이크로 초)을 어떻게 결정합니까 (예 : 파이썬의 time.time ()) 그리고 얼마나 자주 그리고 어떻게 현재 시간 값을 업데이트합니까?
jacanterbury
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.