Slow is better than NOTHING

Computer Science/1. OS

Thread

Jeff_Kang 2019. 5. 12. 17:12
반응형

 

스레드(Thread)는 어떠한 프로그램 내에서, 특히 Process 내에서 실행되는 흐름의 단위를 말합니다.

https://ko.wikipedia.org/wiki/%EC%8A%A4%EB%A0%88%EB%93%9C_(%EC%BB%B4%ED%93%A8%ED%8C%85)

 

스레드 (컴퓨팅) - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 두 개의 스레드를 실행하고 있는 하나의 프로세스. 스레드(thread)는 어떠한 프로그램 내에서, 특히 프로세스 내에서 실행되는 흐름의 단위를 말한다. 일반적으로 한 프로그램은 하나의 스레드를 가지고 있지만, 프로그램 환경에 따라 둘 이상의 스레드를 동시에 실행할 수 있다. 이러한 실행 방식을 멀티스레드(multithread)라고 한다. 프로세스와 스레드의 비교[편집] 멀티프로세스와 멀티스레드는 양쪽 모두 여러 흐름이 동

ko.wikipedia.org


앞서 포스팅한 Process의 구조가 다음과 같다고 설명하였습니다.

독립된 Process는 각각 Code, Data, Stack, Heap 영역을 갖고 있으며 독립된 메모리를 할당 받습니다.

Process

프로세스 단위의 Context Switching은 그 Cost가 아주 높습니다. 직관적으로만 생각해보아도 Process의 저 4가지 구조가 모두 Switching 이 이루어져야 하기 때문입니다. 하나의 프로세스에서는 여러개의 스레드가 존재할 수 있는데, 이는 스레드의 정의에 기반해 다시 풀어보면 '하나의 프로세스는 여러 개의 실행 흐름을 가지고 있다' 입니다.

즉, 하나의 프로세스는 다양한 실행 흐름이 존재하며 그 흐름은 필요에 따라 변경이 가능합니다.

이해를 돕기 위해 프로세스 내에서 스레드를 도식화 하면 아래 그림과 같습니다. 

 

Thread

 스레드(Thread)는 Process가 가지고 있는 실행 흐름이므로 독립된 프로세스와 달리 프로세스 내에서 메모리를 공유하고 있습니다. Process 의 Stack 영역만 독립되게 할당받고 Code, Data, Heap영역은 공유합니다. Stack 영역을 독립적으로 할당 받는다는 것은, Thread의 독립적인 Call 이 가능하다는 것이고 독립적인 Flow가 추가되는 것입니다.

 별도의 레지스터(Stack Pointer, Program Counter, Frame Pointer) 와 스택 영역을 가지고 있지만 Heap공간은 서로 읽고 쓸 수 있습니다. 즉, 하나의 스레드가 작업을 한다면 그 변경사항을 다른 스레드도 볼 수 있다는 것입니다. 스레드 간의 통신이 가능하다는 장점이 있어 보다 유연한 처리가 가능하지만 동시에 메모리에 접근하기 때문에 멀티스레딩 에서는 주의가 필요합니다.

 

 

 대부분의 OS는 Multi Processing을 지원하지만 Multi Thread를 베이스로 동작합니다. 왜냐하면 Thread로 처리할 때가 Process단위로 처리하는 것보다 다양한 장점이 있기 때문인데요,

 

1. Context Switching Cost

  앞서 말씀드린 것과 같이 Context Switching 시 Process는 4가지의 영역(Code,data, stack, heap)을 모두 Switching해야하며 캐시 메모리에 대한 정보도 갱신해야 하므로 Overhead가 Thread에 비해 상당히 큽니다.

 

2. Response time

 독립된 메모리 영역을 할당 받는 프로세스와 달리 스레드는 Stack이외의 영역을 공유하고 있으므로 IPC보다는 스레드 간의 통신이 Cost가 더 적습니다. 따라서 OS에서 멀티 스레드 처리가 더 우수한 Response time을 보여줍니다. 

반응형

'Computer Science > 1. OS' 카테고리의 다른 글

Context Switching  (0) 2019.05.16
Thrashing  (0) 2019.05.16
Interrupt  (0) 2019.05.09
Process  (0) 2019.05.09