프로세스는 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램을 말한다.
레지스터, 스택, 포인터, 실행 중인 프로그램, 데이터 등이 프로세스라고 불릴 수 있고 보편적으로는 실행 중인 프로세스를 가리킨다.
이러한 프로세스는 Stack, Heap, Text, Data로 메모리 공간을 나누어 사용한다.
- 스택 영역
프로그램이 자동으로 사용하는 메모리 영역이고 함수 호출 시 생성된다. 프로그램 함수 내에서 사용하는 지역변수가 저장이 되고 되돌아오는 주소인 복귀 주소도 가지고 있다. - 힙 영역
프로그램 실행 중 메모리를 동적으로 할당하는 경우 힙 영역을 사용한다. C에서 malloc() 등의 함수를 사용하여 메모리 크기를 할당할 수 있고 메모리 주소 값에 의해서만 참조되고 사용되는 영역이다.
int *i = (int*)malloc (sizeof(int)); 를 예로 들어보자.
int *i변수의 선언은 정수형 변수의 주소를 저장할 수 있는 포인터 변수를 선언한 것이다.
malloc() 함수를 사용해서 동적으로 메모리를 할당한다.
동적으로 메모리를 할당할 때 sizeof(int)를 사용하면 4바이트의 크기가 동적으로 할당된다.
(int는 4바이트를 사용한다.)
malloc함수는 void*를 리턴하는데 이것을 (int*)를 사용해서 int*형으로 맞춰준다.
위의 가정처럼 동적 메모리 할당 함수를 사용해서 메모리를 할당하는 것이 힙 영역에서 할당되는 것이다. - 데이터 영역
프로그램이 실행될 때 생성되고 프로그램이 종료되면 시스템에 반환되며 전역 변수, 정적 변수, 배열, 구조체 등이 저장된다.
이 데이터 영역은 bss와 data로 나뉘는데 초기화된 데이터는 data영역은 초기 값을 설정한 전역 변수와 정적 변수를 저장하고 bss는 초기값을 설정하지 않은 데이터를 저장한다. - 텍스트 영역
읽기만 가능한 메모리 영역이다.
실행 명령을 포함하는 코드들이 들어가는 부분이다.
'공부 > 정보보안기사공부' 카테고리의 다른 글
MTU의 크기가 1500일 때 세 번째 패킷의 크기 구하기(ICMP) (0) | 2021.03.04 |
---|