본문 바로가기

BackEnd/C

메모리 구조

반응형

1. 하드웨어 관점(물리적)에서의 메모리 공간

 

1) 메모리의 종류

 

하드웨어 관점에서 메모리 종류는 총 4가지이다.

 

 

 

하드디스크만 메모리 공간으로 존재해도 CPU는 프로그램을 실행시킬 수 있다. 하지만 속도가 느리다.

 

 

 

그래서 CPU와 하드디스크 사이에 RAM이라는 메모리 공간을 두면 속도가 빠르다.

 

하드디스크에 저장되어 있는 실행 프로그램을 램으로 이동시켜서 실행하도록 하드웨어가 디자

 

인 되었다. 따라서 CPU는 하드디스크가 아닌 램에 빈번한 접근을 한다.

 

 

 

캐쉬는 CPU내부에 존재하기 때문에 램보다 더 빠른 속도로 ALU의 접근이 가능하다. 

 

따라서 램에서 자주 사용되는 데이터를 캐쉬로 이동시켜 ALU의 빈번한 접근을 돕게된다.

 

 

 

레지스터도 마찬가지로 캐쉬보다 더 빠른속도로  ALU의 접근이 가능하다.

 

 

 

 

 

2. 소프트웨어 관점에서의 메모리 공간

1) 가상 메모리

 

운영체제는 물리 메모리를 기반으로 하나의 가상 메모리를 구성한다. 

 

그리고 앞으로 보게될 메모리의 주소값은 운영체제가 만들어 주는 가상 메모리의 주소이고, 

 

로그램에서 이야기하는 메모리는 모두 가상 메모리이다.

 

 

 

2) 메모리 공간이 필요한 이유

 

프로그램의 실행에 있어서 메모리 공간을 사용하지 않을때가 없다. 예를 들어보자 

 

- 프로그램의 실행과정에서 선언하는 변수의 메모리 공간 할당을 위해서

 

- 프로그램의 실행과정에서 사용되는 상수의 표현을 위해서

 

- 연산 및 호출된 함수의 반환 값을 임시로 저장하기 위해서

 

 

3) 하나의 프로그램은 가상 메모리 전부를 사용

 

예를 들어 가상메모리의 크기가 4기가 바이트라면, 하나의 프로그램이 사용할 수 있는 메모리

 

의 최대 크기는 4기가 바이트이다.

 

 

4) 가상 메모리를 나누는 기준

 

가상 메모리는 다음 크게 4가지 영역으로 나뉜다.

 

 

- 코드영역: 실행할 프로그램의 바이너리 코드를 저장할 공간(cpu는 코드 영역에 저장된 명령어들을 하나씩 가져가서 처리하는 방식으로 프로그램을 실행한다)

 

- 데이터 영역: 프로그램이 종료될때까지 유지해야 할 데이터를 저장할 공간

 

- 스택 영역: 아주 잠깐 사용하고 삭제할 데이터의 저장 공간 

 

- 힙 영역: 프로그래머가 원하는 방식으로 쓸 수 있는 공간

 

 

반응형

'BackEnd > C' 카테고리의 다른 글

.  (0) 2019.03.08
변수의 종류에 따른 특성과 할당 위치  (0) 2019.03.05
  (0) 2019.03.05
문자의 표현방법과 문자 관련 표준함수들  (0) 2019.03.04
반복문  (0) 2019.03.04