공부/시스템

컴퓨터 메모리 구조

Y0un 2023. 3. 9. 19:44

컴퓨터 메모리 구조


메모리 - 사진

프로그램 실행 과정

프로그램 실행 과정 - 사진

  1.  사용자가 프로그램 실행시 운영체제에게 실행을 요청한다.
  2.  운영체제가 프로그램을 읽어드려 메모리에 적재한다.
  3.  적재된 프로그램의 코드를 통해 CPU가 명령문을 실행하고 메모리를 관리한다.

메모리 구조

메모리 구조 - 사진

1. 코드 영역

CPU가 실행할 명령을 가져오고 프로그램의 데이터가 저장되는 곳이다.

  • 코드 영역은 프로그램 실행을 위한 기계 수준 명령 및 데이터 저장되는 곳이다. 일반적으로 텍스트 세그먼트 또는 코드 세그먼트라고도 불린다.
  • 프로그램 실행 중 코드가 변경되면 프로그램이 오작동하거나 충돌할 수 있으므로 코드 영역은 읽기 전용 메모리(ROM) 또는 메모리(RAM) 영역 중 읽기 권한만 있는곳에 존재한다. 
  • 메모리의 코드 영역에는 프로그램에 필요한 기계 수준 명령과 프로그램에 필요한 모든 상수 데이터 및 실행 중에 변경되지 않는 문자열, 테이블 및 기타 유형의 데이터가 저장된다.

2. 데이터 영역

데이터 영역은 실행 중에 프로그램에서 사용하는 데이터를 저장하는 영역이다. 이 메모리 영역은 일반적으로 데이터 세그먼트 또는 bss 세그먼트라고도 한다.

 

  • 데이터 영역은 프로그램이 실행 중에 데이터를 읽고 쓸 수 있는 읽기-쓰기 메모리(RAM)에 저장된다. 이 영역은 프로그램의 전역 및 정적 변수와 동적으로 할당된 메모리를 저장하는 데 사용된다.
  • 데이터 영역에는 초기화된 데이터와 초기화되지 않은 데이터의 두 가지 주요 데이터 유형이 있다. 초기화된 데이터는 알려진 값을 가지며 메모리의 데이터 세그먼트에 저장되는 데이터다. 반면에 초기화되지 않은 데이터는 알려진 값이 없고 메모리의 bss 세그먼트에 저장되는 데이터다.

3. 힙 영역

힙은 동적으로 할당된 데이터를 저장하는 데 사용되는 메모리 영역이다.

  • 프로그램 실행 중에 필요에 따라 메모리가 할당 및 할당 해제된다.
  • 힙은 프로그램 실행 중에 필요에 따라 확장하거나 축소할 수 있으며 Linked List, Tree 등 같이 동적으로 할당 및 할당 해제되어야 하는 데이터 구조를 저장하기에 이상적인 장소다.
  • 힙은 필요에 따라 메모리 할당 및 할당 해제를 담당하는 프로그램의 메모리 관리자에 의해 관리된다. 메모리 관리자는 최초 적합, 최적 적합 및 최악 적합과 같은 알고리즘을 사용하여 힙에서 메모리를 할당할 위치를 결정한다.
  • 힙은 적절하게 관리되지 않으면 메모리 누수 및 기타 문제의 원인이 될 수도 있다.

4. 스택 영역

스택은 프로그램 실행 중 임시 데이터 및 함수 호출 프레임을 저장하는 데 사용되는 메모리 영역이다.

  • 스택은 LIFO(후입선출) 데이터 구조로 구성되어 있다.
  • 스택은 함수 호출 프레임, 함수 인수 및 임시 데이터를 포함하여 프로그램 실행 중에 다양한 데이터를 저장하는 데 사용된다.
  • 함수가 호출될 때마다 함수의 인수와 지역 변수가 포함된 스택에 새 프레임이 푸시된다. 함수가 반환되면 해당 프레임이 스택에서 제거되고 메모리가 해제된다.
  • 스택은 제한된 크기이며 프로그램의 메모리 관리자가 관리한다. 메모리 관리자는 각 푸시 및 팝 작업 전에 스택 크기를 확인하여 스택이 오버플로되지 않도록 한다.

출처 :

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/

 

[컴퓨터 기초] 메모리구조(Memory Structure) - jinShine

프로그램 실행 순서 메모리 영역에 관해 이야기하기 전에 어떤식으로 프러그램이 실행되는지 과정을 살펴 보겠습니다. 프로그램의 정보를 읽어 메모리에 로드되는 과정을 보실 수 있으실텐데,

jinshine.github.io