[Java] 메모리 간단하게 이해하기

안녕하세요🖐

오늘은 메모리에 대하여 알아보겠습니다.

 

프로그램은 메모리에서 동작(=실행) 이 됩니다.

 

⁉ 그러면 어떻게 메모리에서 동작이 되나요

 

간단하게 예시를 들어서 설명을 해보겠습니다.

 

Q. 자바를 이용하여 두개정수를 더하여 결과를 출력하는 프로그램을 만들어보겠습니다.

 

두개의 정수를 더해야 하므로 컴퓨터 프로그램안에 두개의 정수를 기억하는 공간이 있어야 합니다.

 

컴퓨터 언어로 해석을 해보면 위 두개의 정수'데이터' 이고

'더하라' 는 것은 컴퓨터 프로그램을 동작시키는 '명령어' 입니다.

 

간단하게 설명을 하면 -> 컴퓨터는 0과1로 표현된 정보만을 이해합니다.

그리고 0과 1로 표현되는 정보에는 크게 두 종류가 있는데 그게 바로 데이터명령어 입니다

 

위 과정이 진행이 되며 저장 된 '데이터' '명령어' 는 메모리에 저장이 되어야 합니다.

위에서 말하는 메모리는 우리가 흔히 컴퓨터를 살 때 보는 Ram(=주기억장치) 즉 물리메모리 라고 합니다.

 

✔ 메모리는 데이터 + 명령어를 저장하는 공간이라고 생각하면 이해하기 편합니다

 

그래서 위 과정을 진행하기 위해서는 간단하게 나눠서 총 3개의 공간이 필요합니다. ( 두개, 정수, 더하라 )

위 3가지를 나눠서 Ram에 저장을 하는 것 입니다. 

 

Ram에서는 주소체계가 있기 때문에 한 주소에 다 넣는게 아닌 하나 하나 다 나눠서 저장을 합니다.

 

메모리는 간단하게 아파트라고 비유를 할 수 있습니다. 

아파트 층 마다 주소가 있듯이 메모리 또한 주소를 가지고 있습니다.

메모리 주소체계

 

위 사진을 층 하나하나가 주소(=번지) 를 의미합니다. 그렇다면 위 과정을 Ram에 저장한다고 하면은

이렇게 저장이 된다고 생각하면 되겠습니다. 

 

그리고 위 메모리에 있는 것들이 실행이 되려면 CPU를 할당을 받아야지 실행이 될 수 있습니다. 

즉 메모리에 '데이터' '명령어'를 CPU가 읽어서 결과적으로 명령어를 실행합니다.

 

위 과정을 자세하게 이해하기 위해서는 컴퓨터구조, 운영체제 관련 지식이 조금 필요 합니다.

 

위 과정을 코드로 짜면 아래의 코드를 짤 수 있습니다. 

public class Main() {
	static int add() {
		int a = 3;
    		int b = 4;
            	int sum = a+b;
            	return sum;
	}

	public static void main(String[] args) {
    		add();
	}
}

 

add() 메소드를 실행하는 과정을 위에서 길게 설명해 보았습니다. 

 

위 과정을 메모리에 자세하게 저장을 하면은

위 사진처럼 적재가 됩니다.

 

a,b,sum : 데이터 => 메모리에 적재되는 이름? '변수' 

add() : 명령어 => 메모리에 적재되는 '메소드(=명령어)

 

간단하게 메모리에 대하여 알아보았습니다. 

 

프로그래밍 언어를 공부할 때 CS지식을 같이 학습하면 도움이 많이 될 것이라고 생각합니다.

 

감사합니다.

 

 

728x90