게시판 인덱스

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

숙제 4-2와 관련된 질문

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



가입: 2009년 9월 15일
올린 글: 83

올리기올려짐: 2010년10월17일 10:02    주제: 숙제 4-2와 관련된 질문 인용과 함께 답변

1.

문서에 보면 다음 형식으로 적혀있습니다.

인용:

(S,M,E,malloc::C,K) -> (l::S, gc(...), E, C, K)


교수님이 의도하신 바는, S와 E는 그대로 두고,
M에서 안쓰는 부분만 제거하라는 의미인것 같습니다.

이를 구현하기 위해서는 malloc부분 정확히는, 새로운 주소를 얻어오는 newl() 부분을 수정해야 할 것같은데 상관 없나요?
위로
사용자 정보 보기 비밀 메시지 보내기
신기정



가입: 2009년 9월 15일
올린 글: 83

올리기올려짐: 2010년10월17일 18:18    주제: 추가질문입니다. 인용과 함께 답변

2. gc 를 수행한 후에도 재활용할 수있는 메모리가 하나도 없다면 어떤 에러를 발생시켜야 하나요?

3. 파서가 조금 이상한 것같습니다.
test7.k--인데요
인용:

let
proc fac(x) =
if not (x < 1) then (x * fac(x-1))
else (1)
;
x := 0
in
read x;
write fac(x)

정의대로라면, fac함수는 무조건 0을 리턴해야 하고, x가 unbound error가 나야 하는데, 마치
let
proc fac(x) =
if not (x < 1) then (x * fac(x-1))
else (1)
in
let x := 0
read x;
write fac(x)
와 같은 형태로 해석하고 올바르게 factorial 값을 계산합니다.

4. 그리고 채점하실 때 Garbage Collector의 수행시간을 넉넉하게 주셨으면 좋겠습니다. 메모리 전체를 검사하는데, 메모리가 랜덤access가 안되서 그런지 수행에 시간이 좀 걸립니다. ㅜㅜ 이것 저것 시도해봤는데, 시간이 잘 줄지 않아서요.
-> 아 이건 제가 실수한 부분이 있었네요... 많이 주셔서 나쁠 것은 없겠지만 일단은 취소하겠습니다.
위로
사용자 정보 보기 비밀 메시지 보내기
조성근



가입: 2009년 9월 14일
올린 글: 283

올리기올려짐: 2010년10월18일 9:18    주제: 인용과 함께 답변

1. 예. 물론 newl()까지 수정하여 실제 할당되는 loc을 제한하면 더욱 좋겠지만 이번 숙제에서는 M의 크기를 줄이는 데에만 집중하시는 것으로 충분합니다.

2. 재활용할 수 있는 메모리가 없다면 Sm5.RunError를 발생시켜 주세요.

3.
코드:
a:=b ; c:=d

가 있는 경우 parser.mly를 보시면 아시겠지만 ':=' 이 ';' 보다 우선순위가 높기 때문에 다음과 같이 괄호가 묶여있는 것과 같습니다.
코드:
(a:=b) ; (c:=d)

사실 이러한 sequence명령이 'let' 과 'in' 사이에 들어가는 것은 정의되어 있지 않지만, 여러 개의 변수(또는 함수)를 정의할 때 반복되는 'let' 과 'in' 을 줄이고자 K-- 파서가 지원하고 있는 것 뿐입니다. test7.k--의 경우 다음과 같이 괄호를 추가해 준다면 말씀하셨던 x에 대한 unbound error가 발생하겠지요.
코드:
let proc fac(x) = 
         ( if not (x < 1) then (x * fac(x-1)) else (1) ;
           x := 0 )
in
read x; write fac(x)


원하는 대로 파싱이 되지 않을 때에는 괄호를 적극 활용하시기 바랍니다.
위로
사용자 정보 보기 비밀 메시지 보내기
구원준



가입: 2009년 9월 24일
올린 글: 11

올리기올려짐: 2010년10월18일 11:14    주제: 인용과 함께 답변

그러면 laccount의 값이 8192보다 커져도 상관이 없다는 말씀이죠?

즉, 현재 구현되어 있는 Memory의 형태가 (loc * value) list의 형태이므로 이 리스트의 길이가 8192보다 작거나 같아지도록 Garbage Collection을 수행하면 되겠지요?

제가 이해한 것이 맞나 싶어서 다시 질문드립니다.
위로
사용자 정보 보기 비밀 메시지 보내기
조성근



가입: 2009년 9월 14일
올린 글: 283

올리기올려짐: 2010년10월18일 11:31    주제: 인용과 함께 답변

예. 맞습니다.
위로
사용자 정보 보기 비밀 메시지 보내기
최민아



가입: 2009년 9월 28일
올린 글: 236

올리기올려짐: 2010년10월18일 23:46    주제: 인용과 함께 답변

위에 구원준 학생의 질문에서 메모리의 length가 8192보다 작거나 같도록 하면 된다고 했는데요.

Sm5 store와 load 구현을 보면 메모리에 같은 주소가 여러 개 있을 수도 있는데 이런 경우에는 메모리의 길이는 8192가 넘어도 주소의 개수는 8192가 안될수도 있는것같은데요.
메모리의 길이가 8192가 넘으면 재활용하도록 해야 하나요 아니면 loccount가 8192넘으면 재활용하게 하나요?
후자의 경우에는 gc를 하고나면 loccount가 8192가 넘어도 메모리 주소의 개수는 8192가 안될수도 있는데 그럼 gc를 할때 loccount를 건드려야 하는건지..

그리고 gc가 많이 느려서 10초씩 걸리고 하던데 시간 제한은 좀 넉넉히 주시면 안될까요 ㅜ
위로
사용자 정보 보기 비밀 메시지 보내기
조성근



가입: 2009년 9월 14일
올린 글: 283

올리기올려짐: 2010년10월19일 0:59    주제: 인용과 함께 답변

위에서 말씀드린 대로 숙제는 M의 크기에 제한을 두는 것으로 충분합니다. loccount 값을 제한하고 newl 함수를 바꾸어 보고 싶으시다면 도전해 보는 것도 좋겠지요.

최민아 씀:
시간 제한은 좀 넉넉히 주시면 안될까요

채점할 때에 참고하도록 하겠습니다.
위로
사용자 정보 보기 비밀 메시지 보내기
이전 글 표시:   
이 게시판은 잠겼으므로 글을 올리거나, 답변을 하거나 수정을 할 수 없습니다   이 주제는 잠겼으므로 답변을 하거나 수정을 할 수 없습니다     게시판 인덱스 -> 4190.310 Programming Languages (Fall 2010) 시간대: GMT + 9 시간(한국)
페이지 11

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


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