OS와 하드웨어
여러 코어를 가진 시스템에서 OS가 어떤 페이지의 페이지 테이블 항목을 고쳐 써서 대응을 취소했을 때 필요한 처리로 올바른 것은 무엇입니까?
- A자신의 코어 TLB만 비우면 다른 코어는 자동으로 올바른 변환을 사용한다
- B다른 코어의 TLB에서도 오래된 변환을 확실히 지우는 처리를 한다
- C아무것도 하지 않아도 페이지 테이블을 고쳐 쓰는 것과 동시에 모든 TLB가 갱신된다
정답과 해설 보기
정답: B. 다른 코어의 TLB에서도 오래된 변환을 확실히 지우는 처리를 한다
많은 CPU에서 TLB는 캐시와 달리 하드웨어로 일관성이 유지되지 않으며, 다른 코어의 TLB에는 페이지 테이블을 고쳐 쓰기 전의 오래된 변환이 남아 있을 수 있습니다. 그대로 두면 취소했을 페이지에 다른 코어가 접근할 수 있게 됩니다. 그래서 OS는 다른 코어에 프로세서 간 인터럽트를 보내거나 무효화를 전체 코어에 전달하는 명령을 사용하여 오래된 항목을 지우게 하고 완료를 기다립니다. 이를 TLB 슛다운(TLB shootdown)이라고 하며, 코어 수가 많을수록 시간이 걸립니다.
- A. 다른 코어의 TLB에는 오래된 변환이 남아 있을 수 있습니다.
- B. 올바릅니다. 다른 코어의 TLB에서도 오래된 변환을 지워야 합니다.
- C. 많은 CPU에서 TLB의 일관성은 자동으로 유지되지 않습니다.