일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 코드엔진
- ip주소
- 서브넷
- 해커스쿨 FTZ
- 세그먼트
- 서브넷팅
- 루핑
- Root Bridge
- 서브넷 마스크
- TCP/IP
- 브리지 우선순위
- 시스템해킹
- Non Root Bridge
- 루트 포트
- 브리지 ID
- code enigne
- BPDU
- code engine
- 네트워크 장비
- 링크 대역폭
- 스패닝 트리 알고리즘
- FTZ level3
- Path Cost
- 데지그네이티드 포트
- 네트워크
- 치트엔진 풀이
- 코드엔진 basic 5
- 콜리젼 도메인
- 코드엔진 풀이
- 루트 브리지
- Today
- Total
IT 블로그 !!
스택이란? (Stack) 본문
이번 글에서는 스택에 대해서 알아보겠습니다.
1. 스택의 개념
· 메모리의 스택 영역은 함수의 호출과 관계되는 지역변수, 매개변수, 리턴 값등의 임시데이터를 저장합니다.
· 스택이란 단어는 ‘차곡 차곡 쌓여진 더미’를 의미합니다.
· LIFO(Last In First Out, 후입선출) 구조라고도 합니다.
2. 스택의 구조
· 가장 먼저 저장되는 데이터는 스택의 아래 쪽(높은 주소)부터 쌓이고, 다음 저장되는 데이터가 바로 그 위(낮은 주소)에 쌓입니다.
이제부터 스택 영역에 새로운 데이터가 추가되고 사용되는 모습의 예를 살펴보겠습니다.
다음의 이 빈 통을 스택 영역이라고 생각합시다.
스택에 새로운 데이터를 추가하는 것을 PUSH라고 합니다.
PUSH를 하면 기존 데이터 위에 새 데이터가 순서대로 쌓아집니다.
스택에 있던 데이터를 다시 빼내는 것을 POP라고 합니다.
이처럼 스택은 기본적으로 PUSH와 POP을 통해 데이터의 추가/제거가 가능하며 이 PUSH/POP 되는 데이터의 크기는 프로그래머가 정할 수 있습니다.
이처럼 스택이 밑에서부터 데이터를 추가하는 이유는 커널영역을 침범하지않기 위해서 밑에서부터 데이터를 추가합니다.
3. 스택의 TOP & BOTTOM
· TOP/BOTTOM은 스택의 특정위치를 가리킵니다.
· TOP는 가장 최근에 스택에 저장된 값, BOTTOM은 가장 처음 스택에 저장된 값을 가리킵니다.
현재 이 그림에서는 TOP/BOTTOM의 위치와 다음과 같습니다.
여기서 C라는 데이터가 PUSH가 되면 TOP/BOTTOM의 위치는 어떻게 될까요?
아까 TOP은 B를 가리켰지만 현재는 C를 가리키고 있습니다.
BOTTOM은 그대로입니다.
BOTTOM의 위치는 항상 스택 가장 아랫값을 가리키고 있기 때문에 고정됩니다. 하지만 TOP의 위치는 데이터가 추가되거나, 데이터가 제거될 때 마다 달라집니다.
스택이라는 메모리 영역에 대해서 조금 더 자세하게 알아보았습니다.
'관련지식들' 카테고리의 다른 글
메모리 구조 (0) | 2018.10.01 |
---|---|
어셈블리어와 레지스터 (0) | 2018.08.26 |