운영체제

메모리 할당 방법

iksadnorth 2023. 7. 22. 21:22

👣 개요

  • 연속 할당
    • 고정 분할 방식
    • 가변 분할 방식
  • 불연속 할당
    • Paging
    • Segmentation
    • Paged Segmentation

 

👣 연속 할당

프로그램 전체가 연속적인 공간에 매핑.

👣 고정 분할 방식

메모리의 구역을 미리 나눠서 관리하는 방식.
내부 단편화가 발생함.

내부 단편화 예시. 크기가 예상보다 작아서 공간 낭비.

👣 가변 분할 방식

프로그램 크기에 맞춰 동적으로 메모리를 나눠서 할당.
외부 단편화가 발생함.

외부 단편화 예시. 메모리를 할당하고 해제하고 할당하고를 반복하다보면 메모리 낭비가 생김.

이름 설명
최초 적합 선형 탐색하다가 최초로 적합한 곳을 찾으면 바로 삽입.
최적 적합 완전 탐색으로 가장 단편화가 안 생기는 곳에 삽입.
최악 적합 완전 탐색으로 가장 빈 칸이 크게 나는 곳에 삽입.

 

👣 불연속 할당

프로그램이 조각조각 메모리의 불연속적인 공간에 저장되는 것.

페이징
메모리 Frame이라는 고정크기로 분할되고, 프로세스 Page라는 고정크기로 분할됨.
페이지와 프레임은 크기가 같음.
페이지와 프레임을 대응시키는 page mapping 과정이 필요하여 paging table을 생성해야 함.
연속적이지 않은 공간도 활용할 수 있기 때문에 외부 단편화 문제 해결.
paging table에는 각 페이지 번호[아래 그림의 주황 셀]
해당 페이지가 할당된 프레임의 시작 물리 주소[아래 그림의 파랑 셀]를 저장.
결국, 마지막 페이지에서는 내부 단편화가 발생한다는 단점 존재.

👣 세그멘테이션

페이지가 아닌 세그먼트로 구역을 나누는 방법.
세그먼트는 서로 크기가 다름. 크기가 달라질 수 있기에 각 세그먼트를 기능 별로 구분지을 수 있다.
예를 들어, '코드 영역', '힙 영역', '스택 영역'과 같이 나눌 수 있다. 이는 프로세스 사이의 공유를 쉽게 한다.
프로세스가 메모리에 적재될 때 빈 공간을 찾아 할당하는 기법 사용.
mapping을 위한 segment table 필요.
segment table에는 각 세그먼트 번호[Segment No.]
해당 세그먼트가 할당된 프레임의 시작 물리 주소[base], 세그먼트 크기[limit]를 저장.
마찬가지로 메모리 해제 과정 중 외부 단편화 문제가 발생.

👣 페이지드 세그멘테이션

페이징과 세그멘테이션의 장점을 취해 만든 방법.
외부 및 내부 단편화 방지, 유연한 메모리 관리, 메모리 보호 및 공유

작동 방식

1. 세그먼트 분할
여러 세그먼트로 논리적으로 분할
각 세그먼트마다 접근 권한을 세심하게 설정할 수 있음.[읽기 전용, 쓰기 허용 등등]

2. 페이지 분할
각 세그먼트를 페이지로 물리적으로 분할

3. 페이지 테이블 생성
각 세그먼트마다 페이지 테이블을 생성

4. 가상 주소 변환
가상 주소를 세그먼트 번호와 페이지 번호로 분할
세그먼트 번호로 세그먼트 테이블을 참조하여 해당 세그먼트의 페이지 테이블 주소 확인
페이지 번호로 페이지 테이블을 참조하여 물리적 메모리 주소 취득.

'운영체제' 카테고리의 다른 글

프로세스  (0) 2023.07.23
페이지 교체 알고리즘  (0) 2023.07.22
스와핑 - Swapping  (0) 2023.07.22
메모리  (0) 2023.07.22
컴퓨터 용어 정리  (0) 2023.07.21