[CS][OS]Virtual Memory

HyunDong Lee·2022년 4월 14일
0

짧은CS

목록 보기
4/6
post-thumbnail

Virtual Memory

virtual memory는 메모리 관리 기술, 메인 메모리의 일부분인 것처럼 사용이 가능하다.

가상메모리는 h/w, s/w 모두 이용하여 물리적 메모리 부족을 해소할 수 있음. (어떻게? RAM에 올라온 데이터를 disk로 내보내면서 (swap out))

현대 컴퓨터는 기본적으로 8GB RAM 크기를 가지고 있지만, 동시에 많은 프로그램이 동작하다보면 충분하지 않을 때도 있음. 그래서 Virtual memory를 사용하여 이 메모리 부족 문제를 해소할 수 있다.

Virtual Memory의 동작 방식

Demanding Paging 방식을 사용, 페이지 단위로 현재 필요한 페이지만 메모리에 올리는 방식이다. (Paging 기법은 메모리 관리에 나오는 용어, 물리적 단위로 메모리를 쪼개놓은 방식이다. <-> Segmentation)
컴퓨터를 껏다가 키면 메모리에 올라가 있는 페이지가 없음(page table에 없다는 의미) 그래서 모든 페이지가 valid bit가 0이다. 따라서 Page fault(메모리에 올라가 있지 않아서 disk에서 찾는다. swap in 과정 일어남)가 발생하고 이후 RAM이 꽉차면 적절한 Page를 내쫓아서 메모리 공간을 확보하는 과정을 거친다.

정리하면,
1. 해당 페이지가 메모리에 있는지 확인 (우선 페이지 테이블 확인)
2. 없다면(valid bit - 0인 경우, ) CPU에 인터럽트 신호를 보내 운영체제 내부 해당 인터럽트 핸들러를 call
2-1. 만약 잘못된 주소이거나 보호 위반(존재하지 않는 주소이거나 다른 메모리 영역 침범하는 경우) 시 process를 중지시킨다.
3. 물리적 메모리(physical memory)에 빈 frame이 있는지 확인 (만약 없으면 page replacement 발동! -> page replacement의 주목적은 page fault rate을 최소화하는 것이다.)
4. 해당 페이지를 backing store(디스크)에서 물리적 메모리로 읽어온다. disk read 끝나면 page table entry에 기록, valid - 1로 설정
5. 해당 프로세스가 다시 cpu를 점유하고 running 상태로 변한다
6. instruction 재개

0개의 댓글