무료 목록이란 무엇입니까?
사용 가능한 목록은 동적 메모리 할당을 사용할 때 실행중인 프로그램에서 사용할 수있는 컴퓨터 메모리 위치의 주소를 보유하는 데이터 구조입니다 . 목록은 프로그램이 공간을 할당해야 할 때 필요합니다. 사용 가능한 메모리 영역에서 힙이라고합니다 . 사용 가능한 목록의 구현 a 간단한 연결된 목록 또는 더 복잡한 데이터 구조 일 수 있습니다. 정렬 트리 . 가장 높은 수준의 컴퓨터 프로그래밍 언어가 자동으로 무료 목록을 처리하고, manual 수동 관리의 필요성을 제거합니다.
프로그램 실행 중 정보를 저장할 공간이 필요한 경우 기본 운영 체제에 특정 양의 메모리를 요청해야합니다 . 사용 가능한 블록의 위치는 무료로 저장됩니다. 할당이 성공적으로 이루어 지려면 요청 된 메모리의 양이 이들 블록 중 하나 이상에서 사용 가능해야합니다 . 적절한 메모리 위치가 반환 될 때 포인터 리스트의 요소가 제거됩니다.
메모리를 사용하여 프로그램을 완료 한 후에는 할당을 해제 할 수 있습니다. 여기에는 메모리에 대한 포인터를 사용 가능 목록으로 다시 전달하는 것이 포함됩니다. 목록이 비어 있거나 프로그램 요청을 이행 할만큼 충분한 메모리 블록이 없기 때문에 메모리 할당이 실패 할 수 있습니다.
가장 간단한 형태의 메모리 관리를 첫 번째 맞춤 시스템이라고합니다.이 시스템은 사용 가능한 단일 메모리 위치 목록을 유지합니다 . 메모리 요청이 전송되면 목록이 통과되고 첫 번째 블록 block 블록이 요청 된 크기의 두 배 이상인 경우 요청한 크기가 반으로 줄어든 후 사용되지 않은 절반이 목록에 다시 추가됩니다. 목록에 반환되지 않을 수있는 메모리 영역 조각화 위험.
다른 형태의 메모리 관리를 버디 할당 시스템이라고합니다 . 처음 적합 시스템과는 달리, 버디 할당은 여러 개의 무료 목록을 유지합니다. 할당 요청이 수신되면, 요청을 채우기에 충분한 크기의 블록을 보유한 목록이 참조되고 열린 위치가 리턴됩니다 . 크기가 두 배 미만인 블록이없는 경우 요구 사항을 충족시키기 위해 더 큰 블록이 2 개로 분할됩니다.
"사용 가능한 목록"이라는 용어는 단일 링크 된 메모리 주소 목록을 의미하거나 훨씬 더 복잡한 유형의 데이터 구조를 나타낼 수 있습니다 . 다른 유형의 정렬 트리, 단순하고 균형을 유지한다면, code 소스 코드를 복잡하게 만들면서 오픈 메모리 블록을 찾는 속도를 높이는 데 도움이됩니다 . 링크 된 목록은 특수 정렬 트리보다 느릴 수 있지만 읽기 쉬운 프로그래밍 코드를 생성합니다. 디버그 및 수정
일부 프로그래밍 언어와 운영 체제는 가비지 수집이라는 특수 메커니즘을 사용합니다 . 이것은 프로세스입니다 빈 목록에서 다른 항목을 가져 와서 빈 공간을 연속하여 통합 할 수 있습니다. 조각화를 방지하고 더 큰 메모리 블록을 할당하는 효과.