1

OS는 실제로 프로세스의 주소 공간을 페이지로 언제 분할합니까?스왑 공간 또는 페이지 파일의 페이지

프로그램을 작성하여 저장한다고 가정합니다. OS가 실행되지 않고 하드 디스크에 유휴 상태로 있어도 프로그램의 주소 공간을 페이지로 나눌 수 있습니까?

크기가 구성 될 수있는 하드 디스크에있는 스왑 공간 또는 페이지 파일이라는 부분이 있으며 실제 메모리에서 하드 디스크로 스왑 된 사용되지 않는 페이지 나 페이지가 포함되어 있음을 읽었습니다.

그래서 프로그램을 실행하기 전에 전체 프로그램을 스왑 공간에 복사하거나 하드 디스크의 어느 부분에서 실행할 수 있습니까?

+0

하드 디스크가 주소 공간에 없습니다. –

+0

@OliverCharlesworth 정교하게 주시겠습니까? – Zephyr

+2

하드 디스크 (또는 더 일반적으로 파일 시스템)가 실제 또는 가상 주소 공간에 있지는 않습니다. 직접 말할 것도 없습니다. 그러나 일반적으로 OS는 [파일을 가상 주소 공간으로 매핑] (https://en.wikipedia.org/wiki/Memory-mapped_file) 할 수 있습니다. –

답변

0

스왑 공간은 익명 페이지의 백업 저장소이거나 "개인"매핑의 더티 페이지입니다 (예 : 실행 파일의 데이터 세그먼트 : 실행 파일에서 읽었지만 변경으로 인해 파일이 업데이트되지 않음).

프로세스의 가상 주소 공간에있는 수정되지 않은 페이지는 여전히 디스크 (또는 모든 라이브러리)의 실행 파일에 의해 백업됩니다.

대부분의 최신 운영체제는 프로세스가 할당하는 모든 가상 메모리 페이지에 대해 충분한 스왑 (실제로는 오버 커미트라고 함)을 보장하기 위해 엄격한 회계 처리를 수행하지 않지만 기존 모델은 OS가 스왑을 예약 할 때 가상 메모리가 할당됩니다.

OS가 실행 중이 지 않고 하드 디스크에 유휴 상태로 있어도 프로그램의 주소 공간을 페이지로 나눌 수 있습니까?

이 부분에 대한 답변을 어디서부터 시작 해야할지 거의 알지 못합니다. 운영 - 시스템의 교과서를 찾을 수 있습니다 (또는 위키 백과) 가서 찾아 :

  • 과정 : 프로그램
  • 실행 파일의 실행중인 인스턴스 : 다른 파일에서 불과 디스크에 바이트 차이가 뭔가 그것을 실행까지 .
  • 가상 주소 대 실제 주소 공간.

프로그램이 실행 중이 아니면 프로세스가없고 주소 공간이 없습니다. 실행중인 경우 각 프로세스에는 자체 가상 주소 공간이 있습니다. (읽기 전용 페이지는 모두 디스크에있는 동일한 파일로 백업됩니다.)

+0

Windows에서 구성하는 가상 메모리의 크기는 모든 프로세스 또는 스왑 공간의 크기에 올바르게 할당 할 수있는 총 가상 메모리와 같습니다. – Zephyr

+0

@Zephyr : 아니요, 파일에서 읽기 전용으로 매핑 된 페이지는이를 스왑 공간이 아닌 백업 저장소로 사용할 수 있습니다. 또한 Windows는 오버 커밋을 허용하고 스왑 공간이 없어도 실행할 수 있습니다. 이 경우 더티 페이지는 실제 RAM을 차지하며 OS는 이러한 물리적 페이지 (일부 운영 체제 용어에서는 "페이지 프레임")를 회수 할 수있는 방법이 없습니다. 음, 스왑의 한 형태로 메모리 내 압축을 사용하는 것 외 ... 어쨌든, 나는 "총"이 실제 메모리 + 페이지 파일 크기를 포함하는지 여부는 모르겠지만 Windows를 사용하지는 않지만 심지어 그렇다면 오버 커밋을 통해 더 많은 가상 할당이 가능합니다. –

+0

이 사이트는 페이징 파일 또는 스왑 공간의 크기를 나타냅니다. https://www.makeuseof.com/tag/virtual-memory-low-heres-fix/ – Zephyr

1

OS는 실제로 프로세스의 주소 공간을 페이지로 언제 분할합니까?

일반적으로 LINKER는 프로그램/프로세스의 초기 상태를 설정하기 위해 응용 프로그램을 페이지로 나누고 실행 파일에 지시 사항을 작성합니다. 프로그램 로더는 실행 파일의 지시에 따라 페이지를 할당합니다.

프로그램을 작성하고 저장한다고 가정합니다. OS가 실행되지 않고 하드 디스크에 유휴 상태로 있어도 프로그램의 주소 공간을 페이지로 나눌 수 있습니까?

위 참조. 링커는 사용자가 작성한 내용을 페이지로 나눕니다.

그래서 프로그램을 실행하기 전에 전체 프로그램을 스왑 공간에 복사하거나 하드 디스크의 어느 부분에서 실행할 수 있습니까?

가상 메모리 시스템 (해당 기능)에서 프로세스에 할당 된 모든 페이지는 페이지 파일에서 해당 위치를 갖습니다. 일부 시스템에서는 여러 페이지 파일이있을 수 있습니다. 예를 들어, 실행 파일은 정적 데이터 및 코드의 페이지 파일이 될 수 있습니다.

+0

마지막 단락은 메모리를 과도하게 커밋하지 않는 시스템에서만 true입니다. 대부분의 최신 OS는 기본적으로 오버 커밋을 수행합니다. 그렇지 않으면 우리는 물리적 RAM과 거의 같은 스왑 공간이 필요합니다. –

+0

위키피디아에서는 MMU가 주소 공간을 https://en.m.wikipedia.org/wiki/Memory_management_unit 페이지로 나눕니다. 첫 번째 진술에 대한 참조를 제공해 주시겠습니까? – Zephyr