게시판 인덱스

 
 FAQFAQ   검색검색   멤버리스트멤버리스트   사용자 그룹사용자 그룹   사용자 등록하기사용자 등록하기 
 개인 정보개인 정보   비공개 메시지를 확인하려면 로그인하십시오비공개 메시지를 확인하려면 로그인하십시오   로그인로그인 

6-2 memory limit관련 질문있습니다

 
이 게시판은 잠겼으므로 글을 올리거나, 답변을 하거나 수정을 할 수 없습니다   이 주제는 잠겼으므로 답변을 하거나 수정을 할 수 없습니다     게시판 인덱스 -> 4190.310 Programming Languages (Fall 2019)
이전 주제 보기 :: 다음 주제 보기  
글쓴이 메시지
정재영00



가입: 2019년 9월 12일
올린 글: 13

올리기올려짐: 2019년11월15일 19:00    주제: 6-2 memory limit관련 질문있습니다 인용과 함께 답변

GC관련해서 의문점이 생겨서 질문드립니다.

memory limit를 1로 수정하고

PUSH(Val(Z 10))
MALLOC
PUSH(Val(Z 5))
MALLOC
STORE
PUSH(Val Unit)

이런 코드를 실행하면,
메모리 제한이 1임에도 불구하고
메모리에는
<1,0> : 10
<2,0> : 5
가 들어가게됩니다

이런 상황이 일어날 수 있다고 의도된 것인가요?
아니면 저희가 이런 상황이 생기지 않도록 gc를 구현해야하는건가요?
위로
사용자 정보 보기 비밀 메시지 보내기
조민기



가입: 2015년 9월 6일
올린 글: 82

올리기올려짐: 2019년11월15일 23:10    주제: 인용과 함께 답변

제가 질문을 제대로 이해했는지 잘 모르겠습니다.
메모리 제한보다 많은 메모리가 필요해서 GC로도 메모리를 확보하지 못하는 경우를 말씀하시는 건가요?
그렇다면 보충 스펙에 명시된대로 GC_Failure 예외를 발생시키셔야 합니다.
위로
사용자 정보 보기 비밀 메시지 보내기
정재영00



가입: 2019년 9월 12일
올린 글: 13

올리기올려짐: 2019년11월15일 23:40    주제: 인용과 함께 답변

gc로도 메모리를 확보하지 못하는 상황이 아니라,
메모리 제한을 1로 바꾸어도 테스트 결과 저 코드가 문제없이 동작합니다(STORE를 2번해야되네요)

mem limit이 1일 때,
접근가능한 메모리가 1개인 상태에서 MALLOC을 하면 GC_failure가 뜰텐데,
PUSH(Val(Z 10))
MALLOC
PUSH(Val(Z 5))
MALLOC
STORE
STORE
이런식으로 테스트를하면 두 번째 MALLOC을 할 때 환경이나 메모리에는 아무값도 없기 때문에 에러가 안 나지 않나요?
하지만 두 번의 STORE를 진행하면
메모리에는
<1,0> : 10
<2,0> : 5
가 들어가게됩니다(메모리 제한을 1로 바꾸었음에도 불구하고)
그래서 gc를 할 때 환경뿐만 아니라 스택에 있는 location들도 reachable_loc에 추가해야되는지 궁금합니다

혹시 제가 뭔가 잘못이해하고 있는거라면
메모리제한을 1로 수정했을 때,
PUSH(Val(Z 10))
MALLOC
PUSH(Val(Z 5))
MALLOC
STORE
STORE
을 수행하면 어느 명령어에서 에러가 떠야하나요(혹은 뜨지 않나요)?
위로
사용자 정보 보기 비밀 메시지 보내기
조민기



가입: 2015년 9월 6일
올린 글: 82

올리기올려짐: 2019년11월16일 1:16    주제: 인용과 함께 답변

말씀하신 예제에서 문제 없이 실행되는 것이 맞습니다. malloc할 때 메모리가 늘어나는 것이 아니라 첫 store를 할 때 늘어나기 때문에 생겨난 이상한 케이스입니다(순간 메모리 사용량이 memory limit을 넘어도 다음 malloc을 만나기 전까지 GC가 실행되지 않겠네요).
채점을 할 때는 말씀하신 예제처럼 malloc만 하고 첫 store를 하기 전에 다른 malloc을 하는 케이스는 사용하지 않겠습니다.

stack의 location도 reachable location이 맞습니다(즉, GC되면 안 됩니다). 다만 이 문제와 어떻게 연관이 되는 건지 잘 모르겠습니다.
위로
사용자 정보 보기 비밀 메시지 보내기
정재영00



가입: 2019년 9월 12일
올린 글: 13

올리기올려짐: 2019년11월16일 1:39    주제: 인용과 함께 답변

답변감사합니다!

그런데 만약 stack에 있는 location들도 reachable location이라면,
저 예제에서 두 번째 MALLOC할 때 이미 stack에 <1,0>이 있으니
GC_FAILURE에러를 띄워야하는거 아닌가요?
위로
사용자 정보 보기 비밀 메시지 보내기
조민기



가입: 2015년 9월 6일
올린 글: 82

올리기올려짐: 2019년11월16일 13:29    주제: 인용과 함께 답변

저희가 제공해드린 malloc_with_gc의 뼈대 코드를 보시면 reachable하지 않은location들을 전부 메모리(주소와 값 페어의 리스트)에서 제외시킨 뒤 메모리의 길이가 limit보다 크면 GC_failure를 발생시킵니다.

따라서 올려주신 코드의 두번째 malloc을 실행해도 메모리는 여전히 비어 있으므로 GC가 실행되지 않는 것이 맞습니다.
위로
사용자 정보 보기 비밀 메시지 보내기
정재영00



가입: 2019년 9월 12일
올린 글: 13

올리기올려짐: 2019년11월16일 13:47    주제: 인용과 함께 답변

이해가 됐습니다! 감사합니다
위로
사용자 정보 보기 비밀 메시지 보내기
이전 글 표시:   
이 게시판은 잠겼으므로 글을 올리거나, 답변을 하거나 수정을 할 수 없습니다   이 주제는 잠겼으므로 답변을 하거나 수정을 할 수 없습니다     게시판 인덱스 -> 4190.310 Programming Languages (Fall 2019) 시간대: GMT + 9 시간(한국)
페이지 11

 
건너뛰기:  
새로운 주제를 올릴 수 없습니다
답글을 올릴 수 없습니다
주제를 수정할 수 없습니다
올린 글을 삭제할 수 없습니다
투표를 할 수 없습니다


Powered by phpBB 2.0.21-7 (Debian) © 2001, 2005 phpBB Group
Translated by kss & drssay