nanosleep 예제

시스템 호출은 Linux 커널에서 구현됩니다. 프로그램이 시스템 호출을 하면 인수가 패키징되어 커널로 전달되며, 이 인수는 호출이 완료될 때까지 프로그램 실행을 대신합니다. 시스템 호출은 일반적인 함수 호출이 아니며 커널로 제어를 전송하려면 특별한 절차가 필요합니다. 그러나 GNU C 라이브러리(GNU/Linux 시스템과 함께 제공되는 표준 C 라이브러리의 구현)는 Linux 시스템 호출을 함수로 래핑하여 쉽게 호출할 수 있습니다. 열기 및 읽기와 같은 낮은 수준의 I/O 함수는 Linux의 시스템 호출의 예입니다. 추적하는 프로그램이 많은 출력을 생성하는 경우 strace에서 파일로 출력을 리디렉션하는 것이 더 편리한 경우가 있습니다. 이 작업을 수행 하려면 -o 파일 이름 옵션을 사용 합니다. strace의 모든 출력을 이해하려면 Linux 커널 및 실행 환경의 설계에 대해 자세히 숙지해야 합니다. 이 중 대부분은 응용 프로그램 프로그래머에게 제한된 관심사입니다. 그러나 까다로운 문제를 디버깅하거나 다른 프로그램의 작동 방식을 이해하는 데 일부 이해가 유용합니다.

플래그가 TIMER_ABSTIME인 경우 나머지 인수는 사용되지 않으며 불필요합니다. 절대 절전 모드는 동일한 요청 인수를 사용하여 다시 시작할 수 있습니다. 이러한 시스템 호출의 대부분은 에서 선언됩니다. 리눅스 시스템 호출의 집합은 프로그램과 리눅스 커널 사이의 가장 기본적인 인터페이스를 형성한다. 각 호출은 기본 작업 또는 기능을 제공합니다. POSIX.1은 clock_nanosleep()이 신호 처리 또는 신호 마스크에 영향을 주지 않는다는 것을 지정합니다. 일부 시스템 호출은 매우 강력하며 시스템에 큰 영향을 줄 수 있습니다. 예를 들어 일부 시스템 호출을 사용하면 Linux 시스템을 종료하거나 시스템 리소스를 할당하고 다른 사용자가 액세스하지 못하도록 할 수 있습니다. 이러한 호출에는 수퍼유저 권한(루트 계정에서 실행되는 프로그램)으로 실행되는 프로세스만 호출할 수 있는 제한이 있습니다. 이러한 호출은 비수퍼유저 프로세스에서 호출하는 경우 실패합니다. 끝으로 실제로 프로그램의 작업을 수행하는 데 도움이 시스템 호출이 있습니다.

uname 시스템 호출은 커널에서 시스템의 호스트 이름을 가져오는 데 사용되며, 이를 사용하려면 프로그램에서 asm(“명령”)을 호출합니다. 명령의 구문은 위의 표와 같이 있습니다. 단일 asm() 문에서 여러 명령을 원하는 경우 세미콜론으로 구분합니다. 예를 들어, asm(“nop; nop; nop; nop”) i486 또는 펜티엄 프로세서(또는 i386의 12클럭 사이클)에서 4개의 클럭 사이클을 지연시키는 4개의 nop 명령을 실행합니다. 이제 더 쉬운 타이밍 호출부터 시작하겠습니다. 여러 초의 지연의 경우 가장 좋은 방법은 sleep()을 사용하는 것입니다. 적어도 수십 밀리초의 지연 (약 10 ms는 최소 지연인 것 같음)의 경우 usleep()이 작동해야합니다.

Shares

Posted on 2nd August 2019 in Uncategorised

Share the Story

About the Author

Back to Top
Shares