스택(stack)은 자료구조에서 말하는 구조체 외에도, 메모리에 지정된… | [국회직 9급 컴퓨터일반] 20년 1회차 기출문제 상세 페이지
1[국회직 9급 컴퓨터일반] 20년 1회차
스택(stack)은 자료구조에서 말하는 구조체 외에도, 메모리에 지정된 특정 영역을 말하며 프로그램 실행에서 항상 사용된다. 이러한 스택에 대한 설명으로 옳지 않은 것은?
1
CPU마다 스택포인터 용도로 사용하는 레지스터가 있다.
2
스택은 LIFO(Last-In First-Out)구조를 가지고 있다.
3
버퍼 오퍼플로우(buffer overflow) 보안공격에 이용되기도 한다.
4
운영체제의 문맥교환(context switching)을 할 때 사용된다.
5
CPU 레지스터의 내용을 스택에 저장할 수 없다.
해설
CPU 레지스터 내용을 스택에 저장할 수 없다는 설명이 틀렸다. 레지스터 값을 스택에 저장하는 것은 일상적인 동작이다.
함수 호출이나 인터럽트 처리 때 레지스터 값을 스택에 PUSH 해 두었다가 끝나면 POP 으로 복원한다.
- 스택포인터 레지스터: CPU에는 스택의 꼭대기 주소를 가리키는 레지스터가 있다.
- LIFO: 나중에 넣은 데이터를 먼저 꺼내는 구조다.
- 버퍼 오버플로우 공격: 스택에 저장된 복귀 주소를 덮어써 실행 흐름을 바꾸는 데 이용된다.
- 문맥교환: 실행 상태를 저장하고 복원할 때 프로세스의 스택이 함께 쓰인다.
오류나 개정된 내용이 보이면 알려주세요