CODE 영역에 컴파일러된 코드가 저장됩니다. DATA 영역에는 변수로 선언된 데이터가 저장됩니다. STACK 영역에는 함수의 return address 값과 인자, 변수 데이터가 저장됩니다. STACK 부분은 계속 저장돼있지 않고 실행이 완료되면 차례로 삭제된 후 CODE 영역에서 다음 코드를 진행합니다. HEAP 영역은 동적으로 생성되는 데이터들이 저장됩니다.
정리를 하면 프로세스는 다음과 같이 구성됩니다.
TEXT(CODE): 코드
DATA: 변수/초기화된 데이터
STACK: 임시 데이터(함수 호출, 로컬 변수 등)
HEAP: 코드에서 동적으로 만들어지는 데이터
* stack에는 함수가 실행될 때마다 EBP 레지스터에 저장된 주소값이 상단에 들어가게 되는데, 오류가 났을 때 어느 함수에서 문제가 발생했는지 빠르게 트래킹하기 위해서 EBP 레지스터 주소값을 참조하게 됩니다.
* 함수의 return값은 EAX 레지스터에 들어가게 됩니다.
'운영체제 (OS)' 카테고리의 다른 글
프로세스와 컨텍스트 스위칭 (0) | 2021.04.19 |
---|---|
프로세스 구조와 스택 오버플로우 (0) | 2021.04.18 |
프로세스와 스케줄러의 이해 - 인터럽트 내부 동작 (0) | 2021.04.18 |
스케줄링 알고리즘 (3) - 인터럽트 (0) | 2021.04.17 |
프로세스와 스케줄러의 이해 (1) - 선점형과 비선점형 스케줄러 (0) | 2021.04.16 |