외부 단편화(external fragmentation) 내부 단편화(Internal fragmentation)
< 단편화란 ? >
"단편화"란 컴퓨터 시스템의 저장소나 메모리에 데이터가 불연속적으로 위치하는 현상을 말한다. 이는 파일이 저장 공간의 여러 부분에 분산되어 저장되는 것을 의미하며, 이는 컴퓨터 성능을 저하시키는 주요 원인 중 하나이다. 따라서 파일이나 메모리 조각을 재조정하고, 파일을 연속된 공간에 저장하는 '디스크 조각 모음' 작업을 정기적으로 수행하는 것이 중요하다.
< 단편화의 원인과 영향 >
단편화는 파일이 저장 공간의 단일 연속 블록에 맞지 않거나, 파일을 저장하기에 충분한 자유 공간이 부족할 때 발생할 수 있다. 시스템이 파일을 열기 위해 개별 조각을 다른 위치에서 검색하고 가져와야 하기 때문에, 단편화는 파일을 읽거나 접근하는 데 문제를 일으킬 수 있다.
단편화의 결과로 시스템 성능이 감소하고 파일에 접근하기 어렵게 된다. 따라서 하드 디스크를 정기적으로 디스크 조각 모음하는 것이 좋다.
이 프로세스는 디스크의 데이터 블록을 재배열하여 파일이 연속된 블록에 저장되게 하고, 더 빠르게 접근할 수 있도록 한다.
< 단편화의 유형 >
[ 내부 단편화 ]
내부 단편화는 메모리 블록 내에 사용되지 않는 공간이 있을 때 발생한다. 예를 들어, 시스템이 40KB 크기의 파일을 저장하기 위해 64KB 메모리 블록을 할당하면, 그 블록에는 24KB의 내부 단편화가 포함된다. 고정 크기 블록 할당 방식을 사용하는 경우, 이러한 현상이 발생할 수 있다.
[ 외부 단편화 ]
외부 단편화는 하드 디스크 같은 저장 매체가 여러 작은 자유 공간 블록을 산재시킬 때 발생한다. 시스템이 자주 파일을 생성하고 삭제하면 매체에 많은 작은 자유 공간 블록이 남아, 시스템이 새 파일을 저장할 때 충분히 큰 단일 연속 자유 공간 블록을 찾지 못하고, 대신 여러 작은 블록에 파일을 저장해야 할 수 있다. 이렇게 되면 외부 조각화와 성능 문제가 발생할 수 있다.
단편화는 시스템 내 다양한 수준에서 발생할 수 있다. 파일 단편화는 파일 시스템 수준에서 발생하며, 파일이 여러 비연속 블록으로 나뉘어 저장 매체에 저장된다. 메모리 단편화는 메모리 관리 수준에서 발생하며, 시스템이 동적으로 메모리 블록을 할당하고 해제한다. 네트워크 단편화는 네트워크를 통해 전송하기 위해 데이터 패킷이 작은 조각으로 나뉘어질 때 발생한다.
< 단편화가 운영체제에 미치는 영향 >
단편화는 디스크의 읽기 및 쓰기 속도를 느리게 만들어, 디스크 헤드가 파일의 조각에 접근하기 위해 여러 위치로 이동해야 한다. 때문에 접근 시간을 증가시키고 시스템의 전반적인 속도를 감소시킨다. 디스크 공간도 낭비되어, 조각이 필요한 공간보다 더 많은 공간을 차지할 수 있다. 이는 디스크 공간 부족을 초래하고, 시스템이 불안정해지며 오류나 충돌에 취약해질 수 있다. 심각한 경우에는 단편화로 인해 시스템이 디스크 공간을 모두 소진하여 데이터 손실을 일으킬 수 있다.
따라서 최적의 성능을 유지하기 위해서는 디스크를 정기적으로 조각 모음하는 것이 중요하다. 디스크 조각 모음은 파일의 조각을 재구성하고, 파일을 저장할 연속된 디스크 공간을 할당한다. 이는 디스크의 읽기 및 쓰기 속도를 향상시키고, 접근 시간을 줄이며, 시스템의 전반적인 속도를 향상시킨다. 디스크를 정기적으로 조각 모음함으로써 운영 체제의 성능을 향상시키고 유지할 수 있으며, 사용자에게 원활하고 효율적인 사용 환경을 제공할 수 있다.
< 단편화의 장점과 단점 >
단편화는 컴퓨터의 하드 디스크 또는 기타 저장 매체의 저장 공간을 더 잘 활용하는 등 여러 가지 잠재적인 이점이 있다. 단편화된 파일은 매체의 사용 가능한 자유 공간 블록에 저장할 수 있으며, 이러한 블록이 연속적일 필요는 없다. 이는 매체가 작은 자유 공간 블록을 많이 포함하고 있어 그렇지 않으면 낭비되는 경우 특히 유용하다.
그러나 일반적으로 단편화를 최소화하는 것이 좋다. 단편화는 시스템 성능에 부정적인 영향을 미치고, 파일의 접근 및 관리를 더 어렵게 만들 수 있다.
< 내부 단편화와 외부 단편화의 차이점 >
내부 단편화는 메모리가 고정 크기의 블록으로 분할되었을 때 발생한다. 과정이 메모리보다 작을 때 내부 단편화가 발생한다. 이 문제는 메모리 블록의 크기를 고정시킴으로써 발생한다. 동적 파티셔닝을 사용하여 프로세스에 공간을 할당하면 이 문제를 해결할 수 있다.
외부 단편화는 메모리에 충분한 양의 공간이 있지만 메모리가 비연속적인 방식으로 제공되어 프로세스의 메모리 요청을 충족시킬 수 없을 때 발생한다. 첫 번째 적합 또는 최선의 적합 메모리 할당 전략을 적용하면 외부 단편화가 발생한다.
단편화는 운영체제의 성능을 심각하게 저하시키는 주요 이슈이다.
디스크의 읽기 및 쓰기 속도를 느리게 만들어, 디스크 헤드가 파일의 조각에 접근하기 위해 다른 위치로 이동해야 하는 것이 단편화의 주요 역할이다. 이로 인해 접근 시간이 증가하고 시스템의 전반적인 속도가 감소하므로, 시스템 성능이 저하되고 애플리케이션에서 느려짐과 지연이 발생할 수 있다. 또한 단편화로 인해 디스크 공간이 낭비되고, 조각이 필요한 공간보다 더 많은 공간을 차지할 수 있다. 이로 인해 디스크 공간 부족을 초래하고, 시스템이 불안정해지며 오류나 충돌에 취약해질 수 있다.
Reference : https://www.geeksforgeeks.org/difference-between-internal-and-external-fragmentation/
https://www.geeksforgeeks.org/what-is-fragmentation-in-operating-system/