운영체제(OS)/keyword

(Project2-User Programs) 유저 스택(User Stack)

스탠딩 2023. 12. 15. 14:44

유저 스택은 프로그램이 실행되는 동안 함수 호출과 데이터 저장에 필수적으로 사용되는 메모리 영역 중 하나이다. 이 영역은 주로 함수 호출과 관련된 작업에 사용되며 유저 스택의 역할과 동작 방식은 다음과 같다.

 

출처 : https://www.cameronwickes.co.uk/stack-frames-pointers/

 

1. 유저 스택의 역할

유저 스택은 프로그램이 함수를 호출하고 반환하는 과정에서 중요한 역할을 한다. 

  • 함수 호출 및 반환:
    • 함수가 호출되면 해당 함수의 로컬 변수, 매개 변수, 반환 주소 등이 스택에 저장된다.
    • 함수가 반환되면 스택에서 이전에 저장한 정보들이 역순으로 제거되고, 프로그램은 호출 지점으로 복귀한다.
  • 임시 데이터 저장:
    • 임시로 사용되는 데이터, 지역 변수, 함수 호출 시 필요한 데이터 등이 스택에 임시로 저장된다.

2. 유저 스택의 동작 방식

유저 스택은 Last In First Out(LIFO)의 원칙을 따른다. 즉, 가장 최근에 추가된 항목이 가장 먼저 제거되는 구조로 동작한다.

  • 함수 호출:
    • 함수가 호출되면 해당 함수의 로컬 변수, 매개 변수, 반환 주소 등이 스택의 맨 위에 추가된다.
  • 함수 반환:
    • 함수가 반환되면 스택의 맨 위에 있는 정보들이 역순으로 제거되고, 이전 호출 지점으로 복귀한다.
  • 데이터 저장:
    • 지역 변수나 함수 호출 시 필요한 임시 데이터는 스택에 저장되며, 해당 데이터는 함수 범위를 벗어나면 자동으로 제거된다.