[CS] 프로세스

또띠·2023년 11월 30일
0

CS

목록 보기
3/7

프로세스란?

컴퓨터에서 실행 중인 하나의 프로그램을 의미한다.

OS는 프로그램을 실행하면서 디스크에 저장된 데이터를 메모리로 로드하는데, 독립된 메모리 영역(코드, 데이터, 스택, 힙)을 할당받으며, 다른 프로세스의 메모리 영역에 접근할 수 없다.

  • 스택(stack): 지역 변수, 함수의 매개변수, 반환되는 주소 값 등이 저장되는 영역이다. 높은 주소 값에서 낮은 주소 값으로 메모리가 할당되며, 영역 크기는 컴파일할 때 결정된다.

  • 힙(heap): 사용자에 의해 동적 메모리 할당이 일어나는 영역이다. 낮은 주소 값에서 높은 주소 값으로 메모리가 할당되며, 영역 크기는 런타임 때 결정된다.

  • 데이터(data): 전역변수, 정적 변수, 배열, 구조체 등이 저장되는 영역이다. 데이터 영역은 세부적으로 BSS(Block Stated Symbol) 영역과 데이터 영역으로 나뉠 수 있다. BSS 영역은 초기화하지 않은 변수를, 데이터 영역은 초기화한 변수를 저장한다.

  • 코드(code): 실행할 코드가 기계어로 컴파일되어 지정되는 영역으로, 텍스트 영역이라고도 한다.


스택 영역과 힙 영역은 동적으로 메모리 할당이 가능해 두 영역 사이에 빈 메모리 공간이 존재한다.

스택 영역은 LIFO(Last In First Out, 후입선출) 방식으로, 높은 주소 값에서 낮은 주소 값 순서로 사용한다.
힙 영역은 FIFO(First In First Out, 선입선출) 방식으로, 낮은 주소 값에서 높은 주소 값 순서로 사용한다.


메모리 영역을 공유하기 때문에 서로의 영역을 침범하는 문제가 발생 할 수 있는데,

스택 영역이 힙 영역을 침범하는 경우를 스택 오버플로(stack overflow) 라고 한다.
힙 영역이 스택 영역을 침범하는 경우를 힙 오버플로(heap overflow) 라고 한다.

profile
✨ 𝑬𝒗𝒆𝒓𝒚𝒕𝒉𝒊𝒏𝒈 𝒄𝒐𝒎𝒆𝒔 𝒕𝒐 𝒉𝒊𝒎 𝒘𝒉𝒐 𝒉𝒖𝒔𝒕𝒍𝒆𝒔 𝒘𝒉𝒊𝒍𝒆 𝒉𝒆 𝒘𝒂𝒊𝒕𝒔. ✨

0개의 댓글