CPU와 가상메모리/물리메모리등 컴퓨터구조 관련 질문들
공부하면서 잘 이해가 안되고 궁금한것들이 있어서 질문합니다..
1. 32비트 평범한 x86 CPU 에서...
32비트 가상주소는 메모리 페이징에 의해 실제 물리주소로 변환되잔아요?
그렇다면 CPU 의 EIP 레지스터에는 일단 32비트 가상주소가 올라온다음에
TLB 나 페이징으 통해서 실제 물리주소를 알게되면 EIP 에 들어가는 주소가
물리주소로 바뀐다음에 메모리 버스에 주소를 올리는건가요??
이건 아닌거같은데, 그렇다면 CPU 가 실제로 메모리버스에 access 할
물리주소를 어떤 과정으로 신호를 보내게 되나요?
EIP 에는 가상주소가 들어가있는데, 메모리에 접근할때의 실제 물리주소는
따로 어디 기억 안되있어도 되는건가요?
2. 메모리 버스의 입장에서, 어떤 물리주소가 버스에 실렸을때, 그것이 kernel 메모리 영역에
해당할지, 유저 영역에 해당할지 OS의 도움없이 알수있는 방법이 있을까요?
3. OS 에서 LDT 랑 GDT 라는것이, 메모리 세그먼트 디스크립터로 쓴다고 하는데요
저희가 요즘 일반적으로 쓰는 PC 는 거의다 일정 단위의 메모리 페이징을 하는데...
세그먼트 디스크립터가 필요한 이유는 뭔가요?
또한 LDT 는 특정 프로세스의 세그먼트 디스크립터고, GDT 는 커널전체를 위한 세그먼트 디스크립터인가요?
그리고 메모리 페이지마다 RWX 권한이 다르게 부여될텐데, 이러한 권한의 매핑을 기억하고있는
자료구조는 어디에 보관되나요?
4. context switching 에는 레지스터 컨텍스트 스위칭, 태스크 컨텍스트 스위칭, 쓰레드 컨텍스트 스위칭, 프로세스 컨텍스트 스위칭
이렇게 4종류가 있다는데(위키피디아에서), 쓰레드랑 프로세스는 대강 알겠는데, 레지스터 컨텍스트 스위칭이랑 태스크 컨텍스트 스위칭은
뭔지 모르겠네요... 무슨 차이일까요?, 그리고 저 4가지 모두 개념적으로는 "CPU 가 현재 상태를 임시저장시키고 다른 작업을
했다가 이전 작업하던 상태를 복원하기 위한 방법" 이라는 점에서는 모두 동일하다고 해도 될까요?
1. CPU가 보호모드로 진입하면 CPU가 보는 모든
1. CPU가 보호모드로 진입하면 CPU가 보는 모든 주소는 가상주소입니다.
따라서 물리메모리의 주소를 얻으려면 페이지 테이블을 뒤져야하지요.
예를 들어서 CPU가 메모리를 엑세스 하려고 한다면 해당 주소는 가상주소입니다.
이 가상주소를 MMU에 넘겨서 주소변환을 하고 나온 물리 주소를 메모리 컨트롤러가
받아서 작업을 수행합니다. 따라서 메모리 컨트롤러가 메모리에 보내는 신호는
물리 주소입니다.
가상주소<->물리주소 변환 테이블은 OS가 물리메모리의 일정 공간을 할당 한 후에
여기에 집어 넣어놓습니다. 이 공간을 엑세스 할 경우에는 엑세스 주소는 물리주소로
간주하고 주소변환을 하지 않습니다. 물론 이 공간을 변환하지 말아야한다는 것은
OS가 부팅 중에 MMU 초기화를 할 때 지정합니다.
2. 메모리 버스 입장에서 어떤 CPU가 달렸는지.. 어떤 OS가 올라갔는지.. 심지어 OS가 없는지
있는지는 모릅니다. 따라서 모든 메모리의 역할과 구분은 OS가 전담하거나 OS와 비슷한 역할을 하는
펌웨어가 전담합니다.
3. LDT, GDT는 보호모드에서 권한 설정을 하는 하나의 종류중 하나일 뿐이며 요즘은 잘 사용하지 않습니다.(확실치는 않으니 참고만 하세요.)
리눅스에서도 GDT는 대충... 설정하는 것으로 알고 있습니다. LDT나 GDT는 x86에서만 있는 기능이므로
다양한 플랫폼에서 작동해야하는 OS(리눅스같이)에서 기본으로 저런 기능에 종속적이게 될수 없습니다.
따라서 잘 사용하지 않고 가상메모리를 사용해서 프로세스를 보호하도록 구현 됩니다.
물론 가상메모리를 사용하려면 MMU를 사용해야하는데 굳이 그럴 필요가 없는 환경이나 사용해서는 안되는 환경 또는
간단한 구현을 위해서 LDT, GDT를 이용해서 사용할 수도 있습니다.
페이지마다 권한 설정은 1에서 말한 페이지 테이블에 전부 들어갑니다.
4. 컨텍스트 스위칭은 간단하게 생각하시면 됩니다.
현재 실행중인 모든 정보를 저장 후 복구
해당 문서를 안봐서 모르겠지만 저장하는 정보의 범위로 구분한것 같네요. 전부다 저장하느냐 최소한만 저장하느냐...
-------------------------------------------------------------------------------
It's better to appear stupid and ask question than to be silent and remain stupid.
감사합니다
정말 많은 도움이 되는 설명인것 같습니다
감사합니다~!
자기실력이 좋다고 느껴지는건 공부를 안하고 있다는 신호.
댓글 달기