OS와 하드웨어

작은 데이터를 1바이트씩 쓸 때, 매번 시스템 콜을 호출하는 것보다 사용자 공간의 버퍼에 모았다가 한꺼번에 쓰는 편이 빠른 주된 이유는 무엇입니까?

  1. A한꺼번에 쓰면 쓰는 데이터의 총량 자체가 줄어들기 때문에
  2. B시스템 콜 1회마다 드는 고정 부담을 횟수를 줄여 억제할 수 있기 때문에
  3. C버퍼에 모아 두면 디스크를 사용하지 않고 데이터를 저장해 둘 수 있기 때문에
정답과 해설 보기

정답: B. 시스템 콜 1회마다 드는 고정 부담을 횟수를 줄여 억제할 수 있기 때문에

시스템 콜에서는 사용자 모드에서 특권 모드로의 전환, 레지스터 저장, 인수 확인, 원래대로 돌아가는 처리 등이 매번 필요하며, 처리하는 양이 1바이트여도 이 고정 부담이 듭니다. 게다가 커널에 들어감으로써 캐시나 TLB의 내용도 흐트러집니다. 버퍼에 모아 몇 KB씩 한꺼번에 쓰면 시스템 콜의 횟수가 크게 줄어 전체가 빨라집니다. 쓰는 데이터의 총량은 변하지 않으며, 최종적으로는 디스크에 기록됩니다.

  • A. 쓰는 데이터의 총량은 변하지 않습니다.
  • B. 올바릅니다. 1회마다 드는 고정 부담을 횟수를 줄여 억제합니다.
  • C. 최종적으로는 디스크에 기록됩니다.
이 분야 연습하기 분야로 돌아가기

OS와 하드웨어의 다른 문제

  1. CPU에 특권 모드(커널 모드)와 사용자 모드를 두는 주된 목적은 무엇입니까?
  2. 애플리케이션이 파일 읽기/쓰기 등을 OS에 요청하는 구조를 무엇이라고 합니까?
  3. 위의 RISC-V 코드에서 마지막 ecall 명령이 실행되었을 때 일어나는 일로 올바른 것은 무엇입니까?
  4. 인터럽트와 예외의 차이에 대한 일반적인 설명은 무엇입니까?
  5. 다음 중 명령 실행과 무관하게 언제 발생할지 정해져 있지 않은 비동기 요인은 무엇입니까?

이 분야의 비교