[운영체제] 프로세스의 메모리 구조

DEV_HOYA·2024년 2월 5일
0

CS

목록 보기
49/55
post-thumbnail

📌 프로세스의 메모리 구조

  • 운영체제는 프로세스에 적절한 메모리를 할당하는데 다음 구조를 기반으로 할당함

⭐ 스택

  • 지역변수, 매개변수, 함수가 저장됨
  • 컴파일 시에 크기가 결정됨
  • 재귀함수 등에 따라 런타임시에도 크기가 변경됨
  • 동적할당

⭐ 힙

  • 동적할당
  • 런타임시 크기 결정

⭐ 데이터영역

  • 정적할당
  • BSS영역과 Data영역으로 나뉨

⭐ 코드영역

  • 소스코드
  • 정적할당

✅ 정적할당

  • 컴파일단계에서 메모리를 할당
  • BSS segment에는 전역변수, static으로 선언되어 있는 변수 중 0으로 초기화 또는 초기화가 되어있지 않은 변수들이 할당됨
public class Main {
    static int a;
    static int b = 0;
    int c;
    int d = 0;
    public static void main(String[] args) {
    
    }
}
  • Data Segment에는 전역변수, static으로 선언되어 있는 변수 중 0이 아닌값으로 초기화된 변수들이 할당됨
public class Main {
    static int a = 3;
    int c = 1;
    public static void main(String[] args) {
        
    }
}
  • text segment에는 프로그램의 코드가 들어감

✅ 동적할당

  • 런타임 단계에서 메모리를 할당 받는 것
  • Stack과 Heap으로 나뉨
  • Stack은 지역변수, 매개변수, 함수에 의해 늘어나거나 줄어드는 메모리 영역
  • 함수가 호출될때마다 stack에 계속해서 저장됨
  • Heap은 동적으로 할당되는 변수들을 저장
  • malloc( ), free( ) 함수를 통해 관리하며, 동적으로 관리되는 자료구조도 Heap영역을 사용

0개의 댓글