헛둘이 2022. 9. 19. 09:49
스택이란?
  • 지역 변수, 매개 변수를 주로 보관하는 메모리

 

 

스택의 특징
  • 스레드 당 한 개의 스택 생성(프로세스는 생성 시 1개의 주스레드를 가짐)
  • 스택은 아래로 자란다 (높은 주소에서 낮은 주소 방향으로 커짐)

 

 

 

스택의 동작 방식
  • 스레드가 만들어지면 1M 가상 공간을 예약한다.
  • 그리고 1개를 확정해 놓고 다음 페이지도 같이 확정하는데
  • 다음 페이지는 확정 시 PAGE_GUARD 보안 옵션을 같이 걸어놓음
  • PAGE_GUARD는 최초 접근 시 예외를 발생시키는 옵션 (윈도우가 처리)
  • 그래서 현재 페이지를 다 쓰고 다음 페이지에 접근하면 예외가 발생하고
  • 그 시점에서 다시 다음 페이지를 PAGE_GUARD 옵션으로 할당한다.
  • 1M는 총 256페이지를 일컫는데, 곧 0~255개의 페이지를 의미한다.
  • 253번까지 확정하면 254번은 PAGE_GUARD 옵션 없이 사용 가능
  • 255번 페이지에 접근하면 STACK OVERFLOW 예외가 발생한다.