스택이란?
- 지역 변수, 매개 변수를 주로 보관하는 메모리
스택의 특징
- 스레드 당 한 개의 스택 생성(프로세스는 생성 시 1개의 주스레드를 가짐)
- 스택은 아래로 자란다 (높은 주소에서 낮은 주소 방향으로 커짐)
스택의 동작 방식
- 스레드가 만들어지면 1M 가상 공간을 예약한다.
- 그리고 1개를 확정해 놓고 다음 페이지도 같이 확정하는데
- 다음 페이지는 확정 시 PAGE_GUARD 보안 옵션을 같이 걸어놓음
- PAGE_GUARD는 최초 접근 시 예외를 발생시키는 옵션 (윈도우가 처리)
- 그래서 현재 페이지를 다 쓰고 다음 페이지에 접근하면 예외가 발생하고
- 그 시점에서 다시 다음 페이지를 PAGE_GUARD 옵션으로 할당한다.
- 1M는 총 256페이지를 일컫는데, 곧 0~255개의 페이지를 의미한다.
- 253번까지 확정하면 254번은 PAGE_GUARD 옵션 없이 사용 가능
- 255번 페이지에 접근하면 STACK OVERFLOW 예외가 발생한다.
'운영체제 > [ecourse] Windows Programming' 카테고리의 다른 글
6-2. 동기화 개념과 Critical Section (1) | 2022.09.20 |
---|---|
6-1. Thread Basic (0) | 2022.09.20 |
5-3. Heap Memory (0) | 2022.09.18 |
5-2. Virtual Memory Allocation (0) | 2022.09.18 |
5-1. Virtual Address Space (1) | 2022.09.16 |
댓글