[Philosophers] 🚨 usleep 함수의 문제점 ?
·
42Seoul
과제를 진행하다보면, 의도했던 상황보다 시간이 밀려서 찍히는 걸 볼 수 있다. man 페이지를 보면 시스템 호출 처리에 소모된 시간이나 시스템 타이머 정밀도에 따라 잠드는 시간이 살짝 길어질 수 있다고 나와있는데, 그 과정에 대해 알아보겠당 🤨 다음은 sleep() 함수 실행 시 일어나는 일이다.시스템 호출이 일어나 시스템 호출 핸들러가 실행되어 sleep()을 호출한 프로세스(스레드)를 타이머 대기 큐에 넣는다.CPU 스케쥴링에 의해 다른 프로세스(스레드)가 실행된다.한편 시스템에서는 주기적으로 타이머 인터럽트가 발생하고 운영체제의 인터럽트 핸들러를 실행한다. 인터럽트 핸들러가 하는 일 중의 하나가 타이머 대기 큐를 확인하는 것인데, 이 때 큐의 맨 앞에 있는 프로세스(스레드)를 깨워야 할 시점이 ..