본문 바로가기
운영체제

운영체제 정리 2. 쓰레드

by sunday5214 2018. 11. 19.

프로세스와 쓰레드의 차이


-자원의 소유권 특성 : 프로세스는 자신의 이미지를 위한 가상주소 공간을 포함, (프로세스 이미지란 프로세스 제어블록에 정의된 프로그램과 데이터, 스택, 속성, 들의 집합)때때로 주기억장치, 입출력 채널, 입출력 장치, 파일과 같은 자원들에 대한 제어와 소유권을 프로세스에 할당 할 수 있다. OS 보호 기능을 수행하여 프로세스간 불필요한 간섭이 없도록 제어한다.


-스케줄링/수행 특성 : 프로세스 수행은 하나 이상의 프로그램을 통과하는 수행 경로를 따른다. 한 프로세스는 다른 프로세스들과 번갈아 가면서 수행될 수 있음, 따라서 프로세스는 수행 상태와 디스패칭 우선순위를 가짐, 프로세스는 OS에 의해 스케줄되고 디스패치되는 개체이다.


여기서 디스패치가되는 단위를 쓰레드(경량 프로세스)라고 하고 자원의 소유권 단위를 프로세스(태스크)라고 한다.




쓰레드의 장점


-프로세스 생성시간 보다. 기존 프로세스에서 새로운 쓰레드를 생성하는 시간이 더 짧다

-프로세스 종료시간보다 쓰레드 종료시간이 더 짧다.

-프로세스들 간 교환보다 같은 프로세스에 있는 두 쓰레드 간 교환이 효율적이다.

-서로 다른 수행 프로그램 간 통신에서도 효율적이다.(쓰레드는 프로세스 안에서 같은 메모리 및 파일을 공유하기 때문에 커널의 개입이 없기 때문이다.)



사용자 수준 쓰레드(User-Level Thread)와 커널 수준 쓰레드(Kernel-Level Thread)


-사용자 수준 쓰레드의 장점

-프로세스안의 사용자 주소공간의 자원만을 사용하기때문에 쓰레드 교환에 커널 모드의 권한이 요구되지 않는다. 즉 사용자모드->커널모드로 전환 할때 생기는 오버헤드를 절감 시킨다.

-운영체제 스케줄러에 영향을 미치지 않고 스케줄링 알고리즘을 기능에 맞출 수 있어 스케줄링이 적절히 구성된다.

-ULT는 기본 커널을 변경하지 않아도 되므로 어떠한 운영체제에서도 적용될 수 있다.


-사용자 수준 쓰레드의 단점

-일반 OS에서 대부분의 시스템 호출은 그 쓰레드를 블록시키는데 그 때 같은 프로세스 내의 쓰레드가 모두 블록된다.

-처리기하나에 프로세스하나를 할당하는데 임의 시점에 단일 프로세스 내에서 하나의 쓰레드만을 수행할 수 있다.  멀티쓰레드를 사용하여도 겉을만 동시일 뿐이지 사실 수행은 한 부분씩 진행하기 때문에 한 부분에서 블록이 걸리면 모든 부분이 블록되므로 멀티 프로세싱의 장점을 살릴 수 없다.


-커널 수준 쓰레드의 장점

-커널은 여러 처리기에 같은 프로세스 내의 여러 쓰레드를 동시에 스케줄할 수 있다.

-한 프로세스의 쓰레드가 블록되면 커널은 같은 프로세스에서 다른 쓰레드를 스케줄할 수 있다.

-커널 루틴 자체가 멀티쓰레드로 구성될 수 있다.


-커널 수준 쓰레드의 단점

-같은 프로세스 내의 한 쓰레드에서 다른 쓰레드로 제어를 넘길때 커널모드로 전환이 필요하다.


-커널 수준과 사용자 수준

-KLT 멀티쓰레드를 이용하는 것으로 단일 쓰레드보다 속도 향상이 가능하지만 ULT를 이용하면 추가적인 속도 향상이 가능하다. 하지만 쓰레드간 교환이 커널 모드 접근을 자주 요구한다면 KLT가 ULT보다 좋은 성능을 낼 수 있다.