가상 메모리 지원 없이 여러 프로세스를 지원할 수 있습니까?

가상 메모리 지원 없이 여러 프로세스를 지원할 수 있습니까?

가상 메모리 지원 없이 여러 프로세스를 지원할 수 있습니까? 그렇다면 좀 더 알고 싶습니다.

답변1

하드웨어 지원이 없더라도(아니요메모리 관리 유닛), 모든 포인터는 물리적 주소를 나타냅니다. 그러나 일반적으로 MMU를 통해 제공되는 몇 가지 주요 기능은 손실됩니다.

  • 포인터는 항상 RAM의 특정 위치를 가리키므로 교환은 수행될 수 없습니다(또는 매우 제한된 방식으로만 수행될 수 있습니다). 일반적으로 MMU가 지정된 가상 주소에 대한 물리적 페이지를 찾을 수 없는 경우 MMU는 예외를 발생시키고 운영 체제에서 제공하는 예외 처리기가 스왑에서 페이지를 가져옵니다.
  • 포인터는 검사 없이 역참조되므로 각 프로세스는 다른 프로세스의 메모리와 커널 메모리에 액세스할 수 있습니다. 일반적으로 MMU가 지정된 가상 주소에 대한 물리적 페이지를 찾을 수 없으면 예외가 발생하고 운영 체제에서 제공하는 예외 처리기가 잘못된 액세스를 시도하는 프로세스를 종료합니다.
  • 동일한 포인터는 서로 다른 프로세스에서 동일한 의미를 갖기 때문에 쉽게 구현할 수 없습니다.십자가. 일반적으로 이것이 수행하는 작업 fork은 프로세스의 물리적 메모리를 복사하고 동일한 가상 주소에서 새로운 물리적 주소로 매핑되는 새로운 가상 메모리를 생성하는 것입니다.

일부 Unix 계열 운영 체제는 MMU 없이 시스템에서 실행될 수 있습니다.

¹ 현대 유니스에서는 일반적으로 이 작업이 수행됩니다.게으른(기록 중 복사), 이는 물리적 페이지를 찾을 수 없을 때 MMU에 의존하여 예외를 발생시킵니다.

답변2

물론 위에서 언급한 것처럼 메모리 보호 등 문제가 될 수 있는 몇 가지 제한 사항이 있습니다. 예를 들어 μClinuxhttp://www.uclinux.org/가상 메모리를 구현하지 않고 여러 프로세스를 지원합니다. 일부 CPU(적어도 Analog Devices Blackfin과 같은)는 MPU(메모리 보호 장치)를 제공합니다.http://docs.blackfin.uclinux.org/doku.php?id=bfin:mpu. 이를 통해 가상 메모리가 적은 운영 체제에서도 메모리를 분할할 수 있습니다.

답변3

어떻게 정의하느냐에 따라 다르다프로세스그리고기억의 측면에서.

가상 메모리의 기능 중 하나는 파티셔닝입니다. 분할 없이 여러 프로세스를 실행하는 것이 가능하지만 이는 동일한 주소 공간을 공유하는 프로세스라기보다는 여러 스레드를 실행하는 것과 비슷합니다.

관련 정보