티스토리 뷰
가상메모리란?
-프로그램의 주소 공간을 실제 메모리에서 분리 시켜놓은 기술입니다. 가상주소는 프로그램 주소 공간이고, 실제 주소는 실제 메모리의 위치입니다.
가상 메모리와 실제 메모리의 공간은 서로 분리된 독립적인 공간이며, 실제 메모리보다 가상 메모리의 크기가 훨씬 큽니다. CPU에서 가상메모리를 가지고 있고 이를 사용할때 MMU라는것을 통해서 실제 메모리로바꿔서 사용합니다.
가상메모리를 쓰는 이유는, 바로 실제 메모리로 매핑하면 메모리관리가 복잡해지고, 보안이 취약해지며, 오류 발생할 확률이 높아지기때문입니다.
(가상 메모리는 개념상으로 보면 매우 비효율적이지만 지역성이 좋아 사용합니다)
가상 메모리의 장점
- 메인 메모리 효율적사용
-가상메모리에 전체 전체 데이터를저장하고 일부를 실제 메모리로 가져와서 실행하는 방식으로 메인 메모리를 효율적으로 사용할 수 있다. - 메모리 관리 단순화
-가상메모리를 사용하여 실제 메모리에 직접 매핑을 하지않아도 되어서 메모리 관리가 쉬워진다. - 공간 분리
-가상 메모리를 사용해 프로세스들끼리의 공간을 나눠 서로 독립적인 공간을 가지게 해준다. 가상 메모리에 있는 프로세스들은 자기자신의 전부인줄 알고 다른 프로세스는 신경쓰지 않습니다.
MMU(Memory Management Unit)
-가상 메모리에서 실제 메모리로 변환시키는 것 이것은 가상 주소 공간에 가서 가상주소를 실제 메모리의 주소로 변환을 함. 즉, virtual address 에서 physical address로 변환하는 unit입니다.
(이때 , 실제 메모리의 특정 구역은 커널이나 특정 프로그램이 고정적으로 할당되기에 제한될 수 있습니다.)
실제 구조
실제 구조는 다음과같습니다 왼쪽에 있는게 CPU, 가운데에 있는게 MMU 오른쪽에있는게 실제 메모리와 디스크입니다.
CPU는 MMU에 있는 가상메모리의 내부에 있는 Page map에 있는 정보를 가져와 연산을 합니다. 실제메모리와 직접적으로 연결을 하진 않습니다.이때 발생할 수 있는경우가 2가지가 있는데 다음과같습니다.
- Page hit - 해당 page가 실제 메모리와 연동되어 있는것, cpu가 요청한 페이지가 이미 메모리에 존재하니 운영체제가 별도의 작업을 수행할 필요없이 요청한 메모리에서 가져와 처리를 합니다. 위의 예시는 VP 1, VP3 , VP5가 있습니다.
- Page falut - 해당 page가 null이거나 디스크에 연동되어 있는것 즉, 실제 메모리에 연동되지 않은 것 입니다. cpu가 요청한 페이지가 실제 메모리에 없는 경우라 운영체제에서 page 교체 알고리즘을 사용해 현재 메모리에 올라와있는 페이지중 하나를 디스크로 내리고 요청한페이지를 실제 메모리에 로드하는 과정을 거치고 처리를해야합니다. 위의 예시는 VP2, VP4 ,VP6가있습니다.
이때, 가상메모리는 여러개가 존재할 수 있으며, 실제 메모리는 한개만 존재할 수 있습니다. 여기서 실제메모리의 한 부분에는 하나만 들어갈 수있어, 가상메모리가 동시에 같은 실제 메모리를 쓸 수 없습니다. 따라서 여러개의 가상메모리를 사용할땐 이를 주의해야합니다.
다음은 Page falut가 발생했을때 디스크에서 메모리로 해당 페이지를 올리는 과정입니다.
cpu가 VP6를 가리켰을때 page falut가 나타납니다. 이 때, VP 6는 실제메모리에 있지않고 디스크에 저장되어있는데, 이를 실행하기 위해선 VP 6 를 실제 메모리로 옮겨야합니다. 메모리에 있는것중 하나인 VP 5를 디스크로 내리고 VP 6를 메모리로 올립니다. 그리고 다시 CPU가 가리키면 page hit가 나와 메모리에서 VP6를 가지고 옵니다. 이 변환과정이 완료될때 까지 대기하는데 이때 성능저하가 발생합니다.
Demand Paging
-가상 메모리 관리 기법중 하나로 앞에서 봤던 가상메모리를 실제 메모리에 올리는 방식을 프로세스 실행시 필요한 페이지만 동적으로 할당하는 방식을 말합니다.
이는 필요한 페이지를 미리 올리는방식이 아니라 필요할때 즉각 올리는 방식으로 더 적은 메모리공간에서도 효율적으로 쓸수 있다는 장점이 있지만, page falut 처리과정에서 오래걸려 성능저하가 발생할 수 있습니다.
전체 가상 메모리의 크기 > 실제 메모리 크기
-전체 가상 메모리의 크기가 실제 메모리 크기 보다 크다면, page falut가 일어날 확률이 더 높습니다. 즉 이 page falut가 더욱 빈번히 일어남에 따라 성능저하가 심해지므로 주의해야합니다.
'OS' 카테고리의 다른 글
Address Translation 변환 과정 (VA -> PA) (0) | 2023.05.15 |
---|---|
Copy-on-Write (mmap) (0) | 2023.05.08 |
프로그램 -> 프로세스 변환과정 (컴파일) (0) | 2023.04.06 |
파일모드란? (0) | 2023.04.06 |
LR 파싱 과정 (0) | 2023.04.04 |