인터럽트 핸들링 루틴에 대해서는

PG비트가 켜져있더라도 세그먼트 모드로 실행된다고 생각하면 편함.


그리고, PG비트가 켜져있더라도 세그먼트 모드가 발동될 수 있다는 가정하에

(일단은 연산 오버헤드라고 가정했음)

쓸데없이 각종 세그먼트 정보들까지 전부 올린다고 보면 해결임.



나는 세그먼트레지스터들이 혹시

mm_struct 에서 페이지폴트를 세그폴트로 연결시켜주는 그 작업을 쉽게 진행하기 위해서

현재 세그먼트 정보들을 올려두는건가? 이 의심을 했음


이 의심이 맞다면, 세그레지스터들은 가상메모리주소를 담아야함


그러다보니까 여기서 카오스가 시작된거였는데,


그냥 연산 오버헤드라는것을 받아들이고,


또한,


특정 영역에서 세그먼트모드가 쓰인다던지, 등등 하드웨어가 혹시 페이지모드를 쓸 수 없을 경우를 대비해서 세그먼트모드를 상비한다던지



이런 관점에서 보면


세그먼트 레지스터 안에는 물리주소가 들어가는거.



그리고


IDT안에 세그먼트 셀렉터가 들어가는것도 ㅇㅋ고, (다만, 여기서 코드세그먼트는 ㅇㅋ인데, 스택세그먼트는 왜 안들어가는지는 또 애매)

(애초에, 베이스어드레스라는것도 이 관점에서는, IP 에 들어갈 32비트인건데, 마찬가지로 SP에 들어갈 32비트 정보는 어디있는지도 애매)


인터럽트 루틴에 들어갈때에

CR3을 바꾸거나 저장하지 않는것도 이해 감.


애초에 페이징 모드를 안쓴다는거임!