• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    해결됨

메모리 주소에 대한 궁금증 & 값의 주소를 저장에 대한 궁금증

21.11.22 16:28 작성 조회수 196

0

안녕하세요, 코어자바스크립트 책이랑 강의를 함께 잘 보고 있습니다. 감사합니다.

 

1. 메모리 주소에 관한 궁금증이 생겨 질문드립니다.

(강의 1:48 초)

책에서 비트는 하나의 메모리 조각이고, 각 비트는 고유한 식별자를 통해서 위치를 확인 할 수 있다고 말씀해주셨습니다.

그렇다면 강의에서 메모리 주소를 1001, 1002 이렇게 표현하셨지만 실제 메모리의 주소는 각 비트가 갖고 있는 식별자가 주소인 건가요?

 

2. 값의 주소를 저장에 관한 질문입니다.

(강의 14:12 초)

값의 주소를 저장 시 "데이터 할당시에는 느리다"는 의미가 값을 직접 저장하는 경우와 비교했을 때

값의 주소를 저장하는 방식이 1)데이터를 넣을 빈 공간을 찾고, 2)그 주소를 다시 변수의 값으로 넣는 과정이 더 필요하듯이

값을 직접 저장하는 것보다 더 많은 단계가 필요하기 때문에 느리다는 의미인걸까요?

친절한 책과 강의 잘 보고 있습니다. 감사합니다 ;)

답변 1

답변을 작성해보세요.

2

1. 강의에서 숫자로 표기한 것은 추상화한 것입니다.
보편적으로는 00120B12F 와 같은 16진수로 표기를 하는데요,
이역시 최종적으로는 2진법으로 치환해야 '컴퓨터가 이해하는' 주소값이 됩니다.

질문 자체가 CS 지식에 해당해서 이걸 좀 더 딥하게 설명을 해드려야 하나 말아야하나 고민이 되는데요...
(이해하려는 노력 자체가 주화입마를 일으키기 쉽기 떄문에요 ^^;)

최대한 간단하게 설명을 드리자면...
앞서 말한 각 주소값(00120B12E, 00120B12F) 등에는 1'바이트'의 공간이 확보되어 있습니다.

C언어의 경우 Int형은 총 4바이트를 차지하는데요,
그렇다면 예를 들어 Int형의 데이터 '1000'이라는 숫자를 선언했을 때
컴퓨터가 이 데이터를 00120B120에 저장한다고 하면
이 데이터가 저장된 전체 공간은 00120B120 ~ 00120B123 까지가 될 것입니다.

이상태에서 만약 00120B120의 값을 읽어오라고 명령하면
처음에 저장된 정상적인 숫자 1000을 잘 읽어올 수 있지만
사용자가 임의로 00120B122의 값을 읽어오라고 명령하면
엉뚱한 숫자를 읽어오게 될 것입니다.

이처럼 정확한 값을 읽어올 수 있는 주소의 위치값,
위의 예에서는 '00120B120'이 곧 식별자가 저장하는 주소값입니다.

 

2. 단계가 많아서도 그렇지만,
혹시 먼저 동일한 데이터를 저장한 이력이 있는지를
전체 메모리에 걸쳐 검색을 하는 과정도 있기 때문에(있으면 그 값을 그대로 재활용하기 위함)
상대적으로 느릴 수밖에 없습니다.

HIRU님의 프로필

HIRU

질문자

2021.11.22

답변 감사합니다.

 

1.  아직 시작하는 단계라 터져버리면 안되기 때문에 간단하게 설명해주신 부분까지만 일단 이해했습니다. ^^! 

2. 아, 기존에 등록된 데이터가 있는지 찾아보는 단계도 있겠군요! ㅎㅎ 넵 답변 감사합니다.

 

평안한 오후 보내세요~