[Browser IPC] Chromium의 브라우저 아키텍쳐

dk-kling·2022년 3월 16일
3

Browser IPC

목록 보기
2/2
post-thumbnail

이 글은 작성자가 이해한 내용을 바탕으로 작성되었으며, 올바르지 않은 정보를 포함할 경우 댓글로 알려주시면 감사하겠습니다.

크로미움 (Chromium)


구글의 오픈소스 프로젝트 크로미움(Chromium)은 chrome, edge, opera, naver whale 등 다양한 브라우저의 기반 엔진으로 windows, macOS, linux, android를 지원합니다. 크로미움의 작동 방식을 알기 위해서는 그 아키텍쳐를 알아볼 필요가 있습니다.


브라우저 아키텍쳐

브라우저 내부에서는 다수의 프로세스들이 IPC를 통해 통신을 수행하게 됩니다. 크로미움의 경우에는 Mojo IPC를 사용해 프로세스들이 통신을 주고 받게 됩니다.

Chrome 프로세스 별 역할

브라우저 프로세스 (Browser Process)
: 브라우저의 전체적인 기능을 담당

렌더러 프로세스 (Renderer Proccess)
: 웹사이트가 디스플레이 될 때 탭 안의 모든 것 담당

플러그인 프로세스 (Plugin Process)
: 플래시와 같은 웹사이트가 사용하는 모든 플러그인 담당

GPU 프로세스 (GPU Process)
: 다른 프로세스와 분리된 GPU 작업을 제어

브라우저 프로세스는 주소 창, 뒤로 및 앞으로 이동 버튼을 포함한 어플리케이션의 chrome 부분을 제어하고, 네트워크 요청 및 파일 액세스와 같은 웹 브라우저의 권한이 부여된 보이지 않는 부분을 제어합니다. GPU 프로세스는 여러 앱의 요청을 제어하고 동일한 표면에 표시하기 때문에 다른 프로세스로 분리합니다.

여기서 우리가 주목할 부분은 브라우저 프로세스렌더러 프로세스입니다.

최상위 브라우저 프로세스는 어플리케이션의 다른 부분을 담당하는 프로세스들을 조율합니다. 렌더러 프로세스는 다수의 프로세스가 생성되어 각 탭마다 할당합니다. 가능하면 각 탭마다 별도의 프로세스를 할당하지만 현재는 iframe을 포함하여 각 사이트 별로 프로세스를 가지도록 변경합니다. 이 개념을 사이트 격리 (site isolation)라고 부릅니다.


멀티 프로세스의 장점

1. 각 프로세스의 독립성
각 탭이 별도의 렌더러 프로세스로 렌더링하기 때문에 하나의 탭이 무응답 상태에 빠지더라도 해당 탭만이 무응답 상태가 되며, 다른 탭은 그 영향을 받지 않습니다.

2. 보안 및 샌드박싱
OS에서 제공하는 프로세스의 권한을 제한하는 보안 기법인 샌드박스를 사용할 수 있습니다.

3. 메모리 사용량 증가
각 탭마다 프로세스를 가지며, 프로세스는 서로 메모리를 공유할 수 없기 때문에 메모리 사용량이 많아지게 됩니다.
메모리 절약을 위해 Chrome은 실행 가능한 프로세스의 개수에 제한을 두며, 제한 개수는 컴퓨터의 CPU에 따라 한계에 다다를 경우 여러 동일한 사이트를 하나의 프로세스에서 실행합니다.


Reference

구글 개발자 블로그 : Mariko Kosaka

profile
STAR-LAB

0개의 댓글