티스토리 뷰
프로세스 vs 스레드
사전적 의미
프로세스 : 컴퓨터에서 연속적으로 실행 되고 있는 컴퓨터 프로그램
컴퓨터 프로그램 : 컴퓨터에서 실행될 때 특정 작업을 수행하는 일련의 명령어들의 모음
스레드 : 프로세스 내에서 실행되는 흐름의 단위
구조 및 특징
프로세스 구조
프로세스는 각각 독립된 메모리 영역(Code, Data, Stack, Heap의 구조)을 할당 받는다.
기본적으로 프로세스당 최소 1개의 스레드(main thread)를 가진다.
각 프로세스는 독립적이며 다른 프로세스의 자원에 접근할 수 없다.
한 프로세스가 다른 프로세스의 자원에 접근하려면 프로세스 간의 통신(IPC)을 사용해야 한다.
스레드 구조
스레드는 프로세스내에서 Code, Data, Heap영역을 공유하고 Stack은 고유의 영역으로 가지고 있다.
한 스레드가 프로세스 자원을 변경하면, 다른 이웃 스레드(sibling thread)도 그변경 결과를 즉시 볼 수 있다.
멀티 프로세스 vs 멀티 스레드
멀티 프로세스
- 의미
- 하나의 응용 프로그램을 여러개의 프로세스로 구성하여 각 프로세스가 하나의 작업을 처리하도록 하는 것이다.
- 장점
- 여러 프로세스 중 하나에 문제가 발생하면 그 프로세스에 영향을 주지 않는다.
- 단점
- Context Switching1 과정에서 오버헤드 발생
- 프로세는 독립된 메모리 영역을 할당 받기 때문에 프로세스간 공유 메모리가 없다. 그래서 Context Switching이 발생하면 캐시에 있는 모든 데이터를 리셋하고 캐시 정보를 다시 불러와야 한다.
- 프로세스간 복잡한 통신기법(IPC)
- Context Switching1 과정에서 오버헤드 발생
멀티 스레드
- 의미
- 하나의 응용 프로그램을 여러개의 스레드로 구성하고 각 스레드가 하나의 작업을 처리하도록 하는 것이다.
- 윈도우, 리눅스등 많은 운영체제 들이 멀티 프로세스를 지원하지만 기본적으로 멀티 스레드를 기본으로 하고 있다.
- 하나의 응용 프로그램을 여러개의 스레드로 구성하고 각 스레드가 하나의 작업을 처리하도록 하는 것이다.
- 장점
- 자원의 효율성 증대
- 프로세스를 생성하여 자원을 할당하는 시스템 콜이 줄어 자원을 효율적으로 관리 할 수 있다.
- 시스템 처리량 증가
- 스레드간 데이터를 주고 받는것이 비교적 간단해지고 시스템 자원 소모가 줄어든다.
- 스레드 사이 작업량이 작아 Context Switching이 빠르다.
- 비교적 간단한 통신 방법으로 프로그램 응답 시간 단축
- 스레드 특징상 통신의 부담이 적다.
- 자원의 효율성 증대
- 단점
- 하나의 스레드에 문제가 생기면 전체 프로세스에 영향을 준다.
- 자원 공유의 문제가 발생한다.
1. Context Switching : 하나의 프로세스가 CPU를 사용 중인 상태에서 다른 프로세스가 CPU를 사용하도록 하기 위해, 이전의 프로세스의 상태(문맥)를 보관하고 새로운 프로세스의 상태를 적재하는 작업을 말한다.
[출처자료] https://gmlwjd9405.github.io/2018/09/14/process-vs-thread.html
'new study' 카테고리의 다른 글
리플렉션 (0) | 2020.02.25 |
---|---|
템플릿 콜백 패턴 (0) | 2020.02.17 |
COOKIE vs SESSION (0) | 2019.06.24 |
replace vs replaceAll (0) | 2019.06.21 |
GET vs POST (0) | 2019.06.20 |
댓글