• 카테고리

    질문 & 답변
  • 세부 분야

    기타 (개발 · 프로그래밍)

  • 해결 여부

    해결됨

메모리 관련하여 질문드립니다

23.01.01 16:41 작성 조회수 222

0

213213123.png

(강의에서 캡처해온 사진인데 문제되면 삭제하겠습니다)

안녕하세요 선생님~~^^

강의를 듣고 메모리 관련하여 정보를 찾아보다가 바이트 어드레싱과 워드 어드레싱에 대해 알게 되었는데요,

  1. 위 사진에서는 16바이트가 한 행을 이루어 0x00...B1070부터 시작하여 0x10 = 16단위로 증가하고 있는데, 그렇다면 저 한 행은 하나의 워드가 되는 거고, 맨 왼쪽 위의 0x54는 1바이트로서 0x00...B1070의 주소를 가지고, 또 그 옆의 0x45는 0x00...B1071의 주소를 가진다고 이해하면 되나요?

  2. 그리고, 저렇게 주소를 나눴다는 것은 메모리에서 cpu로 데이터가 이동할 때 1바이트씩 이동할 수도 있고, 1워드씩 움직일 수도 있다는 뜻인가요? 만약 그렇다면, 32비트 정수형의 경우 4바이트를 모아서 조립하거나 1워드에서 절반만 떼어서 가져가는 등의 작업이 필요할 것 같은데 이러한 부분들은 어떻게 처리되는지 궁금합니다.

항상 좋은 강의와 답변 감사드리고, 새해 복 많이 받으시길 바랍니다~~

답변 1

답변을 작성해보세요.

1

캡처 사진은 문제 없습니다. ^^

1. 잘못 알고 있는 것입니다. 화면 상 한 행은 16바이트 입니다. '워드' 단위는 16비트를 의미합니다. 메모리의 주소는 1바이트(8비트)마다 부여됩니다. 그럼에도 메모리에 주소가 부여되는 것은 맞게 설명하셨군요.

2. 메모리에서 CPU로 데이터가 복사(보통 복사입니다.)될 때는 캐시 메모리로 미리 복사되는 것이 일반적입니다. 물론 캐싱되지 않은 경우라면 RAM 메모리에서 CPU 레지스터로 복사해야 하겠습니다. 32비트 정수 자료라면 4바이트(32비트)를 복사하게 되겠습니다. 더 자세한 내용은 제가 올린 운영체제 강의를 참고하시면 되겠습니다.

감사합니다.

sete님의 프로필

sete

질문자

2023.01.02

아...1번은 제가 혼동한 탓에 잘못 말씀드렸습니다. 죄송합니다ㅠㅠ
64비트 운영체제는 워드 크기가 64비트라고 하길래, 한 행의 절반이 한 워드가 되는지를 여쭤봤어야 했는데, 이상한 실수를 해버렸네요..
그보다도 저는 사실 이 워드의 용도가 제일 궁금했는데요, 인터넷에서는 그냥 데이터 처리의 단위라고만 말하니까 잘 이해가 안가더라구요...
혹시 이런 부분도 강의에서 다루고 계시나요? 제가 아직 섹션 1을 듣고있어서, 혹여나 뒷내용을 여쭤보고 있는건 아닌지 조심스럽습니다.^^;

죄송할 일이 절대 아닙니다. 그러니 마음쓰지 마시기 바랍니다. ^^

워드 단위는 별 것 아닙니다. 말 그대로 이름이 그렇게 붙은 것 뿐입니다. kg, mg의 이름이 왜 그러한지 굳이 신경쓰지 않는 것처럼 외우면 될 일입니다. 그리고 개발자가 아니고서는 워드 단위를 만날 일도 잘 없습니다. 1바이트가 영문 한 글자를 다루기 위한 단위라는 것만 알아도 충분하다 생각합니다. 그런 이유로 이후 수업에서도 워드 단위를 논하지는 않습니다. 참고하시기 바랍니다.

참, 틀리는 것을 두려워 말기 바랍니다. 이 나이를 먹어도 무식이 탈로날까 두렵습니다만 그런 창피를 무릅쓸 용기가 없다면 제 무식은 그대로 계속 방치되겠지요. 용기를 가지시기 바랍니다. 저도 모르는 건 모릅니다. ^^;;;

sete님의 프로필

sete

질문자

2023.01.02

제가 좀 겁이 많다보니 오프라인에선 질문할 용기조차 못낸답니다. ㅎㅎ 온라인이니까 그나마 할수있네요
이렇게라도 조금씩 지식을 쌓다보면 언젠간 용기가 생기겠죠~~? 좋은 답변 감사드립니다^^