데브코스 2주차 스터디: 프로세스와 스레드

te-ing·2021년 8월 15일
1
post-thumbnail
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, 프로세스와 스레드의 차이

profile
병아리 프론트엔드 개발자🐣

0개의 댓글