실제 시간 : 어떤 표준 시점을 기준으로 측정되거나 프로세스 동작중 어떤 고정된 시점을 기준으로 측정된 시간
프로세스 시간 : 프로세스가 사용한 CPU 시간의 양
1.달력 시간
- UTC(Universal Coordinated Time) : 예전에는 GMT 라고 했다. 1970년 1월 1일 새벽 0시를 말한다.
#include <sys/time.h>
int gettimeofday(struct timeval *tv, struct timezone *tz) : 성공하면 0을 리턴하고, 에러가 발생하면 -1을 리턴
- 시스템의 현재 시간을 가져온다. tz 는 사용하지 않으므로 언제나 NULL로 전달한다.
int adjtime(struct timeval *delta, struct timeval *olddelta) : 성공하면 0을 리턴하고, 에러가 발생하면 -1을 리턴
- 시스템 클록을 희망하는 값으로 점진적으로 조정한다. delta인자는 시간을 바꿀 초와 마이크로초 수를 지정하는 구조체이고, 양수인 경우 클락 시간이 점점 추가된다.
#include <time.h>
time_t time(time_t *timep) : 기원 이래의 초 수를 리턴한다. 에러가 발생하면 -1을 리턴한다.
- t = time(NULL) 로 주로 사용한다.
char *ctime(const time_t *timep) : 성공하면 줄바꿈 문자와 \0으로 끝나는 정적으로 할당된 문자열의 포인터를 리턴하고, 에러가 발생하면 NULL을 리턴한다.
- Wed Jun 8 14:22:34 2011 와 같이 리턴된다.
struct tm *gmtime(const time_t *timep) : 성공하면 정적으로 할당된 문해된 시간 구조체의 포인터를 리턴하고, 에러가 발생하면 NULL 을 리턴한다.
struct tm *localtime(const time_t *timep) : gmttime 과 동일
- 시간대와 DST 설정을 고려해서 시스템의 지역 시간에 해당하는 분해된 시간을 리턴한다.
char *asctime(const struct tm *timeptr) : 성공하면 줄바꿈 문자와 \0으로 끝나는 정적으로 할당된 문자열의 포인터를 리턴하고, 에러가 발생하면 NULL을 리턴한다.
4. 프로세스시간
- 사용자 CPU 시간 : 사용자 모드에서 실행하면서 소비한 시간의 양이다. 가상 시간이라고도 하며, 프로그램이 CPU를 사용하고 있다고 생각하는 시간이다.
- 시스템 CPU 시간 : 커널 모드에서 실행하면서 소비한 시간의 양이다. 이는 커널이 시스템 호출을 실행하거나 프로그램 대신 다른 작업(예: 페이지 폴트처리)을 수행하면서 소비한 시간이다.
프로세스 시간을 프로세스가 소비한 전체 CPU 시간이라고도 한다.
#include <sys/time.h>
clock_t times(struct tms *buf) : 성공하면 과거의 '임의의' 시점 이래 클록 틱의 수(sysconf(_SC_CLK_TCK))를 리턴하고, 에러가 발생하면 -1을 리턴한다.
clock_t clock(void) : 호출 프로세스가 사용한 전체 CPU 시간을 CLOCKS_PER_SEC 단위로 측정해서 리턴한다. 에러가 발생하면 -1을 리턴한다.
- clock()이 리턴한 값을 CLOCKS_PER_SEC 단위로 측정된 것이므로, 프로세스가 사용한 CPU 시간을 초로 구하려면 이 값을 나눠야 한다. CLOCKS_PER_SEC 값은 백만으로 고정되어 있지만 장담할 수 없으므로 long 으로 캐스팅하는 것이 좋다.
'리눅스' 카테고리의 다른 글
[리눅스] MAC 충돌로 eth0이 안보일 때 해결방법 (0) | 2015.08.15 |
---|---|
[코딩] printf, printk 사용 자제 (0) | 2015.08.14 |
[VIM] vim 편집기 윈도우 조절 (0) | 2015.08.10 |
[Virtual Box] Ubuntu 해상도 문제 해결(게스트 확장) (0) | 2015.08.09 |
[리눅스] vim 설정 (vimrc) (0) | 2015.08.09 |
댓글