• 카테고리

    질문 & 답변
  • 세부 분야

    시스템

  • 해결 여부

    해결됨

메모리(Code영역) 관련 질문

23.12.25 22:04 작성 23.12.25 22:16 수정 조회수 105

1

안녕하세요. 감자선생님!

금일 작성한 질문 답변 감사합니다~

답변 확인중에 문득 떠오른게 있어, 새 게시글로 작성하였습니다.

 

[이전질문]

메모리 Code 영역에 프로그래머가 작성한 코드가 기계어로 올라가고

프로그램 실행 시, Code영역(메모리)에 실행에 필요한 부분만 올라가게됩니다.

여기까지 확인했습니다.

그리고 이전 질문 내용은

100번쨰 줄 : int a = 5;

101번쨰 줄: printf(a);

위 상황에서, 만약에 101번쨰줄 명령문 통째로 Rom에 저장되어있었으면

운영체제가 어떻게 알고 저 데이터를 불러(스왑)하는지? 질문드렸었는데요.

비유를 하면 요리 레시피가 1번 ~ 10번까지 적혀있는데 2번까지 순차적으로 요리 하다가

3번이 없어진 상황입니다.

(다음 실행할 명령 101번쨰줄에 해당하는 기게어가 Ram에 없으니 실행이 더 없는 상황)

[확인질문]

답변 주신 내용중에 "해당 코드는 메인메모리로 불러와서 실행해야겠죠? ㅎㅎ"

여기서 곰곰히 생각해보니, PCB에 프로그램 카운터가 있는게 떠올랐습니다!!!!!!!

그러면 이 프로그램 카운터에서 다음 실행할 명령 주소를 아니가 101번쨰에 해당하는 데이터(명령문)을

Rom에서 Ram으로 불러오는게 가능하다 라고 이해했는데 맞는지 확인 질문드립니다.

답변 1

답변을 작성해보세요.

1

네 맞습니다.

프로그램 카운터가 가리키는 주소의 명령어를 하나씩 읽다가 해당 모듈이 메모리에 로드되지 않았다면 스왑 영역(HDD, SSD)에 있는 해당 모듈을 메인메모리로 로드합니다 :)

전우형님의 프로필

전우형

질문자

2023.12.25

감사합니다. 선생님~

좋은 밤 되세요!