OS와 하드웨어

파일을 메모리에 대응시키는(mmap과 같은) 구조에서 파일 내용을 읽을 때 일어나는 일에 대한 설명으로 올바른 것은 무엇입니까?

  1. A처음 접근할 때 페이지 폴트가 발생하여 그 부분이 읽혀 들어온다
  2. B대응시킨 시점에 파일 전체가 물리 메모리에 읽혀 들어오고, 그 이후 디스크는 사용되지 않는다
  3. C접근할 때마다 시스템 콜이 호출되어 1바이트씩 파일에서 읽힌다
정답과 해설 보기

정답: A. 처음 접근할 때 페이지 폴트가 발생하여 그 부분이 읽혀 들어온다

파일을 주소 공간에 대응시키면 OS는 페이지 테이블에 그 범위를 등록할 뿐 곧바로 읽어 들이지 않습니다. 프로그램이 처음 접근하면 페이지 폴트가 발생하고, OS가 파일의 해당 부분을 물리 페이지에 읽어 들이며, 이후에는 일반 메모리로서 읽고 쓸 수 있습니다. 디맨드 페이징과 같은 구조로, 읽을 때마다 시스템 콜을 호출할 필요가 없고 데이터의 불필요한 복사도 줄일 수 있습니다. 전체를 처음에 읽어 들이는 것은 아닙니다.

  • A. 올바릅니다. 처음 접근할 때 페이지 폴트가 발생하여 필요한 부분만 읽혀 들어옵니다.
  • B. 전체를 처음에 읽어 들이는 것은 아닙니다.
  • C. 한 번 읽어 들인 뒤에는 일반 메모리로서 접근할 수 있어 매번 시스템 콜이 필요 없습니다.
이 분야 연습하기 분야로 돌아가기

OS와 하드웨어의 다른 문제

  1. 작은 데이터를 1바이트씩 쓸 때, 매번 시스템 콜을 호출하는 것보다 사용자 공간의 버퍼에 모았다가 한꺼번에 쓰는 편이 빠른 주된 이유는 무엇입니까?
  2. CPU에 특권 모드(커널 모드)와 사용자 모드를 두는 주된 목적은 무엇입니까?
  3. 애플리케이션이 파일 읽기/쓰기 등을 OS에 요청하는 구조를 무엇이라고 합니까?
  4. 위의 RISC-V 코드에서 마지막 ecall 명령이 실행되었을 때 일어나는 일로 올바른 것은 무엇입니까?
  5. 인터럽트와 예외의 차이에 대한 일반적인 설명은 무엇입니까?

이 분야의 비교