Computer Science
3/23/2025
지금까지 메모리를 여러 구역으로 나누는 다양한 방법들과 장단점들을 알아보았습니다. 이번 글에서는 본격적으로 페이징과 세그멘테이션을 학습하기 전에, 프로세스 재배치와 이와 관련한 주제들에 대해 알아볼 것입니다.
프로그램의 실행 중 메모리 주소가 어디가 될 지 사전에 알 수 있는 방법은 없습니다. 프로세스가 로딩되는 시점에 메모리의 어디가 비어있을지 모르기 때문입니다. 또한 일단 메모리에 배치된 뒤에도, CPU 효율을 위해 스와핑이 되고 난 뒤 다시 할당될 때면 기존에 배치되었던 공간을 다시 사용하지 못하고 새로운 곳에 할당될 수도 있습니다. 결국 프로그램의 실행 중 주소는 매번 메모리에 할당될 때마다 다시 계산되어야 합니다.
앞에서 살펴봤던 파티셔닝에서는 메모리 재배치와 관련해서 어떤 것을 고려해야할까요? 비동일 사이즈 고정 파티셔닝Fixed Unequal Partitioning 방식에서는, 각각의 서로 다른 크기의 파티션에 큐가 존재합니다. 하나의 프로세스는 항상 해당 큐로 진입하며, 항상 같은 파티션에 할당됩니다. 이러한 경우에는 단순 재배치 로더Simple Relocating Loader가 사용될 수 있습니다. 단순 재배치 로더는 프로세스가 메모리에 가장 처음 로딩될 때, 소스코드의 모든 메모리 참조를 메모리의 절대 주소로 교체합니다. 프로세스는 항상 같은 파티션에 할당되기 때문에, 최초에만 실제 메모리 주소와 연결해주면 이후에는 문제가 없습니다.
반면 동일 크기 고정 파티셔닝이나, 하나의 큐를 사용하는 비동일 고정 파티셔닝 방식에서는 프로세스가 스와핑 과정에서 다른 파티션에 할당될 수도 있습니다. 또한 압축compaction이 발생하는 경우, 실행중인 프로세스의 메모리 공간이 이동하므로 절대 주소에 대한 참조가 어긋날 수 있습니다. 이러한 문제를 해결하기 위해서는 몇 가지 종류의 주소 체계를 도입할 필요가 있습니다.
논리 주소Logical Address란 현재 할당된 물리적인 메모리 영역과는 상관없는 메모리 참조 방식을 의미합니다. 어떤 프로세스가 논리 주소에 접근해야하는 경우에는 항상 런타임에 그에 해당하는 물리 주소로 변환되어야 합니다.
상대 주소Relative Address란 논리 주소의 특별한 경우로, 주소가 주로 프로세서의 레지스터를 기준으로 하여 상대적인 값으로 표현되는 경우를 말합니다. 논리주소나 상대 주소를 사용하는 프로그램은 동적 실행시간 로더Dynamic Runtime Loader를 통해 로딩됩니다.
절대 주소Physical Address란 말 그대로 절대적인 메모리의 특정 공간을 가리키는 주소를 말합니다.
위 그림은 주소 변환Address Translation의 과정을 보여줍니다. 프로세스가 활성 상태가 되면, Base Register라고 불리는 특수목적 레지스터에 프로세스의 시작 주소가 할당됩니다. Bounds Register라 불리는 레지스터에는 프로세스의 끝 주소가 할당됩니다. 이들은 프로세스가 로딩될 때마다 세팅됩니다.
프로세서가 명령어를 처리하는 중에 상대 주소를 만난다면, 다음 두 단계를 통해 물리 주소로 변환됩니다. 이 단계는 메모리 참조가 발생할 때마다 계산되어야하므로, 매우 빈번하기에 하드웨어가 지원하는 것이 일반적입니다.
1. Base Register의 값과 상대 주소를 더하여 물리 주소를 만든다.
2. 물리 주소와 Bounds Register을 비교하여 만들어진 주소가 프로세스가 차지하는 경계 내에 있는지 검사한다.
만약 주소가 경계 내부에 있다면 명령어는 처리될 것이고, 그렇지 않다면 운영체제는 인터럽트를 발생시키고 프로그램은 에러로 종료될 것입니다. 이러한 방식으로 동작한다면 프로세스는 스와핑이 되거나, 압축이 발생하더라도 레지스터들만 다시 설정해준다면 정상적으로 메모리를 참조하여 수행될 수 있습니다. 또한 이 방식은 메모리 보호Memory Protection의 수단이 됩니다. 각각의 프로세스는 Base Register와 Bounds Register를 통해 그들 자신의 프로세스의 영역에만 접근할 수 있으며, 다른 프로세스에 원치 않는 접근을 하는 행위를 막아주기 때문입니다.
다음 글에서는 여기서 다룬 개념을 바탕으로 페이징Paging에 대해 소개하겠습니다.
0
Like
0
share