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

혀니앤·2022년 10월 12일
0

컴퓨터 지식 공부

목록 보기
7/10

메모리란?

메인 메모리, RAM을 뜻한다. 프로그램 실행 시 필요한 주소, 정보들을 저장하고 가져다 사용할 수 있게 만드는 공간.

즉, 작업을 위해 사용되는 공간.

메모리 관리 배경

  • 멀티 프로그래밍 환경으로 한정된 메모리를 효율적으로 사용해야함, 메모리 관리 방법이 중요해짐
  • 각각의 프로세스독립된 메모리 공간을 갖고, 운영체제 혹은 다른 프로세스의 메모리 공간에 접근할 수 없는 제한이 걸려있다.
  • 운영체제만이 운영체제 메모리 영역과 사용자 메모리 영역의 접근에 제약을 받지 않는다.

Swapping ?

  • 메모리의 관리를 위해 사용되는 기법
  • 표준 Swapping 방식으로는 round-robin 과 같은 스케줄링의 다중 프로그래밍 환경에서 CPU 할당 시간이 끝난 프로세스의 메모리를 보조 기억장치(e.g. 하드디스크)로 내보내고 다른 프로세스의 메모리를 불러 들일 수 있다.
    • swap-in : 주 기억장치(RAM)으로 불러오는 과정
    • swap-out : 보조 기억장치로 내보내는 과정
  • Swap 에는 큰 디스크 전송 시간이 필요함 ⇒ 메모리 공간이 부족할 때 Swaaping 함!
  • 관련 개념 : 중기 스케줄링

P1 프로세스 : 메모리에서 디스크로 Swap out

P2 프로세스 : 메모리로 Swap in


연속 메모리 할당

  • 메모리에 프로세스를 연속적으로 할당함

  • 할당과 제거를 반복하면 Scattered Holes가 발생한다

  • 연속 메모리 할당 알고리즘

  • 1) First-Fit

    • 가장 처음 만나는 빈 메모리 공간에 프로세스를 할당함
    • 속도가 빠르다
  • 2) Best-fit

    • 넣을 수 있는 메모리 Hole 중에 가장 작은 Hole을 선택한다
    • 장점 : 메모리 사용률이 증가함
    • 단점 : 탐색 시간이 오래걸린다 ( 다 살펴봐야 함 )
  • 3) Worst-fit

    • 넣을 수 있는 가장 큰 Hole부터 프로세스를 넣는다
    • 남은 부분이 가장 크므로 다른 프로세스를 넣을 수 있을수도 있다
    • 단점 : 탐색 시간이 오래걸린다
  • 할당 예시 : 순서대로 10k, 12k, 9k, 15k, 20k 가 들어온다고 하면 각 알고리즘은 이렇게 할당한다


Fragment

  • 프로세스들이 메모리에 적재되고 제거되는 일이 반복되다보면, 프로세스들이 차지하는 메모리 틈 사이에 사용 하지 못할 만큼의 작은 자유공간들이 늘어나게 되는 현상
  • 사용 가능한 메모리가 충분히 존재하지만 할당이 불가능한 상태
    • 내부 단편화 : 프로세스에 필요한 메모리보다 더 많은 메모리가 할당되어 프로세스 내부 메모리 공간이 남는 현상

  • 외부 단편화 : 전체 빈 메모리는 충분하지만, 빈 메모리 공간들이 인접하지 않은 상태

  • 압축 : 외부 단편화를 해소하기 위해 프로세스가 사용하는 공간들을 한쪽으로 몰아, 자유공간을 확보하는 방법론

→ 분산되어 있는 연두색 외부 단편화들을 오른쪽 그림처럼 한군데 모아놓을 수 있다
⇒ 압축 시간이 걸리면서 작업 효율이 낮아진다


해결방법 1) Paging

  • **하나의 프로세스가 사용하는 메모리 공간이 연속적이어야 한다는 제약을 없애는** 메모리 관리 방법

  • 주요 개념
    • Page : 가상 주소
    • Frame : 물리 주소
    • Page Table : Page와 Frame을 서로 Mapping 하는 테이블
  • Page의 주소는 연속적일 필요가 없다. 어느 Frame에 있는지만 적어주면 됨!
  • 외부 단편화를 해결하기 위해, 프로세스 메모리를 고정 사이즈의 블록으로 나눈다
  • 장점 : 외부 단편화가 없음. 주소를 자유롭게 정의할 수 있음
  • 단점
    • 내부 단편화의 비중이 늘어남 ( 고정 크기로 블록을 할당하기 때문 )
    • Overhead 발생 : 페이지 테이블을 메모리에 보관하므로 메모리를 더 차지하고, 테이블에서 찾은 후 Frame에 접근하므로 속도가 느려짐

해결방법 2) Segmentation

  • 서로 다른 크기의 논리 단위인 Segment를 사용
  • 장점
    • 내부 단편화가 없음
    • 메모리 사용량 증가
  • 단점
    • 외부 단편화 : 서로 다른 크기의 세그먼트들이 메모리에 적재되고 제거되는 일이 반복되다 보면, 자유 공간들이 많은 수의 작은 조각들로 나누어져 못 쓰게 될 수도 있다

참고

https://technote-mezza.tistory.com/92

https://github.com/JaeYeopHan/Interview_Question_for_Beginner/tree/master/OS#메모리-관리-전략

profile
일단 시작하기

0개의 댓글