티스토리 뷰

OS

[OS] 프로세스 주소 공간

perseverance 2024. 5. 13. 14:21

프로세스가 메모리를 할당 받으면 자신만의 방법으로 메모리를 관리하기 위해 이 공간들을 어떤 구조로 관리하는데, 우리는 이를 프로세스 주소 공간이라고 부른다.

image

프로세스의 메모리 배치는 일반적으로 여러 섹션으로 구분되며 위 그림과 같다.

  • 텍스트 영역: 실행 코드
  • 데이터 영역: 전역변수
  • 힙 영역: 프로그램 실행 중에 동적으로 할당되는 메모리
  • 스택 영역: 함수를 호출할 때 임시 데이터 자장장소(함수 매개변수, 복귀 주소 및 지역 변수)

스택 영역

스택 영역은 함수 호출이 발생할 때마다 임시 데이터를 저장하는데 사용되는 메모리 공간

이 영역은 후입선출(LIFO) 방식으로 동작하며, 함수가 호출될 때 해당 함수의 매개변수, 복귀 주소 및 지역 변수가 이곳에 저장된다.

함수의 실행이 완료되면 해당 함수에 할당된 스택 프레임이 제거되어 메모리가 해제된다.

힙 영역

힙 영역은 프로그램 실행 중에 동적으로 할당되는 메모리를 저장하는 영역이다. 힙 영역은 프로그램이 실행 중에 필요에 따라 메모리를 동적으로 할당하고 해제할 수 있는 유연성을 제공한다.

힙 영역은 일반적으로 동적으로 할당된 메모리를 저장하는 용도로 사용되지만, 사용자가 직접 메모리를 할당하고 해제하기 때문에 주의가 필요하다. 메모리 누수가 발생하면 시스템의 성능에 영향을 미칠 수 있으므로 프로그래머는 메모리를 할당한 후 반드시 해제해야 한다.

데이터 영역

전역 변수와 정적 변수가 저장되는 영역이다. 이 영역은 프로그램이 시작될 때 할당되며 프로그램이 종료될 때까지 유지된다.

데이터 영역은 초기화된 데이터를, bss 영역에는 초기화되지 않은 데이터를 저장한다.

텍스트 영역

텍스트 영역은 프로그램의 코드가 저장되는 영역이다. 이 영역은 실행 코드로써 프로그램이 실행될 때 CPU에 의해 실행된다. 텍스트 영역은 읽기 전용이기 때문에 프로그램이 실행 중에 수정되지 않는다.

  • 실행 코드: 이 영역에는 프로그램을 구성하는 실제 기계어 코드가 저장된다. 컴파일러나 인터프리터에 의해 소스 코드에서 변환된 실행 가능한 코드가 여기에 위치한다.
  • 컴파일된 함수: 사용자가 작성한 함수와 외부 라이브러리 함수들의 컴파일된 코드도 텍스트 영역에 저장된다.

C 프로그램의 메모리 배치

JVM 메모리 배치

image

메서드 영역

메서드 영역은 프로그램을 실행하는데 필요한 공통 데이터를 관리한다. 이 영역은 프로그램의 모든 영역에서 공유한다.

  • 클래스 정보: 클래스의 실행 코드(바이트 코드), 필드, 메서드와 생성자 코드등 모든 실행 코드가 존재한다.
  • static 영역: static 변수들을 보관한다.
  • 런타임 상수 풀: 프로그램을 실행하는데 필요한 공통 상수를 보관한다. 예를 들어서 프로그램에 “hello”라는 리터럴 문자가 있으면 이런 문자를 공통으로 묶어서 관리한다.

스택 영역

자바 실행 시, 하나의 실행 스택이 생성된다. 각 스택 프레임은 지역 변수, 중간 연산 결과, 메서드 호출 정보 등을 포함한다.

  • 스택 프레임: 스택 영역에 쌓이는 네모 박스가 하나의 스택 프레임이다. 메서드를 호출할 때 마다 하나의 스택 프레임이 쌓이고, 메서드가 종료되면 해당 스택 프레임이 제거된다.

힙 영역

객체(인스턴스)와 배열이 생성되는 영역이다. 가비지 컬렉션(GC)이 이루어지는 주요 영역이며, 더 이상 참조되지 않는 객체는 GC에 의해 제거된다.

'OS' 카테고리의 다른 글

OS - 동기식 I/O와 비동기식 I/O  (0) 2024.08.16
OS - 커널과 이중모드, 시스템 콜  (0) 2024.08.16
OS - programmed I/O, Interrupted I/O, DMA I/O  (0) 2024.08.16
OS - 운영체제 기술의 발전  (0) 2024.08.16
OS - 운영체제란?  (0) 2024.08.16
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/10   »
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 31
글 보관함