프로세스란?
쉽게 말하면 프로세스는 코드로 작성된 프로그램이 메모리에 올라가서 사용가능한 상태가 된 것
스레드란?
스레드란 프로세스내에서 실제로 작업을 수행하는 것
모든 프로세스에서는 한 개 이상의 스레드가 존재하고 작업을 수행한다
두 개 이상의 스레드를 가지는 프로세스 -> 멀티스레드 프로세스
그렇다면 과연 멀티 프로세스와 멀티 스레드의 차이는 뭘까
사진을 보면서 이해해보자
멀티 프로세스란?
- 여러개의 프로세스가 서로 협려해서 일을 처리한다
- 여러개의 프로세스가 작업을 병렬적으로 처리한다
- 각 프로세스간 메모리 구분 또는 독립된 주소 공간을 가져야 할 때 사용한다
장점
- 독립된 구조이기 때문에 안정성이 높다 (다른 프로세스랑 충돌이 발생하기 어렵다)
- 하나의 프로세스가 죽는다고 해도 문제가 되지 않는다 (다른 프로세스는 살아있고 피해를 끼치지 않기 때문)
- 여러 개의 프로세스가 처리되어야 할 동일한 데이터를 가지고 디스크에 데이터를 두고 작업하면 비용적으로 저렴해진다
단점
- 멀티스레드 보다 더 많은 메모리 공간, CPU시간을 차지함
- 독립된 메모리 영역이라 많은 Context Switching으로 오버헤드가 증가한다 -> 속도 저하
멀티 스레드란?
-하나의 작업을 위해 프로세스에서 여러 스레드를 생성하여 여러 CPU코어를 사용하기 위한 작업 (현재 대부분의 프로그램이 쓴다)
장점
- 시스템 자원 소모가 감소해서 자원의 효율성이 증가한다
- 스레드 간 데이터를 주고받는 것이 간한해지고 시스템 자원 소모가 줄어든다
- 스레드 사이 데이터를 공유하기때문에 Context Switching이 빠르다
정리
멀티 프로세스 vs 멀티 스레드
멀티 스레드의 장점이 훨씬 많아 보이지만
안정성을 본다면 멀티 프로세스가 뛰어나다
멀티 스레드에서 하나의 스레드가 죽으면 영향을 끼치지만 멀티 프로세스에서는 하나의 프로세스가 죽어도 영향을 주지 않는다
하지만 안정성을 추구하는 만큼 많은 메모리 공간과, CPU시간, Context Switching에 오버헤드가 발생한다
따라서 각각에 장단점이 있기 때문에 정답은 없다 시스템에 적합한 동작 방식을 선택하면 된다!
'CS > 운영체제' 카테고리의 다른 글
프로세스간 채팅 구현해보기 (0) | 2022.11.25 |
---|