OS와 하드웨어

TLB의 각 항목에 ASID(주소 공간 식별자)를 붙이는 이점으로 올바른 것은 무엇입니까?

  1. A전환할 때 TLB를 전부 비우지 않고도 변환을 구별할 수 있다
  2. B하나의 프로세스가 사용할 수 있는 가상 주소의 범위를 두 배로 할 수 있다
  3. C페이지 테이블이 필요 없어져 모든 변환을 TLB만으로 수행할 수 있다
정답과 해설 보기

정답: A. 전환할 때 TLB를 전부 비우지 않고도 변환을 구별할 수 있다

ASID가 없으면 프로세스마다 같은 가상 주소가 다른 물리 주소를 가리키므로 프로세스를 전환할 때마다 TLB를 비워야 하고, 전환 후 TLB 미스가 이어집니다. 각 항목에 ASID를 붙이면 어느 프로세스의 변환인지 구별할 수 있으므로 TLB를 비우지 않고 남겨 둘 수 있고, 원래 프로세스로 돌아왔을 때도 재사용할 수 있습니다. 가상 주소의 범위는 달라지지 않으며, TLB에 다 들어가지 못하는 변환을 위해 페이지 테이블은 계속 필요합니다.

  • A. 올바릅니다. 프로세스별 변환을 구별할 수 있어 전환 시 TLB를 비우지 않아도 됩니다.
  • B. 가상 주소의 범위는 달라지지 않습니다.
  • C. TLB는 일부 변환만 가질 수 있으며 페이지 테이블은 필요합니다.
이 분야 연습하기 분야로 돌아가기

OS와 하드웨어의 다른 문제

  1. OS가 스스로 CPU를 내놓지 않는 프로그램에서도 일정 시간마다 CPU를 되찾아 다른 프로세스로 전환할 수 있는 것은 주로 어떤 구조 덕분입니까?
  2. 위와 같이 장치의 상태 레지스터를 메모리 맵 I/O로 읽을 때 volatile을 붙이고 그 영역을 캐시하지 않도록 설정하는 이유로 올바른 것은 무엇입니까?
  3. 장치의 상태를 인터럽트를 쓰지 않고 CPU가 반복해서 조사하는 방식(폴링)이 유리한 경우는 무엇입니까?
  4. 캐시 일관성을 하드웨어가 유지하지 않는(비코히런트) 시스템에서, 장치가 DMA로 주기억장치에 쓴 데이터를 CPU가 읽기 전에 소프트웨어가 해야 하는 처리는 무엇입니까?
  5. IOMMU의 주된 역할로 올바른 것은 무엇입니까?

이 분야의 비교