Kim Seon Deok

[OS] Virtual Memory, Page Fault 본문

운영체제

[OS] Virtual Memory, Page Fault

seondeok 2022. 12. 4. 16:12

 

 

 

 

Virtual Memory

 

가상메모리는 물리적인 메인메모리의 크기에 대한 한계를 극복하기 위해 만들어진 것이다.

하드디스크에는 여러 프로세서들이 저장되어 있고, 각 프로세서의 필요한 루틴만 메인메모리에 올라간다.

 

 

 

Demand paging

 

프로세스를 페이지 단위로 잘라 메인메모리에 올리는데, 현재 요구되는 페이지만 메인메모리에 올리고 필요하지 않은 건 backing store에 올린다.

하드디스크는 backing store = swap device이다. 

하드디스크 안에있는 p1,p2,p3은 총 110mb로 100mb인 메인메모리에 프로세서 전체를 올릴 수없다.

따라서 각 프로세서를 일정한 크기의 페이지단위로 조각낸 후 필요한 부분만 메인메모리로 올린다.

context switching 될 때마다 page table 내용이 달라진다.

 

페이지 테이블에는 valid bit를 추가한다. 페이지테이블에 있는 page number에 해당되는 값이 메인메모리에 있다면 1(valid), 메인메모리에 없다면 0(invalid)이다.

 

cpu에서 내보내는 주소가 invalid하다면 cpu page table에서 cpu로 인터럽트를 보낸다. → cpu에서는 하던 일 중지하고 os에서 오류처리 하는 루틴으로 jump한다. (프로세서의 invalid한 부분을 하드디스크에서 메인메모리로 가져오도록 하는 루틴) → page table 수정하고 valid bit 1로 수정 → Page Fault

 

 

 

 

Page Fault

 

접근하려는 페이지가 메인 메모리에 없는 상태를 말한다.

접근하려는 페이지가 backing store에는 있는데 메인메모리와 페이지 테이블에는 없어, 페이지 테이블의 valid bit이 0인 경우이다.

 

cpu page table에서 cpu로 인터럽트를 보낸다. cpu하던 일 중지하고 os에서 오류처리 하는 루틴으로 jump한다.

→ 프로세서의 invalid한 부분을 backing store에서 읽어서 메인메모리의 빈공간으로 가져오도록 하는 루틴을 처리한다. = page fault 처리 루틴 = handling 

 

 

pure demand paging

backing store에서 정말 필요한 페이지만 가져오고, 필요하지 않은 부분은 가져오지 않는다.

장점 : 메모리 절약됨

단점 : 처음부터 page fault 발생해 속도가 느리다.

 

prepaging

backing store에서 당장 필요하지 않더라도 미래에 필요할 것이라 예측해 미리 몇 페이지를 가져옴

장점 : 미리 들고온 페이지가 사용되면 page fault가 발생하지 않는다. 속도가 빨라진다.

단점 : 미리 들고온 페이지가 사용되지 않는다면 메모리가 낭비된다.

 

 

swapping

메모리와 backing store를 왔다갔다 할 때 단위가 전체 프로세서 단위이다. 

프로세서 전체를 backing store 밖으로 내보내서 메인메모리에 올리고, 메인메모리에서 backing store로 내보내고....

 

deamand paging

메모리와 backing store를 왔다갔다 할 때 단위가 전체 페이지 단위이다. 

 

 

 

 

 

 

 

유효 접근 시간 (Effective Access Time)

 

 

하드디스크를 위에서 본 모습

 

 

하드디스크를 앞에서 본 모습

cpu가 어떤 주소를 내보냈을 때

운이 좋아 해당 페이지가 메모리에 있다면 valid bit = 1이고 빠르게 읽기만 하면 된다. → Tp

해당 페이지가 메모리에 없다면 valid bit = 0이고 페이지 테이블에서 cpu로 인터럽트 보내고 메인메모리로 점프해 HDD를 뒤져서 해당 메모리를 가져와야 한다. 따라서 시간이 굉장히 오래 걸린다. → Tm

 

valid, invalid 일 경우의 각 시간의 평균을 effective access time이라 한다.

 

p = page fault가 생길 확률

Teff = (1-p)Tm + pTp

 

p값이 작음에도 불구하고 page fault에 소요되는 시간은 굉장히 길다. 따라서 하드디스크보다 속도가 빠른 ssd나 dram을 사용하기도 한다.

 

 

 

 

지역성의 원리 (Locality of reference)

 

reference는 cpu가 참조하는 주소를 말한다.

cpu가 참조하는 주소는 local하다. → 어느 지역에 몰려있다.

메모리 접근은 시간적, 공간적 지역성을 가진다

 

시간적 지역성

한번 읽은 부분은 그 다음에 또 읽을 확률이 높다 → page fault 확률 낮아짐

 

공간적 지역성

현재 1000번지를 읽었다면 다음에는 1000번지 부근을 읽을것이다. → page fault 확률 낮아짐

 

 

 

 

 

 

 

'운영체제' 카테고리의 다른 글

[OS] Allocation of Frames, Page size  (0) 2022.12.04
[OS] Page Replacement  (0) 2022.12.04
[OS] Segmentation  (0) 2022.12.04
[OS] Paging  (2) 2022.11.30
[OS] Contiguous Memory Allocation  (0) 2022.11.30
Comments