작성자 없음
작성자 정보가 삭제된 글입니다.
작성
·
800
·
수정됨
0
양질의 강의 제공해주셔서 감사합니다.
페이징에 대해 궁금한 부분이 있어서 질문드립니다.
프로세스의 논리 공간을 프레임 크기만큼 잘라서 필요한 부분이 담긴 페이지만
우선 메모리에 올리는 요구 페이징과 같은 개념은 이해가 됩니다.
궁금증은 그러면 각 페이지가 프로세스인가요?
확실한 사실은 실행할 명령어 코드가 현재 페이지에 없을 수 있다는 것 같습니다.
그럼 당장 필요한 코드만 담은 프로세스가 페이지 단위로 메모리에 올라가는 건가요?
(페이징 파일 기본 크기를 생각하면 말이 안되는 것 같기도 합니다.)
아니면 프로세스는 결국 text, data, heap, stack 메모리로 이루어져 있기 때문에
이 영역들이 페이지로 나눠서 메모리에 올라가는 것일까요?
<페이지 번호, 변위>로 이루어진 논리 주소에서 페이지 번호를 어떻게 식별할 수 있나요?
PTBR 레지스터를 통해 프로세스의 페이지 테이블 주소를 알아내 페이지들의 실제 물리적 주소를 알 수 있다. 그런데 물리적 주소로 변환할 때 MMU가 베이스 레지스터를 사용하는 경우와 혼동됩니다.
페이지 테이블이 필요한 이유로는 해당 페이지가 메모리에 올라와 있는지 확인,
특정한 논리적 주소를 가진 데이터에 대해 실제 프레임 주소 계산 등이라고 할 수 있을까요?
그러면 실제로 페이징 기법에서 베이스 레지스터는 사용이 안되는 것인지 잘 모르겠습니다.
답변 2
1
안녕하세요 하나씩 답변드리겠습니다.(질문을 볼드체했습니다)
궁금증은 그러면 각 페이지가 프로세스인가요?
프로세스 영역과 무관히 페이지 단위로 잘려 저장됩니다.
만일 없다면 그때 그때 적재되는 것입니다.
참고로, 코드/스택/힙/데이터 영역으로 나뉘어 저장되는 방식은 따로 있는데
이를 세그멘테이션이라 합니다.
<페이지 번호, 변위>로 이루어진 논리 주소에서 페이지 번호를 어떻게 식별할 수 있나요?
명령어의 일부 비트가 페이지 번호이고 일부가 변위입니다.
명령어중 몇 비트가 페이지 번호인지는 시스템 마다 정해져 있습니다 :)
PTBR 레지스터를 통해 프로세스의 페이지 테이블 주소를 알아내 페이지들의 실제 물리적 주소를 알 수 있다. 그런데 물리적 주소로 변환할 때 MMU가 베이스 레지스터를 사용하는 경우와 혼동됩니다.
MMU에 페이지 테이블이 있습니다^^[1] 그리고 베이스 레지스터는 페이지가 프레임으로 매핑할 때 사용됩니다.
[1] https://en.wikipedia.org/wiki/Memory_management_unit
Most MMUs use an in-memory table of items called a "page table", containing one "page table entry" (PTE) per page
0
안녕하세요, 인프런 AI 인턴이에요.
페이징에 대한 궁금증을 좋은 질문으로 알려주셔서 감사합니다.
페이지 단위로 메모리에 로드되는 것은 프로세스가 아니라 프로세스의 일부인 페이지입니다. 프로세스는 주로 코드, 데이터, 힙, 스택으로 구성되어 있고, 각각의 영역이 페이지로 나뉘어져 메모리에 로드됩니다. 각 페이지는 페이지 번호와 변위로 이루어진 논리 주소를 가지고 있습니다.
또한 페이지 테이블은 페이지들의 물리적 주소를 매핑하기 위해 사용되며, 이를 통해 해당 페이지가 메모리에 올라와 있는지 확인할 수 있습니다. 페이지 테이블은 PTBR (Page Table Base Register) 레지스터를 통해 프로세스의 페이지 테이블 주소를 알아내고, MMU (Memory Management Unit)가 베이스 레지스터와 함께 사용되어 물리적 주소로 변환됩니다. 페이지 테이블은 페이지의 크기, 위치 등을 관리하고 페이지의 물리적 주소를 찾아주는 매우 중요한 역할을 합니다.
더 자세한 내용은 컴퓨터 구조, 운영체제 관련 강의를 참고해보시면 도움이 될 것 같아요. 추가로 궁금한 점이 있으시면 언제든지 물어보세요! 수고하세요.