메모리 구조 이해하기

Ilhwanee·2022년 7월 13일
0

CS

목록 보기
11/27
post-thumbnail

메모리란?

  • 작업을 처리하기 위한 기억 장치로 물리(메인) 메모리(RAM), 가상 메모리(SSD, HDD의 swap 영역)가 존재한다.
    • 가상 메모리 : 필요한 내용만 물리 메모리에 올려 메모리를 관리하는 기법으로 요구 페이징 기법을 사용한다. (가상 메모리에는 방어적 코드와 같이 불필요할 수 있는 코드가 올라감)

      요구 페이징 기법 : 유-무효 비트(valid, invalid)로 페이지가 메모리에 존재하는지 확인 후 없으면 보조저장장치에서 가져오는 기법

  • CPU는 작업을 수행할 때 메인 메모리까지만 참조 가능하다.
  • 각 프로세스는 자신 만의 메모리를 할당 받는다.
  • 프로세스는 메모리를 사용하여 동작을 수행한다.


메모리 구조

  • Text(Code)
    • 절대 변경되면 안되는 데이터가 저장되는 공간이다.
    • 명령문이 포함되며 코드에 직접적으로 적혀있는 문자열, 상수 또한 텍스트 영역에 저장된다.

      if (str.equals("abc")) {} // "abc"는 텍스트 영역에 저장

  • Data
    • 전역 변수, 정적 변수 등이 저장되는 공간이다.
    • 종료될 때까지 메모리에 남아 있는다.
    • BSS 영역을 두고 초기화 되지 않은 변수는 BSS, 초기화 된 변수는 Data로 분류하기도 한다.
  • Heap
    • 동적으로 할당된 변수가 저장되는 공간이다.
    • C언어로 예를들면 malloc(), Java로 예를들면 new()으로 할당하는 변수가 해당된다.
  • Stack
    • 함수를 호출할 때 지역변수, 매개변수, 리턴값 등이 저장되는 공간이다.
    • 함수가 종료되면 메모리에서 해제된다.


profile
블로그 이전 -> https://pppp0722.github.io

0개의 댓글