무료 목록이란 무엇입니까?
무료 목록은 동적 메모리 할당을 사용할 때 실행중인 프로그램에서 사용할 수있는 컴퓨터 메모리 위치의 주소를 보유하는 데이터 구조입니다. 프로그램이 힙이라고 불리는 무료 메모리 영역에서 공간을 할당해야 할 때 목록이 필요합니다. 무료 목록의 구현은 간단한 링크 목록이 될 수 있거나 정렬 된 트리를위한 더 복잡한 데이터 구조가 될 수 있습니다.
프로그램이 프로그램 실행 중에 정보를 저장하기 위해 공간이 필요한 경우, 기본 운영 체제로부터 특정 양의 메모리를 요청해야합니다. 활용할 수있는 메모리 블록의 위치는 무료 목록에 저장됩니다. 할당 된 메모리의 양은이 블록 중 하나 이상에서 사용할 수 있어야합니다.위치가 반환되고, 목록의 요소가 제거됩니다.
프로그램이 메모리를 사용하여 수행 한 후에는 해제 할 수 있습니다. 여기에는 메모리 블록으로의 포인터를 무료 목록으로 다시 전달하는 것이 포함되며, 다음에 할당을 시도 할 때 메모리 할당이 비어 있거나 사용 가능한 메모리 블록이 충분하지 않기 때문에 다음 번에 할당 할 수 있습니다.
가장 간단한 메모리 관리 형태를 첫 번째 적합 시스템이라고합니다.이 시스템은 무료 메모리 위치의 단일 목록을 유지합니다. 메모리 요청이 전송되면 목록이 횡단되고 충분히 큰 첫 번째 블록이 반환됩니다. 블록이 요청 된 크기의 두 배 이상이면 사용되지 않은 절반이 목록에 다시 추가됩니다.목록으로 반환되지 않을 수있는 조각난 메모리 영역.
다른 형태의 메모리 관리를 버디 할당 시스템이라고합니다. 첫 번째 적합 시스템과는 달리, 버디 할당은 여러 개의 무료 목록을 유지하고, 각각은 하나의 특정 크기의 개방형 블록을 보유하고 있습니다. 이는 할당 요청이 수신되면, 요청을 채우기에 충분히 큰 블록을 보유하는 목록이 상담되고, 요청이없는 경우, 두 배의 크기가없는 경우, 두 배의 크기가 나오지 않으면 두 배의 큰 블록이 반환되지 않음을 의미합니다. 요구 사항.
"Free List"라는 용어는 단일 메모리 주소 목록을 참조하거나 훨씬 더 복잡한 유형의 데이터 구조를 참조 할 수 있습니다. 간단하고 균형을 유지하면 소스 코드를 복잡하게하는 비용으로 열린 메모리 블록을 찾는 속도를 높이는 데 도움이 될 수 있습니다.Alize 정렬 트리이지만 읽고, 디버그하고 수정하기가 훨씬 쉬운 프로그래밍 코드를 만듭니다.
일부 프로그래밍 언어와 운영 체제는 쓰레기 수집이라는 특수 메커니즘을 사용합니다. 이것은 무료 목록에서 다른 항목을 가져 와서 자유 공간을 통합하여 인접 해져서 조각화를 방지하고 더 큰 메모리 블록을 배정 할 수있는 효과가 있습니다.
.