김동욱
가입: 2013년 9월 14일 올린 글: 23
|
올려짐: 2013년10월21일 16:14 주제: HW4-3 GC에 대해서 질문드립니다. |
|
|
PDF를 보면
코드: | (S,M,E,malloc::C,K) -> (l::S,M,E,C,K) 과정에서 |domM|이 8192 개가 되면
(S,M,E,malloc::C,K) -> (l,S,(gc(~),E,C,K) 로 계산. |
이런식으로 스펙이 나와있는데요.
위 스펙으로 보면 sm5의 MALLOC에 관해서만 gc를 실행하게끔 되어있는데.
코드: | (V(L l)::V v::s,_,_,STORE::c,_) -> (s, (l,v)::m, e, c, k) |
Sm5의 실제 구현을 보면 STORE를 실행할때도 메모리 번지수 (loccount)는 유지되지만 실제 메모리 리스트의 길이는 증가하고 있습니다.
단순히 변수 하나를 생성하고 STORE만 만번쯤 반복하는 프로그램을 실행하더라도 메모리 번지수는 단 하나지만
메모리 리스트의 크기는 8192번을 넘어서기때문에 유용한 gc를 구현한다면 MALLOC 뿐만아니라 STORE부분도 손을 봐야할 것 같아요.
그런데 또 PDF나 작년게시판들을 보면 실제적으로 유용한 gc를 구현한다라기보다 가상머신에서의 gc에 대한 로직을 한번 구현만 해보자..!
이런 느낌이라 gc를 구현할 때 단순히 loccount의 크기 관리에 중점을 두어야하는지 아니면 실제적으로 메모리 리스트의 크기에 중점을 두어야할지 애매해서 질문드립니다.
질문을 정리해보면.
운용되는 메모리 번지수의 개수에만 제한이 있고 번지수 자체와 메모리 리스트의 크기는 계속 커질 수 있는 건가요?
다른 말로 |domM|은 메모리 m의 크기를 의미하나요 아니면 loccount, 또는 서로다른 메모리 번지수의 개수를 의미하나요?
감사합니다. |
|