모던 웹 브라우저
ipc - 프로세스 간 통신해 프로세스 생성 요청
브라우저마다 모든 프로세스를 한 프로세스가 맡는 경우도, 나눠서 수행하기도 한다, 규약은 없음
크롬은 멀티 프로세스를 사용하고 있다
브라우저, 유틸리티, 랜더러, 플러그인, 지피유 프로세스...
프로세스는 어플리케이션영역 제어(주소, 탭, 앞뒤로가기, 네트워크요청, 파일엑세스)
렌더러프로세스 - 탭 안 모든 요서, 복수의 프로세스를 가질 수 있으면 탭당 하나, 사이트당 하나로 할당 됨
플러그인 프로세스 - 플래시, 실버라이트와 같은 플러그인
지피유 프로세스 - 실제 지피유의 작업을 제어
멀티 프로세서의 장점
한 프로세서가 무응답에 빠져도 다른 프로세스가 정상 동작함
하나의 렌더러 프로세스면 한 탭이 무응답에 빠지면 다 멈춤
보안과 샌드박싱 - 특정 기능에 대해 특정 프로세스를 샌드 박스 처리
멀티 프로세서 단점
높은 메모리 사용, 개별 메모리 할당받아 최소한의 메모리를 처음 할당 받지만 공유하지 못해서 높은 메모리를 차지하게 된다.
성능이 낮은 브라우저는 ui, 브라우저 스레드들을 한 프로세스가 한다.
아이프레이같은 경우 여러개의 사이트를 하나의 ㅍ로세스가 보여주면 보안, 동일출처정책, 멜트다운, 다른페이지 메모리에 접근 할 수 있는 문제가 있어서 사이트 격리를 통해 이를 해소한다.
브라우저 프로세스 - ui스레드,
단순 탐색 절차
- 입력 처리 - 주소창에
- 탐색 시작
- 응답 읽기 - 요청에 대한 응답 바디에서 스트림의 첫 몇바이트를 읽어서 content-type 헤더 파싱과 마인타입스니팅(유저가 타입 잘못 적었는지, 악성코드 있는지 )을한다.
- 응답읽기 - 응답이 html이면 렌더러, 세이프 브라우징 체크 수행, 크로스 오리진 막기, 악성이면 워닝 페이지 띄움
- 렌더러 프로세스 찾기 - 유아이 스레드에서는 렌더러 프로세스를 찾아서 ipc를 전송한다, html 데이터를 계속 다운 받기 위해 스트림을 전달, 탐색 커밋이 확인 되면 탐색 완료 처리하고, 문서 로딩 시작, 주소창 갱신, 보안 알리미, 사이트 정보 반영, 탭 세션 이력 갱신