CS 지식/운영체제

메모리의 구조

naksnaks 2023. 2. 16.
반응형

메모리의 구조

프로그램 실행 순서

  1. 프로그램 실행 요청이 들어옵니다. ( 사용자 -> OS )
  2. 프로그램의 정보를 읽어 메모리에 로드합니다. (OS -> 보조기억장치(HDD))
  3. 프로그램 코드(Program Code)를 가져다 메모리를 관리하고 명령문을 실행합니다. (CPU -> 주기억장치(RAM))
  4. 동적 메모리가 할당되면 Free Store 영역을 사용합니다. (Heap 사용)
  5. 스택 메모리가 할당되면 Free Store 영역을 사용합니다. (Stack 사용)
    프로그램 실행 순서
    출처 : https://jinshine.github.io/2018/05/17/%EC%BB%B4%ED%93%A8%ED%84%B0%20%EA%B8%B0%EC%B4%88/%EB%A9%94%EB%AA%A8%EB%A6%AC%EA%B5%AC%EC%A1%B0/
    프로그램이 실행 될 때, OS는 메모리(RAM)에 4가지 공간을 할당 해줍니다.

Code, Data, Heap, Stack

메모리의 구조
출처 : http://www.tcpschool.com/c/c_memory_structure

Code

  • 실행할 프로그램의 코드가 저장되는 영역.
  • CPU가 Code 영역의 명령어들을 하나씩 가져가서 처리합니다.

Data

  • 전역변수와 static변수가 할당되는 영역.
  • 프로그램의 시작과 동시에 할당되고, 프로그램의 종료 시에 메모리가 소멸됩니다.

Heap

  • 프로그래머가 할당, 해제하는 메모리 공간. (Java에서는 가비지 컬렉터가 자동으로 해제)
  • 이 공간에 메모리 할당하는 것을 동적 할당(Dynamic Memory Allocation)이라고 부릅니다.
  • 런타임 시에 크기가 결정.
  • 메모리의 낮은 주소 -> 높은 주소
  • ex) 클래스, 클로저

Heap 과 Stack
출처 : https://i.imgur.com/GImVa8L.png

  • Heap이 넘어가면 Heap Overflow
  • Stack이 넘어가면 Stack Overflow

Stack

  • 프로그램이 자동으로 사용하는 임시 메모리 영역.
  • 함수 호출 시 생성되는 지역 변수와 매개 변수가 저장되는 영역.
  • 함수 호출 완료 시 소멸됩니다.
  • 메모리의 높은 주소 -> 낮은 주소
    더 자세한 사항은 TCPschool - 스택 프레임에서 확인 가능합니다.

출처
TCPschool - 메모리의 구조
JinShine님 - 메모리구조

반응형

댓글

💲 추천 글