2012-11-25 2 views
1

나 CPU 캐시에 대한 읽기 시작하고 난이 두 가지 질문이 있습니다페이지 오류 및 더티 페이지

1) CPU가 커널 핸들러에 페이지 오류 및 전송 제어를 수신 말할 수 있습니다합니다. 핸들러는 더티라고 표시된 메모리에서 프레임을 제거하기로 결정합니다. CPU 캐시가 유효한 비트와 수정 된 비트를 사용하여 다시 기록됩니다. 이제이 프레임의 메모리 내용이 오래되어 캐시에 최신 데이터가 들어 있습니다. 커널이 캐시를 강제로 플러시하려면 어떻게합니까?

2) 페이지 테이블 항목 (PTE)이 더티로 표시되는 방식은 다음과 같습니다. TLB에는 CPU가 페이지 콘텐츠를 수정할 때 설정되는 수정 비트가 있습니다. 이 비트는 컨텍스트 전환시 PTE로 다시 복사됩니다. 페이지 폴트가 발생하면 PTE가 오염되지는 않지만 TLB 항목에 수정 된 비트 세트가있을 수 있습니다 (아직 다시 복사되지 않았습니다). 이 상황이 어떻게 해결 되었습니까?

+0

CPU 캐시는 기능에 영향을주지 않도록 제작되었습니다. 그것들 없이도 작동한다면, 경쟁 조건이없는 한 그것들과 함께 작업해야합니다. –

+0

@JanDvorak : 동의합니다. 그러나 나는 그것이 그 (것)들과 어떻게 작동하는지 배우고 싶다. – Bruce

답변

1

캐시 플러시는 권한있는 명령입니다. OS가 명령을 호출하면 하드웨어가 플러시되기 시작합니다. 모든 값을 무효화하고 다시 쓰기하지 않고 즉시 플러시를 알리는 지침이 있으며 플러시하기 전에 데이터를 다시 쓰도록 하드웨어에 지시하는 또 다른 지침이 있습니다. 명령어 호출 후 하드웨어 (캐시 컨트롤러 및 I/O)가 인계받습니다. 또한 TLB를 플러시하도록 하드웨어에 지시하는 권한있는 지침이 있습니다.

운영체제 코스를 수강한지 얼마되지 않아서 두 번째 질문에 확신이 없지만 페이지 오류가 발생하면 페이지가 먼저 페이지 테이블로 이동합니다. . 제거 된 페이지는 사용 된 공간과 사용 된 페이지 교체 알고리즘에 따라 다릅니다. 해당 페이지를 가져 오기 전에 페이지가 바뀌면 수정 된 비트 세트가 먼저 작성되어야 IO가 대기열에 들어갑니다. 수정되지 않으면 페이지가 즉시 대체됩니다. TLB와 동일한 프로세스. 수정 된 비트가 설정된 경우 해당 페이지가 대체되기 전에 다시 쓰기해야하므로 IO가 대기열에 들어가기 때문에 기다려야합니다.

+0

답해 주셔서 감사합니다. 첫 번째 단락에서 설명하는 지침에 대한 명령 opcode는 무엇입니까? – Bruce

+1

invd는 0F 08 (쓰기 되돌림 없음) wbinvd는 0F 09 (쓰기 되돌림) – BoredBlazer