프로세스와 스레드가 뭐에요? 라고 말하면 답하는건 어렵지만 않지만
이둘의 차이점은 어떤것이 있는지, 깊게 파고들면 정확하게 대답하기가 쉽지않다.
우선 프로세스란 OS로부터 자원을 할당받은 작업의 단위다.
스레드란, 프로세스가 할당받은 자원을 이용하는 실행 흐름의 단위다.
즉 스레드는, 한 프로세스 내에서 나뉘어진 실행 단위인 셈이다.
가령 프로세스 두개가 동시에 실행하기 위해선, 프로세스1이 cpu에 적재되었다가,
준비상태로 내려가고 프로세스2가 적재되고, 이를 반복한다.
이것이 문맥교환이며, 이것이 반복되면 복잡하고 오버헤드가 발생하기 쉽다.
그래서 스레드는 프로세스의 메모리 구조에서, 코드 데이터 힙 영역을 공유한다.
스택 부분만 스레드마다 따로 가지고 있는 것이다. 공유되는 자원이 있기에,
문맥교환이 일어날때 캐싱 적중률이 올라가고 효율적이다.
그렇다면 멀티프로세스와 멀티스레드의 차이점은 무엇일까?
멀티프로세스와 멀티스레드 이 두가지는 모두 처리방식의 일종이다.
멀티 프로세스는 독립적인 메모리를 가지고 있지만 멀티 스레드는 자원을 공유한다.
그것에 따른 각각의 장단점이 있다.
프로세스 내에서 분리하여 여러 스레드로 나뉘어서 실행단위가 나뉘어지면
그것이 멀티스레드가 되는 것이다.
멀티프로세스는 IPC를 사용한 통신이며, context switching 비용이 크고, 각 프로세스가
독립적이며, 멀티스레드는 긴밀하게 연결되어 있고, 공유된 자원으로 비용을 절감한다.
하지만 동기화 작업에 신경을 써야하는 단점도 있다.
가끔 internet explore에서 작동이 중지되는 오류는 멀티스레드를 이용했기 때문에
모든 창이 꺼진다. 반면 크롬은 멀티프로세스를 이용하기에 멀티탭간의 영향을
덜받아 이런 오류가 잘 없다.
'CS > 필수지식' 카테고리의 다른 글
인증(Authentication) 기본 개념 (Spring boot / Flask (0) | 2025.04.10 |
---|---|
Compiled language vs Interpreted language (0) | 2022.06.21 |