Frame과 Page

Frame : 물리 메모리를 사용하는 최소 크기 단위 Page : 가상 메모리를 사용하는 최소 크기 단위

📖가상 메모리

프로세스 전체가 메모리 내에 올라오지 않더라도 실행이 가능하도록 하는 기법

  • 물리 메모리로부터 논리 메모리를 분리해 메인 메모리를 매우 큰 배열로 추상화시켜주면서 메모리의 크기 제약에서 자유로울 수 있도록 함 → 물리 메모리 크기의 한계를 극복
  • 프로그램이 CPU에서 실행되려면 실행에 필요한 부분이 메모리에 올라와있어야 하는데, 메모리는 한정적이므로 여러 프로그램이 동시에 수행되는 환경에서는 운영체제가 적절히 프로세스에 메모리를 할당해야 함 → CPU에서 당장 수행해야하는 부분만 메모리에 올리고 나머지는 디스크의 swap 영역으로 놓았다가 필요해지면 기존에 메모리에 있었던 부분과 교체하는 방식

📖요구 페이징(Demand Paging)

프로그램 실행 시 프로세스를 구성하는 모든 페이지를 한꺼번에 메모리에 올리는 것이 아니라, 당장 사용될 페이지만 메모리에 올리는 방식

요구 페이징 기법을 사용할 때 나타날 수 있는 문제점

🔖메모리에 프로세스가 필요로 하는 페이지가 없다면? 이 현상을 Page-Fault라고 하고, 요청된 페이지를 하드디스크에서 찾아 빈 프레임에 로딩함

🔖페이지를 올릴 빈 프레임이 없다면? 메모리에 올라와 있는 페이지 중 하나를 디스크로 쫓아내 메모리에 빈 공간을 확보해 새로운 페이지를 올려야 함 이 때, 교체할 희생 페이지를 찾는 알고리즘을 페이지 교체 알고리즘이라고 함

📖페이지 교체 알고리즘

Page-Fault가 발생해 하드디스크에서 페이지를 찾아 빈 프레임에 로딩하려고 했지만 빈 프레임이 없는 경우, 새로 올릴 페이지와 교체할 희생 페이지를 찾는 알고리즘

📎FIFO(First In First Out)

메모리에 가장 먼저 들어온 페이지를 교체하는 알고리즘 기법

  • 이해가 쉽고 구현이 간단
  • 들어온 시간을 페이지에 기록하거나, 페이지가 올라온 순서를 큐에 저장
  • Belady의 Anomaly 현상 발생 가능

Belady's Anomaly

프레임 수가 많아질수록 페이지 결함의 횟수는 감소할 것이라 생각하지만, 물리적 공간이 늘어났음에도 성능이 더 나빠지는 현상

📎OPT(Optimal)

앞으로 가장 오랫동안 사용되지 않을 페이지를 교체하는 알고리즘 기법

  • 가장 페이지 교체 수가 적음(성능이 가장 좋음)
  • 프로세스가 앞으로 사용할 페이지를 미리 알아야 함 → 실제 구현 불가능 (비교 연구 목적을 위해 사용)

📎LRU(Least Recently Used)

가장 오랫동안 사용되지 않은 페이지를 교체하는 알고리즘 기법

  • 과거의 데이터를 바탕으로 페이지가 사용될 시간을 예측Temporal Locality(시간 지역성) 성질 고려 : 최근에 참조된 페이지가 가까운 미래에 다시 참조될 가능성이 높은 성질
  • 많은 운영체제가 채택하는 알고리즘
  • 프로세스가 주기억장치에 접근할 때마다 참조된 페이지에 대한 시간을 기록해야하므로 계수기나 스택과 같은 별도의 하드웨어가 필요하며 시간적인 큰 오버헤드가 발생

📎LFU(Least Frequently Used)

참조 횟수가 가장 적은 페이지를 교체하는 알고리즘 기법

  • 교체 대상인 페이지가 여러 개일 경우, LRU 알고리즘을 따라 가장 오랫동안 사용되지 않은 페이지로 교체
  • 잘 쓰이지 않음

  • 위 사진처럼 초기에 한 페이지를 집중적으로 참조하다가 이후 다시 참조하지 않는 경우, 앞으로 사용하지 않아도 초기에 사용된 참조 횟수가 높아 메모리에 계속 남아있기 때문에 메모리가 낭비됨

📎MFU(Most Frequently Used)

참조 횟수가 가장 많은 페이지를 교체하는 알고리즘 기법

  • 참조 횟수가 적은 페이지가 최근에 사용된 것이기 때문에 앞으로 사용될 가능성이 높다는 판단
  • 잘 쓰이지 않음