본문 바로가기
프로그래밍언어론

[프로그래밍언어론] 14. 스택(Stack), 힙(Heap)

by 파스텔코랄 2023. 10. 11.

메모리 관리

  • 메모리 관리는 인터프리터의 주요 기능 중 하나이다.
  • 프로그램이 실행되는 동안 다양한 정보가 생성되어 메모리에 로드되거나 저장된다.
  • 예) 지역 변수의 값, 표현식의 임시 값, 함수의 인수 및 반환 값 등.
  • 따라서 프로그래밍 언어에서 이러한 메모리 액세스를 처리하는 방법을 결정하는 것이 필요하다.

 


 

서브프로그램(Subprogram)

  • 서브프로그램은 프로시저, 함수, 루틴, 서브루틴과 동의어이다.
    • 실행을 위해 호출할 수 있는 프로그램의 일부
  • 모두 서브프로그램의 개념을 표현하기 위해 사용
  • 일부 언어에서는 의미가 다를 수 있지만 동일한 것으로 간주한다.
  • 이 과정에서는 대부분 프로시저/함수를 같은 의미로 사용한다.
    • 이론적으로 둘 사이의 차이점은 함수가 반환 값을 갖는 하위 프로그램이라는 것

 


 

스택(Stack)

  • 데이터를 쌓아놓은 데이터 구조
  • 상자를 데이터로 간주
  • 상자를 쌓을 때 파란색 상자보라색 상자 전에 놓였으면,
  • 보라색 상자를 먼저 선택할 때까지는 파란색 상자를 꺼낼 수 없다.

  • 먼저 삽입된 데이터가 나중에 추출된다.
  • LIFO(LastIn, FirstOut) : 후입선출
  • 데이터를 스택에 푸시(push)하고 스택에서 마지막으로 푸시된 데이터를 팝(pop)할 수 있다.

 


 

스택 및 프로시저

  • 스택은 LIFO에서 활성화되므로 자연스럽게 프로시저에 적합하다.
  • 마지막으로 입력된 프로시저나 블록이 가장 먼저 종료된다.
  • 환경 변화도 이런 방식으로 처리될 수 있다.

 


 

힙(Heap)

  • 힙은 우선순위 큐나 힙 정렬과 관련된 데이터 구조이다.
  • 그러나 프로그래밍 언어에서 힙은 프로그램에 할당할 수 있는 메모리의 특정 위치이다.
  • 따라서 이 경우 데이터 구조 힙에 대한 명확한 연결이 없다.

댓글