[unix] 명령 줄에서 “시간”을 사용할 때 “시스템 시간”이란 무엇입니까

우분투 14.04의 표준 터미널에서 스크립트 time시간을 사용 하고 있습니다 Perl.

나는 그것이 스톱워치 시간 이라는 것을 읽었real time 습니다. 사용자로서 내가 프로그램을 시작하고 종료 할 때까지 프로그램을 실행하는 데 소요되는 시간입니다. 그러나 나는 무엇을 얻을하지 않습니다 user또는 sys입니다 시간. 맨 페이지 time는 가장 모호합니다.

그것은 다소 분명하다 동안 것을 real시간 사이의 분할은 user하고 sys그들이 무엇을 나타내는 지 분명하지 않다.

내 스크립트에서 나는 차이점을보기 위해 C ++과 Perl을 서로 벤치마킹하고 있으며 실제로 어떤 데이터를 얻고 있는지 알고 싶다. 출력 예는 다음과 같습니다.

real    0m24.198s
user    0m23.120s
sys     0m1.030s

누군가 기본 시간 형식이 사용자에게 말하는 내용을 자세히 설명해 주시겠습니까? 나는 리눅스에 초보자이므로 너무 많이 가정하지 마십시오.

[1] 흥미롭게도 C ++은 real시간 과 관련하여 벤치 마크에서 Perl보다 훨씬 빠르지 만 sysC ++은 실제로 sysPerl보다 더 많은 시간을 사용하므로 시간 은 그다지 다르지 않습니다 . 이것이 그들이 무엇을 의미하는지 알고 싶어하는 이유입니다



답변

에서 위키 피 디아 :

  • 사용자 시간 대 시스템 시간

‘사용자 CPU 시간’이라는 용어는 처음에는 약간 오해의 소지가 있습니다. 분명히, 총 CPU 시간은 CPU가 프로그램에 대한 일부 조치를 수행하는 데 소요 된 시간과 CPU가 프로그램을 대신하여 커널에 대한 시스템 호출을 수행하는 데 소요 된 시간의 조합입니다. 프로그램이 배열을 반복하면 사용자 CPU 시간이 누적됩니다. 반대로, 프로그램이 exec 또는 fork와 같은 시스템 호출을 실행하면 시스템 CPU 시간이 누적됩니다.

  • 실시간 대 CPU 시간

이 문맥에서 “실시간”이라는 용어는 스톱워치 사용과 같이 경과 된 “벽시계”시간을 의미합니다. 총 CPU 시간 (사용자 시간 + 시스템 시간)은 해당 값보다 크거나 작을 수 있습니다. 프로그램이 대기하고 시간이 전혀 걸리지 않기 때문에 (사용자 모드 또는 시스템 모드에 관계없이) 실시간은 총 CPU 시간보다 클 수 있습니다. 프로그램이 CPU 시간 (사용자 및 sys 모두)이 time 명령에 의해보고 된 값에 추가 된 하위를 포크 할 수 있으므로 총 CPU 시간은 실시간보다 클 수 있습니다.


답변