Android는 시스템 리소스를 회수하기 위해 제한된 메모리로 인해 프로세스를 종료해야 하며, 이는 무작위가 아닌 중요도 계층 구조에 의해 종료됩니다.
Chrome 브라우저는 다른 탭 문제가 발생할 때 허점을 보완하기 위해 다중 프로세스 방법을 사용합니다.
Chrome은 본질적으로 3개의 프로세스를 구분합니다.
브라우저: 하드 디스크 및 네트워크 입/출력 관리, 렌더러: 웹 페이지에서 플러그인으로 표시하기 위한 프로그램 논리 표시 : 코드가 포함되어 있어 플러그인이 연결된 렌더러 프로세스 및 브라우저 프로세스와 통신할 수 있습니다.
렌더러 프로세스는 보안 취약성을 최소화하기 위해 디스크 및 네트워크 I/O에 대한 액세스를 제한하는 샌드박스에서 실행됩니다.
프로세스 간에 데이터를 공유하는 것을 협력적이라고 하고 반대로 데이터를 공유하지 않는 것을 협력적이라고 합니다.
데이터 교환의 이유: 정보 교환, 계산 가속, 모듈성
공유를 위해서는 IPC 기술이 필요합니다.
프로세스 간 배럴에는 기본적으로 공유 메모리 및 메시지 전달 기술이 있습니다.
메시지 공유: 소량의 데이터 교환에 유용하며 공유 메모리보다 분산 시스템에서 구현하기 쉽습니다.
공유 메모리: 시스템 호출을 사용하며 메시징보다 빠릅니다.
프로세스 간 통신을 위해서는 공유 메모리 영역이 설정되어야 하는데, 공유 메모리 영역은 공유 메모리 세그먼트를 생성하는 프로세스의 주소 공간에 있습니다.
일반적으로 운영 체제는 다른 프로세스가 프로세스의 메모리에 액세스하는 것을 방지합니다.
생산자 프로세스는 정보를 생산하고 소비자 프로세스는 정보를 소비합니다.
두 가지 문제에 대한 해결책은 공유 메모리를 사용하는 것입니다.
버퍼를 통해 데이터를 교환하며 두 가지 유형의 버퍼가 있습니다.
버퍼 크기에 제한이 없는 무한 버퍼입니다.
이 경우 생성자는 항상 새 요소를 만들 수 있지만 소비자는 새 요소를 기다려야 합니다.
모든 버퍼가 가득 차면 생성자는 기다려야 합니다.
공유 버퍼는 두 개의 원형 배열로 구현됩니다.