* 준비상태(Ready)에서 실행상태(Running)로 상태전이(State Transition)된다고 한다. 이 과정을 디스패칭(dispatching)이라고 하고 디스패처(dispatcher)가 이 일을 수행한다.

 

- 디스패칭의 단위는 thread 또는 lightweight 프로세스로 불린다.

- 자원 소유 단위는 프로세스 혹은 태스크이다.

 

Multithreading - 하나의 프로세스에서 여러개의 동시 실행 흐름을 지원하는 OS 의 능력

 

 

User-Level Threads

  •  커널은 쓰레드의 존재를 알지 못한다. 프로세스 내의 Thread library 가 쓰레드에 관한 관리를 모두 담당한다. 쓰레드의 관리에 있어서 커널이 아예 관여하지 않기 때문에 모드 스위칭이 적게 일어나 굉장히 가볍게 쓰레딩을 할 수 있다. 하지만 이 경우, 하나의 쓰레드만 작동을 멈춰도 그 프로세스 자체가 block 되며, 멀티 프로세서를 전혀 활용하지 못한다는 점이서 별로 이점이 없는 방식이다.

Kernel-Level Threads

  • 커널이 모든 프로세스와 모든 쓰레드의 관리를 하는 방식이다. 모든 프로세스와 쓰레드들은 커널에 의해 독자적으로 스케줄링 된다., User-Level 일때와 다르게 Thread table 이 커널 합쳐져서 한 개만 존재하는 것을 볼 수 있다.

 

 

728x90

+ Recent posts