티스토리 뷰

CS 정리/OS

스레드

tose33 2023. 10. 27. 12:26

스레드

스레드는 프로세스의 실행 가능한 가장 작은 단위.

프로세스는 여러 스레드를 가질 수 있다.

코드,데이터,스택,힙을 각각 생성하는 프로세스와 달리 스레드는 코드,데이터,힙은 스레드끼리 공유한다.

그 외의 영역은 각자 생성된다.

 

스택은 지역변수,리턴할 주소가 저장되는 영역이다.

스택도 스레드끼리 공유한다면 지역변수도 공유하게되고 리턴할 주소가 혼동된다.

 

멀티스레딩

하나의 프로세스를 다수의 실행단위 (스레드)로 구분하여 자원을 공유하고 자원의 생성과 관리의 중복성을 최소화하여 수행 능력을 향상시키는 것.

 

스레드 끼리 서로 자원을 공유하기 때문에 효율성이 높다.

 

장점

프로세스를 이용해 동시에 처리하던 일을 스레드로 구현할 경우 메모리 공간과 시스템 자원 소모가 줄어든다.

스레드 간의 통신이 필요한 경우에도 별도의 자원을 이용하는 것이 아니라, 스레드는 스택 제외 영역을 공유하기 때문에 데이터를 주고 받을수 있다.

 

또한 스레드의 컨텍스트 스위칭은 프로세스의 컨텍스트 스위칭과 달리 캐시 메모리를 비울 필요 없으므로 더 빠르다.

따라서 시스템의 처리량이 향상되고 자원 소모가 줄어들어 프로그램의 응답 시간이 단축된다.

이런 장점 때문에 여러 프로세스로 할 수 있는 작업들을 하나의 프로세스에서 스레드로 나눠 수행한다.

 

멀티 프로세스 대신 멀티 스레드를 사용하는 이유?

프로그램을 여러개 키는 것 보다 하나의 프로그램 안에서 여러 작업을 해결하는 것.

https://gmlwjd9405.github.io/2018/09/14/process-vs-thread.html

 

[OS] 프로세스와 스레드의 차이 - Heee's Development Blog

Step by step goes a long way.

gmlwjd9405.github.io

 

멀티 스레딩의 단점은 스택제외 영역을 공유하기 때문에 같은 변수에 접근하는 문제가 생긴다.

즉 동기화 문제.

또한 하나의 스레드에 문제 생기면 전체 스레드가 종료될수 있음.

(멀티프로세스는 하나의 프로세스가 죽어도 다른 프로세스는 영향x)

 

 

 

'CS 정리 > OS' 카테고리의 다른 글

CPU 스케줄링 알고리즘  (0) 2023.10.27
공유자원, 임계영역  (0) 2023.10.27
프로세스  (0) 2023.10.26
메모리  (0) 2023.10.26
컴퓨터의 요소  (0) 2023.10.26
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
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 31
글 보관함