8. 순환 대기열 대기열이 메모리에 범람하는 문제를 피하기 위해서 암묵적 순환 고리 형태로 배치하는 방법이다. F = R = 0 이 되지 않는다 즉, 대기열이 비는 형태가 되지 않는다
9.
10.
11.
12. 가변 크기 목록을 사용해서 스택의 기준 위치를 변경하면 다음과 같다. BASE[i] BASE[i+1] TOP[i] TOP[i] = BASE[i] 이면 스택 i가 비어 있음을 뜻한다 BASE[i] REAR[i] FRONT[i] BASE[i+1]
13. 가르비크(J. Garwick) 가 제안한 알고리즘 : 순차 표들의 재할당 G1.[초기화] 스택 크기와 같은 추가적인 배열을 사용해서 메모리를 완전히 다시 채우는 방법 For( 1<= j <= n; j++ ) { G2. [통계 수집] } G3.[메모리가 꽉 찼는가?] 끝 G4. [할당 계수 계산] G5.[새 기준 주소들을 계산] G6.[다시 채우기] 알고리즘 R 수행
14. 알고리즘 R : 변경된 값이 있는 메모리를 새로운 장소에 옮긴다 R1. [초기화] j = 1 R2. [자리 이동 출발점을 찾는다] For( j++ ) If( NEWBASE[j] < BASE[j] ) If( j > n ) R3. [목록을 아래로 이동] R4. [자리 이동 출발점을 찾는다] For( j-- ) If( NEWBASE[j] > BASE[j] ) If( j == 1 ) R5. [목록을 위로 이동] 끝.G6 로
15. G0. 추가적인 배열에 값이 있지 않으면 추가적인 배열에 현재 메모리의 값을 복사한다. G1. 현재 사용할 수 있는 총 메모리 공간을 구한다 최초 증가량을 0으로 설정한다 G2. 담을 수 있는 메모리 공간을 줄이면서 각 목록의 증가량을 구한다. G3. 메모리 공간이 있는 지 여부를 확인한다. 메모리가 다 찼으면 수행을 종료한다. G4. 개별 목록에 가용 공간을 부여할 수 있는 할당 계수를 계산한다. 메모리의 10%는 공평하게 90%는 증가량에 비례해서 분배한다. G5. 할당 계수를 이용해서 새 기준 주소를 설정한다. G6. 알고리즘 R 을 수행해서 삽입에 의해서 증가된 값을 재설정한다. 추가적인 배열에 현재 메모리의 값을 복사해 둔다.
16. 수학적인 분석 표 전체를 구축하는 다시 채우기 연산 도중에 한 워드가 한 장소에서 다른 장소로 옮겨지는 데 필요한 이동 횟수의 평균은? 삽입 연산의 갯수 항목 갯수 이동 횟수는 삽입 연산의 제곱에 비례한다.
17. 경험적인 측면 메모리의 절반만 적재시(가용 공간이 전체 공간의 반과 같음)에는 재배치 알고리즘을 이용할 필요가 없다. 메모리가 거의 다 채워지면 알고리즘 R 을 수행할 때 찾아야할 횟수가 많아지기 떄문에 수행시간이 오래 걸린다. G3.[메모리가 꽉 찼는가?] 끝 과도한 다시 채우기를 방지하기 위한 하한값 적절한 값의 선택이 필요 0 으로 설정하면 메모리를 100% 에 가까이 사용할 수도 있다