Galvin에서 메모리 관리를 읽는 동안이 질문이 나에게 발생 했습니까? 내가 이해하지 못했던 두 부분이 있습니다. 첫 번째 질문은 Galvin의 직접적인 질문입니다. 내가 이해하지 못했던 대답은 입니다. "세그먼트 화는 실제 이 아닌 논리적 인 메모리 분할을 기반으로하므로 각 사용자는 의 세그먼트 테이블에서 하나의 항목 만 공유 할 수 있습니다. 페이징을
메모리 분할에 관한 위키피디아의 기사에 따르면 x86 프로세서는 하드웨어에서 세그먼트 화 경계 검사를 수행합니다. 소프트웨어에서 범위 검사를 수행하는 시스템이 있습니까? 그렇다면 어떤 종류의 오버 헤드가 발생합니까? 하드웨어 구현에서 페널티를 피하기 위해 범위 검사를 건너 뛸 수있는 방법이 있습니까 (벌칙이있는 경우)?
운영체제에서 세그먼트 화 주제를 다뤘습니다. 세분화의 개념은 메모리에로드 된 프로세스의 주소 공간에 존재할 수있는 여유 공간으로 인해 발생한다는 것을 알게되었습니다. 제발 나와 함께있어주세요. 나는 내 연구에서 이해 한 몇 가지 사항을 먼저 설명하려고 노력할 것입니다. 잘못이 있다면 제게 정정하십시오. 은 세분화 이상적인 경우 내가 프로세스 주소 공간에 배
다음 코드가 있는데 크기가 다른 여러 행렬 곱셈의 실행 시간을 계산하려고합니다. 나는 100의 행렬 크기로 시작하여 500까지 움직였습니다. 그러나 1000을 시도하면 다음과 같은 오류 메시지가 나타납니다 : 분할 오류 (코어가 덤프 됨). 따라서 메모리와 함께해야한다고 가정합니다. 5000의 매트릭스와 심지어 10000의 실행 시간을 계산하고 싶습니다.
리얼 모드에서 세그먼트의 크기에 대해서는 의심의 여지가 있습니다. 최대 64K는 될 수 없지만 less than that. 일 수 있습니다. 제 질문은 이러한 세그먼트 크기와 기본 주소가 초기화되는 방식입니다. 마찬가지로 GDT와 LDT가 보호 모드에 있습니다. Real mode segments can also overlapped,disjoint or ad
Do CS & DS 세그먼트가 지정된 프로세스에 대해 보호 플랫 모델에 동일한 값을 유지합니까? 즉 , mov dword ptr [0x7fffffff], ebx 및 org 0x7fffffff ...some instruction ... 가 같은 위치를 참조 동일 프로그램 내에서 코드 시퀀스를 다음합니까? (그렇다면 보호 된 플랫 모델에서 별도의 CS & DS
GDB를 사용하여 프로그램을 디버깅하는 동안 IA32_FS_BASE 및 IA32_GS_BASE와 같은 x86-64 모델 관련 레지스터를 읽을 수있는 방법이 있습니까? 인텔 Pintool과 같은 동적 인스 트루먼 테이션 패키지를 사용하는 솔루션은 그리 바람직하지 않지만 모두 만족 스럽습니다.