해결된 질문
작성
·
165
·
수정됨
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)에 있는 해당 모듈을 메인메모리로 로드합니다 :)
감사합니다. 선생님~
좋은 밤 되세요!