2016-11-03 7 views
0

링크 1 : If size of the physical memory is 2^32-1, then what is the size of virtual memory?운영체제 : 가상 메모리의 크기는 얼마입니까?

위의 링크를 통해 대답을 얻을 수 있지만 여전히 의문점이 있습니다. PLS는

1.Virtual memory is also called as Demand Paging whenever a page fault occurs 
    the operating system swaps the required page from the virtual memory. the virtual memory 
    here mean the harddisk or secondary storage. So how much space can be allocated for a 
    porcess in virutal memory? can this size(the space allocated for each process in the 
    Virtual memory) exceeds the size of our RAM size? i mean if our RAM is 4GB then what is 
    the maximum size of the virtual memory you can have for a process?can we have 4GB of 
    virtual memory for every process or can we have more than 4GB for every process? 
    (if it needs) 


2.is the Virtual memory size fixed or dynamic? How much space is allocated for this memory 
    and in the above link it is told that 2^48 is the size of virtual memory in 64 bit machine 
    why is it only 2^48 and how can once can say a number like that? 

당신을 감사

답변

0

실제 메모리의 크기가 2^32-1이면 가상 메모리의 크기는 얼마입니까?

가상 주소 공간의 크기는 실제 주소 공간의 크기와 별개입니다. 대답이 없습니다.

그럼 virutal 메모리에서 포어에 할당 할 수있는 공간은 얼마입니까?

하드웨어 제한, 시스템 매개 변수 및 프로세스 할당량에 따라 다릅니다.

이 크기 (가상 메모리의 각 프로세스에 할당 된 공간)가 RAM 크기를 초과 할 수 있습니까?

예, 자주 사용합니다.

우리의 RAM이 4GB라면 프로세스에 대해 가질 수있는 가상 메모리의 최대 크기는 얼마입니까?

아무 것도 될 수 있습니다. 숫양 크기는 조절되지 않습니다.

우리는 모든 프로세스에 대해 4GB의 가상 메모리를 가질 수 있습니까? 아니면 모든 프로세스에 대해 4GB 이상을 가질 수 있습니까?

모두

가상 메모리의 크기는 고정되거나 동적?

동적

이유는 단지 2^48를하다이 메모리와가 2^48은 64 비트 컴퓨터에서 가상 메모리의 크기라고 말했다되어 위의 링크에 할당 된 공간은 어느 정도 어떻게 한 번 그 숫자를 말할 수 있을까요?

특정 프로세서의 하드웨어 제한이 될 수 있습니다.

0

페이징 가상 주소를 물리적 주소로 변환되는 방식이다 ..... 내가 혼동되지 않도록 질문은 여기에 게시하는 방식으로 대답합니다. 이것은 페이지 테이블을 통해 수행됩니다.

긴 모드 (64 비트 모드)에서 x86의 경우 페이지 테이블은 48 비트 가상 주소 공간 (2^48 최대 크기)을 허용합니다. 이 제한은 x86의 긴 모드 페이지 테이블 설계 때문입니다. 페이징은 포인터에서 한 번에 몇 비트를 사용하여 페이지 테이블에서 다음에 어디로 갈지 결정합니다. 기본적으로 페이지 테이블은 가상 주소에 해당하는 실제 주소를 조회 할 수있는 비교적 얕은 b 트리 스타일 트리입니다.

가상 주소를 실제 주소로 변환하려면 긴 모드 페이지 테이블 (작은 페이지의 경우)은 먼저 가상 주소에서 9 비트를 추출한 다음 9 개 더 누른 다음 9 개 더 누른 다음 9 개 더 눌러 올바른 페이지를 찾은 다음 낮은 주소 액세스되는 정확한 바이트를 찾기 위해 12 비트, 총 48 비트.

(크기가 크고 큰 페이지의 경우 x86은 크거나 큰 페이지의 주소를 찾기 위해 각각 페이징의 마지막 1 및 2 단계를 건너 뜁니다. 사용되지 않는 로우 21 또는 30 비트는 정확한 바이트를 찾기 위해 사용됩니다. 해당 페이지)

가상 주소 공간은 동적 인 의미에 따라 반드시 동적 일 필요는 없습니다. 주소 공간은 항상 48 비트입니다 (긴 모드에서 페이징을 사용할 수있는 보호 모드 (예 : 32 비트 모드)와 같은 모드 사이를 전환하지 않는 한). 가상 주소 공간은 대부분의 표준 (유효한) 주소에서 유용하지 않은 점을 지적하지 않으므로 거의 항상 희박합니다. 페이지 테이블에는 대부분의 주소에 대한 매핑이 없습니다 (이러한 주소에 대한 액세스는 페이지 폴트를 생성합니다. Linux에서는 종종 사용자가 알고 있고 좋아하는 SIGSEGV로 사용자 공간으로 되돌아옵니다).

즉, 페이지 오류가 발생하면 커널이 해당 페이지를 매핑 할 수 있다는 점에서 가상 메모리가 동적 일 수 있습니다. 스왑을 구현하기 위해 OSes는 드물게 사용 된 페이지를 디스크에 다시 쓰고 느리게 페이지를 RAM으로 다시 가져와 더 많은 RAM을 사용하게하기 위해 디스크에 여분의 공간을 사용합니다.

페이지 테이블에는 같은 물리적 페이지가 여러 번 매핑되는 것을 방지하는 제한이 없습니다. 모든 가상 주소가 똑같은 페이지 (미친 짓이야)를 가리키며 할 수있는 괴물 같은 페이지 테이블을 만들 수 있습니다. 이는 주소 공간이 반드시 희박한 것은 아니며 가능성이 매우 높다는 것을 의미합니다. (이 페이지 테이블은 거대 할 것입니다. 누군가가 계산을 수행했음을 확신하지만, 내 첫 번째 추측은 테라 바이트 단위 일 것입니다.)

+0

아마도 존재하지 않는 팬츠의 경우, 가상 주소는 x86 명명 규칙에있는 것이 아닙니다. 대신 논리 및 선형 주소가 있습니다. 논리적 인 프리 세그먼테이션, 선형 프리 페이징. 세분화는 긴 모드에서 흥미로운 것은 아니지만 여전히 문제입니다. – ruthafjord

관련 문제