justgo_developer

가상메모리(virtual memory) 본문

IT/운영체제

가상메모리(virtual memory)

다날92 2018. 1. 11. 21:15
728x90
반응형

가상메모리

: 한정된 물리 메모리의 한계를 극복하고자 디스크와 같은 느린 저장장치를 활용해, 더 많은 메모리를 활용할 수 있게 해 주는 것


Principle of Locality(지역성의 원리)

: 프로그램이 가장 최근에 접근했던 데이터를 다시 접근하거나,

최근에 참조했던 데이터 근처의 주소를 참조하는 경향이 있음.


*Principle of Locality라는 특성 덕분에 virtual memory가 효과적으로 운영 가능


Thrashing(쓰레싱)

: 너무 자주 페이지 교체가 일어나는 현상.

 어떤 프로세스가 계속적으로 페이지 부재가 발생하여 프로세스의 처리시간보다 페이지 교체 시간이 더 많아 지는 현상


■ Paging


- simple paging 기법에 비해 page number에 해당하는 bit수가 많아졌다.

- simple paging 기법에 비해 page table에 여러 종류의 bit가 추가되었다.


Present bit(P)

- 해당 page가 main memory에 올라와 있는지 아닌지를 알려줌

Modify bit(M)

- 해당 page가 main memory에 올라온 이후 수정이 되었는지 아닌지를 알려줌

- 수정이 안된 page라면 그 page를 교체시킬 때 disk에 다시 쓰지 않아도 된다.

(수정이 된 page라면 disk에 그 수정을 반영해 놓아야 한다.)

Other control bits

- protection/sharing


Example)

virtual memory 2^31

page size 2^9

2^22 pages

문제점 : 2^22 크기의 page table이 필요하다.

solution

: page table도 일부만 main memory에 올려놓자.

Two-level paging System 사용


다른 해결책

-> Inverted page table


virtual address의 page number -> hash value

hash value -> inverted page table entry 번호

inverted page table entry 번호 = physical frame 번호


Inverted page table은 page number, process id, control bits, chain pointer 값들을 가지고 있다.



◆ Translation Lookaside Buffer(TLB)

virtual memory reference는 2개의 physical memory access가 필요하다.

1. fetch the page table

2. fetch the data

->memory access을 2배로 만든다.

  이 문제를 극복하기 위해 TLB라고 불리는 고속의 캐시를 사용한다.

이 캐시는 최근 사용된 page table entries을 저장한다.


TLB 동작 방식

1. 주어진 virtual address에서 page table entry가 TLB 상에 존재한다면(TLB hit)

   frame number가 검색되고 real address가 형성된다.

2. TLB상에서 page table entry가 없다면(TBL miss), page table 인덱스하는 page number를 사용한다.

3. page가 main memory에 이미 있는지 점검한다.

(메인메모리에 없다면 page fault)

4. TLB는 새로운 page table entry를 포함하기 위해 업데이트한다 .


■ Segmentation


주소변환



■ Paged Segmentation(paging+segmentation)

먼저 segmentation 한후, 그 다음 paging을 수행

Segmentation과 paging 장점을 혼합

paged segmentation을 위해 기존 segmentation에서 변경되는 부분

1. 기존 base address 대신 해당 segment의 page table위치를 저장

2. 기존 bound값 대신 해당 segment의 page개수를 저장

728x90
반응형

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

페이징(Paging)  (0) 2018.01.10
메모리관리(memory management)  (0) 2018.01.06
교착상태(Deadlock)  (0) 2018.01.06
세마포어(Semaphore)  (0) 2018.01.03
병행성(concurrency)  (0) 2018.01.02