hoo00nn.log
로그인
hoo00nn.log
로그인
멀티 프로세스와 멀티 스레드
hoo00nn
·
2020년 12월 22일
팔로우
0
CS
운영체제
0
멀티 프로세스와 멀티 스레드
멀티 프로세스
장점
하나의 프로세스가 비정상적으로 종료되더라도 다른 프로세스가 영향을 받지 않음
멀티 스레드처럼 동기화 작업이 별도로 필요하지 않음
단점
자원 소모, 메모리 낭비, 문맥 교환으로 인한 비효율성
IPC 통신으로 인한 비용
멀티 스레드
장점
문맥 교환에 소비되는 시간을 줄일 수 있음(스택 영역만 문맥교환이 일어남)
자원을 공유하기 때문에 메모리 낭비를 줄임
단점
여러 개의 스레드는 프로세스 내부의 자원을 공유하기 때문에 하나의 스레드가 자신의 데이터 공간을 망가뜨린다면 해당 프로세스의 데이터를 공유하고 있는 모든 스레드의 치명적인 문제를 발생시킨다.
여러 개의 스레드를 이용하는 경우, 미묘한 시간차나 잘못된 변수를 공유함으로써 오류 발생 가능
따라서 스레드 간에 통신할 경우에는 충돌 문제가 발생하지 않도록 동기화 문제를 해결해야 합니다.
멀티 프로세스보다 멀티 스레드를 지향하는 이유
스레드는 프로세스 보다 더 경량이여서 프로세스보다 생성과 제거가 쉽다.
스레드는 Stack을 제외한 메모리를 공유하기 때문에 멀티 프로세스에서 데이터를 공유하기 위해 사용하는 IPC 통신의 비용부담이 감소한다.
컨텍스트 스위칭 시 자원의 손실이 줄어든다.
프로세스 간의 컨텍스트 스위칭시 단순히 CPU 레지스터 교체 뿐만이 아니라 RAM과 CPU사이의 캐쉬메모리에 대한 데이터 까지 초기화 되므로 상당한 부담이 발생한다.
멀티 프로세스와 멀티 스레드의 적절한 상황
1) 멀티 프로세스
브라우저의 각 탭(크롬)
한 프로세스가 비정상적으로 종료되더라도 다른 프로세스가 영향을 받지 않음
자원을 공유할 필요가 없음
2) 멀티 스레드
워드 프로세스와 같은 응용 소프트웨어
여러가지 기능과 메모리를 공유
hoo00nn
😀 신기술에 관심이 많고, 함께 성장하고 함께 개발하고 싶은 개발자가 되고 싶습니다. 😀
팔로우
이전 포스트
프로세스와 스레드
다음 포스트
React + TypeScript 환경에서 ESLint, Prettier 설정하기
0개의 댓글
댓글 작성