메모리 할당 : 불연속 할당(Non-continuous Allocation)

이강용·2024년 7월 27일
0

CS

목록 보기
101/109

불연속 할당(Non-continuous Allocation)이란?

  • 프로세스를 물리 메모리의 연속된 공간에 할당하는 대신 분리된 여러 블록에 나누어 할당하는 방법
  • 이 방식은 메모리 단편화를 줄이고 메모리 이용 효율을 높이는 데 도움

페이징(Paging)

  • 페이징은 메모리를 같은 크기의 블록으로 나누는 방식으로 각각의 블록을 페이지(Page)라고 함
    • 페이지(Page) : 프로세스의 논리 메모리를 같은 크기의 블록으로 나눈 것
    • 프레임(Frame) : 물리 메모리를 페이지와 같은 크기의 블록으로 나눈 것
    • 페이지 테이블(Page Table) : 논리 메모리의 각 페이지가 물리 메모리의 어는 프레임에 매핑되는지 기록한 테이블

특징

  • 내부 단편화 : 마지막 페이지가 채워지지 않을 때 발생할 수 있음
  • 외부 단편화 없음 : 모든 페이지와 프레임이 동일한 크기이므로 외부 단편화가 발생하지 않음
  • 주소 변환 : 논리 주소를 물리 주소로 변환하기 위해 페이지 테이블을 사용

세그멘테이션(Segmentation)

image
  • 프로세스를 논리적인 단위인 세그먼트(Segment)로 나누어 할당하는 방식
    • 세그먼트는 프로그램의 논리적인 구조(예: 함수, 배열, 변수 등)에 따라 크기가 다름
    • 세그먼트(Segment) : 프로그램의 논리적인 단위로 각각의 세그먼트는 고유한 크기를 가짐
    • 세그먼트 테이블(Segment Table) : 각 세그먼트가 물리 메모리의 어느 위치에 있는지 기록한 테이블

특징

  • 외부 단편화 : 세그먼트의 크기가 다르기 때문에 외부 단편화가 발생할 수 있음
  • 내부 단편화 없음 : 세그먼트는 필요한 크기만큼 할당되므로 내부 단편화가 발생하지 않음
  • 주소 변환 : 세그먼트 번호와 오프셋(offset)을 사용하여 논리 주소를 물리 주소로 변환

페이지드 세그멘테이션(Paged Segmentation)

  • 세그멘테이션과 페이징을 결합한 방식
    • 세그먼트는 논리적인 단위로 나뉘어지지만, 각 세그먼트는 다시 페이지로 나뉨
    • 세그머트(Segment) : 프로그램의 논리적인 단위로 나뉜 부분
    • 페이지(Page) : 각 세그먼트가 다시 동일한 크기의 페이지로 나뉨
    • 세그먼트 테이블 : 각 세그먼트의 페이지 테이블을 가리킴
    • 페이지 테이블 : 각 페이지가 물리 메모리의 어느 프레임에 매핑되는지 기록한 테이블

특징

  • 내부 단편화 : 마지막 페이지가 채워지지 않을 때 발생할 수 있음
  • 외부 단편화 감소 : 세그먼트가 페이지로 나뉘어 있기 때문에 외부 단편화가 줄어듦
  • 주소 변환 : 세그먼트 번호, 페이지 번호, 오프셋을 사용하여 논리 주소를 물리 주소로 변환

현대의 OS에서 페이징 기법이 주로 쓰이는 이유?

  • 페이징 기법은 메모리 관리에서 효율성과 단순성을 제공하며 내부 단편화를 상대적으로 쉽게 관리할 수 있기 때문
  1. 외부 단편화 방지
  • 페이징 기법은 물리 메모리를 동일한 크기의 페이지로 나누어 사용하기 때문에 외부 단편화가 발생하지 않음, 모든 페이지와 프레임이 동일한 크기이므로 프로세스가 할당되거나 해제될 때마다 메모리 공간이 불연속적으로 분할되어도 문제가 되지 않음
  • 반면, 세그멘테이션은 서로 다른 크기의 세그먼트를 사용하므로 외부 단편화가 발생할 수 있음, 외부 단편화는 메모리 블록들이 불연속적으로 분포되어 있어 충분한 총 메모리 공간이 존재하더라도 연속된 하나의 큰 블록을 사용할 수 없게 만드는 문제를 일으킴
  1. 내부 단편화 관리의 용이성
  • 페이징 기법에서는 내부 단편화가 발생할 수 있음, 이는 프로세스의 마지막 페이지가 완전히 채워지지 않을 때 발생함
    • 하지만, 내부 단편화는 외부 단편화에 비해 관리하기가 더 쉬움
      • 내부 단편화는 각 페이지 내에서 발생하는 비어 있는 공간이므로 운영 체제는 페이지 단위로 메모리를 관리하면서 이러한 작은 공간 낭비를 쉽게 감수할 수 있음
      • 반면, 외부 단편화는 메모리 블록 전체에 걸쳐 불연속적으로 발생하므로 이를 해결하기 위해 메모리 압축(compaction)같은 복잡한 작업이 필요함
  1. 단순한 메모리 관리
  • 페이징 기법은 메모리 관리가 단순함, 페이지 테이블을 통해 논리 주소를 물리 주소로 변환하기 때문에 프로세스가 사용하는 메모리 공간을 일관되게 관리할 수 있음
    • 페이지 테이블은 각 페이지가 물리 메모리의 어느 프레임에 매핑되는지를 기록하여 프로세스가 필요한 메모리 블록을 쉽게 찾을 수 있도록 함
    • 세그멘테이션의 경우 각 세그먼트가 크기와 위치가 달라서 메모리 관리가 복잡해짐
      • 세그먼트 테이블을 사용하더라도 외부 단편화 문제를 해결하기 어려움
  1. 가상 메모리 지원
  • 페이징 기법은 가상 메모리 시스템을 효과적으로 지원함, 가상 메모리는 물리 메모리보다 큰 주소 공간을 제공하여 프로그램이 실제 메모리 크기에 구애받지 않고 실행될 수 있게 함
    • 페이지 폴트(page fault)스왑(swap)기법을 통해 필요한 페이지만 메모리에 로드하여 메모리 사용을 최적화할 수 있음
      • 이는 메모리 사용의 효율성을 극대화하며 다수의 프로그램이 동시에 실행될 수 있도록 지원
profile
HW + SW = 1

0개의 댓글