기어가더라도 제대로

[운영체제-김덕수 교수님] 가상 메모리(2/5) - 페이징 시스템 본문

CS/운영체제

[운영체제-김덕수 교수님] 가상 메모리(2/5) - 페이징 시스템

Damagucci-juice 2022. 8. 10. 14:24
  • 프로그램을 같은 크기의 블록으로 분할(pages)
  • 용어 정리
    • page
      • 프로그램의 분할된 블록
    • page frame
      • 메모리의 분할 영역
      • page와 같은 크기로 분할

가상 메모리(2/7) - 페이징 시스템 image

  • 특징
    • 논리적 분할이 아님(크기에 따른 분할)
      • page 공유(shareing) 및 보호(protection) 과정이 복잡함
        • segmentation 대비
    • simpe and efficeint
      • segmentation 대비
    • No external fragmentaion
      • Internal fragmentation 발생 가능
    • 일반적인 block 사이즈 = 4kb

가상 메모리(2/7) - 페이징 시스템 image


‏‏‎ ‎

Direct mapping 

  • block mapping 방법과 유사
  • 가정
    • PMT를 커널 안에 저장
    • PMT entry size = entry size
    • page size = pageSize?

가상 메모리(2/7) - 페이징 시스템 image

1. 해당 프로세스의 PMT 가 저장되어 있는 주소 B에 접근
2. 해당 PMT 에서 Page P 에 대한 Entry 찾음
    - P의 Entry 위치 = B + P * entrySize
3. 찾아진 entry의 존재 비트 검사
    1. Residence bit = 0 인 경우(page fault),
        Swap device에서 해당 page를 메모리로 적재
        PMT를 갱신한후 3-2. 수행
    2. Residence bit = 1인 경우,
        해당 Entry에서 Page frame 번호 P'를 확인
4. P'와 가상 주소의 변위 D를 사용하여 실제 주소 R 형성
    - R = P' * pageSize + D
5. 실제 주소 R로 주기억 장치에 접근
  • Page fault 를 줄이는 것이 Context switch를 줄이는 것이다.
    • Page fault 가 발생하면 Swap device로 데이터를 찾으러 간다(I/O 작업)
    • I/O 작업이 발생하면 process의 상태를 asleep 상태로 넘기고 다른 프로세스에게 running 상태를 넘겨준다.
    • 결과적으로 Context Switch 발생

‏‏‎ ‎

페이지 폴트가 난 시간을 보여줌

가상 메모리(2/7) - 페이징 시스템 image

  • 문제점
    • 메모리 접근 횟수가 2배
      • 성능 저하
      • 커널(메모리에 있음)에 접근했다가 실제 메모리 주소로 가니까 2번 이동
    • PMT를 위한 메모리 공간 필요
  • 해결방안
    • Associative mapping(TLB)
    • PMT를 위한 전용 기억 장치(공간) 사용
      • Dedicated register or cache memory
    • Hierarchical paging
    • Hashed page table
    • inverted page table

Associative mapping(TLB)

  • TLB(translation look-aside buffer)에 PMT 적재
    • Associative high-speed memory
  • PMT 를 병렬 탐색
  • Low overhead, high speed

‏‏‎ ‎

가상 메모리(2/7) - 페이징 시스템 image

  • 하드웨어적으로 P를 주면 병렬적으로 탐색을 해서 P'를 알아내는 TLB
    • 신기하다.
  • 단점으로 하드웨어가 비싸다는 문제가 있다.
    • 크게 만들기 어려움

 

Hybrid Direct / Associative Mapping

  • 두 기법을 혼합하여 사용
    • HW 비용은 줄이고, Associative mapping 의 장점 활용
  • 작은 크기의 TLB 사용
    • PMT: 메모리(커널 공간)에 저장
    • TLB: PMT 중 일부 entry들을 적재
      • 최근에 사용된 page들에 대한 entry 저장
    • Locality(지역성) 활용
      • 프로그램의 수행과정에서 한번 접근한 영역을 다시 접근(temporal locality) 또는 인접 영역을 다시 접근(Spatial locality) 할 가능성이 높음

다음과 같은 과정이 추가된다

- 프로세스의 PMT가 TLB에 적재되어 있는지 확인
1. TLB에 적재되어 있는 경우
    - residence bit를 검사하고 page frame 번호 확인
2. TLB에 적재되어 있지 않은 경우, 
    - Direct mapping으로 page frame 번호 확인
    - 해당 PMT Entry 를 TLB 에 적재함

가상 메모리(2/7) - 페이징 시스템 image

  • 아래에 테이블을 지나는 것을 보면 Direct mapping과 같은데, TLB를 확인하는 과정만 거치는 것이다.
  • TLB 있으면 TLB에서 가고,
  • 없으면 Direct Mapping 찾아서 가다가, TLB에 등록해주고. 이게 다다. 와우!
Comments