이전 주제 보기 :: 다음 주제 보기 |
글쓴이 |
메시지 |
이연석
가입: 2008년 9월 5일 올린 글: 17
|
올려짐: 2015년11월11일 18:39 주제: GC 질문입니다. |
|
|
신동진님의 테스트(https://ropas.snu.ac.kr/phpbb/viewtopic.php?t=5152)를 보면 unbind되어 환경에 없지만 스택에 남아있는 location에 접근하는 명령이 있습니다.
gc 과정에서 stack에 있는 location들에 대해서도 고려를 해야하나요?
제 translator의 경우엔 k-- 프로그램을 번역해 나온 command는 환경에서 출발해 도달 가능하지 않은 location을 사용하지 않도록 구현돼있지만,
임의의 sm5 프로그램을 입력으로 받는다고 하면 stack에 대해서도 고려해야할 수도 있을 것 같습니다.
그런데 stack을 고려하지 않고 이미 memory, environment, continuation 세 부품을 사용하고 있는데 stack까지 고려하면 부품이 네 개가 되는 것 같습니다. |
|
위로 |
|
 |
최영진09
가입: 2010년 9월 8일 올린 글: 21
|
올려짐: 2015년11월11일 18:45 주제: |
|
|
저도 동일한 문제가 있습니다.
SM5의 명세만 보면 unbind 한 후에도 스택의 주소를 사용할 수 있는 것 같은데, 이렇게 되면 부품 세 개가 맞는지 궁금합니다. |
|
위로 |
|
 |
최재승
가입: 2012년 9월 10일 올린 글: 211
|
올려짐: 2015년11월11일 19:15 주제: |
|
|
인용: | gc 과정에서 stack에 있는 location들에 대해서도 고려를 해야하나요? |
고려해야 하는 세 개의 부품이 무엇인지를 제가 말해드릴 수는 없을 것 같습니다.
사실 저도 알려드리는 것이 편하지만, 교수님이 문서에 "세 개의 부품" 이라고만 쓰신 걸로 보아 수강생들이 직접 생각해서 결정하기를 의도하신 것 같기 때문입니다.
인용: | 임의의 sm5 프로그램을 입력으로 받는다고 하면 |
GC는 임의의 sm5 프로그램에 대해 제대로 작동해야 하는 것이 맞습니다. stack까지 고려해야 제대로 메모리 재활용이 되는 SM5 프로그램이 있다면, stack도 고려하셔야 합니다.
부품 개수에 대해서, 두 분 모두 헷갈려 하는 부분이 있는 것 같은데 다음의 답변이 도움이 되기를 바랍니다.
숙제 문서에 나와 있는 "세 개의 부품으로부터 도달 가능한" 이라는 표현은, "세 개의 부품만 살펴본다"라는 의미가 아닙니다.
수업자료 4-3.ppt 9쪽에 소개된 mark and sweep GC를 설명한 그림을 보시면, 메모리 상의 도달 가능한 location을 쭉 따라가면서
표시(mark)하고 있습니다. 따라서 mark and sweep 알고리즘을 구현하려면 메모리 부품 M은 당연히 살펴봐야 합니다.
"세 개의 부품"이라고 한 것은, 어느 부품으로부터 "출발하느냐"에 대한 설명입니다. 예를 들어 mark and sweep 을 설명한
그림에서는 Environment 로부터 출발해서 도달 가능한 메모리를 표시하고 있는데, SM5 기계에서는 이 출발 지점이 3 개의 부품이 된다는 의미입니다.
조교 드림
최재승 가 2015년11월11일 21:28에 수정함, 총 2 번 수정됨 |
|
위로 |
|
 |
이연석
가입: 2008년 9월 5일 올린 글: 17
|
올려짐: 2015년11월11일 19:28 주제: |
|
|
네. 답변 감사합니다. |
|
위로 |
|
 |
|