Alarm() 중간 컨텍스트 전환의 동작은 무엇입니까?

Alarm() 중간 컨텍스트 전환의 동작은 무엇입니까?

프로세스가 를 실행하여 SIGALARM 신호를 설정하는 경우 alarm(10). 이는 10초 후에 운영 체제가 SIGALARM을 전송한다는 의미입니다.

컨텍스트 전환이 있으면 어떻게 됩니까? 시스템은 컨텍스트 전환에 관계없이 계속 신호를 보내나요? 아니면 프로세스로 돌아가서 신호를 보내기 전에 총 10초 동안 실행될 때까지 기다리나요?

답변1

alarm()실시간 집계,POSIX의 텍스트이것을 분명히 지적하더라도리눅스 매뉴얼 페이지이는 명확하게 명시되어 있지 않습니다. 따라서 타이머는 프로세스 실행 여부에 관계없이 실행됩니다. 일반적으로 프로세스가 잠자고 있으면 신호가 프로세스를 깨우지만 운영 체제는 실행해야 할 우선순위가 더 높은 다른 프로세스가 있는 경우 프로세스를 실제로 실행하지 않기로 결정할 수도 있습니다.

게다가setitimer(), 프로세스가 실행되는 동안에만 실행되는 타이머를 제공할 수 있습니다.

관련 정보