OS와 하드웨어

일반적인 OS에서 애플리케이션이 장치의 레지스터를 직접 읽고 쓰지 못하게 하는 주된 이유는 무엇입니까?

  1. A애플리케이션 프로그램에서는 레지스터를 읽고 쓰는 명령을 작성할 수 없기 때문에
  2. B여러 프로그램이 마음대로 장치를 조작하면 장치의 상태가 망가지거나 보호가 깨지기 때문에
  3. C장치의 레지스터는 전원을 켠 직후에만 읽고 쓸 수 있기 때문에
정답과 해설 보기

정답: B. 여러 프로그램이 마음대로 장치를 조작하면 장치의 상태가 망가지거나 보호가 깨지기 때문에

장치 레지스터가 놓인 주소는 페이지 테이블에서 사용자 모드로는 접근할 수 없도록 설정되어 있어, OS의 드라이버만 조작할 수 있습니다. 여러 프로그램이 같은 장치를 마음대로 조작하면 중간 상태가 뒤섞여 장치가 오동작하고, DMA로 임의의 메모리를 덮어쓰는 등 보호도 깨지기 때문입니다. 애플리케이션은 시스템 콜을 통해 OS에 조작을 요청합니다. 명령을 작성할 수 없는 것이 아니라 보호에 의해 금지되어 있는 것입니다.

  • A. 명령은 작성할 수 있지만 페이지 테이블의 보호로 금지되어 있습니다.
  • B. 올바릅니다. 장치 상태의 파괴나 보호 침해를 막기 위해서입니다.
  • C. 레지스터는 언제든 조작할 수 있습니다.
이 분야 연습하기 분야로 돌아가기

OS와 하드웨어의 다른 문제

  1. 한 대의 컴퓨터 위에서 여러 OS를 각각 독립된 가상 머신으로 동시에 실행하기 위한 소프트웨어를 무엇이라고 합니까?
  2. 하이퍼바이저의 유형에 대한 설명으로 올바른 것은 무엇입니까?
  3. 중첩 페이징(2단 주소 변환)을 사용한 가상화에서 하드웨어가 수행하는 주소 변환에 대한 설명으로 올바른 것은 무엇입니까?
  4. 게스트도 호스트도 4단 페이지 테이블을 사용하는 중첩 페이징에서 TLB 미스가 발생했을 때, 최악의 경우 몇 번의 메모리 접근이 필요합니까?
  5. 가상 머신의 OS가 특권이 필요한 명령을 실행했을 때 하이퍼바이저로 처리가 넘어가고, 하이퍼바이저가 그 명령의 효과를 대신 재현하는 방식을 무엇이라고 합니까?

이 분야의 비교