SlideShare uma empresa Scribd logo
1 de 17
2.2.2 순차할당 발표자 : 유유 (유장혁)
순차할당? 선형 목록 저장? … … ? 배열!
근데… 어찌보면 배열이 아닐 수도 있다. ‘2.2.6 배열과 직교 목록’에서 순차 할당/ 연결된 할당으로 배열을 표현한다. 즉, 할당 자체는 메모리 관련된 방식일 뿐이고 배열은 선형 목록 형태의 연결 방식을 말한다. 다시말해 할당은 목록을 저장하는 방법이다.
목록의 항목들을 연속적인 장소들에 연달아서…, 한 노드 다음에 또 한 노드를 놓는 식으로 배치 노드당 워드 개수 노드(정보, 메모리의 한 워드) 메모리칸의 주소 기준 주소, 인위적으로 가정한 노드 X[0]의 장소
스택 - Push 삽입(Push) 스택 포인터라고 부르는 변수 새 요소 1. 스택 포인트를 증가시고 2.X[T] 노드를 만들어서 Y 를 넣는다.
스택 - Pop 스택이 비어 있으면 T = 0으로 설정 삭제(Pop): 스택이 비어있지 않을 경우 Y 를 최상위 노드,X[T]와 같게하고 X[T] 를 삭제하고 스택 포인트를 감소시킨다.
대기열 넣기 (Enqueue) 뒷단 뽑기(Dequeue) F = R = 0 이면 대기열이 비어 있다. 앞단
순환 대기열 대기열이 메모리에 범람하는 문제를 피하기 위해서 암묵적 순환 고리 형태로 배치하는 방법이다. F = R = 0 이 되지 않는다 즉, 대기열이 비는 형태가 되지 않는다
Underflow /Overflow Underflow ,[object Object]
프로그램의 흐름을 제어하는 데 사용하는 의미 있는 조건이다.Ovelflow(위넘침) ,[object Object]
프로그램이 종료된다.,[object Object]
가변 크기 목록을 사용해서 스택의 기준 위치를 변경하면 다음과 같다. BASE[i] BASE[i+1] TOP[i] TOP[i] = BASE[i] 이면 스택 i가 비어 있음을 뜻한다 BASE[i] REAR[i] FRONT[i] BASE[i+1]
가르비크(J. Garwick) 가 제안한 알고리즘 : 순차 표들의 재할당 G1.[초기화] 스택 크기와 같은 추가적인 배열을 사용해서 메모리를 완전히 다시 채우는 방법 For( 1<= j  <= n; j++ ) { G2. [통계 수집] } G3.[메모리가 꽉 찼는가?] 끝 G4. [할당 계수 계산] G5.[새 기준 주소들을 계산] G6.[다시 채우기] 알고리즘 R 수행
알고리즘 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 로
G0. 추가적인 배열에 값이 있지 않으면        추가적인 배열에 현재 메모리의 값을 복사한다. G1. 현재 사용할 수 있는 총 메모리 공간을 구한다       최초 증가량을 0으로 설정한다 G2. 담을 수 있는 메모리 공간을 줄이면서 각 목록의 증가량을 구한다. G3. 메모리 공간이 있는 지 여부를 확인한다.       메모리가 다 찼으면 수행을 종료한다. G4. 개별 목록에 가용 공간을 부여할 수 있는 할당 계수를 계산한다.       메모리의 10%는 공평하게 90%는 증가량에 비례해서 분배한다. G5. 할당 계수를 이용해서 새 기준 주소를 설정한다. G6. 알고리즘 R 을 수행해서 삽입에 의해서 증가된 값을 재설정한다.       추가적인 배열에 현재 메모리의 값을 복사해 둔다.
수학적인 분석 표 전체를 구축하는 다시 채우기 연산 도중에 한 워드가 한 장소에서 다른 장소로 옮겨지는 데 필요한 이동 횟수의 평균은? 삽입 연산의 갯수 항목 갯수 이동 횟수는 삽입 연산의 제곱에 비례한다.
경험적인 측면 메모리의 절반만 적재시(가용 공간이 전체 공간의 반과 같음)에는 재배치 알고리즘을 이용할 필요가 없다. 메모리가 거의 다 채워지면 알고리즘 R 을 수행할 때 찾아야할 횟수가 많아지기 떄문에 수행시간이 오래 걸린다. G3.[메모리가 꽉 찼는가?] 끝 과도한 다시 채우기를 방지하기 위한 하한값 적절한 값의 선택이 필요 0 으로 설정하면 메모리를 100% 에 가까이 사용할 수도 있다

Mais conteúdo relacionado

Destaque

TAOCP1 - 1.2.11.1 - O 표기법
TAOCP1 - 1.2.11.1 - O 표기법TAOCP1 - 1.2.11.1 - O 표기법
TAOCP1 - 1.2.11.1 - O 표기법JangHyuk You
 
IT 개발자가 쓴 통쾌한 인간관리 이야기 - Part2 : 프로세스가 제품이다
IT 개발자가 쓴 통쾌한 인간관리 이야기 - Part2 : 프로세스가 제품이다IT 개발자가 쓴 통쾌한 인간관리 이야기 - Part2 : 프로세스가 제품이다
IT 개발자가 쓴 통쾌한 인간관리 이야기 - Part2 : 프로세스가 제품이다JangHyuk You
 
Programming Lisp Clojure - 2장 : 클로저 둘러보기
Programming Lisp Clojure - 2장 : 클로저 둘러보기Programming Lisp Clojure - 2장 : 클로저 둘러보기
Programming Lisp Clojure - 2장 : 클로저 둘러보기JangHyuk You
 
게임 프로그래머를 위한 기초 수학 및 물리 - 9장
게임 프로그래머를 위한 기초 수학 및 물리 - 9장게임 프로그래머를 위한 기초 수학 및 물리 - 9장
게임 프로그래머를 위한 기초 수학 및 물리 - 9장JangHyuk You
 
게임에서 사용할 수 있는 포물선 운동
게임에서 사용할 수 있는 포물선 운동게임에서 사용할 수 있는 포물선 운동
게임에서 사용할 수 있는 포물선 운동세민 이
 
[아꿈사] 게임 기초 수학 물리 1,2장
[아꿈사] 게임 기초 수학 물리 1,2장[아꿈사] 게임 기초 수학 물리 1,2장
[아꿈사] 게임 기초 수학 물리 1,2장sung ki choi
 
게임 프로그래머를 위한 기초 수학 및 물리 - 8장
게임 프로그래머를 위한 기초 수학 및 물리 - 8장게임 프로그래머를 위한 기초 수학 및 물리 - 8장
게임 프로그래머를 위한 기초 수학 및 물리 - 8장JangHyuk You
 
게임 프로그래밍 기초 공부법
게임 프로그래밍 기초 공부법게임 프로그래밍 기초 공부법
게임 프로그래밍 기초 공부법Chris Ohk
 
프로그래머가 몰랐던 멀티코어 CPU 이야기 - 15, 16장
프로그래머가 몰랐던 멀티코어  CPU 이야기 - 15, 16장프로그래머가 몰랐던 멀티코어  CPU 이야기 - 15, 16장
프로그래머가 몰랐던 멀티코어 CPU 이야기 - 15, 16장JangHyuk You
 

Destaque (9)

TAOCP1 - 1.2.11.1 - O 표기법
TAOCP1 - 1.2.11.1 - O 표기법TAOCP1 - 1.2.11.1 - O 표기법
TAOCP1 - 1.2.11.1 - O 표기법
 
IT 개발자가 쓴 통쾌한 인간관리 이야기 - Part2 : 프로세스가 제품이다
IT 개발자가 쓴 통쾌한 인간관리 이야기 - Part2 : 프로세스가 제품이다IT 개발자가 쓴 통쾌한 인간관리 이야기 - Part2 : 프로세스가 제품이다
IT 개발자가 쓴 통쾌한 인간관리 이야기 - Part2 : 프로세스가 제품이다
 
Programming Lisp Clojure - 2장 : 클로저 둘러보기
Programming Lisp Clojure - 2장 : 클로저 둘러보기Programming Lisp Clojure - 2장 : 클로저 둘러보기
Programming Lisp Clojure - 2장 : 클로저 둘러보기
 
게임 프로그래머를 위한 기초 수학 및 물리 - 9장
게임 프로그래머를 위한 기초 수학 및 물리 - 9장게임 프로그래머를 위한 기초 수학 및 물리 - 9장
게임 프로그래머를 위한 기초 수학 및 물리 - 9장
 
게임에서 사용할 수 있는 포물선 운동
게임에서 사용할 수 있는 포물선 운동게임에서 사용할 수 있는 포물선 운동
게임에서 사용할 수 있는 포물선 운동
 
[아꿈사] 게임 기초 수학 물리 1,2장
[아꿈사] 게임 기초 수학 물리 1,2장[아꿈사] 게임 기초 수학 물리 1,2장
[아꿈사] 게임 기초 수학 물리 1,2장
 
게임 프로그래머를 위한 기초 수학 및 물리 - 8장
게임 프로그래머를 위한 기초 수학 및 물리 - 8장게임 프로그래머를 위한 기초 수학 및 물리 - 8장
게임 프로그래머를 위한 기초 수학 및 물리 - 8장
 
게임 프로그래밍 기초 공부법
게임 프로그래밍 기초 공부법게임 프로그래밍 기초 공부법
게임 프로그래밍 기초 공부법
 
프로그래머가 몰랐던 멀티코어 CPU 이야기 - 15, 16장
프로그래머가 몰랐던 멀티코어  CPU 이야기 - 15, 16장프로그래머가 몰랐던 멀티코어  CPU 이야기 - 15, 16장
프로그래머가 몰랐던 멀티코어 CPU 이야기 - 15, 16장
 

TAOCP1 - 2.2.2 - 순차할당

  • 1. 2.2.2 순차할당 발표자 : 유유 (유장혁)
  • 2. 순차할당? 선형 목록 저장? … … ? 배열!
  • 3. 근데… 어찌보면 배열이 아닐 수도 있다. ‘2.2.6 배열과 직교 목록’에서 순차 할당/ 연결된 할당으로 배열을 표현한다. 즉, 할당 자체는 메모리 관련된 방식일 뿐이고 배열은 선형 목록 형태의 연결 방식을 말한다. 다시말해 할당은 목록을 저장하는 방법이다.
  • 4. 목록의 항목들을 연속적인 장소들에 연달아서…, 한 노드 다음에 또 한 노드를 놓는 식으로 배치 노드당 워드 개수 노드(정보, 메모리의 한 워드) 메모리칸의 주소 기준 주소, 인위적으로 가정한 노드 X[0]의 장소
  • 5. 스택 - Push 삽입(Push) 스택 포인터라고 부르는 변수 새 요소 1. 스택 포인트를 증가시고 2.X[T] 노드를 만들어서 Y 를 넣는다.
  • 6. 스택 - Pop 스택이 비어 있으면 T = 0으로 설정 삭제(Pop): 스택이 비어있지 않을 경우 Y 를 최상위 노드,X[T]와 같게하고 X[T] 를 삭제하고 스택 포인트를 감소시킨다.
  • 7. 대기열 넣기 (Enqueue) 뒷단 뽑기(Dequeue) F = R = 0 이면 대기열이 비어 있다. 앞단
  • 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% 에 가까이 사용할 수도 있다