Thread, Unit of execution, Scheduling

ASHAPPYASIKNOW·2022년 11월 13일
0

PROCESS, THREAD

목록 보기
4/5
post-thumbnail

실행의 단위(unit of execution)

프로세스는 독립적인 자원을 할당받고 스케줄링을 통해서 일정 시간 CPU를 사용할 수 있는 시간을 할당받는다.

프로세스는 일정시간동안 작업을 실행할 수 있는 시간을 할당받는다. 이 시간동안 프로세스가 아닌 스레드가 실제 CPU를 점유하여 사용하게 된다. 그래서 스레드를 실행의 단위(unit of execution) 라고 부른다.


스레드 스케줄링 — First Come First Serve

먼저 들어온 순서대로 작업을 처리하는 방식이다.
단점은 먼저 들어온 작업이 너무 길면 다른 작업들의 대기시간이 너무 길어진다.

스레드 스케줄링 — Shortest Job First

가장 짧은 작업을 먼저 처리하는 방식이다.
단점은 짧은 작업이 너무 많으면 긴 작업이 계속 대기하게 된다.

스레드 스케줄링 — Epochs + Time Slices

Epoch라는 단위를 만들고 그 단위 속에 스레드를 일정 길이로 나누어서 처리 한다. 한 번에 다 처리하지 못한 작업은 다음 Epoch에서 처리한다.
Epoch 내에서 여러 스레드를 나누어서 처리하기 때문에 기회를 받지 못해서 오랫동안 기다려야 하는 문제를 해결할 수 있다.


멀티 프로세스 vs 멀티 스레드

  • 안전성과 보안이 중요한 경우 -> 멀티 프로세스
  • 서로 공유하는 것이 많지 않은 경우 -> 멀티 프로세스
  • 공유 데이터가 많은 경우 -> 멀티 스레드
  • 문맥 교환 시간이 긴 경우 -> 멀티 스레드

REFERENCES

Process vs Thread — Difference Between Them
Inside the Linux 2.6 Completely Fair Scheduler

profile
36.9 It's good time to start something new

0개의 댓글