연예인

가상 메모리 (Virtual Memory System) 핵심 요약 정리 (1)

비하인드톡톡 2022. 11. 4. 14:04

가상 메모리
가상 메모리

가상 메모리

가상 메모리 프로세스가 실행된 모든 코드는 메모리에 로드되어야 했고 메모리 용량보다 더 큰 프로그램을 실행할 수 없었다. 그러나 실제로는 대부분의 시간이 코드의 극히 일부에만 할애되었고, 프로세스는 특정 시점에 항상 소량의 주소 공간을 사용하였기 때문에 이러한 접근 방식은 매우 비효율적이었다.
 
가상 메모리(가상 메모리)는 물리적 메모리 크기의 한계를 극복하기 위한 기술이다. 어떤 과정을 실행할 때, 그것의 일부만 메모리에 로드하고 나머지는 디스크에 남겨둔다. 이것은 모든 과정이 물리적 기억에 "마치"인 것처럼 보이게 합니다. 즉, 물리적 기억이 훨씬 더 많습니다.

 

결과적으로, 메모리 내의 소량의 주소 공간은 프로세스를 충분히 수행할 수 있으므로 더 많은 프로그램이 동시에 실행될 수 있다.

 

요구 페이징

요구 페이지는 백업 스토어에 프로세스 이미지를 저장합니다. 백업 스토어는 하드웨어의 일부인 교환 장치로 페이지가 일시적으로 저장된 공간입니다. 프로세스는 페이지의 조합이므로 필요한 페이지만 메모리에 로드합니다. 이는 "demandpaging"이라 불리는데, 이는 필요한 페이지만 메모리에 업로드됨을 의미한다.

페이지 기술을 사용하면 페이지 테이블이 남습니다. MMU 재배치 기록은 논리적인 주소를 물리적 주소로 변환하는 주소 변환 과정을 통해 CPU 관점에서 연속적인 메모리 공간처럼 보이도록 프로세스를 이해할 수 있어야 한다.

 

그러나 애플리케이션 페이지 기법을 사용하여 일부 페이지는 메모리에 업로드되고 다른 페이지는 백업 스토어에 저장됩니다. 따라서 페이지 테이블을 작성할 때는 페이지 테이블을 구분하는 도구가 필요합니다. 따라서 유효한 비트 필드는 페이지 표에 추가됩니다. 1과 0의 값으로 메모리에 로딩되는지 여부를 구별할 수 있다.

 

Pure Demanding Paging

처음부터 모든 페이지를 로드하지 않고 CPU가 요구할 때 페이지를 로드하는 방법입니다. 즉, 페이지가 필요하기 전에는 해당 페이지를 메모리에 로드하지 않는 방법입니다. 메모리에는 페이지가 없기 때문에 프로그램이 실행되자마자 페이지 오류가 발생한다.

 

퓨어 송장 페이지는 메모리를 최대한 효율적으로 사용할 수 있다. 다만 처음부터 페이지 고장이 발생하기 때문에 속도면에서 느립니다.

 

Prepaging

준비는 순수하고 까다로운 페이지와는 정반대다. 프로그램이 미리 실행될 때 필요하다고 인정되는 페이지를 게시하는 것이다. 페이지 장애가 발생할 가능성은 적기 때문에 속도 면에서는 더 빠르지만 이전에 발생한 페이지를 사용하지 않으면 메모리가 손실됩니다.

 

가상 메모리 쓰기 시 복사 (copy-on-write)

프로세스를 신속하게 시작하기 위해 첫 번째 명령을 포함하는 페이지를 요구했다. 단 fork() 시스템 호출에서 프로세스가 발생할 경우 페이지 공유와 유사한 기법을 사용하여 첫 번째 요청 페이지도 생략할 수 있습니다.

 

이 기술은 프로세스 생성 시간을 더욱 단축할 뿐만 아니라 새로 생성된 프로세스에 새로 할당해야 할 페이지 수를 최소화한다.

 

쓰기 시 복사 처리 과정에서 페이지 복사본을 만들 때 빈 페이지가 어떻게 할당되는지 보는 것이 중요합니다. 많은 운영 체제가 요청을 처리하기 위해 일련의 빈 페이지를 보유하고 있습니다.

프로세스에 공백 페이지를 할당하면 서면으로 복사하여 파이프나 산의 공간을 확장할 때입니다. 운영체제는 일반적으로 수요에 제로 충전 기술을 사용하여 페이지를 할당한다. 가상 메모리 페이지를 할당할 때 콘텐츠는 위의 내용을 지우려면 0(0)으로 채워야 한다.

일부 운영체제에서는 vfork(가상 메모리 슬롯)라 불리는 시스템 호출이 제공된다. 포크(fork) 기능과 달리 vfork()는 모공 과정을 중지시키고 유아 과정이 모공 관리 공간을 사용하도록 한다.

 

vfork()는 작성 시 복사본을 사용하지 않으므로 자녀 프로세스가 어머니의 주소 공간에서 페이지를 수정하면 변경된 페이지가 재개 시 원래 프로세스에 표시됩니다.

 

따라서 부모의 모든 페이지를 복사하는 대신 쓰기 위해 복사하는 방법을 사용할 수 있습니다. 부모 페이지는 아이를 만드는 과정이 시작되는 시간 동안 함께 사용된다. 현재 전체 페이지는 가상 메모리 작성 시 복사 페이지로 표시됩니다. 즉, "모든 프로세스가 공유 페이지에 쓸 때 페이지 복사본이 생성됩니다."

 

2022.11.03 - [운영체제] - [운영체제] 메인 메모리 정리 (3) - 스와핑

 

[운영체제] 메인 메모리 정리 (3) - 스와핑

메인 메모리 스와핑 이 세션은 메모리 크기가 꽉 차 있을 때 프로세스를 실행하는 데 도움이 되는 스왑 방법과 메모리 크기보다 더 큰 프로세스를 실행할 수 있게 하는 가상 메모리를 설명한다.

hotpeople.co.kr