OS와 하드웨어

많은 OS에서 커널 영역을 각 프로세스의 주소 공간 일부(예를 들어 상위 범위)에 할당해 두고, 페이지 테이블의 보호 비트로 사용자 모드에서의 접근을 금지합니다. 이 배치의 주된 이점은 무엇입니까?

  1. A커널에 들어갈 때 주소 공간을 전환하지 않아도 되기 때문에
  2. B애플리케이션이 커널 함수를 시스템 콜 없이 직접 호출할 수 있기 때문에
  3. C커널의 메모리를 각 프로세스가 마음대로 고쳐 쓰고 공유할 수 있기 때문에
정답과 해설 보기

정답: A. 커널에 들어갈 때 주소 공간을 전환하지 않아도 되기 때문에

커널을 각 프로세스의 주소 공간에 똑같이 할당해 두면, 시스템 콜이나 인터럽트로 커널에 들어갈 때 페이지 테이블을 전환하지 않고 그대로 커널의 코드와 데이터에 접근할 수 있고 TLB도 비우지 않아도 됩니다. 사용자 모드에서의 접근은 페이지 테이블의 보호 비트로 금지되어 있으므로 애플리케이션이 커널 함수를 직접 호출하거나 커널 메모리를 고쳐 쓸 수는 없습니다. 이 보호가 깨지면 중대한 취약점이 됩니다.

  • A. 올바릅니다. 커널에 들어갈 때 주소 공간 전환이 필요 없어집니다.
  • B. 보호 비트로 금지되어 있으므로 직접 호출할 수 없습니다.
  • C. 사용자 모드에서는 고쳐 쓸 수 없습니다.
이 분야 연습하기 분야로 돌아가기

OS와 하드웨어의 다른 문제

  1. 페이지 크기가 4 KB일 때, 가상 주소 중 페이지 내 위치(오프셋)를 나타내는 것은 몇 비트입니까?
  2. 페이지 크기가 4 KB일 때, 32비트 가상 주소 0x00403ABC의 페이지 번호와 페이지 내 오프셋의 조합으로 올바른 것은 무엇입니까?
  3. RISC-V 특권 아키텍처에서 정해진 주요 동작 모드의 조합으로 올바른 것은 무엇입니까?
  4. 인터럽트나 예외 처리를 마치고 원래 프로그램으로 돌아갈 때, 일반 함수의 복귀 명령이 아니라 전용 복귀 명령(RISC-V의 sret, mret 등)을 사용하는 이유는 무엇입니까?
  5. 실시간성이 요구되는 시스템에서, 인터럽트가 발생하고 나서 핸들러가 동작하기 시작할 때까지의 시간(인터럽트 지연)을 크게 만드는 요인으로 가장 적절한 것은 무엇입니까?

이 분야의 비교