OS와 하드웨어
작은 데이터를 1바이트씩 쓸 때, 매번 시스템 콜을 호출하는 것보다 사용자 공간의 버퍼에 모았다가 한꺼번에 쓰는 편이 빠른 주된 이유는 무엇입니까?
- A한꺼번에 쓰면 쓰는 데이터의 총량 자체가 줄어들기 때문에
- B시스템 콜 1회마다 드는 고정 부담을 횟수를 줄여 억제할 수 있기 때문에
- C버퍼에 모아 두면 디스크를 사용하지 않고 데이터를 저장해 둘 수 있기 때문에
정답과 해설 보기
정답: B. 시스템 콜 1회마다 드는 고정 부담을 횟수를 줄여 억제할 수 있기 때문에
시스템 콜에서는 사용자 모드에서 특권 모드로의 전환, 레지스터 저장, 인수 확인, 원래대로 돌아가는 처리 등이 매번 필요하며, 처리하는 양이 1바이트여도 이 고정 부담이 듭니다. 게다가 커널에 들어감으로써 캐시나 TLB의 내용도 흐트러집니다. 버퍼에 모아 몇 KB씩 한꺼번에 쓰면 시스템 콜의 횟수가 크게 줄어 전체가 빨라집니다. 쓰는 데이터의 총량은 변하지 않으며, 최종적으로는 디스크에 기록됩니다.
- A. 쓰는 데이터의 총량은 변하지 않습니다.
- B. 올바릅니다. 1회마다 드는 고정 부담을 횟수를 줄여 억제합니다.
- C. 최종적으로는 디스크에 기록됩니다.