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이므로
제일 위에 있는 프로세스가 모든 프로세스의 부모 프로세스이다.
위에 있는 게 Chromium의 구조이다.
그림에서 알 수 있다시피 각 프로세스는 IPC(Inter Process Communication)로 소통한다.
최상위 chrome.exe가 아닌, 다른 chrome.exe는 Kill해도 창 자체가 꺼지지는 않지만
최상위 chrome.exe를 종료할 경우 브라우저 자체가 종료된다.
왜 Process로 했지?
Multi-thread Architecture는 성능면에서 유리하지만, 안정성과 보안 등에서 취약하다.
그래서 chromium은 Multi-process Architecture를 선택했다.
'컴퓨터 상식' 카테고리의 다른 글
HTTP 버전 별 특징 (0) | 2020.11.15 |
---|---|
가상메모리에도 불구하고 OOM(OutOfMemory)이 발생하는 이유 (0) | 2020.11.11 |
REST API 정리 (0) | 2020.10.28 |
Ajax는 Restful 할 수 있는가. (0) | 2020.10.22 |
Garbage Collection(GC)에서 이름이 Eden인 이유 (0) | 2020.10.20 |