안녕하세요

프로그래밍 언어 개념 연습문제 9장 본문

Study_exam/프로그래밍 언어 개념 연습문제

프로그래밍 언어 개념 연습문제 9장

godxxy1229 2023. 6. 5. 17:08

01. 복귀 주소, 정적 링크, 동적 링크, 매개변수를 활성화 레코드의 하단부에 놓는 이유는 무엇인가?


02. 정적 체인이 사용되었을 때, 비지역 변수의 참조를 찾는 방법을 설명하고, 이 방법에 있 어서 두 개의 잠재적인 문제점은 무엇인가?
03. 지역 접근, 비지역 접근, 복귀 등에 관해 정적 체인의 효율성과 디스플레이의 효율성을 비교하시오.


04. 다음 Algol 형태 프로그램을 가지고 물음에 답하여라.


① 프로시저 C가 두 번 호출될 때까지 간단한 호출 순서를 나열하여라.
② 이 때 발생된 활성 레코드들은 실행 시간 스택을 사용하여 배당되는데, 동적 링크를 명시하라.
③ ②의 상태에서 정적 링크를 명시하라.

 

05. algol 유사 언어의 한 블록이 활성화될 때 활성 레코드의 동적 링크와 정적 링크 값이 동일한 경우가 발생하는 때는 어느 경우인가?


06. 정적 영역 규칙을 따르는 언어에서 비지역 변수의 참조는 참조 경로를 유지하는 테이블인 디스플레이를 가지고 수행할 수 있다. 이 테이블을 항상 최근 상황으로 유지하기 위해 프로그램의 entry와 exit에서 수행되어야 할 알고리즘을 작성하라.

 

07. 동적 변수(dynamic variable)를 사용할 수 있는 언어에서는 힙 기억장소 배당 기법을 사용하게 되는데, 이 경우의 장단점과 기억장소 배당 및 회수 알고리즘을 논하라.


08. 정적 영역 규칙을 따르는 언어에서 부프로그램 호출 시 실행시간 스택에 활성 레코드를 배당하고 회수할 때, 동적 링크와 정적 링크를 유지하는 알고리즘을 작성하라.


09. 다음 골격 프로그램의 지점 1에 실행이 도착했을 때, 정적체인과 동적체인이 포함된 모든 활성 레코드 스택을 보이시오. 단, BIGSUB의 레벨은 1이라고 가정한다.

실행이 D에 도착하는 이 프로그램의 호출 순서는 다음과 같다.

A → B → A → C → D


10. [문제 8.9]의 골격 프로그램에 대해서, 활성 레코드 스택과 함께 지점 1에서의 디스플레이를 보이시오.


11. 프로시저 P가 호출 되었을 때 다음 프로그램에 대한 활성 레코드 스택을 그려라. 각 활성에서 동적 링크와 정적 링크를 보이고 지역 이름을 채워라. 프로그램의 실행중에 참조된 이름이 각각 어떻게 발견되었는지 기술하라.

12. 다음 프로그램은 함수 매개변수를 가진다. p 내에서 x에 대한 호출을 한 후의 활성 레코드 스택을 그려라. 이 프로그램은 무엇을 프린트하는가?

13. Pascal처럼 비지역 목적지를 갖는 goto를 허용하는 언어가 있다. 이 언어에서 비지역 변수 접근을 위해 정적체인이 사용된다면 goto 문장은 어떻게 처리되는가? 새로 실행된 프로시저의 정적 부모의 정확한 활성 레코드를 찾는 방법을 생각하라. 이는 활성 레코드들의 상태를 유지하는 알고리즘과 같다.


14. 각 활성 레코드에서 두 개의 정적링크를 사용하여 정적체인 방법을 약간 확장할 수 있다. 여기서 두 번째 포인터는 정적 조부모의 활성 레코드를 가리킨다. 이것이 부프로그램 연결과 비지역 참조에 요구되는 시간에 어떠한 영향이 미치는가?

 

15. 다음 그림은 Pascal의 전형적인 메모리 지도이다.

수행 중에 스택이 커져서, 혹은 힘이 커져서 자유 공간을 모두 써버린 경우에 다음 상황에 따라 그 해결 방법을 설명해 보라.
① 새 요구가 스택을 위한 새 블록의 활성화인 경우
② 새 요구가 힙을 요구하는 NEW 연산인 경우