[운영체제] 연속 메모리 할당

James·2024년 1월 1일
0

운영체제

목록 보기
9/13
post-thumbnail

연속 메모리 할당

(가변분할방식 위주의 설명)

연속 메모리 할당


프로세스 A는 A의 크기 만큼 메모리 주소를 할당 받아 연속적으로 배치되고, 프로세스 B는 A 이후에 B의 크기만큼 연속적인 메모리 주소를 할당받아 배치한다.

  • 이렇게 프로세스에 연속적인 메모리 공간을 할당하는 방식을 연속 메모리 할당이라고 한다.

연속 메모리 할당의 문제점


⇒ 이로 인해서 Paging 이 나타남

스와핑(Swapping)


  • [실행되지 않은 프로세스, I/O 작업의 요구로 대기 상태가 된 프로세스, 오랫동안 사용되지 않은 프로세스] 들을 임시로 보조기억장치 일부 영역 (스왑영역)에 쫓아내고 이 빈 공간에 또 사용해야 할 프로세스를 적재하여 실행하는 방식

☑️ 스왑 아웃

: 현재 실행되지 않은 프로세스가 메모리에서 스왑 영역으로 옮겨지는 것

☑️ 스왑 인

: 스왑 영역에 있던 프로세스가 다시 메모리로 옮겨오는 것

➕) 스와핑 장점

  • RAM의 메모리가 부족할때, 가상 메모리 공간을 제공해 프로그램이 실행될 수 있도록 해준다.
  • “프로세스들이 요구하는 메모리 공간 크기 > 실제 메모리 크기” 인 경우의 문제를 해결해줌
    (A,B,C,D) 프로세스 메모리 공간 크기 > 실제 메모리 크기
  • 효율성 증가 : 스와핑을 통해 사용되지 않는 메모리 공간을 디스크로 옮겨 더 중요한 데이터나 프로그램을 위한 RAM공간이 확보된다.

➖) 스와핑 단점

  • 스와핑은 디스크 접근 속도가 RAM보다 느리기 때문에 시스템의 성능 저하를 불러올 수 있다.


메모리 할당 (Memory Allocation)


⇒ 고정 분할 방식에도 적용이 가능하다.

1. 최초 적합(first-fit)

  • 운영체제가 메모리 내의 빈 공간을 순서대로 검색하다 적재할 수 있는 공간을 발견하면 최초에 발견된 공간에 프로세스를 배치하는 방식

⇒ 탐색중 발견 즉시 배치하므로, 검색 최소화,빠른 할당

2. 최적 적합(best-fit)

  • 운영체제가 빈 공간을 모두 검색한 다음 , 적재 가능한 가장 작은 공간에 할당
    ⇒ 효율적인 메모리 공간 사용

3. 최악 적합

  • 운영체제가 빈 공간을 모두 검색해본 뒤, 적재 가능한 가장 큰 공간에 할당

Fragmentation(단편화) 외부 단편화 내부 단편화


☑️ 외부단편화

  • RAM에서 메모리의 공간이 프로세스를 할당하기 어려울만큼 작은 메모리 공간들로 인해서 메모리가 낭비되는 현상을 의미한다.

✅ 외부 단편화 해결 방법

  • 메모리 압축 (compaction) : 여기저기 흩어져 있는 빈공간을 하나로 모으는 방식

→ 😡 문제점 : 메모리의 내용을 옮기는 작업은 많은 오버헤드를 야기함 , 어떤 프로세스를 어떻게 움직여야 오베헤드를 최소화하며 압축할 수 있는지에 대한 명확한 방법을 결정하기 어렵다.

  • 가상 메모리 기법
  • 페이징

가상 메모리 기법, 페이징
이 두개가 가장 많이 사용되고 있는 기법이다.


☑️ 내부단편화

  • 고정크기로 정해진 메모리 안에서 할당되고 남는 메모리

페이징 & 세그멘테이션


페이징이란? (Paging)

외부 단편화 해결, 내부 단편화 존재

  • 프로세스를 일정크기로 자르고, 이를 메모리에 불연속적으로 할당해서 외부단편화 문제를 해결함
    • 프로세스의 논리주소 공간을 페이지(page)라는 일정 단위로 자르고,
    • 메모리의 물리 주소 공간을 프레임이(frame)이라는 페이지와 동일한 일정한 단위로 자른뒤
    • 페이지를 프레임에 할당하는 가상 메모리 관리 기법

🗣️ 메모리 주소 2가지

  1. 물리적 메모리주소 : 실제 메모리 상에 존재하는 주소를 의미한다.
  2. 논리적 메모리주소 : 프로세스에 메모리가 할당이 됐을때, 현재 물리메모리 안에서 실행중인 메모리의 위치를 나타내는 주소로, 프로세스 내부에서는 0~끝 까지를 의미하게 되며, 즉, 프로세스 내부에서 사용하는 메모리의 위치를 나타내는 값이다.

페이징의 문제점

: 홀의 크기가 균일하지 않은 문제가 없어지지만, 주소 변환이 복잡해짐

=========================================================

세그멘테이션 (Segmentation)

내부 단편화 해결, 외부 단편화 존재

  • 페이징기법에서 가상메모리를 같은 크기의 단위로 분할했지만 세그멘테이션기법에서는 가상메모리를 서로 크기가 다른 논리적 단위인 세그먼트로 분할해서 메모리를 할당하여 실제 메모리 주소로 변환을 하게 된다.
    • 프로세스를 서로 크기가 다른 논리적인 블록 단위인 세그먼트(Segment)로 분할하여 메모리에 할당
    • 각 세그먼트는 연속적인 공간에 저장
    • 세그먼트들의 크기가 서로 다르기 때문에 프로세스가 메모리에 적재될 때 빈 공간을 찾아 할당하는 기법
    • 페이징과 마찬가지로 mapping을 위한 segment table 필요(각 세그먼트 항목별 세그먼트 시작주소와 세그먼트의 길이 정보를 가지고 있음)

세그멘테이션 문제점

: 프로세스가 필요한 메모리 만큼 할당해주기 때문에 내부단편화는 일어나지 않으나, 여전히 중간에 프로세스가 메모리를 해제하면 생기는 구멍, 즉 외부 단편화 문제는 여전히 존재한다.


 Paging vs Segmentation

  • Paging은 고정 크기를 가짐
  • Segmentation은 가변 크기를 가짐
  • Paging은 내부 단편화 발생 가능, Segmentation은 외부 단편화 발생 가능

☑️ 가변분할방식 vs 고정분할방식


가변분할방식 : 남는공간 재활용 되기때문에 내부 단편화 안일어난다고 본다 .

고정분할방식 : 남는공간을 재활용 안하기때문에 내부 단편화 일어난다.

profile
의미있는 성장의 태도, 긍정적인 사고를 지닌 Deveolper

0개의 댓글