절전 시스템 호출 및 해당 시간 매개변수

절전 시스템 호출 및 해당 시간 매개변수

sleep() 함수를 호출하는 C 프로그램을 작성한다고 가정해 보겠습니다. 예를 들어, sleep(7)을 호출하면 호출 스레드는 7초 동안 휴면 상태가 됩니다.

내 질문은: 각 프로세스가 CPU에 자체 양자 시간을 가지고 있다는 점을 고려하면(계속 실행되는 프로세스가 많기 때문에) 스레드가 우리 시간/시계의 7초 후에 깨어날까요, 아니면 더 오래 걸릴 수 있습니까?

답변1

sleep(3)호출이 반환되도록 허용하는 정의앞으로,존재하다, 또는뒤쪽에지정된 시간:

설명하다 sleep() 몇 초가 경과하거나 무시되지 않는 신호가 도착할 때까지 호출 스레드를 휴면 상태로 만듭니다.

그래서 우리는 이러한 가능한 상황을 가지고 있습니다

  1. 신호가 잡히지 않아 통화가 중단되었습니다. sleep()지정된 시간 이전에 즉시 반납하세요.
  2. 통화가 성공적으로 완료되었지만 시스템이 너무 바빠서 한동안 작업을 예약할 수 없습니다
  3. 호출이 만족스럽게 완료되고 실행 대기열에 다시 배치되어 즉시 실행됩니다.

답변2

POSIX는 최소한 귀하가 요청한 작업을 수행하는 성공적이고 중단 없는 수면을 보장합니다.

http://pubs.opengroup.org/onlinepubs/009604599/functions/sleep.html

Linux에서는 1) 반올림 2) 스케줄러가 프로세스/스레드를 CPU에 넣을 때까지 대기 3) 중지된 상태의 시간으로 인해 시간이 더 오래 걸릴 수 있습니다. http://man7.org/linux/man-pages/man2/nanosleep.2.html

관련 정보