이 부분은 세그멘테이션과 페이징을 결합한 세그먼트-페이징 기법에 대한 설명입니다. 이를 쉽게 풀어서 설명해볼게요.
세그멘트 테이블과 페이징의 결합 원리
• 세그먼트 테이블은 프로그램을 여러 개의 논리적인 세그먼트(부분)로 나누고, 각 세그먼트가 메모리의 어느 부분에 위치하는지를 관리하는 테이블입니다.
• 각 세그먼트는 다시 작은 페이지로 나뉘며, 페이지 테이블이 각 세그먼트 내의 페이지들을 관리합니다.
• 즉, 프로그램이 실행될 때, 세그먼트 테이블이 먼저 메모리에서 세그먼트를 찾고, 그 세그먼트에 해당하는 페이지 테이블을 통해 해당 페이지를 메모리에서 찾는 방식입니다.
세그먼트 테이블 레지스터 (STR)
• STR (Segment Table Register)는 현재 실행 중인 프로세스의 세그먼트 테이블이 어디에 있는지를 가리키는 레지스터입니다.
• 세그먼트 테이블에는 각 세그먼트가 메모리에서 어디에 있는지 정보가 저장되어 있습니다. 이 정보로 프로그램이 사용하는 여러 부분들이 메모리의 어느 위치에 있는지 찾습니다.
각 세그먼트 테이블 항목
• 세그먼트 테이블의 각 항목에는 해당 세그먼트에 대한 페이지 테이블의 위치가 저장됩니다.
• 다시 말해, 세그먼트가 메모리에서 어느 위치에 있는지 알아낸 후, 그 세그먼트 내의 페이지들을 찾기 위해 페이지 테이블을 참고합니다.
단점: 오버헤드와 비효율성
• 이 방식은 메모리를 관리하기 위해 여러 개의 테이블(세그먼트 테이블, 페이지 테이블)을 사용하므로, 추가 메모리가 필요합니다.
• 또한, 메모리에 접근할 때마다 세그먼트 테이블과 페이지 테이블을 둘 다 참조해야 하므로, 메모리 접근이 느려질 수 있습니다. 즉, 두 번의 메모리 참조가 일어나 비효율성이 발생합니다.
요약
세그먼트-페이징 기법은 프로그램을 여러 세그먼트로 나누고, 각 세그먼트는 다시 페이지로 나누어 관리하는 방식입니다. 이 과정에서 추가적인 테이블을 사용하고, 메모리 참조가 두 번 일어나기 때문에 오버헤드와 비효율성이 생기는 단점이 있습니다.