꾸준하게 기록하기
article thumbnail
Published 2022. 2. 24. 13:36
Thread(스레드) CS/운영체제

 

Thread 개념

프로세스는 프로세스 간에 프로세스의 데이트 접근 불가해서 IPC 사용했어야 했다.

스레드 하나의 프로세스에 여러개의 스레드 생성가능 ( 다른 프로세스에서 스레드끼리는 공유x )

스레드들은 동시에 실행가능.

프로세스 안에 있으므로, 프로세스의 데이터를 모두 접근 가능해서 IPC 사용 x

 

- Thread 각기 실행이 가능한 stack 존재

스레드는 stack영역을 가지고 있는 함수라고 생각하면 된다.

각 스레드를 위한 stack 공간을 별도로 생성, 스레드 별로 PC 레지스터도 따로 존재한다.

stack 영역을 제외한 영역은 공유

 

Multi Thread 

Code, Data, Heap 영역은 공유

스레드를 위한 stack 영역만 별도로 가지고 있다.

 

 

멀티 프로세싱과 Thread 

출처 : http://donghoson.tistory.com/15

멀티 프로세싱은 하나의 프로세스를 여러개의 CPU 사용해 실행속도 높임(병렬실행)

프로세스를 여러개로 나눠서 개별 CPU 나눠서 실행하는데 스레드를 여러개 만들면 가능하다.

 

 

Thread의 장점

1. 사용자에 대한 응답성 향상

동시 실행되어 응답시간 짧아

2. 자원 공유 효율

- IPC 기법과 같이 프로세스 자원 공유를 위해 번거로운 작업 필요 없음

- 프로세스 안에 있으므로, 프로세스의 데이터를 모두 접근 가능

 

3. 작업이 분리되어 코드가 간결

 

Thread의 단점

1. 스레드 스레드만 문제가 있어도 전체 프로세스가 영향을 받음

멀티 프로세는 분리되어 있어 오류된 것만 없어지면 됨

2. 스레드를 많이 생성하면, Context Switching 많이 일어나, 성능 저하

예: 리눅스 OS에서는 Thread를 Process와 같이 다룸

스레드를 많이 생성하면 모든 스레드를 스케쥴링 해야 하므로, Context Switching이 빈번할 수밖에 없음.

 

Thread VS Process

- 프로세스는 독립적, 스레드는 프로세스의 서브셋

- 프로세스는 각각 독립적인 자원을 가짐, 스레드는 프로세스 자원 공유

- 프로세스는 자신만의 주소영역을 가짐, 스레드는 주소영역 공유

- 프로세스간에는 IPC 기법으로 통신해야 함, 스레드는 필요 없음

 

PThread

- POSIX 스레드 : 스레드 관련 표준 API

 


정리

Thread 개념 정리

- 프로세스와 달리 스레드간 자원 공유

 

스레드 장점

- CPU 활용도를 높이고

- 성능 개선 가능

- 응답성 향상

- 자원 공유 효율(IPC를 안써도 됨)

 

스레드 단점

- 하나의 스레드에서 발생한 문제가, 프로세스 전반에 영향을 미침

- 여러 스레드 생성시 성능 저하 가능

 

 

 

제로베이스 컴퓨터 공학 전공자 따라잡기 강의 시청 후 정리한 내용입니다.

 

728x90

'CS > 운영체제' 카테고리의 다른 글

가상 메모리 개념  (0) 2022.02.24
쓰레드의 이해  (0) 2022.02.24
IPC 기법  (0) 2022.02.24
프로세스 간 커뮤니케이션  (0) 2022.02.24
컨텍스트 스위칭  (0) 2022.02.23
profile

꾸준하게 기록하기

@:_:

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!