1. 프로세스의 정의
2. 스레드의 정의
3. 브라우저에서의 프로세스, 스레드 구성방식
4. 다중 프로세스 아키텍처의 특징
5. 크롬의 프로세스가 하는 일
프로세스의 정의
- 운영체제로부터 자원을 할당받은 작업의 단위
- Code/Data/Stack/Heap 형식으로 독립된 메모리 할당
- 프로세스는 저마다의 할당된 메모리의 정보만 접근할 수 있음
프로세스는 저마다의 할당된 메모리의 정보만 접근할 수 있다고 했지만, IPC, LPC, 별도의 공유메모리 등 많은 자원부담을 감수하고 프로그램 간 정보를 주고 받을 수 있는 방법이 존재
이미지 출처: Heee's Development Blog
스레드의 정의
- 프로세스가 할당받은 자원을 이용하는 실행흐름의 단위
- Code/Data/Heap가 공유되며 Stack은 독립적으로 가짐
- Context-Switching시, 공유하고 있는 메모리만큼 메모리 자원 절약
이미지 출처: Heee's Development Blog
브라우저에서의 프로세스, 스레드 구성방식
- 브라우저는 스레드를 많이 사용하는 프로세스 하나만 사용하거나 스레드를 조금만 사용하는 프로세스를 여러 개 만들어 IPC로 통신하는 등, 브라우저 마다 다양한 접근방식 설계 가능
이미지 출처: NAVER D2
다중 프로세스 아키텍처의 특징
- 높은 메모리 사용량 등 많은 자원이 필요
- 여러 개의 독립적인 렌더러 프로세스를 사용해 오류 피해 최소화 가능
- 프로세스마다 운영체제를 통해 프로세스의 권한을 제한하여 보안성 향상
- 과거 크롬은 process per tap 방식을 사용했지만 탭 내의 다른 페이지끼리도 메모리가 공유될 수 있다는 보안취약점 때문에 process per site 방식으로 전환
이미지 출처: NAVER D2
크롬의 프로세스가 하는 일
- 브라우저 프로세스
애플리케이션의 "chrome" 부분을 제어하고 네트워크 요청이나 파일 접근과 같이 권한이 필요한 부분 처리
- 렌더러 프로세스
탭 내 웹 사이트가 표시되는 부분의 모든 것을 제어
- 플러그인 프로세스
웹 사이트에서 사용하는 플러그인(예: Flash)을 제어
- GPU 프로세스
GPU 작업을 다른 프로세스와 격리해서 처리되며, GPU 프로세스는 별도 프로세스로 분리되어 있음
이미지 출처: NAVER D2
참고사이트 NAVER D2, 프로세스와 스레드의 차이