7월 2일 - 단편화

Yullgiii·2024년 7월 2일
0
post-thumbnail

단편화

외부 단편화 (External Fragmentation)

외부 단편화란 프로그램의 크기보다 분할의 크기가 작아서, 해당 분할이 비어있음에도 불구하고 프로그램을 적재하지 못하는 메모리 공간을 말한다. 이는 어떤 프로그램에도 배당되지 않은 빈 공간임에도 현재 상태에서 사용될 수 없는 작은 분할이다.

내부 단편화 (Internal Fragmentation)

내부 단편화란 프로그램의 크기보다 분할의 크기가 큰 경우, 해당 분할에 프로그램을 적재하고 남는 메모리 공간을 말한다. 즉, 하나의 분할 내부에서 발생하는 사용되지 않는 메모리 조각이다.

예제

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

압축 (Compaction)

압축이란 외부 단편화를 해소하기 위해 프로세스가 사용하는 공간들을 한쪽으로 몰아 자유 공간을 확보하는 방법론이다. 그러나 작업 효율이 좋지 않다는 단점이 있다.

Swapping

Swapping이란 메모리에 올라온 프로세스의 주소 공간 전체를 디스크의 스왑 영역으로 일시적으로 내려놓는 것이다. 메모리 공간을 확보하면 이후에 다른 프로세스의 메모리를 불러 들일 수 있다. 여기서 주의할 점은, 프로세스가 종료되어 주소 공간을 디스크로 내쫓는 것이 아니라 특정한 이유로 수행 중인 프로세스의 주소 공간을 일시적으로 메모리에서 디스크로 내려놓는 것을 의미한다.

Swapping 관련 용어

  • 스왑인 (Swap In): 디스크 -> 메모리
  • 스왑아웃 (Swap Out): 메모리 -> 디스크

연속 할당 방식

연속 할당 방식은 각각의 프로세스를 물리적 메모리의 연속적인 공간에 올리는 방식이다.

고정 분할 방식

물리적 메모리를 주어진 개수만큼의 영구적인 분할로 미리 나누고 각 분할에 하나의 프로세스를 적재하여 실행시키는 방식으로, 단편화 문제가 발생할 수 있다.

가변 분할 방식

메모리에 적재되는 프로그램의 크기에 따라 분할의 크기와 개수가 동적으로 변하는 방식으로, 외부 단편화가 발생할 수 있다.

불연속 할당 방식

불연속 할당 방식은 하나의 프로세스를 물리적 메모리의 여러 영역에 분산하여 적재하는 방식이다.

페이징 (Paging)

프로세스를 동일한 크기의 페이지로 나누는 방식이다. 페이징 방식에서는 내부 단편화 문제가 발생할 수 있다.

세그멘테이션 (Segmentation)

프로세스를 서로 다른 크기의 논리적 블록 단위인 세그멘테이션으로 나누는 방식이다. 세그멘테이션 방식에서는 외부 단편화 문제가 발생할 수 있다.

페이징과 세그멘테이션의 차이

페이징은 프로세스를 동일한 크기의 블록으로 나누기 때문에 관리가 용이하지만, 내부 단편화가 발생할 수 있다. 반면 세그멘테이션은 프로세스를 논리적 단위로 나누기 때문에 프로그램의 논리적 구조를 반영할 수 있지만, 외부 단편화가 발생할 수 있다.

So...

단편화 문제는 메모리 관리에서 중요한 이슈로, 적절한 기법을 사용해 해결해야 한다. 외부 단편화와 내부 단편화는 각각의 단편화 방식에서 발생할 수 있으며, 이를 해결하기 위해 압축, Swapping, 연속 할당 방식, 불연속 할당 방식 등의 다양한 기법이 사용된다. 각각의 기법은 특정 상황에서 적절하게 사용될 수 있으며, 그 장단점을 이해하고 적절히 적용하는 것이 중요하다.

profile
개발이란 무엇인가..를 공부하는 거북이의 성장일기 🐢

0개의 댓글