이번 주제는 운영체제의 페이징입니다. 본격적으로 페이징에 대해 공부하기 전, 페이징이 왜 필요한지?에 대해서 먼저 이해를 해보도록 하겠습니다. 모든 프로그램은 프로세스가 되기 위해 메인 메모리를 할당 받아야 합니다. 그리고 페이징이라는 개념이 등장하기 전, 하나의 프로세스는 무조건 연속적인 메모리 영역을 할당 받았습니다. 예를들어서 아래와 같이 말이죠. 현재 메모리에 OS, Process 5, Process 8, Process 2가 올려져 있다고 보시면 됩니다. 아직까지는 큰 문제가 보이질 않습니다. 이 상황에서 Process 5가 종료되어 할당받은 메모리를 해제하게 되었습니다. 메모리 영역에 구멍이 생긴 것을 볼 수 있습니다. 이렇게 연속적인 프로세스 할당으로 인해 메모리에 생긴 구멍을 'Hole'라고..
먼저 CPU가 명령어를 실행하기 위해 어떤 사이클을 수행하는지 생각해봅시다. CPU의 명령어 실행 사이클은 크게 '명령어 인출'과 '명령어 실행' 단계로 이루어지는데요, 명령어 인출은 말그대로 CPU가 수행할 명령어를 꺼내오는 사이클을 말하고, 명령어 실행은 인출한 명령어를 실행하는 사이클을 말합니다. 이 과정에서 CPU의 많은 레지스터가 사용되지만 이번 주제는 메모리와 관련되어 있으니, MAR, MBR 레지스터만 아주 간단하게 그림으로 나타내보겠습니다. MAR은 Memory Address Register의 약자이고, MBR은 Memory Buffer Register의 약자입니다. 이름에서 알 수 있듯이, 이 두개의 레지스터는 Memory와 매우 밀접한 관계를 가지며 각각의 역할은 아래와 같습니다. MA..