연속 메모리 할당

Noah·2022년 8월 6일
0

OS Study

목록 보기
13/16

다중 프로그래밍 환경

  • 옛날에는 OS가 없었기 때문에 단순히 메모리에 하나의 프로세스만 올려서 사용하였다.

  • 그 이후, 메모리에 하나의 프로세스와 OS가 함께 올라가는 형태를 취하다가

  • 현대에 들어와서 OS와 여러개의 프로세스를 동시에 메모리에 올려놓는 다중 프로그래밍 환경에 들어오게 되었다.

    • 다중 프로그래밍 환경에서 부팅 직후의 메모리 상태
      • OS 하나와 아주 큰 크기의 메모리 빈 공간이 존재
    • 부팅 이후, 여러개의 프로세스가 사용될때의 메모리 상태
      • 프로세스들이 빈번하게 생성되고 종료되면서 중간중간마다 메모리 빈 공간이 생김
      • 위 와 같은 상황을 메모리 단편화라고 한다

메모리 단편화 (Memory fragmentation)

  • Hole (메모리 빈 공간)들이 불연속하게 흩어져 있기 때문에 프로세스 적재 불가
    • 빈 공간보다 큰 크기의 프로세스들이 들어가지 못함
  • 외부 단편화 (external fragmentation) 발생
    • 외부 단편화?
      • 모든 Hole의 크기의 합이 크더라도, Hole들이 메모리에서 따로따로 분리되어 있어서 프로세스들이 들어가지 못하는 상황
    • 해결 방법
      • 연속 메모리 할당 사용
        • 방식1. First-fit : 최초 적합
          • 메모리의 빈 공간을 전부 탐색해서, 프로세스가 들어갈 수 있으면 바로 무조건 해당 Hole에 프로세스 넣기
        • 방식2. Best-fit : 최적 적합
          • 메모리의 빈 공간 중에서 프로세스의 크기와 제일 적합한(비슷한) 크기를 가진 메모리를 사용하는 방법
        • 방식3. Worst-fit : 최악 적합
          • 메모리의 빈 공간 중에서 프로세스의 크기와 가장 안맞는(빈 공간의 크기가 프로세스의 크기보다 커야함, 들어가도 빈공간이 많이 남는 경우) 크기를 가진 메모리 부분을 사용하는 방법
    • 위 해결 방법을 사용하더라도 외부 단편화는 일어날 수 밖에 없다....
    • 그렇다면 더 좋은 해결 방법은 무엇일까?
      • Compaction
        • 메모리 Hole 들을 한 곳으로 모으는 방식
        • 한 곳으로 모으기 위한 최적의 알고리즘은 없다.
        • Hole을 한 곳으로 모으기 위해서 메모리 계산에 대한 부담이 크다.

이번 포스팅을 통해 연속 메모리 할당에 대해서 알아보았습니다.

다음 포스팅 부터 메모리를 더욱 효율적으로 할당할 수 있는 페이징 기법에 대해서 알아보도록 하겠습니다.

profile
BackEnd 개발자가 되기 위해 공부중입니다!

0개의 댓글