[운영체제] 프로세스와 스레드 차이점 및 멀티 스레드 요약
Updated:
Goal
- 프로세스와 스레드 차이에 대해 정확하게 이해하자
- 멀티 스레드가 무엇인지 정확하게 알 수 있다.
- 멀티 스레드를 사용하는 이유를 정확하게 이해하자.
1. 프로세스 vs 스레드
-
프로세스 (Process) 스레드 (Thread) 실행점 CPU가 하나인 시스템에서는 하나의 프로세스만 실행되므로 실행점이 하나다. CPU가 하나인 시스템에서 실행 중인 프로세스에는 여러 개의 스레드가 존재하므로 실행점이 여러개다. 병행성 CPU가 하나인 시스템에서는
순차적으로 실행된다.CPU가 하나인 시스템에서도 병행 실행이 가능하다.
2. 프로세스와 스레드 차이 요약
프로세스는 메모리 상에서 실행중인 프로그램을 말한다. 스레드는 이 프로세스 안에서 실행되는 프름 단위를 말한다.
프로세스마다 최소 하나의 스레드를 보유하고 있으며, 각각 별도의 주소공간을 독립적으로 할당받는다. (code, data, heap, stack)
스레드는 이중에 stack만 따로 할당받고, 나머지 영역은 스레드끼리 서로 공유한다.
[마지막 요약]
프로세스 : 자신만의 고유 공간과 자원을 할당받아 사용
스레드 : 다른 스레드와 공간과 자원을 공유하면서 사용
3. 멀티 스레드 (Multi Thread) 요약
하나의 응용 프로그램에서 여러 스레드를 구성해 각 스레드가 하나의 작업을 처리하는 것
스레드들이 공유 메모리를 통해 다수의 작업을 동시에 처리하도록 해준다.
- 장점
- 독립적인 프로세스에 비해 공유 메모리만큼의 시간, 자원 손실이 감소
- 전역 변수와 정적 변수에 대한 자료 공유 가능
- 단점
- 안정성 문제.
- 하나의 스레드가 데이터 공간을 망가뜨리면, 모든 스레드가 작동 불능 상태 ( 공유 메모리를 갖기 때문)
- 이 단점을 대비하기 위해 Critical Section 기법을 사용한다.
Critical Section :
-
하나의 스레드가 공유 데이터 값을 변경하는 시점에 다른 스레드가 그 값을 읽으려할 때 발생하는 문제를 해결하기 위한 동기화 과정
-
상호 배제, 진행, 한정된 대기를 충족해야한다.
4. 멀티 스레드를 사용하는 이유
왜 멀티 프로세스로 처리 가능한 것을 굳이 멀티 스레드를 이용할까?
- 프로세스를 생성하여 자원을 할당하는 시스템 콜이 감소함으로써 자원의 효율적 관리가 가능함
- 프로세스 간의 통신(IPC)보다 스레드 간의 통신 비용이 적어 작업들 간 부담이 감소함
- 대신, 멀티 스레드를 사용할 때는 공유 자원으로 인한 문제 해결을 위해 ‘동기화’에 신경써야 한다.
Leave a comment