메모리 관리 전략 & 가상 메모리 & 캐시의 지역성

송해광·2022년 10월 3일
0

OS

목록 보기
6/8

프로그램의 크기는 계속 증가하고 있기에 메모리는 항상 부족하다.

메모리 관리 전략

연속 메모리 할당

  • 프로세스를 메모리에 연속적으로 할당하는 기법
  • 할당과 제거를 반복하면 외부 단편화가 발생
  • 연속 메모리 할당에서 외부 단편화를 줄이기 위한 할당 방식
    a. 최초 적합 : 가장 처음 만나는 빈 메모리 공간에 프로세스 할당, 빠름
    b. 최적 적합 : 빈 메모리 공간의 크기와 프로세스의 크기 차이가 가장 적은 곳에 프로세스 할당
    c. 최악 적합 : 빈 메모리 공간의 크기와 프로세스의 크기 차이가 가장 큰 곳에 할당 -> 크게 남겨놓으면 다른 걸 넣을 수 있지 않을까?

페이징

  • 메모리 공간이 연속 할당되어야 한다는 제약조건을 없애는 메모리 관리 전략
  • 논리 메모리 -> 고정 크기의 페이지, 물리 메모리 -> 고정 크기의 프레임 블록 으로 나누어 관리
  • MMU ( Memory Management Unit )의 재배치 레지스터 방식을 활용해 CPU가 마치 프로세스가 연속된 메모리에 할당된 것처럼 인식하도록 함

세그멘테이션

  • 페이징 기법과 반대로 논리 메모리와 물리 메모리를 같은 크기의 블록이 아닌, 서로 다른 크기의 논리적 단위인 세그먼트로 분할

세그멘테이션 페이징 혼용 기법

  • 페이징과 세그멘테이션 각각 내부 단편화와 외부 단편화 발생
  • 페이징과 세그멘테이션을 혼용해 단편화를 최소화
  • 매핑 테이블을 2번 거쳐서 느리다.

단편화(Fragmentation)

  • 메모리 공간이 충분함에도 불구하고 프로세스가 메모리에 적재되지 못해 메모리가 낭비되는 현상

1) 외부 단편화(External Fragmentation)

  • 가변 분할 방식에서 메모리에 프로세스가 적재되고 제거되는 일이 반복되면서, 여유 공간이 충분함도 불구하고 이러한 여유 공간들이 조각으로 흩어져 있어(Scattered Holes) 메모리에 프로세스를 적재하지 못해 메모리가 낭비되는 현상

2) 내부 단편화(Internal Fragmentation)

  • 고정 분할 방식에서 프로세스가 실제 사용해야할 메모리보다 더 큰 메모리를 할당받아 메모리가 낭비되는 현상

3) 압축(Compaction)

  • 외부 단편화를 해소하기 위한 방법으로 Scattered Holes를 모으는 방법

  • Scattered Holes를 합치는 과정에서 메모리에 적재된 프로세스를 정지시키고 한쪽으로 이동시키는 작업이 필요해 비효율적

  • 또한, Scattered Holes를 어느 자유공간을 기준으로 모을지 결정하는 알고리즘도 모호

    참고자료 : https://dheldh77.tistory.com/entry/%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C%EB%A9%94%EB%AA%A8%EB%A6%AC-%EA%B4%80%EB%A6%AC-%EC%A0%84%EB%9E%B5Memory-Management-Strategy

    https://tgyun615.com/114

    가상메모리

    물리 메모리 크기의 한계를 극복하기 위한 기술
    100MB 메모리에 200MB 프로세스를 수행할 수 있도록 하는 것 -(어떻게?)-> "필요한 부분만" 메모리에 적재
    대부분 세그먼트가 아닌 페이지 단위를 사용

    Demanding Paging(요구 페이징)

    정의 : 현재 필요한 페이지만 메모리에 올리는 것

    Page Fault(페이지 부재)

    정의 : CPU가 접근하려는 페이지가 메모리에 없는 경우

페이지 폴트가 발생하면 운영체제는 그 데이터를 메모리로 가져와서, 마치 페이지 폴트가 전혀 발생하지 않은 것처럼 프로그램이 계속적으로 작동하게 해줌.
이러한 페이지 폴트가 자주 일어날수록 운영체제의 성능이 많이 저하되기 때문에 페이지 폴트가 일어나지 않도록 하는 것이 중요함. 페이지 폴트를 최소화하기 위한 방법으로는 페이지 교체 정책(page replacement policy)이 있음.

참고자료 : https://ahnanne.tistory.com/15
https://velog.io/@codemcd/%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9COS-15.-%EA%B0%80%EC%83%81%EB%A9%94%EB%AA%A8%EB%A6%AC

캐시의 지역성

캐시가 효율적으로 동작하려면, 캐시에 저장할 데이터가 지역성을 가져야 한다. 지역성이란 데이터 접근이 시간적 혹은 공간적으로 가깝게 일어나는 것

캐시메모리는 병목현상을 줄이기 위한 범용메모리이고 이런 역할을 수행하기 위해서는 CPU가 원하는 데이터를 어느정도 예측할 수 있어야 한다.

왜냐하면 캐시의 성능을 좌우하는 것은 작은 용량의 캐시 메모리에 CPU가 사용할 의미있는 정보가 얼마나 들어있는가 이기 때문이다.

이때 Hit rate를 극대화 시키기 위해 지역성의 원리를 사용한다.

지역성의 특성은 기억장치 내의 정보를 균일하게 참조하는 것이 아닌 어느 한 순간에 특정 부분을 집중 참조하는 것이다.

캐시의 지역성은 시간 지역성과 공간 지역성으로 나뉜다.

  • 시간 지역성 : 최근에 참조된 주소의 내용은 곧 다음에 다시 참조되는 특성

  • 공간 지역성 : 대부분의 실제 프로그램이 참조된 주소와 인접한 주소의 내용이 다시 참조되는 특성

profile
끝까지 해보고 하는 후회는 반성이 되어 앞을 보게 하지만 끝까지 하지 않고 하는 후회는 미련이 되어 뒤를 보게 한다.

0개의 댓글