각 프로세스마다 고유 한 별도의 페이지 테이블이있을 때 시스템 전체 페이지 테이블이 필요한 이유는 무엇입니까? 또한 페이지 테이블이 가상 주소를 실제 주소로 매핑하는 경우에는 모든 프로세스가 동일한 가상 주소 공간을 사용하므로 두 프로세스가 동일한 실제 주소에 매핑 될 수 있다고 생각합니다. 시스템 전체 페이지 테이블에 좋은 링크도 내 문제를 해결할 것인가?가상 주소를 실제 주소에 매핑
답변
각 프로세스에는 고유 한 가상 주소 공간이 있습니다. 두 프로세스가 다른 physpages에 대한 virtpage 1 맵을 가질 수 있습니다. 프로세스는 공유 메모리에 참여할 수 있습니다.이 경우 프로세스는 각각 동일한 physpage에 대한 virtpage 매핑을 갖습니다.
프로세스의 가상 주소 공간을 사용하여 virtpages를 physpages, 메모리 매핑 된 파일, 장치 등에 매핑 할 수 있습니다. Virtpages는 RAM에 연결될 필요가 없습니다. 프로세스는 1GB 파일 전체를 메모리 맵핑 할 수 있습니다.이 경우 실제 메모리 사용량은 몇 메가가되지만 가상 주소 공간 사용량은 1GB 이상이됩니다. 많은 프로세스가이를 수행 할 수 있습니다.이 경우 모든 프로세스에서 가상 주소 공간 사용량의 합계는 예를 들어 40GB가 될 수 있지만 총 실제 메모리 사용량은 말하자면 100MB 일 수 있습니다. 이것은 32 비트 시스템에서 매우 쉽게 수행 할 수 있습니다.
많은 프로세스가 동일한 라이브러리를로드하므로 OS는 일반적으로 libs를 읽기 전용 실행 페이지 집합에 넣은 다음 각 프로세스가 virtpage 공간에서 해당 페이지 집합을 가리 키도록 매핑을로드합니다. 실제 메모리에 저장하십시오.
프로세스는 프로세스의 메모리 일부가 페이지 파일에 기록 된 경우와 같이 아무 것도 가리 키지 않는 virtpage 매핑을 가질 수 있습니다. 프로세스가 해당 페이지에 액세스하려고하면 CPU가 페이지 오류를 일으키고 OS는 페이지 폴트를보고 프로세스를 일시 중단하고 페이지 파일에서 RAM으로 페이지를 다시 읽은 다음 프로세스를 다시 시작하여 처리합니다.
일반적으로 3 가지 유형의 페이지 폴트가 있습니다. 첫 번째 유형은 CPU가 TLB에 가상 - 물리적 매핑을 가지고 있지 않은 경우입니다 - 프로세서가 OS에서 페이지 오류 소프트웨어 인터럽트를 호출하고 OS가 해당 프로세스의 프로세서에 매핑을 넣은 다음 프로세스가 문제의 원인을 다시 실행합니다 명령. 이들은 1 초에 수천 번 발생합니다.
두 번째 유형은 위에서 설명한 것처럼 프로세스의 메모리가 디스크로 스왑 되었기 때문에 OS에 매핑이없는 경우입니다. 가볍게 적재 된 기계에서는 드물게 발생하지만 메모리 압력이 높아지면 초당 100 ~ 1000 회, 어쩌면 더 많은 일이 발생합니다.
세 번째 유형은 매핑이 없기 때문에 OS에 매핑이없는 경우입니다. 프로세스가 속해 있지 않은 메모리에 액세스하려고합니다. 이것은 segfault를 생성하고 일반적으로 프로세스가 종료됩니다. 이것들은 자주 일어나지 않아야하며 소프트웨어가 기계에 얼마나 잘 기록되어 있는지에 달려 있으며 스케줄링이나 기계 부하와 관련이 없습니다.
이미 알았더라도 커뮤니티를 위해 알았습니다.
- 1. vxWorks 6.8에서 가상 메모리로 실제 매핑
- 2. 가상 BLOB 저장소에 VM 실제 경로 매핑
- 3. ELF의 가상 및 실제 주소
- 4. 주소에 주소를 추가하는 방법은 무엇입니까?
- 5. 실제 거리 주소에 대한 링크 형식이 있습니까?
- 6. 하드웨어 포트를 메모리 주소에 매핑하는 실제 플랫폼은 무엇입니까?
- 7. 가상 및 실제 주소 변환
- 8. 실제 IP 주소를 찾으십시오
- 9. gpio_request가 GPIO 번호를 Linux의 가상 메모리 주소에 어떻게 처리합니까?
- 10. 가상 URL의 실제 URL
- 11. MOV 명령에서 실제 주소를 사용하는 방법은 무엇입니까?
- 12. 링 0 프로그램이 실제 메모리 주소를 사용합니까?
- 13. 리눅스 - 가상 메모리 주소를 malloc에에서 가상 메모리 주소를 중복 또는 이동
- 14. 함수 포인터 : 실제 또는 가상 주소
- 15. 내 실제 IP 주소를 숨기기
- 16. 주소를 함수의 결과에 매핑 할 수 있습니까?
- 17. 가상 대 실제 메모리 누수
- 18. C에서 가상 함수의 실제 사용 #
- 19. 가상 및 실제 메모리/OutOfMemoryException
- 20. 가상 카메라와 실제 카메라의 일치
- 21. 커널 함수가 서로 다른 가상 주소를 가질 수 있습니까?
- 22. C 메모리 매핑
- 23. kmalloc은 실제 주소의 크기보다 큰 실제 주소를 어떻게 반환 할 수 있습니까?
- 24. 메모리 매핑 된 파일로 가상 메모리 구현
- 25. Windows에서 실제 주소 액세스 차단
- 26. 벡터에서 요소의 주소에 액세스하면서 임시 주소를 가져옴 <bool>
- 27. 불완전 사용자가 입력 한 주소에 대한 제안 주소를 얻는 방법?
- 28. 이메일 주소에 따라 다른 링크 주소를 에코하는 방법은 무엇입니까?
- 29. 주소에 데이터를 저장하고 C에서 변수의 주소를 변경 하시겠습니까?
- 30. 컴퓨터 아키텍처에서 실제 주소를 계산하는 방법은 무엇입니까?
공유 메모리를 고려해야합니다. 각 프로세스는 자체의 가상 - 물리적 맵을 필요로하지만, 시스템은 물리적 메모리 전체에 대한 개요를 필요로하므로 프로세스가 실제 메모리에 매핑 된 가상 메모리를 더 많이 필요로 할 때 사용할 수있는 것을 알고 있습니다. –
[가상 메모리의 두 프로세스] 중복 가능 (http://stackoverflow.com/questions/8994571/two-processes-in-virtual-memory) –