[컴퓨터 구조] 메모리 구조

그렘린·2022년 11월 8일
0
post-custom-banner

RAM의 특징

주기억장치의 종류에는 크게 RAM과 ROM 두가지가 있고, 메모리는 주로 'RAM'을 지칭한다.
RAM은 실행할 프로그램의 명령어와 데이터가 저장되는데, 이때 전원이 꺼지면 데이터와 명령어 모두 사라진다 (휘발성 저장장치).

주기억장치와 다르게 보조기억장치는 전원을 꺼도 내용을 유지하지만, CPU는 이 보조장치(비휘발성 저장장치)에 직접 접근하지 못한다는 것.
이러한 이유로 보조기억장치에는 보관해야 할 대상을 저장하고, 주기억장치에는 실행해야하는 것들을 저장한다.

ex) CPU가 실행하고 싶은 프로그램이 보조장치에 있다면, 이를 RAM으로 복사하여 저장하고 실행한다.

쉬운 예시로 생각하자면 보조기억장치는 책장, 주기억장치는 책을 읽을 수 있는 책상이다.

프로그램 실행 과정

  1. 사용자가 프로그램을 실행시키기 위한 요청을 한다.
  2. OS는 프로그램의 정보를 읽어 메모리에 올린다.
  3. CPU는 RAM에 올라간 프로그램 코드를 이용해서 메모리를 관리하고 실행한다.
  4. 동적메모리가 할당되면 FreeStore 영역을 이용
  5. stack메모리가 할당되면 FreeStore 영역을 이용

메모리의 구조

메모리 공간은 다음과 같이 4가지로 나뉜다.

1. 코드영역

보통 우리가 작성한 소스 코드가 들어가는 부분이다.
함수나 제어문 등등이 이 곳에 저장된다.

2. 데이터 영역

전역변수, static 변수가 할당되는 영역이다.
프로그램이 종료되어야 메모리가 소멸된다.

3. 스택 영역

프로그램이 자동으로 사용하는 임시 메모리 영역이다.

4. 힙 영역

힙 영역은 동적 메모리가 할당되는 공간이다. 힙은 운영체제가 사용하지 않는 메모리 공간을 모아 놓은 곳이다. 따라서 이 부분은 프로그래머가 할당하고 해제할 수 있다.

특히 힙은 메모리 위쪽부터 할당되고, 스택은 아래쪽부터 할당되는데 이때 서로의 공간을 넘어갈 수 있다. 이것을 Heap overflow, Stack overflow라고 한다.

post-custom-banner

0개의 댓글