Computer Science

[운영체제] 메모리 관리 전략

Supreme_YS 2022. 3. 4. 15:05
  • 메모리 관리가 필요한 이유?
    • 메모리의 성능도 올라가지만 그에따라 소프트웨어의 성능도 올라가므로 메모리 부족현상은 계속 발생이 되었다.
    • 제한된 메모리를 최대한 효율적으로 사용하기 위해서 메모리 관리전략이 필요하다.

 

  • 효율적인 메모리 관리 3가지
  1. 동적적재
    • 모든 프로그램을 적재하는것이 아니라 반드시 필요한 루틴과 데이터만 적재하는 기법
    • 루틴: 어느 프로그램이 실행될때 불려지거나 반복해서 사용되도록 만들어진 코드들
  2. 동적연결
    • 라이브러리 루틴연결을 컴파일 시점에 하는 것이 아닌 실행 시점까지 미루는 기법
  3. 스와핑
    • 실행중이지 않은 프로세스를 저장장치인 swap영역으로 이동하여 메모리를 확보하는 기법

  • 잦은 스와핑시 단점
    • 단편화
      • 잦은 메모리 관리가 일어나면 메모리사이에 틈이 생기는데 메모리 상으로는 올라올수 있지만 할당이 불가능한 상태를 단편화
    • 내부 단편화
      • 메모리를 할당할때 프로세스가 사용할 양보다 더 넉넉하게 메모리가 할당이 되어서 메모리 낭비가 되는 현상
    내부 단편화
    • 외부 단편화
      • 메모리 할당,해제 순서가 반복되어서 중간중간의 틈이 모여서 프로세서가 할당할 공간이 충분하지만 할당을 하지못할때 생기는 현상입니다.
    외부 단편화
  • 해결 방법
    • 압축 : 외부 단편화를 해소하기 위해서 한쪽으로 찌부 시키는 과정. 미미한 효과
    • 페이징 : 페이징 기법은 사용하지 않는 프레임을 페이지에 옮기고, 필요한 메모리를 페이지 단위로 프레임에 옮기는 기법 (페이지와 프레임을 대응시키기 위해 page mapping과정이 필요해서 paging table을 만든다.)
      • 페이지: 보조기억장치 주기억장치를 이용한 가상메모리를 같은 크기의 블록으로 나눈 것
      • 프레임: RAM을 페이지와 같은 크기로 나눈 것
      • 예) 4100짜리 프로세스라면 1000짜리 물리메모리 4개와 100짜리 하나면 가능하지만 1000짜리 5개를 사용해서 900의 내부 단편화가 일어난다.
    • 세그멘테이션 : 페이징 기법에서는 같은 크기로 분할을 했지만 세그멘테이션에서는 유동적으로 크기를 조절하면서 분할. 내부 단편화는 사라졌지만 중간에 해제하면서 메모리틈이 생기기 때문에 외부단편화는 해결을 못하고 있다!