0604 OS 수업노트 (ch8.2)

Ji·2021년 6월 4일

Paging


  • paging : 프로세스를 일정 크기인 페이지로 잘라서 메모리에 적재. (프로세스를 일정 단위로 잘라서 적재.) =>메모리의 효율적 관리가 목표 (external fragmentation 해결)
    / 프로세스 뿐 아니라 hole도 작은 조각으로 나눠서 메모리에 할당 가능.

  • frame : 메모리를 나눈 조각 (페이지를 프레임에 할당)

  • page table : 페이지를 관리하는 MMU (페이지 테이블 안의 페이지 개수는 프로세스를 몇 페이지로 페이징 할지에 따라서 결정됨)

  • Logical address : CPU에서 내보내는 주소 (2진수로 표현). 하위 n 비트는 offset(d:displacement) & 상위 m-n비트는 페이지의 번호에 해당. (n = d, m-n = p)

  • Physical address : Logical address가 페이지 테이블을 통해 바뀐 주소 (메모리에서 이 주소를 찾음)

Paging Example

ex1)

ex2)

Page size = 16bytes
Page Table: 5, 3, 2, 8, 1, 4
logical address 50번지의 physical address는??

d는 페이지 크기에 따라 달라짐. 현재 페이지 크기는 16byte이다. 이는 2^4 => d = 4

p는 d를 제외한 나머지 크기.
현재 logical address는 50이고, 이진수로 나타내면 110010. 먼저 d는 4이므로 이 이진수의 뒤에서 4칸이 d. d를 제외한 나머지 2칸이 p.

50 = 110010
p = 11
d = 0010
p는 이진수로 11, 십진수로 3. 즉, 페이지 테이블의 페이지 번호 3번을 가리키는 것. 페이지 3번에 해당하는 프레임 번호는 8번이므로, physical address를 구성하는 f값은 8이 라고 할 수 있음. 따라서 이를 2진수로 나타내면,

f = 1000
d = 0010
physical address = 10000010
최종적으로 physical address는 f와 d로 구성되어 있으므로 physical address는 이진수로 10000010 이 되고, 십진수로 130 번지가 됨.

또, d가 2이므로 8번째 프레임의 시작주소는 128번지(16 * 8).

but paging은 internal fragmentation이 발생할 수 있다는 문제가 존재.

Address Translation Architecture

Page Table

  • 가상 주소와 물리 메모리 주소의 매핑 테이블
  • Context Swithching 시 페이지 테이블 교체 비용이 적음
  • but 하나의 메모리 접근을 위해 페이지 테이블을 거쳐야 함 -> 따라서 메모리를 2번 읽게 되고, 결과적으로 접근시간은 2배가 걸린다는 단점 존재.

Translation look-aside buffer (TLB)

  • A cache for the page table
  • 캐시 메모리(하드웨어)에 별도로 (페이지 넘버 -프레임 넘버)에 대한 매핑 정보를 담고 있는 테이블 ( page table은 메모리에 존재)

Hit vs Miss

  • TLB hit : TLB에 페이지 넘버가 존재할 때. TLB덕분에 페이지 테이블에 접근하지 않을 수 있음. 결과적으로 메모리에 2번 접근하지 않고, 1번만 접근 가능.
  • TLB miss: TLB에 페이지 넘버가 존재 X. 기존의 방식에 TLB 접근시간이 추가. 기존보다 시간이 더 소요됨.

Effective Access Time (EAT)

  • TLB를 사용할 때 평균 메모리 접근 시간
  • 아래의 예시는 140ns로, 40%느려졌다고 할 수 있음.

Summary

참고
https://velog.io/@codemcd/%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9COS-13.-%ED%8E%98%EC%9D%B4%EC%A7%95

profile
공부방

0개의 댓글