[운영체제] 메모리 할당 방식

2025. 4. 30. 00:23·⚙️ CS/운영체제
반응형

✅ 메모리 할당 (Memory Allocation)

멀티프로그래밍 환경에서는 여러 개의 프로세스가 동시에 메모리에 올라와 실행되어야 한다.
이때 각 프로세스에 얼마만큼의 메모리를 어떻게 할당할지 결정하는 과정이 바로 메모리 할당이다.

 

메모리 할당 방식은 크게 두 가지로 나뉜다.

  • 연속 메모리 할당(Contiguous Allocation)
  • 비연속 메모리 할당(Non-Contiguous Allocation)

 


 

✅ 연속 메모리 할당 (Contiguous Memory Allocation)

: 프로세스가 요청한 메모리 크기만큼 물리 메모리에서 연속된 공간을 할당하는 방식

 

연속 메모리 할당 방식은 다시 고정 분할 방식과 가변 분할 방식으로 나뉜다.

  • 고정 분할 방식: 물리적 메모리를 미리 같은 크기로 분할해서 할당
    • 외부/내부 단편화 발생 가능
  • 가변 분할 방식: 프로세스의 크기에 따라 동적으로 할당
    • 외부 단편화 발생 가능

 

가변 분할 방식에는 최초 적합, 최적 적합, 최악 적합 3가지 방식이 있다.

 


 

📍 최초 적합 (first-fit)

: 처음으로 맞는 공간에 할당

 

  • 메모리 공간 목록을 앞에서부터 탐색하고
  • 요청 크기보다 같거나 큰 첫 번째 공간에 할당
  • 속도다 빠름

 

💡 언제 사용?

  • 속도가 중요한 경우
  • 시스템 부하가 적고, 메모리 크기가 비교적 여유로운 환경

 

📍최적 적합 (best-fit)

: 전체 메모리 중 요청 크기와 가장 비슷한 최소한의 공간을 찾아 할당

 

  • 공간 낭비 최소화할 수 있음 
  • 전체를 탐색해야 하므로 속도가 느림
  • 작은 조각이 많이 남아 단편화 심해질 수 있음

 

💡 언제 사용?

 

  • 메모리 사용률 최적화가 중요한 시스템 ex. 임베디드 시스템
  • 자주 할당/해제가 일어나지 않는 정적 환경

 

 


 

📍 최악 적합 (worst-fit)

: 여유 공간 중 가장 큰 블록을 잘라서 할당

 

  • 남은 공간이 충분히 커서 재사용 가능성이 높음
  • 전체를 탐색해야 하므로 속도가 느림
  • 큰 공간을 계속 유지해 큰 프로세스 수용 가능성 증가
  • 실제로는 공간 활용도가 낮아 단편화 증가
  • 성능이 가장 떨어지는 것으로 알려짐

 

💡 언제 사용?

 

  • 계속해서 큰 메모리 요청이 들어오는 시스템 ex. 대용량 미디어 처리

 


 

📍 first-fit vs. best-fit  vs. worst-fit

 

기준 first-fit best-fit worst-fit
속도 빠름 느림 느림
단편화 외부 단편화 발생 가능 외부 단편화 발생 가능 외부 단편화 발생 가능
구현 복잡도 단순 복잡 복잡
실무 채택 가장 많이 사용 제한적 거의 사용되지 않음

 


✅ 단편화 (Memory Fragmentation)

: 기억 장치의 빈 공간이 여러 개의 조각으로 나뉘는 현상

 


 

📍 외부 단편화 (External Fragmentation)

: 프로세스가 들어갈 공간이 충분한데도 불구하고 hole들이 흩어져있어 적재를 못하는 현상

 

= 메모리는 남아 있는 데 사용할 수 없는 상황

hole: 하나의 사용 가능한 메모리 블록

 

💡 해결 방법

  • 압축(Compression): 메모리의 모든 내용을 한 군데로 몰고, 모든 가용 공간을 다른 한 군데로 몰아서 큰 블록을 만드는 것
    • 단, 프로세스 재배치가 동적으로 이루어지는 경우에만 가능
  • 페이징(Paging): 한 프로세스의 논리 주소 공간을 여러 개의 비연속적인 공간으로 나누어, 필요한 크기의 공간이 가용해지는 경우 물리 메모리를 프로세스에 할당하기

 

📍 내부 단편화 (Internal Fragmentation)

: 할당된 메모리 블록 내부에 사용되지 않는 공간이 생기는 현상

 

= 블록 크기에 비해 실제로 필요한 메모리 양이 적은 상황

 

  • 고정 크기 메모리 할당에서 요청된 크기보다 더 큰 블록이 할당되는 경우 발생할 수 있다.
  • 즉, 페이지 크기가 클수록 내부 단편화가 커진다.
반응형

'⚙️ CS > 운영체제' 카테고리의 다른 글

[운영체제] 페이지 교체 알고리즘  (0) 2025.05.06
[운영체제] 가상 메모리 & 페이징 & 세그멘테이션  (1) 2025.05.06
[운영체제] 캐시 메모리 (Cache Memory)  (1) 2025.04.29
[운영체제] Thread Pool & Fork-Join  (0) 2025.04.29
'⚙️ CS/운영체제' 카테고리의 다른 글
  • [운영체제] 페이지 교체 알고리즘
  • [운영체제] 가상 메모리 & 페이징 & 세그멘테이션
  • [운영체제] 캐시 메모리 (Cache Memory)
  • [운영체제] Thread Pool & Fork-Join
dev-heyjin
dev-heyjin
  • dev-heyjin
    개발 기록
    dev-heyjin
  • 전체
    오늘
    어제
    • 분류 전체보기 (56)
      • 🎯 Programming (8)
      • 💪 Algorithm (16)
      • ⚙️ CS (31)
        • 네트워크 (15)
        • 운영체제 (15)
        • 데이터베이스 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    해킹
    데이터베이스
    DB
    RDS
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
dev-heyjin
[운영체제] 메모리 할당 방식
상단으로

티스토리툴바