2016-09-18 4 views
0

OS 별 메모리 관리를 이해하려고합니다. 지금까지 이해할 수있는 것은 32 비트 시스템에서 각 프로세스는 가상 주소 공간에 4GB [2GB 사용자 + 2GB 커널]의 공간을 할당 받았다는 것입니다. 저를 혼란스럽게하는 것은 모든 프로세스에 고유 한 4GB 공간입니다. 3 개의 프로세스 p1, p2, p3을 실행하면 하드 디스크에 12GB의 공간이 필요합니까?OS 별 메모리 관리

또한 32 비트 시스템에서 2GB 램을 사용하는 경우 4GB를 필요로하는 프로세스를 어떻게 처리 할 수 ​​있습니까? [페이징 파일을 통해]? OS에 의해 제약이다

답변

0

[2기가바이트 사용자 + 2기가바이트 커널]

. PAE가 활성화되지 않은 x86 32 비트 시스템에서 가상 주소 공간은 4 GiB입니다 (GiB는 1024 MiB를 나타내는 반면 GB usually denotes 1000 MB에 유의하십시오).

나를 혼란스럽게하는 것은이 프로세스가 고유 한 4GB 공간입니다.

예, 모든 프로세스에는 고유 한 4 GiB 가상 주소 공간이 있습니다.

3 개의 프로세스 p1, p2, p3이 실행 중이라면 하드 디스크에 공간이 12GB 필요합니까?

아니요. 3 가지 프로세스로 최대 12 GiB의 저장 공간을 차지할 수 있습니다. 프라이 머리 또는 보조 스토리지가 커널에 남아 있는지 여부 (프라이 머리가 선호됨). 따라서 모든 프로세스가 실제로 4 GiB의 전체 범위를 차지한다면 3 차 프로세스를 모두 포함하기 위해서는 기본 메모리 크기 + 일부 보조 저장 공간이 필요합니다. 이는 거의 일어나지 않을 것입니다.

또한 경우 [페이징 파일을 통해] 4GB의? 필요로하는 프로세스를 처리하는 방법이 으로 관리합니다, 나는 32 비트 시스템에 2기가바이트 램이 있다고?

예. 올바른 것을 의미하지만 "페이징 파일"은 구현 세부 사항입니다. Windows에서 사용하지만 Linux는 예를 들어 별도의 스왑 파티션을 사용합니다. 따라서 기술적으로 올바르려면 "2 차 저장소 (예 : HDD)가 나머지 2 GiB 프로세스를 저장하는 데 필요합니다."

+0

많은 것을 고맙게 생각합니다. 세 번째 대답과 관련하여 프로세스가 4GB의 공간을 필요로하지 않는다면 여분의 공간을 다른 프로세스에서 자유롭게 사용할 수 있습니까? –

+0

가설 시나리오에서 우리는 12GB 공간과 4GB RAM을 가진 HDD를 가지고 있으며 12 개의 프로세스가 실행 중이며 각 사용자 데이터 + 커널, 나머지 3GB는 무료입니다. 그들을 실행할 수있는 충분한 기억이 있습니까? –

+0

@TanmayBhattacharya 예. 모든 프로세스에는 항상 4 GiB 가상 메모리가 있습니다. 그러나 4 GiB가 실제로 HDD 나 RAM과 같은 물리적 메모리에 매핑되는지 여부는 커널에 의해 결정됩니다. 예, 페이지가 매핑되지 않은 실제 메모리는 다른 프로세스에서 사용할 수 있습니다. – Downvoter