OS와 하드웨어
일반적인 OS에서 애플리케이션이 장치의 레지스터를 직접 읽고 쓰지 못하게 하는 주된 이유는 무엇입니까?
- A애플리케이션 프로그램에서는 레지스터를 읽고 쓰는 명령을 작성할 수 없기 때문에
- B여러 프로그램이 마음대로 장치를 조작하면 장치의 상태가 망가지거나 보호가 깨지기 때문에
- C장치의 레지스터는 전원을 켠 직후에만 읽고 쓸 수 있기 때문에
정답과 해설 보기
정답: B. 여러 프로그램이 마음대로 장치를 조작하면 장치의 상태가 망가지거나 보호가 깨지기 때문에
장치 레지스터가 놓인 주소는 페이지 테이블에서 사용자 모드로는 접근할 수 없도록 설정되어 있어, OS의 드라이버만 조작할 수 있습니다. 여러 프로그램이 같은 장치를 마음대로 조작하면 중간 상태가 뒤섞여 장치가 오동작하고, DMA로 임의의 메모리를 덮어쓰는 등 보호도 깨지기 때문입니다. 애플리케이션은 시스템 콜을 통해 OS에 조작을 요청합니다. 명령을 작성할 수 없는 것이 아니라 보호에 의해 금지되어 있는 것입니다.
- A. 명령은 작성할 수 있지만 페이지 테이블의 보호로 금지되어 있습니다.
- B. 올바릅니다. 장치 상태의 파괴나 보호 침해를 막기 위해서입니다.
- C. 레지스터는 언제든 조작할 수 있습니다.