위 코드는 변수 x와 y의 값을 서로 바꾸기 위해 짠 코드이다.과연 x와 y의 값은 바뀌었을까? 출력값을 확인해보면 바뀌지 않았다. 왜 바뀌지 않았을까?그 이유는 바로 swap함수는 x, y의 복사된 값을 인자로 받은 a, b를 서로 바꿨을 뿐이지 실제 x와 y를 바꾸
B-TREE > 전산학에서 B-트리(B-tree)는 데이터베이스와 파일 시스템에서 널리 사용되는 트리 자료구조의 일종으로, 이진 트리를 확장해 하나의 노드가 가질 수 있는 자식 노드의 최대 숫자가 2보다 큰 트리 구조이다. -위키백과 쉽게 말하자면 기존의 이진트리와
저번 게시글에 이어서 B-TREE의 연산 과정을 함수와 함께 간단히 보도록 해보자. 먼저 최소차수를 상수로 선언해준다. 키의 개수나 자식의 개수의 상한과 하한은 최소차수의 영향을 받으므로 자주 쓰게 될 것이다. 이어서 노드 구조체를 선언한다.
이어서 노드의 병합과 삭제 과정을 살펴보겠다. 키를 삭제하는 연산을 수행했을 때에도 B-TREE의 속성 중 하나인 '모든 노드는 t(최소차수) - 1개 이상의 키를 가져야 한다.' 를 만족해야 한다. \
B+TREE는 B-TREE와 거의 유사하지만 약간의 차이가 있다.B-TREE에서는 키와 데이터가 동일했지만 B+TREE에서는 키와 데이터가 분리되어있다.
아래 내용은 컴퓨터 시스템(computer systems: a programmer's perspective)의 '9.9장 - 동적 메모리 할당'의 내용을 재구성 하였습니다. 동적 메모리 할당기는 힙(heap)이라고 하는 프로세스의 가상 메모리 영역을 관리한다.
관련 내용에 대해서는 저번 포스팅에서 설명했기에 이번 포스팅에서는 묵시적 가용 리스트를 이용해 구현한 동적 메모리 할당기 코드를 보도록 하겠다. 코드 1. mm_init mm_init 함수는 초기 힙 영역을 할당하는 것과 같은 필요한 초기화들을 수행한다. 가용리스트
이번에는 명시적 가용 리스트(explicit free list)를 이용한 할당기를 구현해 보자.명시적 가용 리스트는 가용 블록을 일종의 명시적 자료구조로 구성해 가용 리스트들을 모두 연결한다. 가용 블록의 header와 footer를 제외한 영역은 할당되어 데이터가 들
마지막으로 분리 가용 리스트를 이용한 할당기를 만들어 보자. 분리 가용 리스트는 다수의 가용 리스트를 유지하며, 각 리스트는 거의 동일한 크기의 블록들을 저장한다. 기본적인 아이디어는 모든 가능한 블록 크기를 크기 클래스라고 하는 동일 클래스의 집합들로 분리하는 것이다