티스토리 뷰
1. 스레드란
- 하나의 프로세스 안에 여러개의 스레드가 존재함
- 프로세스는 자원이 할당되는 단위 / 스레드는 CPU가 할당되는 단위 -> 할당받은 자원을 공유하며 각자 실행환경 데이터를 가짐
- 프로세스가 있고 스레드가 있는 것
- 멀티 스레딩 : 하나의 프로세스를 다수의 스레드로 만들어 실행하는 것.
- 작업의 수행에 필요한 자원들을 공유하기 때문에 자원의 생성과 관리가 중복되는 것을 줄일 수 있음
- 스레드는 프로세스 내에서 각각 스택만 따로 할당 받고, code, data, heap의 영역은 공유한다.
2. 멀티 프로세스과 멀티 스레드
멀티 프로세스
- 하나의 응용 프로그램을 여러개의 프로세스로 구성하여 각 프로세스가 하나의 작업을 처리하도록 하는 것
- 장점
- 여러개의 자식 프로세스 중 하나에 문제가 발생하면 하나만 죽음으로 영향이 확산되지 않음
- 단점
- Context Switching에서의 오버헤드
- Context Switching 과정에서 캐쉬 메모리 초기화 등 무거운 작업이 진행되고 많은 시간이 소모되는 등의 오버헤드가 발생하게 된다.
- 프로세스는 각각의 독립된 메모리 영역을 할당받았기 때문에 프로세스 사이에서 공유하는 메모리가 없어, Context Switching가 발생하면 캐쉬에 있는 모든 데이터를 모두 리셋하고 다시 캐쉬 정보를 불러와야 한다. - 프로세스 사이의 어렵고 복잡한 통신 기법(IPC)
- 프로세스는 각각의 독립된 메모리 영역을 할당받았기 때문에 하나의 프로그램에 속하는 프로세스들 사이의 변수를 공유할 수 없다.
- Context Switching에서의 오버헤드
※ Context Switching 이란
동작 중인 프로세스가 대기를 하면서 해당 프로세스의 상태(Context)를 보관하고, 대기하고 있던 다음 순서의 프로세스가 동작하면서 이전에 보관했던 프로세스의 상태를 복구하는 작업
멀티 스레드
- 하나의 프로세스를 다수의 스레드로 만들어 실행하는 것.
- 장점
- 메모리를 공유하니 프로세스와는 달리 스레드간 데이터 공유가 간단해지고 시스템 자원소모가 줄어듦
- 멀티 프로세싱의 단점인 Context Switching에서의 오버헤드에 의한 부분을 해결해줌.
- 프로세스와 달리 code, data, heap 부분을 공유함으로 stack 영역만 처리를 하면 되서 메모리를 아낄 수 있음
- 캐쉬 메모리를 공유함으로 초기화도 할 필요가 없음
- 단점
- 스레드 하나에 오류가 나면 모든 프로세스가 종료 될 수 있음
- 자원을 공유하기 때문에 동기화 문제 발생
- 전역변수를 공유하기 때문에 함께 사용중일 때 충돌 발생 가능
멀티 프로세스 대신 멀티 스레드를 사용하는 이유
- 프로그램을 여러개 키는 것보다는 한 프로그램에서 여러 작업을 해결하는 것이 좋기 때문이다
- 자원의 효율성 증대 : 멀티 프로세스로 실행되는 작업을 멀티 스레드로 실행할 경우, 프로세스를 생성하여 자원을 할당하는 시스템 콜이 줄어들어 자원을 효율적으로 관리할 수 있다.
- 처리 비용 감소 및 응답 시간 감축 : 프로세스 간의 통신(IPC)보다 스레드 간의 통신의 비용이 적으므로 작업들 간의 통신의 부담이 줄어든다.
- 주의 할 점 : 동기화 문제
'cs 스터디' 카테고리의 다른 글
[데이터 베이스] 정규화 (0) | 2024.01.10 |
---|---|
[데이터 베이스] 이상현상 (0) | 2024.01.10 |
[운영체제] CPU 스케줄링 (2) | 2024.01.05 |
[운영체제] 프로세스와 스레드 (1) (1) | 2024.01.05 |
[운영체제] 운영체제의 개념 (0) | 2024.01.01 |