728x90
반응형
Goal
- 내부 단편화, 외부 단편화에 대해 설명할 수 있다.
- 메모리 단편화 해결 방법에 어떤 것들이 있는지 설명할 수 있다.
메모리 단편화(Memory Fragmentation)란?
메모리 단편화란 메모리 공간이 비효율적으로 사용되어 저장 공간이 낭비되는 것을 말한다.
메모리 단편화로 일어날 수 있는 현상
- 총 메모리 공간은 충분 하지만 실제 사용이 불가능할 수 있다.
- 실제 사용 가능한 공간이 줄어들어 시스템 성능의 저하를 일으킬 수 있다.
- 실제 사용할 수 있는 공간을 찾는 과정이 필요
- 잦은 페이지 교체
- swapping
메모리 단편화의 종류로 내부 단편화, 외부 단편화가 있다.
내부 단편화(Internal fragmentation)
할당한 영역 중 사용되지 않는 공간으로 인해 공간이 낭비되는 것을 의미한다.
'내부'라는 용어는 할당한 영역 내부에 사용되지 않는 공간이 있다는 것을 뜻한다.
ex)
- 페이징 기법에서 한 페이지를 크게 할 경우 내부 단편화가 발생할 수 있다.
- 배열을 너무 크게 잡은 경우
외부 단편화(External fragmentation)
메모리 여유 공간이 띄엄 띄엄 존재해서 실제로 사용할 수 없는 경우를 의미한다.
'외부'라는 용어는 사용할 수 없는 기억 장소가 할당된 영역 밖에 있다는 것을 뜻한다.
ex)
- 동적 메모리 할당 해제를 자주 하는 경우
메모리 단편화 해결 기법
페이징/세그멘테이션 혼용
- 페이징(paing) : 외부 단편화 해결, 내부 단편화 존재
- 세그멘테이션(sementation) : 내부 단편화 해결, 외부 단편화 존재
운영체제에서 사용하는 방법이다.
메모리 풀(memory pool)
미리 고정된 크기의 메모리를 할당받아 메모리 동적 할당을 가능하게 해준다.
new, delete와 같이 할당/해제의 기능을 제공한다.
하지만, 처음 미리 할당 받은 공간에 대해서 일정 크기 블록을 나눠주고 회수하는 방식이라 단편화가 발생하지 않는다.
잦은 동적 할당/해제가 필요한 경우 사용하는 방식이며, 프로그래머가 직접 구현해서 사용할 수 있는 방식이다.
장점
- 실행 시간으로 단편화 없이 메모리를 할당할 수 있다.
- 실행 시간(run-time)에 블록을 할당하고 해제하는데 적은 비용이 든다. (잦은 동적 할당/해제에 비해)
- 다른 크기를 관리하는 여러개의 할당자를 두고 관리할 수 있다.
단점
- 사용하는 공간보다 더 많은 공간을 할당 받은 경우 낭비가 발생할 수 있다. (내부 단편화)
통합과 압축
일반적인 단편화 해결 방법으로 내부, 외부 단편화 모두 해결 가능하다.
통합(coalescing) : 인접한 둘 이상의 공백을 그들 사이의 경계를 없애고 하나의 공백으로 합치는 것
압축(compaction) : 사용중인 영역과 빈 영역을 각각 한쪽으로 몰아 빈 영역들을 하나로 모으는 것
ex) 디스크 조각 모음
728x90
반응형
'운영체제' 카테고리의 다른 글
가상 메모리(virtual memory) (2) | 2020.11.25 |
---|---|
메모리 관리 2 - 메모리 관리 전략 (0) | 2020.11.23 |
메모리 관리 1 - 주소 바인딩 (0) | 2020.11.20 |
교착 상태(Dead Lock) (0) | 2020.11.19 |
동기화(Synchronization) (0) | 2020.11.13 |