개발자 면접 공부/운영체제,CS

CS,OS 단편화

chogyujin 2022. 7. 26. 22:44
728x90

오늘은 단편화에 대해 공부하겠습니다.


메모리 단편화

메모리에서 메모리의 공간이 작은 조각으로 나뉘어져 사용가능한 메모리가 충분히 존재하지만 할당(사용)이 불가능한 상태를 보고 메모리 단편화 라고 말합니다.

이 메모리 단편화는 내부, 외부 단편화 가 있습니다.

 


1. 내부 단편화

- 프로그램의 크기보다 분할의 크기가 큰 경우, 해당 분할에 프로그램을 적재하고 남는 메모리 공간

- 즉, 하나의 분할 내부에서 발생하는 사용되지 않는 메모리 조각

- 메모리 자유 분할 공간이 10,000B가 있고 프로세스 A가 9,999B를 사용하게 되면 1B가 남게 된다. 이러한 현상을 내부 단편화라고 한다.

 


2. 외부 단편화

-프로그램의 크기보다 분할의 크기가 작은 경우, 해당 분할이 비어있음에도 불구하고 프로그램을 적재하지 못하기 때문에 발생하는 메모리 공간을 말한다.

- 어떤 프로그램에도 배당되지 않은 빈 공간임에도 현재 상태에서 사용될 수 없는 작은 분할이다.

 


3. 해결 방법

1. 압축 = 외부 단편화를 해소하기 위해 프로세스가 사용하는 공간들을 한쪽으로 몰아, 자유 공간을 확보(효율X)

2. Swapping 메모리에 올라온 프로세스의 주소 공간 전체를 디스크 스왑 영역으로 일시적으로 내려놓음
    메모리 공간을 확보하면 이후에 다른 프로세스의 메모리를 불러들이기가 가능

 

[연속 할당 방식]

- 각각의 프로세스를 물리적 메모리의 연속적인 공간에 올리는 방식

  • 고정 분할 방식
    • 물리적 메모리를 주어진 개수만큼의 영구적인 분할로 미로 나누고 각 분할에 하나의 프로세스를 적재하여 실행
    • 내부 단편화 문제 발생
  • 가변 분할 방식
    • 메모리에 적재되는 프로그램의 크기에 따라 분할의 크기, 개수가 동적으로 변함
    • 외부 단편화 발생

[불연속 할당 방식]

- 하나의 프로세스를 물리적 메모리의 여러 영역에 분산하여 적재

  • 페이징
    • 프로세스를 동일한 크기의 페이지로 나눈다.
    • 내부 단편화 발생
  • 세그멘테이션
    • 프로세스를 서로 다른 크기의 논리적 블록 단위인 세그멘테이션으로 나눔
    • 외부 단편화 발생

 


메모리 풀

메모리 풀은 필요한 메모리 공간을 필요한 크기, 개수 만큼 사용자가 직접 지정하여 미리 할당받아 놓고 필요할 때마다 사용하고 반납하는 기법

  • 외부 단편화X
  • 내부 단편화X
  • 이러한 단편화가 없는 이유는 미리 공간을 할당해놓기 때문, 필요한 크기만큼 할당했기 떄문
  • 메모리의 할당, 해제가 잦은 경우에 효과적
  • 메모리 누수가 있는 방식