※ 멀티 프로세스나 멀티 스레드의 용어에 대해 자세히 알고싶다면 다음 포스팅을 먼저 참고하자.
멀티 프로세스(Multi Process)와 시분할 시스템의 동시성(Concurrency)
멀티 프로세스란? 멀티 프로세스는 2개 이상의 프로세스가 동시에 실행되는 것을 말한다. 동시에라는 말은 동시성(concurrency)과 병렬성(parallelism) 두 가지를 의미한다. 동시성과 병렬성의 차이 동
hyolls100.tistory.com
멀티 스레드(Multi Thread)란?
멀티 스레드란? 하나의 프로세스가 동시에 여러 개의 일을 수행할 수 있도록 해주는 것이다. 즉 하나의 프로세스에서 여러 작업을 병렬로 처리하기 위해 멀티 스레드를 사용한다. 멀티 스레드에
hyolls100.tistory.com
멀티 프로세스(Multi process) & 멀티 스레드(Multi thread)
두 방법은 동시에 여러 작업을 수행한다는 측면에서 유사한 면이 있다. 하지만, 적용할 시스템에 따라 두 방법의 장단점을 고려하여 적합한 방식을 선택해야 한다.
메모리 구분이 필요할 때는 multi process가 유리하다. 그럼으로써 하나의 process가 죽더라도 다른 process에 영향을 주지 않아 안정성이 높다. 하지만, 많은 메모리 공간이 필요하고, Context switching이 느리다는 단점이 있다.
반면에 Context switching이 자주 일어나고 데이터 공유가 빈번한 경우에는 multi thread를 사용하는 것이 유리하다. 그리고, multi thread는 메모리 공간과 시스템 자원 소모가 줄어들게 되고, process간의 통신(IPC)보다 thread간의 통신 비용이 적기 때문에 통신으로 인한 오버헤드 또한 적다. 그리고 process를 생성하고 자원을 할당하는 등의 system call을 생략할 수 있기 때문에 자원을 효율적으로 관리할 수 있다. 그렇지만, thread간의 자원 공유시 동기화 문제가 발생할 수 있고, 하나의 thread 장애로 전체 thread가 종료될 위험이 있어 이를 고려한 프로그램 설계가 필요하다.
메모리 사용 / CPU 시간 | Context switching | 안정성 | |
멀티 프로세스(multi process) | 많은 메모리 공간 / CPU 시간 차지 | 느림 | 높음 |
멀티 스레드(multi thread) | 적은 메모리 공간 / CPU 시간 차지 | 빠름 | 낮음 |
Chrome이 멀티 프로세스(Multi-Process)를 이용하는 이유
Chrome의 탭은 프로세스다. (멀티 프로세스)
Chrome은 방문하는 사이트의 각 인스턴스에 대해 별도의 웹 페이지 콘텐츠 process를 생성하는 멀티 프로세스 방식을 이용한다. Chrome에서 10개의 사이트가 있는 10개의 다른 탭을 열면 10개의 서로 다른 process가 있는 것이다. 이러한 각 프로세스에는 브라우저 엔진의 자체 인스턴스와 함께 자체 메모리가 있다. Chrome에서 열린 탭 하나는 일반적으로 수백 메가바이트의 RAM을 사용한다. process생성에 대한 Chrome의 자유로운 접근 방식은 매우 높은 메모리 사용량으로 이어질 수 있다.
멀티 프로세스 방식을 이용함으로써 하나의process가 죽어도 다른 process가 죽지 않는다. 한 탭의 Renderer process가 죽어도 다른 탭이 죽지 않는다. 따라서, 특정 탭이 응답하지 않을 때는 동작하지 않는 탭의 process를 재시작 시켜버리는 방식을 사용한다.
멀티 프로세스의 안정성
다만 Chrome이 이런 구조를 선택할 수 밖에 없었던 이유는 안정성이다. 멀티 프로세스 방식은 메로리를 공유하지 않기 때문에 메모리 공격으로부터 안전하다. 웹 사이트를 개발자가 별도의 심사 없이 배포하므로 악성 개발자가 모든 공유자원의 주도권을 가진 상태로 죽어버린다면 문제가 발생할 수 있다. 따라서, Chrome은 메모리 성능보다 안정적이고 빠른 사용자 경험을 선택한 것이다.
단점
1. Process는 메모리를 공유하지 않기 때문에 Process 별로 하나의 자바스크립트 엔진 코드를 들고 있어야 하여 메모리 사용량이 증가한다.
2. 프로세스간의 통신(IPC)을 이용하는 코드가 많아지면서 코딩 난이도가 상승한다. 그리고, 송신-수신 이벤트를 받아서 처리하기 때문에 속도가 느려진다.
Chrome와 다른 FireFox의 멀티 스레드 방식
반면에 process 생성에 대해서 Chrome에 비해 Firefox가 보다 보수적이다. 종종 Firefox가 Chrome보다 적은 메모리를 사용하는 결과를 낳는다. 기본적으로 Firefox는 웹 페이지 콘텐츠에 대해 최대 4개의 개별 process를 생성한다. 따라서 처음 4개의 탭은 각각 이 4개의 process를 사용하고 추가 탭은 해당 process 내의 thread를 사용하여 실행된다. process 내의 여러 탭은 각각 자체적으로 생성하는 대신 메모리에 이미 존재하는 브라우저 엔진을 공유한다.
※ Chrome에서 프로세스 처리 방식에 대해 자세히 알고싶다면 다음 포스팅을 참고하자.
Chrome의 프로세스 처리 방식
Chorme은 멀티 스레드 방식과 멀티 프로세스 방식 중 멀티 프로세스 방식으로 브라우저를 관리한다. 프로세스 처리 방식 Chrome은 크게 4가지의 process를 사용한다. 탭은 한 process만 지니는 게 아니라
hyolls100.tistory.com
'CS 공부 > 운영체제' 카테고리의 다른 글
멀티 스레드(Multi Thread)란? (0) | 2023.08.14 |
---|---|
멀티 프로세스(Multi Process)와 시분할 시스템의 동시성(Concurrency) (0) | 2023.08.11 |
뮤텍스(Mutex)와 세마포어(Semaphore) / 동기화문제와 임계영역 (0) | 2022.09.04 |
경쟁 상태(Race Condition)란 ? (0) | 2022.08.28 |
IPC(Inter Process Communication) (0) | 2022.08.07 |
댓글