여기에 답변에 영향을주는 몇 가지 계층이 있습니다.
최신 가상 메모리 운영 체제를 가정하면 할당 한 페이지에서 다른 프로세스 데이터의 나머지를 볼 수 없습니다.
프로세스가 처음로드되면 페이지 테이블이로드되고 잠재적으로 실제 메모리 프레임이 해당 페이지에 할당됩니다. 최소한 페이지 테이블 또는 보충 테이블에는 프로세스가 할당 할 수있는 모든 메모리의 맵이 포함됩니다. 또한 위에서 언급 한 초기 프로세스 중단이 설정됩니다.
malloc ()이 프로세스가 허용되는 경우 프로세스 나누기를 변경하여 프로세스 페이지 (보조 페이지) 테이블에 더 많은 페이지를 추가하여 요청을 충족시킬 수 있지만 한 프로세스가 다른 프로세스를 "가져올"수있는 장소는 하위 실제 메모리 계층
이 두 가지 시나리오에서 요구 페이징 또는 지연 할당을 사용하는 최신 운영 체제는 아직 물리적 메모리 (프레임)를 할당하지 않습니다. 운영 체제는 해당 프로세스의 가상 메모리가 유효한 것으로 간주되는 "메모 작성"입니다. 실제 메모리는 필요할 때만 할당됩니다.
가상 페이지가 구현되어 프로세스 페이지 테이블에 맵핑 될 때 실제 메모리 또는 프레임이 프로세스에 할당됩니다. 데이터 노출의 가능성이 존재합니다. 이것은 페이지 오류 중에 발생합니다. 노출은 이전 프로세스가 동일한 프레임을 사용하고 있었으며 현재 실제 메모리 요청을위한 공간을 만들기 위해 데이터가 버려지거나 스왑 아웃 되었기 때문입니다. 프로세스를 재개하기 전에 요청 프로세스 데이터가 올바르게 교환되거나 프레임이 지워지도록 운영 체제가주의해야합니다. 이것은 또한 "오래되었지만 해결 된"문제로 언급됩니다.
이것은 다른 프로세스 메모리가 "릴리스"되었는지 아닌지에 관계가 없습니다. "해제 된"다른 프로세스 메모리는 여전히 해당 프로세스에 할당 된 페이지에 상주하며 일반적으로 프로세스가 종료 될 때까지 메모리가 부족하거나 제거 될 때 스왑 아웃되므로 매핑 해제되지 않습니다. malloc () 및 free ()는 프로세스에 할당 된 가상 메모리를 (사용자) 수준에서 관리합니다.
귀하의 질문에 따르면 귀하의 프로세스는 이론적으로 더 많은 메모리를 계속 요청하여 다른 모든 프로세스를 메모리에서 밀어냅니다. 실제로는 글로벌 및 로컬의 프레임 할당 전략이 있으며 이에 대한 답변도 영향을받습니다. 운영 체제 및 기타 모든 프로세스를 오버런하기 전에 프로세스가 자체 페이지를 메모리에서 강제로 제거 할 수 있습니다. 이것은 당신의 초기 질문을 넘어서지 만.
이 모든 것은 MS-DOS와 같은 시스템에서 헛소리입니다. MS-DOS (및 기타 간단한 시스템)는 가상 메모리를 단독으로 사용하지 않으므로 다른 "프로세스"데이터를 쉽게 찌를 수 있습니다.
리눅스 소스 코드보다 이해하기 쉬운 좋은 참고 문헌은 좋은 운영 체제 교과서, Silberscatz, Gavin, Gange의 운영 체제 개념 또는 Andrew Tanenbaum의 운영 체제 설계 일 것입니다. Berkeley의 Nachos 또는 Stanford의 Pintos와 같은 것은 학습을 위해 만들어진 작은 운영 체제이며 그 안에 동일한 아이디어가 있습니다.