OS와 하드웨어

여러 코어를 가진 시스템에서 OS가 어떤 페이지의 페이지 테이블 항목을 고쳐 써서 대응을 취소했을 때 필요한 처리로 올바른 것은 무엇입니까?

  1. A자신의 코어 TLB만 비우면 다른 코어는 자동으로 올바른 변환을 사용한다
  2. B다른 코어의 TLB에서도 오래된 변환을 확실히 지우는 처리를 한다
  3. C아무것도 하지 않아도 페이지 테이블을 고쳐 쓰는 것과 동시에 모든 TLB가 갱신된다
정답과 해설 보기

정답: B. 다른 코어의 TLB에서도 오래된 변환을 확실히 지우는 처리를 한다

많은 CPU에서 TLB는 캐시와 달리 하드웨어로 일관성이 유지되지 않으며, 다른 코어의 TLB에는 페이지 테이블을 고쳐 쓰기 전의 오래된 변환이 남아 있을 수 있습니다. 그대로 두면 취소했을 페이지에 다른 코어가 접근할 수 있게 됩니다. 그래서 OS는 다른 코어에 프로세서 간 인터럽트를 보내거나 무효화를 전체 코어에 전달하는 명령을 사용하여 오래된 항목을 지우게 하고 완료를 기다립니다. 이를 TLB 슛다운(TLB shootdown)이라고 하며, 코어 수가 많을수록 시간이 걸립니다.

  • A. 다른 코어의 TLB에는 오래된 변환이 남아 있을 수 있습니다.
  • B. 올바릅니다. 다른 코어의 TLB에서도 오래된 변환을 지워야 합니다.
  • C. 많은 CPU에서 TLB의 일관성은 자동으로 유지되지 않습니다.
이 분야 연습하기 분야로 돌아가기

OS와 하드웨어의 다른 문제

  1. 프로그램이 OS가 할당하지 않은 주소에 접근했을 때 일반적으로 일어나는 일은 무엇입니까?
  2. 파일을 메모리에 대응시키는(mmap과 같은) 구조에서 파일 내용을 읽을 때 일어나는 일에 대한 설명으로 올바른 것은 무엇입니까?
  3. 작은 데이터를 1바이트씩 쓸 때, 매번 시스템 콜을 호출하는 것보다 사용자 공간의 버퍼에 모았다가 한꺼번에 쓰는 편이 빠른 주된 이유는 무엇입니까?
  4. CPU에 특권 모드(커널 모드)와 사용자 모드를 두는 주된 목적은 무엇입니까?
  5. 애플리케이션이 파일 읽기/쓰기 등을 OS에 요청하는 구조를 무엇이라고 합니까?

이 분야의 비교