이번 글에서는 메모리 관리에 대해 자세히 알아보겠습니다.
메모리 관리란 무엇을 의미하나요?
메모리는 데이터를 저장하는 데 사용되는 컴퓨터의 중요한 부분입니다. 컴퓨터 시스템에서 사용할 수 있는 주 메모리의 양은 매우 제한되어 있으므로 관리는 컴퓨터 시스템에 매우 중요합니다. 언제든지 많은 프로세스가 이를 위해 경쟁하고 있습니다. 또한 성능을 높이기 위해 여러 프로세스가 동시에 실행됩니다. 이를 위해서는 여러 프로세스를 메인 메모리에 보관해야 하므로 이를 효과적으로 관리하는 것이 더욱 중요합니다.
메모리 관리의 역할
다음은 컴퓨터 시스템에서 메모리 관리의 중요한 역할입니다.
- 메모리 관리자는 메모리 위치가 비어 있는지 할당되었는지 여부에 관계없이 메모리 위치의 상태를 추적하는 데 사용됩니다. 소프트웨어가 대규모 메모리가 할당되었음을 인식할 수 있도록 추상화를 제공하여 기본 메모리를 처리합니다.
- 메모리 관리자는 적은 양의 주 메모리를 가진 컴퓨터가 사용 가능한 메모리의 크기나 양보다 큰 프로그램을 실행할 수 있도록 허용합니다. 이는 스와핑 개념을 사용하여 기본 메모리와 보조 메모리 사이에서 정보를 앞뒤로 이동함으로써 이를 수행합니다.
- 메모리 관리자는 각 프로세스에 할당된 메모리가 다른 프로세스에 의해 손상되지 않도록 보호하는 역할을 담당합니다. 이것이 보장되지 않으면 시스템이 예측할 수 없는 동작을 보일 수 있습니다.
- 메모리 관리자는 프로세스 간 메모리 공간 공유를 활성화해야 합니다. 따라서 두 프로그램은 시간은 다르지만 동일한 메모리 위치에 상주할 수 있습니다.
메모리 관리 기술:
메모리 관리 기술은 다음과 같은 주요 범주로 분류될 수 있습니다.
- 연속 메모리 관리 체계
- 비연속 메모리 관리 체계
연속 메모리 관리 체계:
연속 메모리 관리 체계에서 각 프로그램은 단일 연속 저장 위치 블록, 즉 연속적인 주소가 있는 메모리 위치 집합을 차지합니다.
단일 연속 메모리 관리 체계:
단일 연속 메모리 관리 체계는 초기 컴퓨터 시스템에서 사용된 가장 간단한 메모리 관리 체계입니다. 이 방식에서는 주 메모리가 두 개의 연속된 영역 또는 파티션으로 나뉩니다. 운영 체제는 일반적으로 낮은 메모리의 한 파티션에 영구적으로 상주하며 사용자 프로세스는 다른 파티션에 로드됩니다.
단일 연속 메모리 관리 방식의 장점:
- 구현이 간단합니다.
- 관리 및 설계가 쉽습니다.
- 단일 연속 메모리 관리 체계에서는 프로세스가 로드되면 전체 프로세서 시간이 주어지며 다른 프로세서는 이를 방해하지 않습니다.
단일 연속 메모리 관리 방식의 단점:
- 프로세스가 사용 가능한 메모리 공간을 모두 사용할 가능성이 낮기 때문에 사용되지 않은 메모리로 인한 메모리 공간 낭비입니다.
- CPU는 유휴 상태로 유지되어 디스크가 바이너리 이미지를 주 메모리에 로드할 때까지 기다립니다.
- 프로그램이 사용 가능한 전체 메인 메모리 공간에 맞지 않을 정도로 큰 경우에는 실행할 수 없습니다.
- 다중 프로그래밍을 지원하지 않습니다. 즉, 여러 프로그램을 동시에 처리할 수 없습니다.
다중 분할:
단일 연속 메모리 관리 체계는 컴퓨터가 한 번에 하나의 프로그램만 실행하도록 제한하므로 메모리 공간과 CPU 시간이 낭비되므로 비효율적입니다. 비효율적인 CPU 사용 문제는 둘 이상의 프로그램을 동시에 실행할 수 있는 다중 프로그래밍을 사용하여 극복할 수 있습니다. 두 프로세스 사이를 전환하려면 운영 체제가 두 프로세스를 모두 주 메모리에 로드해야 합니다. 운영 체제는 여러 프로세스를 주 메모리에 로드하기 위해 사용 가능한 주 메모리를 여러 부분으로 나누어야 합니다. 따라서 여러 프로세스가 주 메모리에 동시에 상주할 수 있습니다.
다중 파티셔닝 구성표는 두 가지 유형이 될 수 있습니다.
- 고정 파티셔닝
- 동적 파티셔닝
고정 파티셔닝
주 메모리는 고정 파티션 메모리 관리 방식 또는 정적 파티셔닝을 통해 여러 개의 고정 크기 파티션으로 나뉩니다. 이러한 파티션의 크기는 같을 수도 있고 다를 수도 있습니다. 각 파티션은 단일 프로세스를 보유할 수 있습니다. 파티션 수는 다중 프로그래밍 정도, 즉 메모리의 최대 프로세스 수를 결정합니다. 이러한 파티션은 시스템 생성 시 만들어지며 그 이후에도 고정된 상태로 유지됩니다.
고정 분할 메모리 관리 체계의 장점:
- 구현이 간단합니다.
- 관리 및 설계가 쉽습니다.
고정 분할 메모리 관리 체계의 단점:
- 이 체계는 내부 단편화로 인해 어려움을 겪습니다.
- 파티션 수는 시스템 생성 시 지정됩니다.
동적 파티셔닝
동적 파티셔닝은 고정 파티셔닝 방식의 문제점을 극복하기 위해 설계되었습니다. 동적 파티셔닝 체계에서 각 프로세스는 처리를 위해 로드될 때 필요한 만큼의 메모리만 차지합니다. 요청된 프로세스에는 전체 실제 메모리가 소진되거나 남은 공간이 요청 프로세스를 수용하기에 부족할 때까지 메모리가 할당됩니다. 이 구성표에서 사용되는 파티션은 가변 크기이며 파티션 수는 시스템 생성 시 정의되지 않습니다.
동적 파티셔닝 메모리 관리 체계의 장점:
- 구현이 간단합니다.
- 관리 및 설계가 쉽습니다.
동적 파티셔닝 메모리 관리 체계의 단점:
- 이 체계는 또한 내부 단편화로 인해 어려움을 겪습니다.
- 파티션 수는 시스템 분할 시 지정됩니다.
비연속 메모리 관리 체계:
비연속 메모리 관리 방식에서는 프로그램이 서로 다른 블록으로 나누어져 서로 인접할 필요가 없는 메모리의 서로 다른 부분에 로드됩니다. 이 방식은 블록의 크기와 블록이 주 메모리에 있는지 여부에 따라 분류될 수 있습니다.
페이징이란 무엇입니까?
페이징은 주 메모리의 연속 할당 요구 사항을 제거하는 기술입니다. 여기서 주 메모리는 프레임이라고 불리는 고정된 크기의 물리적 메모리 블록으로 나뉩니다. 메인 메모리를 최대화하고 외부 조각화를 방지하려면 프레임 크기를 페이지 크기와 동일하게 유지해야 합니다.
페이징의 장점:
- 페이지는 외부 조각화를 줄입니다.
- 구현이 간단합니다.
- 메모리 효율성.
- 프레임 크기가 동일하기 때문에 교체가 매우 쉽습니다.
- 보다 빠른 데이터 접근을 위해 사용됩니다.
세분화란 무엇입니까?
분할은 주 메모리의 연속 할당 요구 사항을 제거하는 기술입니다. 여기서 주 메모리는 세그먼트라고 하는 가변 크기의 물리적 메모리 블록으로 나뉩니다. 이는 프로그래머가 프로그램을 구성하기 위해 따르는 방식을 기반으로 합니다. 세그먼트화된 메모리 할당을 사용하면 각 작업은 각 모듈마다 하나씩 서로 다른 크기의 여러 세그먼트로 나뉩니다. 함수, 서브루틴, 스택, 배열 등이 이러한 모듈의 예입니다.