1. 프로세스 & 쓰레드
프로세스의 특징
- 자원 소유권 - 프로세스는 자신의 이미지를 위한 가상주소 공간을 포함
- 스케줄링/실행 - 프로세스 수행은 하나 이상의 프로그램을 통과하는 수행 경로를 따른다. 한 프로세스는 다른 프로세스들과 번갈아 가면서(interleave) 수행될 수 있다. 따라서 프로세스는 프로세스 수행 상태와 디스패칭 우선순위를 가지며, 운영체제에 의해 스케줄되고 디스패치되는 개체
쓰레드
- 프로세스 안에서의 실행 단위
- 실행 상태를 가진다
CPU 디스패칭 단위는 쓰레드 또는 경량 프로세스라고 하며,
자원 소유권의 단위는 프로세스 또는 task라고 한다.
2. Resources of Process and Thread - 프로세스와 쓰레드의 자원
- 프로세스는 Code, Data, Stack, Memory for registers context(program counter, register etc.)로 구성된다
- 쓰레드는 Stack, Memory for registers context(program counter, register etc.):thread control blcok로 구성된다
- 프로세스 내의 모든 쓰레드들은 그 프로세스의 상태와 자원을 공유한다.
<한 프로세스 내부 모습(각 쓰레드는 각각 registers, stack을 가지며 code,data,files를 공유)>
3. 멀티쓰레딩 (Multithreading)
- 멀티쓰레딩이란 운영체제가, 하나의 프로세스 내에서 수행되는 여러 개의 쓰레드를 지원하는 기능이다.
- 멀티쓰레딩에서 프로세스는 동시에 실행될 수 있는 쓰레드로 분할된다.
- 단일 쓰레드 OS로는 MS-DOS, Original UNIX가 있다.
- 멀티 쓰레드 OS로는 Windows, Solaris, Linux. Mach 등이 있다.
< Multithreading Example on a Uniprocessor >
4. 멀티쓰레딩의 이점
- 새로운 프로세스를 생성하는 시간보다, 기존 프로세스 내에서 새로운 쓰레드를 생성하는 시간이 더 짧다.
- 프로세스 종료시간보다 쓰레드 종료시간이 더 짧다.
- 프로세스들 간 교환보다 같은 프로세스에 있는 두 쓰레드 간 교환이 효율적이다.
- 프로세스 간의 통신보다 한 프로세스 내에서 쓰레드 간의 통신이 더 빠르다.
-> 같은 프로세스 내에 쓰레드들은 메모리와 파일을 공유하기 때문에 커널을 호출하지 않는다.
-> 프로세스 간 통신 (IPC) : 커널 호출 시간 필요 = 큰 오버헤드 필요
5. Thread 유형
- 사용자 수준 쓰레드
- 쓰레드 관리와 관계된 모든 일은 응용이 수행하며 커널은 쓰레드의 존재를 알지 못한다.
- 사용자 영역에서 쓰레드 연산을 수행
- 사용자 수준 쓰레드의 장점
+ 스케줄링 결정이나 프로시저 동기화를 위해 커널을 호출하지 않으므로 오버헤드가 적다.
+ 운영체제에서 쓰레드를 지원 할 필요가 없으므로,어느 OS든 실행 할 수 있다. (즉, 이식성이 높다)
+ 기존 OS 스케줄링을 방해하지 않고 응용에 맞춘 사용자 수준 쓰레드 스케줄링 알고리즘이 가능하다.
- 사용자 수준 쓰레드의 단점
+ 한 개의 사용자 수준 쓰레드가 블록되면, 그 프로세스의 모든 쓰레드가 블록된다.
- 커널 수준 쓰레드
- 쓰레드 관리와 관련된 모든 작업이 커널에 의해 이루어진다.
- 응용 영역에는 쓰레드 관리를 위한 코드가 없고, 단순히 커널 쓰레드 기능에 대한 API가 있다. (ex. Windows, Linux)
- 커널 수준 쓰레드의 장점
+ 커널이 각 쓰레드를 개별적으로 관리 할 수 있다.
+ 응용 프로그램은 입출력 작업이 끝날 때까지 다른 쓰레드를 사용해 다른 작업을 할 수 있다.
- 커널 수준 쓰레드의 단점
+ 스케줄링과 동기화를 위해 커널을 호출해야하므로 오버헤드가 증가된다.
+ 이식성이 떨어진다.
+ 시스템이 달라지면 해당 운영체제에서 제공하는 쓰레드 API를 사용해 프로그램을 수정해야 한다.
'운영체제' 카테고리의 다른 글
교착상태(Deadlock) (0) | 2018.08.28 |
---|---|
세마포어와 뮤텍스 (Semaphores&Mutex) (0) | 2018.08.26 |
병행성과 상호배제&상호배제 알고리즘 (0) | 2018.08.26 |
Context Switch (문맥 교환) (0) | 2018.08.23 |
프로세스 (개념, 상태, PCB) (0) | 2018.08.23 |