티스토리 뷰

Operating System

3. Thread

김남김 2023. 1. 16. 23:15

2장에서 프로세스에 대해 살펴봤다. 

그럼 프로세스에서 더 나눠지는 스레드에 대해 알아보자 

 

스레드(Thread)란?

스레드란 간단히 말하면 실행의 단위다. 프로세스를 구성하는 실행의 단위로써,

즉 하나의 프로세스에 여러개의 스레드가 있을 수 있다는 말이다.

이러한 구조는 하나의 프로세스에서 여러부분을 동시에 실행할 수 있게 해준다. 

 

단일 스레드와 멀티 스레드? 

프로세스의 실행의 흐름단위가 하나라면 해당 프로세스는 단일 스레드 프로세스라고 볼 수있다. 

하지만 스레드라는 개념이 도입되면서

하나의 프로세스에 여러일을 동시에 처리할 수 있게되어 멀티스레드를 가진 프로세스가 효율적으로 사용되고 있다.

 

스레드는 프로세스 내에 각기다른 스레드 ID, 프로그램 카운터 값을 비롯한 레지스터값, 스택으로 구성된다.

각자 다른 코드를 실행할 수 있게 되는데 중요한 점은 하나의 프로세스의 스레드들은

필요한 최소한의 정보만을 유지한 채 프로세스 자원을 공유하며 실행된다는 점이다. 

 

 

다시금 쉽게 말하면 스레드는 프로세스 자원을 공유한 채 실행에 필요한 최소한의 정보만으로 동시에 실행되어 단일 프로스레드 보다 더욱 효율적으로 멀티스레드를 구현하여 처리량을 늘릴 수 있다. 

 

 

멀티프로세스와 멀티스레드란? 

멀티라는 단어때문에 멀티 프로세스와 멀티 스레드가 헷갈릴 수 있다.

이해를 위해 풀어 얘기하자면, 컴퓨터의 실행 과정에서 여러 프로세스가 동시에 실행될 수 있는데 이것을 멀티프로세스라고 하며 하나의 프로세스속에 여러개의 스레드가 동시에 실행하는 것을 멀티스레드라고 한다. 

 

두개의 차이는 프로세스와 스레드라는 큰 차이가 있지만 또 다른 것으로는 자원의 공유다.

프로세스의 경우 fork하여 같은 작업을 하는 동일한 프로세스 두개를 동시에 실행하면 코드, 데이터, 힙, 스택등 다양한 모든 자원을 복제하여 총 세개의 프로세스가 메모리에 적재된다.이 말은 세개의 프로세스에 해당하는 자원이 할당 되어야한다는 것이다.  그러나 스레드의 경우 같은 프로세스 내의 자원을 공유한다. 

스레드는 단지 다른 스레드 ID, 프로그램 카운터 값을 포함한 레지스터 값, 스택을 가질 뿐이다. (단지 동일 주소공간의 코드, 데이터, 힙 영역을 공유하고 열린 파일과 같은 프로세스 자원을 공유한다) 

 

MultiProcessing Vs MultiThreading

 

자원을 공유하는 스레드의 경우 여러 프로세스를 병행 실행하는 것보다 더 효율적으로 메모리를 사용할 수 있게된다. 

하지만, 프로세스의 자원을 공유하는게 항상 득이되지만은 않는다. 

이유는 하나의 스레드가 문제가 생기면 다른 스레드도 영향을 받기 때문이다...

 

그림 참고)

https://medium.com/@noueruzzaman/tug-of-war-multiprocessing-vs-multithreading-55341c1f2103

'Operating System' 카테고리의 다른 글

6. Deadlock  (0) 2023.01.19
5. Process Synchronization  (0) 2023.01.19
4. CPU Scheduling  (0) 2023.01.19
2. Process  (0) 2023.01.15
1. Operating System  (0) 2023.01.15
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함