2017-09-26 26 views
0

c 표준 라이브러리 및 기타 관련 타이밍 기능에서 clock() 함수에 의해 내부적으로 사용되는 메커니즘은 무엇입니까? 누군가 C에서 비슷한 기능을 쓸 수 있습니까? 아니면 조립?clock() 함수는 내부적으로 어떻게 작동합니까?

이러한 기능을 수동으로 작성하려면 어떤 지식이 필요합니까? 프로세서 구조에 대한 세부 사항을 알고 있어야합니까?

+0

시계를 수동으로 다시 프로그래밍 하시겠습니까? – izlin

+0

@izlin 시계를 수동으로 다시 프로그래밍하고 싶지 않습니다. –

답변

1

clock()의 ​​실제 구현은 실행중인 커널에 따라 다릅니다. 본격적인 운영 체제에서는 하드웨어에 직접 액세스 할 수 없으며 syscalls와 같은 커널 기능을 사용해야합니다.

예를 들어 linux version of clock() in glibc을 보면 times.c에 정의 된 __times() 함수가 Linux syscall을 사용한다는 것을 알 수 있습니다.

BSD version과는 분명히 다르며 __getrusage()에 의존합니다.

이러한 기능을 직접 작성하려면 커널을 알아야하며 일반적으로 실행되는 하드웨어의 세부 사항을 알아야합니다.

+0

인텔 커널이나 PowerPC 또는 기타 다른 플랫폼에서 실행되는 경우에도 Linux 커널은 동일하지 않습니까? 다른 하드웨어에서 커널이 다른 점은 무엇입니까? –

+0

"같은"의미에 따라. 리눅스 커널에 의해 노출 된 인터페이스는 플랫폼 종속성을 최소화하지만 Intel 또는 PowerPC에서 실행되는 것과 정확히 똑같은 바이너리는 아닙니다 (또한 컴파일하는 동안 별도의 플랫폼 종속 소스 파일을 사용합니다). "실행중인 커널"은 리눅스 커널에 국한되지 않고 BSD, Solaris 등을 포함합니다. – desowin

+0

일부 리눅스 시스템은 하드웨어 플랫폼에서 작동하고 다른 하드웨어 플랫폼에서는 작동하지 않을 수도 있습니다. 그리고 커널을 돌리는 것은 무엇입니까? –