RAM에서 메모리의 공간이 작은 조각으로 나뉘어져 사용가능한 메모리가 충분히 존재하지만, 할당(사용)이 불가능한 상태를 말한다. 이는 내부, 외부 2가지로 구분된다.
Internal fragmentation. 내부 단편화 → 메모리를 할당할 때 프로세스가 필요한 양보다 더 큰 메모리가 할당되어서 프로세스에서 사용하는 메모리 공간이 낭비되는 상황.
*A App이 실행될 때 OS는 4kb를 할당했지만, 정작 프로그램은 1kb만 사용하고 있음. 이때 3kb 만큼의 내부 단편화가 발생
External Fragmentation. 외부 단편화 → 메모리가 할당되고 해제되는 작업이 반복될 때 작은 메모리가 중간중간 존재하는데, 이 사용하지 않는 메모리들이 여럿 존재하여 총 메모리 공간은 충분하지만 실제로 할당할 수 없는 상황.
*예를 들어 처음 주소에 8mb짜리 프로세스가 할당되었고 이어서 16mb를 추가 할당하였다고 가정하였을 때, 8mb 프로세스를 종료시키면 처음 주소부터 8mb만큼 공간이 생긴다. 이런 식으로 반복하여 빈 공간이 계속 생기는데 이에 적합한 8mb 이하의 프로세스가 나오지 않는다면 해당 공간은 계속 비워지게 된다. 이게 차곡차곡 쌓이면 공간은 있는데, 마땅히 넣을 자리가 없어서 외부단편화가 생겼다고 한다.
해결 방법 > Paging, Segmentation, Memory pool
출처 : https://jeong-pro.tistory.com/91
'Computing > Operating System' 카테고리의 다른 글
[GNU] 정리. (0) | 2021.10.13 |
---|---|
Memory Leak, Cache Hit&Miss (0) | 2021.10.13 |
Bottleneck. 병목 (0) | 2021.10.13 |
False sharing. 거짓 공유 (0) | 2021.10.13 |
Race condition. 경쟁 상태 (0) | 2021.10.13 |