|
|
이전 주제 보기 :: 다음 주제 보기 |
글쓴이 |
메시지 |
한재화
가입: 2007년 10월 6일 올린 글: 25
|
올려짐: 2007년11월1일 16:58 주제: S80 을 작성할때, 메모리의 타입에 대한 질문이 있습니다. |
|
|
현재 Sm5의 구조에서는 메모리가 단순히 (loc * value) list 의 타입을 가지고 있는데요..
이를 gc 함수에 넣으면 반환되는 값이 다시금 (loc * value) list 지 않습니까?
그러면 이는 원래 있던 메모리를 재활용하는게 아니라, 새로운 메모리를 만들어내는 개념이 되는데, 이렇게 하는 것도 가비지 컬렉션의 의미와 부합하나요?
그게 아니라면, Sm5의 메모리 정의를 ref 타입으로 고쳐서 작성을 해야 할 듯 싶네요.
숙제 문서에 단순히 SM5를 뜯어고쳐서 만들라고 되어있어서 어디까지를 생각하고 구현해야 할지 감이 잘 안옵니다.
답변에 미리 감사드립니다. |
|
위로 |
|
|
남기웅
가입: 2007년 10월 10일 올린 글: 17
|
올려짐: 2007년11월1일 17:26 주제: |
|
|
물론 우리는 지금 nML 위에서 K-와 SM5를 돌리고 있으니, 실제로 가비지 컬렉션이 일어나는 것은 아니겠구요.
새로운 메모리 (loc, value) list 를 만든다는 것이, nML의 입장에서는 새로운 값을 계산하는 것이겠지만, SM5라는 가상의 기계 입장에서 생각해 본다면 원래 메모리에서 필요 없는 location들을 memory map 에서 제거한 것을 앞으로 사용하는 것이므로 재활용이 되겠지요.
예를 들어 처음의 메모리가
[(loc1, 123), (loc2, 246)] 이 상태였는데, 메모리를 검사해 보니까 loc2 는 앞으로 절대 쓸 일이 없겠다 싶으면, 메모리를 [(loc1, 123)]으로 바꿔버리는 것이지요.
이렇게 하면 그 다음 malloc 명령에서 loc2가 배정될 수 있는 것이고, 재활용 되는 거구요.
쉽게 생각해서 '이미 한 번 malloc 된 location 중에서 필요없는 것들을 모아서, 앞으로의 malloc 에서 배정할 수 있도록 하자' 입니다.
즉 메모리를 재활용 하는 것이라기보다, 현재의 메모리 상태를 바꿈으로써 location을 재사용하는 것이네요. |
|
위로 |
|
|
|
|
새로운 주제를 올릴 수 없습니다 답글을 올릴 수 없습니다 주제를 수정할 수 없습니다 올린 글을 삭제할 수 없습니다 투표를 할 수 없습니다
|
Powered by phpBB 2.0.21-7 (Debian) © 2001, 2005 phpBB Group Translated by kss & drssay
|