본문 바로가기

컴퓨터 상식

크롬(Chrome)의 각 탭은 프로세스(Thread)다.

Chrome의 각 Tab은 Thread일까 Process일까.

 

정답은 Process다.

 

왜 그런지 실험을 통해 알아보자.

 

 

 

실험을 위해 Chrome에서 Tab 세 개를 만들었다.

 

wmic process get Caption, ParentProcessId, ProcessId | find /i "chrome"

 

CMD에 명령했다.

 

굉장히 많은 chrome Process가 생겼다.

 

주목해야할 점은 이들의 PPID 와 PID이다. PPID는 부모의 PID를 의미한다.

 

그림에서 왼쪽에 있는게 각 프로세스의 PPID이고 오른쪽이 PID이다. 

 

제일 위에 있는 프로세스의 PID가 20668이고, 그 밑의 모든 프로세스의 PPID가 20668이므로 

 

제일 위에 있는 프로세스가 모든 프로세스의 부모 프로세스이다.

 

https://www.chromium.org/developers/design-documents/plugin-architecture

 

위에 있는 게 Chromium의 구조이다. 

 

그림에서 알 수 있다시피 각 프로세스는 IPC(Inter Process Communication)로 소통한다.

 

 

최상위 chrome.exe가 아닌, 다른 chrome.exe는 Kill해도 창 자체가 꺼지지는 않지만 

 

최상위 chrome.exe를 종료할 경우 브라우저 자체가 종료된다. 

 

왜 Process로 했지?

 

Multi-thread Architecture는 성능면에서 유리하지만, 안정성과 보안 등에서 취약하다.

 

그래서 chromium은 Multi-process Architecture를 선택했다.