serversim
학습시뮬레이터템플릿가격
…
…
메뉴 열기
학습↗시뮬레이터↗템플릿↗가격↗
내 Documents문서
전체 목차/6장/6.337 / 40

6.3 · 입출력과 장치

read 함수로 파일을 읽으면 내부에서 무슨 일이 생길까?

read 한 줄이 디스크까지 내려가는 길에는 어떤 층이 있을까요?

프로그램의 버퍼, 시스템 호출, 파일 시스템, 페이지 캐시와 장치 드라이버가 이어져 파일 데이터를 전달합니다.

먼저 생활 비유

도서관 책 신청

창구에 책 번호를 말하면 사서가 가까운 반납대부터 찾고, 없을 때만 지하 서고까지 갑니다.

컴퓨터 예제로 바꾸기

4KB 읽기

n = read(fd, buffer, 4096);

페이지 캐시에 데이터가 있으면 디스크 없이 사용자 버퍼로 복사하고, 없으면 장치 읽기를 시작합니다.

직접 움직여 보기1 / 5

지금 일어나는 변화

사용자 read

파일 서술자, 버퍼 주소, 크기를 전달합니다.

CPU · 커널 · 장치사용자 코드 · CPU운영 체제 · 커널장치 · 네트워크 · 디스크사용자 read단계 1시스템 호출단계 2페이지 캐시 확인단계 3장치 읽기단계 4사용자 버퍼단계 5파일 4KB현재: 사용자 read

이 그림에서 기억할 한 문장

파일 읽기는 디스크 접근과 같은 말이 아니며 페이지 캐시에 있으면 메모리 안에서 끝날 수 있습니다.

현재 상태

이동하는 것
파일 4KB
현재 위치
사용자 read
다음 위치
시스템 호출

30초 확인 문제

같은 파일을 두 번째 읽을 때 더 빠를 수 있는 이유는?

처음 보는 용어 두 개

파일 서술자
프로세스가 열린 파일을 가리키는 작은 정수 핸들
페이지 캐시
파일 내용을 RAM에 보관해 디스크 접근을 줄이는 커널 캐시

이 절을 다 읽었다면

파일 읽기는 디스크 접근과 같은 말이 아니며 페이지 캐시에 있으면 메모리 안에서 끝날 수 있습니다.

← 이전 절

6.2 디스크 입출력 중 CPU는 무엇을 할까?

다음 절 →

6.4 select·poll·epoll은 여러 연결을 어떻게 다룰까?