less than 1 minute read

  1. 메모리란 데이터를 저장하는 역할을한다.
  2. 데이터를 읽고, 쓰는 속도가 빨라 CPU가 직접 접근한다.
  3. 시스템이 종료되면 저장되어있던 데이터는 모두 사라진다.
  4. 메모리의 영역
    • code
      • 메모리의 코드영역은 실행할 프로그램의 코드가 저장되는 텍스트(code)영역이다. cpu는 코드영역에 저장된 명령어를 하나씩 가져가 처리한다.
    • data
      • 프로그램 전역, 정적 변수가 저장되는 영역이다. 프로그램의 시작과 함께 할당되며, 프로그램이 종료되면 소멸한다.
    • heap
      • 런타임중 자유롭게 할당/해제를 할 수 있는곳이다.
      • 사용자가 직접 관리할 수 있는 영역이다.
      • 사용자에의해 메모리 공간이 동적으로 할당, 해제된다.
    • stack
      • stack과 code영역은 컴파일 과정에서 메모리가 할당된다.
      • 함수의 호출과 관계되는 지역, 매게변수가 저장되는 영역이다.
      • 함수의 호출과 함께 할당되며, 함수의 호출이 완료되면 소멸한다.
      • 이렇게 stack영역에 저장되는 함수의 호출정보를 *stack frame라 한다.
      • stack영역은 push동작으로 데이터를 저장하고, pop동작으로 데이터를 인출한다. 이러한 stack은 후입선출(LIFO) 방식에 따라 동작한다.

      *stack frame

      • 함수가 호출되면 stack에는 함수의 매개변수, 호출이 끝난 뒤 반환되는 주소값, 함수에 선언된 지역변수 등이 저장된다. 이렇게 차례대로 저장되는 함수의 호출정보를 stack frame라 부른다.
      • 이러한 stack frame덕분에 함수의 호출이 모두 끝난 뒤, 해당 함수가 호출되기 이전의 상태로 되돌아 갈 수 있다.

Updated: