운영체제 10. 가상 메모리 관리 (6) - Other Considerations

728x90
반응형

출처 : https://www.youtube.com/watch?v=_QpNwu_MYck&list=PLBrGAFAIyf5rby7QylRc6JxU5lzQ9c4tN&index=37

 

 

 

 

이번 시간에는 우리가 가상 메모리를 관리할 때,  HW component, SW component, page replacement scheme 외에도 신경써야 하는 것들이 무엇이 있는지 배운다.

 

 

Page Size

 

Paging system에서 프로세스는 page로 나뉘고 메모리도 page frame 단위로 나뉜다. 그에 따라, page 크기가 시스템 성능에 많은 영향을 미치게 된다. 그렇다면 page 크기가 큰 것이 좋을까? 아니면 작은 것이 좋을까?

  • 시스템 특성에 따라 다름
    • No best answer! 적절한게 가장 좋음
    • 요즘은 페이지 크기가 점점 커지는 경향
  • 일반적인 page size
    • 2^7 (128) bytes ~ 2^22(4M) bytes
  • Small page size
    • number of page frame 증가 -> Large page table
      • 커널이 관리해야하는 overhead가 큼. High overhead (kernel)
    • 내부 단편화 감소
    • I/O 시간 증가
    • Locality 향상
    • Page fault 증가
  • large page size
    • number of page frame 감소 -> Small page table 
      • 커널이 관리해야하는 overhead가 작음. Low overhead (kernel)
    • 내부 단편화 증가
    • I/O 시간 감소
    • Locality 저하
    • page fault 감소

 

 

Program Restructuring

 

  • 가상 메모리 시스템의 특성에 맞도록 프로그램을 재구성
  • 사용자가 가상 메모리 관리 기법 (ex. paging system)에 대해 이해하고 있다면, 프로그램의 구조를 변경하여 성능을 높일 수 있음

 

 

  • Example
    • Paging system, Page size = 1KB
    • sizeof(int) = 4 bytes

 

 

  • Row-major order for array
  • 이전 코드를 그림으로 나타내면 위 그림과 같다.
  • 이중 for문에서 행 i가 안쪽에서 동작하므로 page 0의 0번째 행 -> page 1의 0번째 행 -> ... -> page 255의 0번째 행 -> page 0의 1번째 행 -> ... 순으로 동작한다.
  • 만약 page frame이 1개라면 계속 page fault가 발생하게 된다.
  • 우리가 paging system에 대한 이해가 있다면, 이중 for문의 i와 j의 순서를 바꿔서 page fault의 발생 횟수를 줄일 것이다.

 

우리가 가상 메모리 시스템의 이해를 가지고 있다면, 코드를 바꿔서 성능을 높일 수 있다.

 

 

TLB Reach

 

  • TLB를 통해 접근 할 수 있는 메모리의 양
    • TLB Reach = (The number of entries) * (page size)
  • TLB의 hit ratio를 높이려면,
    1. TLB의 크기 증가
      • Expensive
    2. Page 크기 증가 or 다양한 page size 지원
      • OS의 지원이 필요
        • 최근 OS의 발전 경향

 

 

 

 

728x90
반응형