프로세스는 독립적인 자원을 할당받고 스케줄링을 통해서 일정 시간 CPU를 사용할 수 있는 시간을 할당받는다.
프로세스는 일정시간동안 작업을 실행할 수 있는 시간을 할당받는다. 이 시간동안 프로세스가 아닌 스레드가 실제 CPU를 점유하여 사용하게 된다. 그래서 스레드를 실행의 단위(unit of execution) 라고 부른다.
먼저 들어온 순서대로 작업을 처리하는 방식이다.
단점은 먼저 들어온 작업이 너무 길면 다른 작업들의 대기시간이 너무 길어진다.
가장 짧은 작업을 먼저 처리하는 방식이다.
단점은 짧은 작업이 너무 많으면 긴 작업이 계속 대기하게 된다.
Epoch라는 단위를 만들고 그 단위 속에 스레드를 일정 길이로 나누어서 처리 한다. 한 번에 다 처리하지 못한 작업은 다음 Epoch에서 처리한다.
Epoch 내에서 여러 스레드를 나누어서 처리하기 때문에 기회를 받지 못해서 오랫동안 기다려야 하는 문제를 해결할 수 있다.
Process vs Thread — Difference Between Them
Inside the Linux 2.6 Completely Fair Scheduler