본문 바로가기
정글 2기/OS 운영체제

[Operating System 운영체제] Virtual Memory(가상 메모리)

by Dean30 2021. 9. 10.
728x90

[Operating System 운영체제] Virtual Memory(가상 메모리)

 

Non-Continuous allocation

 

Virtual Storagy(Memory)

- Physical or RAM memory + swap memory

- Non-continuous allocation

- 사용자 프로그램을 여러 개의 block으로 분할

- 실행 시, 필요한 block들만 메모리에 적재, 나머지는 swap device(가상 메모리)에 존재

- 기법들

  • Paging system
  • Segmentation system
  • Hybrid paging/segmentation system

 

Address Mapping

- Relative address(상대주소) : 프로그램의 시작 주소를 0으로 가정한 주소

- Relocation(재배치) : 메모리 할당 후, 할당된 주소(allocation address)에 따라 상대주소들을 조정하는 작업

- Address mapping : Virtual adress -> real address

  • Virtual address(가상주소) -> 논리 주소, 연속된 메모리 할당을 가정한 주소
  • Real address(실제주소) -> 실제 메모리에 적재된 주소

 

-Virtual address : v =(b,d)

  • b = block number
  • d = displacement(offset) in a block

 

 

Block Mapping

 

-Block map table(BMT) : Address mapping 정보 관리

  • Kernel 공간에 프로세스마다 하나의 BMT를 가짐

 

 

- 실제 주소 찾아가는 과정

 

- Block Mapping

  1.   프로세스의 BMT에 접근
  2.   BMT에서 block b에 대한 항목(entey)를 찾음
  3.   residence bit 검사
  4.   실제 주소 r 계산 (a+d)
  5.   r을 이용하여 메모리에 접근

 

 

Paging system

 

Summary

- 프로그램을 고정된 크기의 block으로 분할(page) / 메모리를 block size로 미리 분할(page frame)
외부 단편화 문제 없음메모리 통함 / 압축 불필요프로그램의 논리적 구조 고려 X(문제, Segmentation system이 해결)
- 필요한 page만 page frame에 적재하여 사용
메모리의 효율적 활용
- Page mapping overhead
메모리 공간 및 추가적인 메모리 접근이 필요전용 HW 활용으로 해결 가능 -> 비용 증가

 

Paging system 특징

 

- 프로그램을 같은 크기의 블록으로 분할(Pages)

- 용어

  • page : 프로그램의 분할된 block
  • page frame : 메모리의 분할 영역, Page와 같은 크기로 분할

- 특징 (Segmentation 대비)

  • 논리적 분할이 아님(크기에 따름) -> Page 공유 및 보호 과정이 복잡함 (물리적으로 따로 떨어져 있어서)
  • 단순, 효율적
  • No external fragmentation : 메모리 공간 충분한데 못 올라가는 경우 -> internal fragmentation 발생 가능(마지막에 작은 크기)
  • Window Page size = 4KB

 

Address Mapping

 

- Virtual address : v = (p, d)

  • p : page number
  • d : displacement(offset)

- Address mapping: PMT(Page Map Table) 사용

- Address mapping mechanism

  • Direct mapping(직접 사상)
  • Associative mapping(연관 사상)

 

- Direct mapping 문제점

  • 메모리 접근 회수가 2배(성능 저하)
  • PMT를 위한 메모리 공간 필요

- Direct mapping 해결방안

  • Associative mapping(TLB, Translation Look-aside Buffer) - PMT를 위한 전용 하드웨어, 병렬로 서치하여 매우 빠름, 비쌈
  • PMT를 위한 전용 기억장치(공간) 사용

 

 

Page Sharing

- 같은 기능에 대해 같은 메인 메모리 영역을 사용. 같은 기능에 대한 주소를 테이블 마다 엔트리 값을 다르게 주면 문제 발생.  PMT table의 entey #를 같게 만들어 줌으로 해결

 

 

Page Protection - 접근 권한 관리

- 공유할 수 있다는 건 보안 문제 생김

- Protection bit 사용 (PMT에 페이지가 할 수 있는 것들을 적어놓음

 

 

 

 

Segmentation system

 

Summary

프로그램을 논리 단위로 분할(segment) / 메모리를 동적으로 분할
- 내부 단편화 문제 없음
- Segment sharing/protection이 용이함
- Paging system 대비 관리 overhead가 큼 (Segment 크기가 달라서)

필요한 segment만 메모리에 적재하여 사용
- 메모리의 효율적 활용

Segment mapping overhead (Paging system 과 같은 단점 가짐)
- 메모리 공간 및 추가적인 메모리 접근이 필요
- 전용 HW 활용으로 해결 가능(TLB안에 SMT 넣기)

 

Segmentation system 특징

 

 

- 프로그램을 논리적 block으로 분할(segment) - Block별로 크기가 다를 수 있다

- 메모리를 미리 분할 하지 않음 (VPM과 유사)

- sharing/protection 용이 - 논리적으로 나눠놔서 protection bits를 통해 access 권한 부여로 protection이 쉬움

- 메모리 관리 및 overhead가 큼

- No internal fragmentations <-> External fragmentation 발생 가능

 

 

 

 

 

Memory management

 

- Segment sharing / protection : 논리적으로 분할되어 있어, 공유 및 보호가 용이함

 

 

Paging vs Segmentation


Paging system Segmentation System
장점
Simple
Low overhead

단점
No logical concept for partitioning
Complex page sharing mechanism
장점
Logical concetp for partitioning
Simple and easy sharing mechanism

단점
High management overhead

 

 

Hybrid paging/segmentation system

 

Summary

논리적 분할(segment)과 고정 크기 분할(page)을 결합
- Pag sharing / protection이 쉬움 (segment 장점)
- 메모리 할당/관리 overhead가 작음 (page 장점)
- No external fragmentation (segment 특징)
- Internal fragmentation (segment  특징)

전체 테이블 수 증가
- 메모리 소모 큼
- Address mapping 과정이 복잡

Direct mapping의 경우, 메모리 접근이 3배
- 성능이 저하될 수 있음

 

 

 

Hybrid paging/segmentation system 특징

- 장점만 결합

  • 논리 단위 segment로 분할
  • 각 segment를 고정된 크기의 page들로 분할

- memory access를 3번 해야하는 단점이 있다.

 

Address mapping

- Virtual address : v = (s, p, d)

- SMT와 PMT 모두 사용

- Address mapping - direct, associated 등

 

 

 

 

 

출처 : 유튜브 HPC Lab. KOREATECH Lec 9. Virtual Memory

728x90

댓글