자 예순 두 번째 키워드인 '메모리 단편화'을 알아 보았다.
기술블로그를 작성할 때 나오는 키워들 중에 메모리 관련 키워드가 자주 나오게 되서 이번에 메모리 관련으로 알아보게 되었다.

메모리 단편화는 컴퓨터 메모리 관리에서 발생하는 문제로, 메모리가 작은 조각들로 나누어져 효율적으로 사용할 수 없는 상태를 말한다.
발생 원리
내부 단편화는 주로 고정 크기의 메모리 블록을 할당하는 시스템에서 발생한다.
프로그램이 필요한 메모리 양보다 큰 고정 크기의 블록을 할당받을 때, 남는 공간이 내부 단편화를 일으킨다.
예시
시스템이 고정 크기 블록으로 메모리를 할당하는데, 각 블록의 크기가 4KB라고 가정한다.
한 프로그램이 6KB의 메모리를 요청하면, 시스템은 8KB (두 개의 4KB 블록)를 할당하게 된다. 이 경우, 실제로 사용되지 않는 2KB는 내부 단편화가 된다.
발생 원리
외부 단편화는 가변 크기의 메모리 블록을 할당할 때 발생한다.
프로그램이 메모리를 할당하고 해제하는 과정에서, 메모리 공간에 여러 개의 작은 빈 블록들이 흩어져 있게 된다.
이러한 빈 블록들이 개별적으로는 크지 않지만, 합치면 충분한 메모리가 되더라도, 연속적이지 않아 큰 블록을 할당할 수 없는 상태가 외부 단편화이다.
예시
여러 프로그램이 메모리를 할당하고 해제한 후, 메모리 상태가 다음과 같이 될 수 있다. [사용중, 빈 블록, 사용중, 빈 블록, 사용중].
만약 새로운 프로그램이 큰 연속적인 메모리 블록을 필요로 하면, 빈 블록들이 개별적으로는 작아서 할당이 불가능해진다.
메모리에서 사용 중인 블록들을 한쪽으로 몰아 연속적인 빈 공간을 만드는 방법이다.
컴팩션은 CPU 오버헤드가 크기 때문에 자주 사용되지 않는다.
메모리를 고정된 크기의 페이지로 나누고, 물리 메모리와 논리 메모리를 독립적으로 관리한다.
프로그램의 논리 메모리는 연속적이지만, 물리 메모리는 비연속적으로 할당될 수 있다. 이로 인해 외부 단편화를 줄일 수 있다.
메모리를 서로 다른 크기의 세그먼트로 나누고, 각 세그먼트를 독립적으로 관리한다.
프로그램은 논리적으로 세그먼트 단위로 메모리에 접근하고, 물리 메모리에서 필요한 만큼의 크기로 할당받을 수 있다.
비슷한 크기의 메모리 요청을 그룹화하여 관리한다.
특정 크기의 메모리 블록을 미리 할당해 두고, 필요할 때 재사용함으로써 내부 단편화를 줄인다.
메모리를 2의 거듭제곱 크기로 나누어 관리한다.
메모리 할당 시, 가장 작은 크기의 블록으로 나누고, 필요에 따라 병합하여 더 큰 블록을 만든다.
이를 통해 내부 단편화를 줄이고, 빠른 할당 및 해제를 가능하게 한다.
메모리 단편화는 컴퓨터 시스템에서 메모리를 비효율적으로 사용하는 문제를 말한다. 내부 단편화는 고정 크기의 메모리 할당에서, 외부 단편화는 가변 크기의 메모리 할당에서 주로 발생한다. 이를 해결하기 위해 다양한 메모리 관리 기법이 사용되며, 각각의 기법은 장단점이 있다.
이건 역시 정보처리기사를 공부하며 배웠던 내용이다. 확실하게 이해한건 정해진 공간에 애매하게 넣으면 빈공간이 남거나 해제할때
남는 메모리들이 단편화를 일으키고 해결하는 방법은 각양각생이라는 점은 확실하게 이해했다.