728x90
반응형
🎲 메모리 단편화란?
컴퓨터에서 프로그램을 실행하면 일정량의 메모리를 할당 해주고 코드 영역, 데이터 영역, 스택 영역, 힙 영역으로 나누어 사용하게 됩니다. 이 때, 코드 영역과 데이터 영역은 실행 이후 변하지 않지만 스택과 힙에서는 메모리 할당 해제가 빈번하게 일어납니다. 일반적으로는 높은 주소부터 순차적으로 할당을 해주지만, 앞선 메모리가 먼저 할당 해제될 경우 할당된 메모리들 사이에 빈칸이 생기게 되는데 이 빈칸의 크기에 따라 새로 할당을 해줄 수 없는 상황이 오기도 합니다. 이를 바로 메모리 단편화라고 합니다.
🍳 내부 단편화
프로그램에서 요구하는 메모리보다 더 많은 메모리를 할당해 주어 메모리가 낭비되는 현상을 내부 단편화라고 합니다. 페이징 기법을 사용할 때 Frame(논리적 메모리 단위)단위로 메모리를 넘겨주게 되는데 이때 프레임이 128byte라고 가정할 때 프로그램이 200btye를 요구하게 되면 2개의 프레임에 해당하는 256byte를 넘겨줄 수 밖에 없고 56byte가 낭비되게 됩니다.
🍳 외부 단편화
메모리는 1차원 배열처럼 연속적으로 존재합니다. 이때, 메모리 할당을 받으면 순서대로 크기에 맞게 할당을 해주게 되는데 할당순서와 할당해제 순서는 다르기 때문에 프로그램이 진행됨에 따라 메모리 중간중간에 빈공간이 생성되게 됩니다. 이렇게 되면 총합적으로는 메모리가 여유가 있더라도 메모리를 할당해주지 못하는 상황이 발생하게 되는데 이를 외부 단편화라고 합니다.
🍳 해결 방법
반응형
'운영체제' 카테고리의 다른 글
[운영체제] 세그멘테이션 기법의 원리 (0) | 2023.05.23 |
---|---|
[운영체제] 페이징 기법의 원리 (0) | 2023.05.22 |
[운영체제] 임계영역(Critical Section)의 정의 (0) | 2022.11.10 |
[운영체제] 버퍼 오버 플로우(Buffer Over Flow)의 정의와 종류 (0) | 2022.10.30 |