모던 웹브라우저 내부살펴보기 part1 요약

원문:

https://developers.google.com/web/updates/2018/09/inside-browser-part1

서문

예상독자

  • 브라우저가 코드를 동작하는 방법
  • 성능을 높이기 위해 제안되는 특정 기술에 대해 궁금한 사람

본문

CPU 와 GPU

CPU

  • 한번에 하나식 모든 작업을 처리함
  • 코어는 동일칩에있는 다른 CPU를 의미(ex. 4코어 => 4개 CPU)

GPU

  • CPU와 달리 단순작업을 병렬처리하는데 적합(그래픽작업)

프로세스 및 스레드

프로세스

  • 어플리케이션의 실행 프로그램

스레드

  • 프로세스의 내부에서 프로그램의 일부분을 실행

프로세스 Life Cycle

  • 어플리케이션 시작
  • -> 프로세스 생성
  • -> os가 메모리 할당
  • -> 어플리케이션 종료
  • -> 프로세스 종료(메모리 해제)

Ref

  • 프로세스는 os에게 새로운 프로세스를 시작하도록 요청가능
  • 자원의 공유가 필요시 (Inter Process Communication, IPC)을 사용

Chrome 의 spec.

멀티프로세스

  • 최상단에 브라우저 프로세스
  • 탭별 렌더러 프로세스(여러개)
  • 플러그인 별로 프로세스
  • 하나의 GPU 프로세스

멀티 프로세스 아키텍저의 이점

  • 탭별로 독립적 렌더러 -> 하나의 탭이 무응답시 다른 탭은 동작가능!
  • os가 프로세스의 권한을 제한하는 방법을 제공하기에 특정 기능의 특정 샌드박스를 만들수 있다 (ex. 파일 접근 제한)

한계

  • 동일프로세스의 내부 스레드처럼 공유할수 없으므로 프로세스별 전용 메모리 공간에 공통 인프라(v8 엔진)의 복사본을 포함
  • 위 문제로 더 많은 메모리 사용

보완

  • chrome에서 프로세스 수를 제한(CPU파워와 메모리에 따라 다르나 한계에 도달하면 한 프로세스에서 동일한 사이트의 여러개 탭을 실행하는 방식으로 동작)

더 나아가…

  • 강력한 하드웨어 에서는 브라우저 프로세스도 분할(network,storage, etc…)
Like what you read? Give Dub.io a round of applause.

From a quick cheer to a standing ovation, clap to show how much you enjoyed this story.