시스템 시간

System time
Unix date 명령어

컴퓨터 과학컴퓨터 프로그래밍에서 시스템 시간은 시간의 흐름에 대한 컴퓨터 시스템의 개념을 나타낸다. 이런 의미에서 시간에는 달력에 날이 지나가는 것도 포함된다.

시스템 시간은 시스템 시계에 의해 측정되는데, 이것은 일반적으로 epoch라고 불리는 일부 임의의 시작일 이후 경과한 의 수의 간단한 카운트로 구현된다. 예를 들어, 유닉스 및 POSIX 호환 시스템은 1970년 1월 1일 00:00:00 UT에서 유닉스 시대가 시작된 이후 경과한 시간("유닉스 시간")으로 시스템 시간("유닉스 시간")을 인코딩하며, 윤초는 예외로 한다. Windows 9xWindows NT와 같은 32비트 및 64비트 버전의 Windows API를 구현하는 시스템은 시스템 시간을 둘 다로 제공한다. 시스템타임(SYSTEMTIME)은 1년/월/일/시/분/초/밀리초 값으로 표시되며 파일타임(FILETIME)은 1601년 1월 1일 이후 100나노초 틱 수 카운트로 표시된다.

시스템 시간은 캘린더 시간으로 변환될 수 있는데, 이것은 인간의 이해에 더 적합한 형태다. 예를 들어, 유닉스 시스템 시간은 epoch가 시작된 이후 1000000000초 후에 달력 시간 2001년 9월 9일 01:46:40 UT로 해석된다. 이러한 변환을 처리하는 라이브러리 서브루틴시간대, 일광 절약 시간제(DST), 윤초사용자의 로케일 설정에 대한 조정도 다룰 수 있다. 도서관 루틴은 또한 일반적으로 달력 시간을 시스템 시간으로 변환하는 것을 제공한다.

기타 시간 측정

시스템 시간과 밀접하게 관련된 것은 프로세스 시간이며, 이는 실행 프로세스가 소비하는 총 CPU 시간의 수입니다. 사용자 코드와 시스템 커널 코드를 실행하는 데 각각 소요된 시간을 나타내는 사용자시스템 CPU 시간으로 분할할 수 있다. 프로세스 시간은 CPU 명령이나 클럭 사이클의 집합이며 일반적으로 벽면 시간과 직접적인 상관관계가 없다.

파일 시스템은 각 파일디렉토리파일 제어 블록(또는 inode)에 타임스탬프를 저장하여 파일이 생성, 수정 및/또는 액세스되는 시간을 추적한다.

역사

대부분의 1세대 개인용 컴퓨터는 날짜와 시간을 추적하지 못했다. 여기에는 CP/M 운영 체제를 실행하는 시스템뿐만 아니라 애플 II, BBC Micro, Commodore PET의 초기 모델도 포함되었다. 온보드 배터리 백업 기능이 있는 실시간 시계 칩이 포함된 애드온 주변기판을 IBM PCXT에 사용할 수 있었지만, 마더보드에 내장된 날짜/시간 하드웨어를 탑재한 PC는 IBM AT가 최초였다. 컴퓨터 네트워크가 널리 보급되기 전에, 시스템 시간을 추적하는 대부분의 개인용 컴퓨터 시스템은 현지 시간에 대해서만 그렇게 했고 다른 시간대를 감안하지 않았다.

최신 기술로 대부분의 현대 컴퓨터들은 VCR, DVR, 케이블 TV 수신기, PDA, 삐삐, 휴대폰, 팩스기, 전화 응답기, 카메라, 캠코더, 중앙 에어컨, 전자레인지와 같은 다른 가정과 개인 기기들도 마찬가지로 현지 시민 시간을 추적한다.

임베디드 시스템(라즈베리 파이, 아두이노 및 기타 유사한 시스템 등) 내에서 작동하는 마이크로컨트롤러에는 항상 시간을 추적할 수 있는 내부 하드웨어가 있는 것은 아니다. 그러한 많은 컨트롤러 시스템은 외부 시간을 알지 못한 채 작동한다. 그러한 정보가 필요한 사람들은 일반적으로 재부팅할 때 타임 서버나 외부 시계와 같은 외부 소스에서 현재 시간을 얻거나 사용자가 현재 시간을 수동으로 입력하도록 유도하여 기본 시간을 초기화한다.

실행

시스템 시계는 일반적으로 주기적으로 CPU를 인터럽트한 후 타이머 인터럽트 서비스 루틴 실행을 시작하는 프로그래밍 가능한 인터벌 타이머로 구현된다. 이 루틴은 일반적으로 시스템 시계(단순 카운터)에 한 개의 체크 표시를 추가하고 CPU가 중단되기 전에 실행하던 작업으로 돌아가기 전에 다른 주기적인 하우스키핑 작업(선점 등)을 처리한다.

시스템 시간 검색 중

01년 11월 2021년 11시 24분 UTC

이 페이지가 마지막으로 생성된 위키백과 시스템 시간.
→ 이 페이지를 정리하여 카운터를 업데이트하십시오.

다음 표는 다양한 운영 체제, 프로그래밍 언어응용 프로그램에서 시스템 시간을 검색하는 방법을 보여준다. (*)로 표시된 값은 시스템에 의존하며 구현마다 다를 수 있다. 모든 날짜는 양력 또는 양력 달력 날짜로 주어진다.

구현의 시간 측정 분해능은 그러한 측정과 동일한 정밀도를 의미하지 않는다는 점에 유의한다. 예를 들어 시스템은 현재 시간을 마이크로초 단위로 측정된 값으로 반환할 수 있지만 실제로 주파수가 100Hz(10ms)에 불과한 개별 클럭 눈금을 식별할 수 있다.

운영 체제

운영 체제 명령 또는 함수 해상도 에폭 또는 범위
안드로이드 자바.의System.currentTimeMillis() 1ms 1970년 1월 1일
BIOS(IBM PC) INT 1Ah, AH=00h[1] 54.9254ms
18.2065 Hz
현재 날짜의 자정
INT 1Ah, AH=02h[2] 1s 현재 날짜의 자정
INT 1Ah, AH=04h[3] 1일 1980년 1월 1일 ~ 1999년 12월 31일 또는 2079년 12월 31일 (시스템에 따라 다름)
CP/M 플러스 시스템 제어 블록:[4]
scb$base+58h, 1978년 1월 1일 이후 일수
scb$base+5Ah, 시간(BCD)
scb$base+5Bh, 분(BCD)
scb$base+5Ch, 두 번째(BCD)
1s 1978년 1월 1일~2067년 9월 1일
BDOS 함수 69h> (T_GET):[5]
단어, 1978년 1월 1일 이후 일
바이트, 시간(BCD)
바이트, 분(BCD)
바이트, 두 번째(BCD)
DOS(Microsoft) C:\>DATE
C:\>TIME
10 ms 1980년 1월 1일부터 2099년 12월 31일까지
INT 21h, AH=2Ch SYSTEM TIME[6]
INT 21h, AH=2Ah SYSTEM DATE[7]
iOS(Apple) CFAbsoluteTimeGetCurrent()[8] < 1 ms 2001년 1월 1일 ±10,000년
마코스 CFAbsoluteTimeGetCurrent()[9] < 1 ms[10][note 1] 2001년 1월 1일 ±10,000년[10][note 1]
오픈VMS SYS$GETTIM() 100ns[11] 1858년 11월 17일부터 1086년[12] 7월 31일까지
gettimeofday() 1μs[13] 1970년 1월 1일 ~ 2106년[14] 2월 7일
clock_gettime() 1ns[13]
z/OS STCK[15]: 7–187 2μs−12
244.14 ps[15]: 4–45, 4–46
1900년 1월 1일 ~ 2042년 9월 17일 UT[16]
STCKE 1900년 1월 1일부터 AD 36,765년까지[17]
유닉스, POSIX
(C 날짜시간 함수 참조)
$date
time()
1s (*)
1970년 1월 1일부터 2038년 1월 19일까지
1970년 1월 1일부터 AD 292,277,026,596까지
gettimeofday() 1μs
clock_gettime() 1ns
OS/2 DosGetDateTime() 10 ms 1980년 1월 1일부터 2079년[18] 12월 31일까지
창문들 GetSystemTime() 1ms 1601년 1월 1일 ~ 9월 14일 30,828년[19] 9월 1일
GetSystemTimeAsFileTime() 100ns
GetSystemTimePreciseAsFileTime()

언어 및 응용 프로그램 프로그래밍

언어/응용 프로그램 함수 또는 변수 해상도 에폭 또는 범위
에이다 Ada.Calendar.Clock 에 100μs.
20ms(*)
1901년 1월 1일 ~ 2099년 12월 31일 (*)
AWK systime() 1s (*)
베이직, 트루 베이직 DATE, DATE$
TIME, TIME$
1s (*)
비즈니스 BASIC DAY, TIM 0.1초 (*)
C (C 날짜시간 함수 참조) time() 1초(*)[note 2] (*)[note 2]
C++ std::time()
std::chrono::system_clock::now()
1초(*)[note 2]
1ns(C++11, OS 종속)
(*)[note 2]
C# System.DateTime.Now[20]
System.DateTime.UtcNow[21]
100ns[22] 0001년 1월 1일 ~ 9999년 12월 31일
CICS ASKTIME 1ms 1900년 1월 1일
코볼 FUNCTION CURRENT-DATE 1s 1601년 1월 1일
커먼 리스프 (get-universal-time) 1s 1900년 1월 1일
델파이 (볼랜드) date
time
1ms
(점수)
1900년 1월 1일
델파이
(엠바르카데로 테크놀로지스)[23]
System.SysUtils.Time[24] 1ms 0/0/0000 0:0:0:000 ~ 12/31/9999 23:59:59:999[1999]
System.SysUtils.GetTime[25] (의 경우)
System.SysUtils.Date[26] 0/0/0000 0:0:0:000 ~ 12/31/9999 0:0:0:000 [115]
System.DateUtils.Today[27]
System.DateUtils.Tomorrow[28]
System.DateUtils.Yesterday[29]
System.SysUtils.Now[30] 1s 0/0/0000 0:0:0:000 ~ 12/31/9999 23:59:59:000 [115]
System.SysUtils.DayOfWeek[31] 1일 1 대 7
System.SysUtils.CurrentYear[32] 1년 (*)
이맥스 리스프 (current-time) 1μs(*) 1970년 1월 1일
얼랑 erlang:system_time(), os:system_time()[33] OS 종속(예: Linux 1ns[33]) 1970년[33] 1월 1일
엑셀 date() ? 1900년[34] 1월 0일
포트란 DATE_AND_TIME
SYSTEM_CLOCK
(*)[35]

[36]

1970년 1월 1일
CPU_TIME 1μs
가다 time.Now() 1ns 0001년 1월 1일
하스켈 Time.getClockTime 1 ps (*) 1970년 1월 1일 (*)
Data.Time.getCurrentTime 1 ps (*) 1858년 11월 17일(*)
자바 java.util.Date()
System.currentTimeMillis()
1ms 1970년 1월 1일
System.nanoTime()[37] 1ns 임의의[37]
Clock.systemUTC()[38] 1ns 임의의[39]
JavaScript, TypeScript (new Date()).getTime()
Date.now()
1ms 1970년 1월 1일
매트랩 now 1s 0000년[40] 1월 0일
덤프 $H (의 줄임말) 1s 1840년 12월 31일
랩뷰 Tick Count 1ms 00:00:00.000 1904년 1월 1일
Get Date/Time in Seconds 1ms 00:00:00.000 1904년 1월 1일
목표-C [NSDate timeIntervalSinceReferenceDate] < 1 ms[41] 2001년 1월 1일 ±10,000년[41]
OCAML Unix.time() 1s 1970년 1월 1일
Unix.gettimeofday() 1μs
연장 파스칼 GetTimeStamp() 1s (*)
터보 파스칼 GetTime()
GetDate()
10 ms (*)
time() 1s 1970년 1월 1일
Time::HiRes::time[42] 1μs
PHP time()
mktime()
1s 1970년 1월 1일
microtime() 1μs
퓨어 베이직 Date() 1s 1970년 1월 1일부터 2038년 1월 19일까지
파이톤 datetime.now().timestamp() 1μs(*) 1970년 1월 1일
RPG CURRENT(DATE), %DATE
CURRENT(TIME), %TIME
1s 0001년 1월 1일 ~ 9999년 12월 31일
CURRENT(TIMESTAMP), %TIMESTAMP 1μs
루비 Time.now()[43] 1μs(*) 1970년 1월 1일 (Ruby 1.9.2[44] 이전 2038년 1월 19일까지)
스몰토크 Time microsecondClock
(VisualWorks)
1초(ANSI)
1μs(VisualWorks)
1초(스퀘어)
1901년 1월 1일 (*)
Time totalSeconds
(스퀘어)
SystemClock ticksNowSinceSystemClockEpoch
(크로니코스)
SQL CURDATE() 또는
CURTIME() 또는
GETDATE()
NOW() 또는
SYSDATE()
3ms 1753년 1월 1일 ~ 9999년 12월 31일 (*)
60초 1900년 1월 1일부터 2079년 6월 6일까지
표준 ML Time.now() 1μs(*) 1970년 1월 1일 (*)
TCL [clock seconds] 1s 1970년 1월 1일
[clock milliseconds] 1ms
[clock microseconds] 1μs
[clock clicks] 1μs(*) (*)
Windows PowerShell Get-Date[45][46] 100ns[22] 0001년 1월 1일 ~ 9999년 12월 31일
[DateTime]::Now[20]
[DateTime]::UtcNow[21]
Visual Basic 입니다.네트 System.DateTime.Now[20]
System.DateTime.UtcNow[21]
100ns[22] 0001년 1월 1일 ~ 9999년 12월 31일

참고 항목

메모들

  1. ^ Jump up to: a b CFRunLoop을 제외한 CFAbsoluteTime/CFTimeInterval의 정밀도와 범위에 대해서는 Apple Developer 설명서가 명확하지 않음'최대 밀리초 미만' 정밀도를 나타내는 TimerCreate 설명서. 단, 유사한 유형의 NSTime간격은 상호 교환이 가능한 것으로 보이며, 정밀도와 범위가 나열되어 있다.
  2. ^ Jump up to: a b c d C 표준 라이브러리시스템 시간 값에 대한 특정 분해능, 에폭, 범위 또는 데이터 유형을 지정하지 않는다. C++ 라이브러리는 C 라이브러리를 포괄하므로 C와 동일한 시스템 시간 구현을 사용한다.

참조

  1. ^ Ralf D. Brown (2000). "Int 0x1A, AH=0x00". Ralf Brown's Interrupt List.
  2. ^ Ralf D. Brown (2000). "Int 0x1A, AH=0x02". Ralf Brown's Interrupt List.
  3. ^ Ralf D. Brown (2000). "Int 0x1A, AH=0x04". Ralf Brown's Interrupt List.
  4. ^ "CP/M Plus (CP/M Version 3.0) Operating System Guide" (PDF).
  5. ^ "BDOS system calls".
  6. ^ Ralf D. Brown (2000). "Int 0x21, AH=0x2c". Ralf Brown's Interrupt List.
  7. ^ Ralf D. Brown (2000). "Int 0x21, AH=0x2a". Ralf Brown's Interrupt List.
  8. ^ "Time Utilities Reference". iOS Developer Library. 2007.
  9. ^ "Time Utilities Reference". Mac OS X Developer Library. 2007.
  10. ^ Jump up to: a b "CFRunLoopTimerCreate - Core Foundation". Apple Developer Documentation. 2007.
  11. ^ Ruth E. Goldenberg; Lawrence J. Kenah; Denise E. Dumas (1991). VAX/VMS Internals and Data Structures, Version 5.2. Digital Press. ISBN 978-1555580599.
  12. ^ "Why is Wednesday, November 17, 1858 the base time for OpenVMS (VAX VMS)?". Stanford University. 24 July 1997. Archived from the original on 24 July 1997. Retrieved 8 January 2020.
  13. ^ Jump up to: a b "VSI C Run-Time Library Reference Manual for OpenVMS Systems" (PDF). VSI. November 2020. Retrieved 2021-04-17.
  14. ^ "OpenVMS and the year 2038". HP. Retrieved 2021-04-17.
  15. ^ Jump up to: a b z/Architecture Principles of Operation (PDF). Poughkeepsie, New York: International Business Machines. 2007.
  16. ^ IBM은 2042. z/Architecture 운영 원칙(Foughkeepsie, New York:국제 비즈니스 머신, 2007) 1-15, 4-45-4-47
  17. ^ "Expanded 64-bit time values". IBM. Retrieved 2021-04-18.
  18. ^ Jonathan de Boyne Pollard. "The 32-bit Command Interpreter". On OS/2 Warp 4, date and time can both operate well beyond the year 2000, and even well beyond the year 2038, and in fact up to the year 2079, which is the limit for OS/2 Warp 4's real-time clock.
  19. ^ Anders Thulin (6 April 2013). "Interpretation of NTFS Timestamps". Forensic Focus.
  20. ^ Jump up to: a b c "DateTime.Now Property". Microsoft Docs.
  21. ^ Jump up to: a b c "DateTime.UtcNow Property". Microsoft Docs.
  22. ^ Jump up to: a b c "DateTime.Ticks Property". Microsoft Docs.
  23. ^ "Date and Time Support". Embarcadero Developer Network. 2013.
  24. ^ "System.SysUtils.Time". Embarcadero Developer Network. 2013.
  25. ^ "System.SysUtils.GetTime". Embarcadero Developer Network. 2013.
  26. ^ "System.SysUtils.Date". Embarcadero Developer Network'. 2013.
  27. ^ "System.DateUtils.Today". Embarcadero Developer Network. 2013.
  28. ^ "System.DateUtils.Tomorrow". Embarcadero Developer Network. 2013.
  29. ^ "System.DateUtils.Yesterday". Embarcadero Developer Network. 2013.
  30. ^ "System.SysUtils.Now". Embarcadero Developer Network. 2013.
  31. ^ "System.SysUtils.DayOfWeek". Embarcadero Developer Network. 2013.
  32. ^ "System.SysUtils.CurrentYear". Embarcadero Developer Network. 2013.
  33. ^ Jump up to: a b c 얼랑에서의 시간 및 시간 보정
  34. ^ "XL2000: Early Dates on Office Spreadsheet Component Differ from Excel". Microsoft Support. 2003. Archived from the original on 24 October 2007. In the Microsoft Office Spreadsheet Component, the value 0 evaluates to the date December 30, 1899 and the value 1 evaluates to December 31, 1899. ... In Excel, the value 0 evaluates to January 0, 1900 and the value 1 evaluates to January 1, 1900.
  35. ^ "SYSTEM_CLOCK". Intel Fortran Compiler 19.0 Developer Guide and Reference. 29 April 2019. Retrieved 23 July 2019.
  36. ^ "SYSTEM_CLOCK — Time function". The GNU Fortran Compiler. Retrieved 27 October 2011.
  37. ^ Jump up to: a b "System.nanoTime() method". Java Platform, Standard Edition 6: API Specification. 2015. Retrieved 23 July 2019.
  38. ^ "Clock.systemUTC() and other methods". Java Platform, Standard Edition 8: API Specification. 2014. Retrieved 15 January 2015.
  39. ^ "JSR-310 Java Time System". Java Platform, Standard Edition 8: API Specification. 2014. Retrieved 15 January 2015.
  40. ^ "Matlab Help".
  41. ^ Jump up to: a b "NSTimeInterval - Foundation". Apple Developer Documentation.
  42. ^ 더글라스 웩쉐일드, R. 셔틀러, 자르코 히타니에미,
  43. ^ James Britt; Neurogami. "Time class". Ruby-Doc.org: Help and documentation for the Ruby programming language. Scottsdale, AZ. Retrieved 27 October 2011.
  44. ^ Yugui (18 August 2010). "Ruby 1.9.2 is released". The new 1.9.2 is almost compatible with 1.9.1, except these changes: ... Time is reimplemented. The bug with year 2038 is fixed.
  45. ^ "Using the Get-Date Cmdlet". Microsoft Docs. Retrieved 23 July 2019.
  46. ^ "Windows PowerShell Tip of the Week – Formatting Dates and Times". Microsoft Docs. Retrieved 23 July 2019.

외부 링크