[운영체제] 단편화(Fragmentation)
🤔 단편화?
- 메모리 할당과 해제 과정에서 발생하는 현상이다.
- 할당된 메모리 공간들이 나눠져서 총 사용 가능한 메모리가 충분하지만, 실제로는 연속된 큰 메모리 블록을 할당하는 데에 실패하는 상황을 의미
- 메모리를 효율적으로 사용하지 못하게 만들어, 프로그램의 성능에 영향을 줄 수 있다.
💡단편화의 주요 두가지
- 1️⃣ 내부 단편화(Internal Fragmentation)
- 할당된 메모리 블록의 실제 사용된 부분과 할당된 크기의 차이로 인해 발생한다.
- 예를 들어, 메모리 블록이 할당되었지만, 그 블록에서 사용되는 데이터의 크기가 할당된 크기보다 작을 때 내부 단편화가 발생한다.
- 이는 각 메모리 블록이 일정한 크기로 할당되는 메모리 할당 방식에서 주로 발생한다.
- 2️⃣ 외부 단편화(External Fragmentation)
- 할당된 메모리 블록들 사이에 사용되지 않는 작은 공간들이 존재하는 상황이다.
- 이 작은 공간들은 개별적으로는 충분한 크기를 가지고 있지만, 연속적으로 할당되지 않아서 큰 메모리 블록을 할당하는 데에 사용할 수 없다.
- 메모리 할당 요청이 들어왔을 때, 충분한 메모리 공간이 있음에도 불구하고 할당에 실패하는 상황을 초래한다.
- 즉, 할당 요청을 만족시킬 수 있는 메모리 공간이 힙 전체를 합쳤을 때에는 존재하지만, 해당 요청을 처리할 수 있는 단일 가용블록이 존재하지 않는 경우에 발생한다.
- 외부 단편화는 내부 단편화와 달리 미래의 요청에 의하여 결정되기 때문에 측정이 어렵다.