[38일차] | 컴퓨터 밑바닥의 비밀 | 책너두

Heechan Kang·2024년 5월 28일
0
post-thumbnail

6.3 파일을 읽을 때 프로그램에는 어떤 일이 발생할까?

6.3.1 메모리 관점에서 입출력

  • 메모리 관점에서 입출력(I/O)은 단순한 메모리의 복사임.
    • 읽기(입력; read; Input): 외부 장치에서 메모리로 데이터를 복사하는 것
    • 쓰기(출력; write; Output): 메모리에서 외부 장치로 데이터를 복사하는 것

6.3.2 read 함수는 어떻게 파일을 읽는 것일까?

  • 일반적으로 파일을 읽기 전에 데이터를 저장할 버퍼를 정의하고 파일을 읽는다.

    char buffer[LEN];
    
    read(buffer);
  • 그러나 이러한 작업을 동기로 처리한다면, CPU와 디스크의 속도 차이로 인해 CPU가 대기하는 시간이 발생한다.

  • 따라서 이를 해결하기 위해, 아래와 같은 절차를 따른다.

    • 파일 읽기를 요청한 프로세스를 입출력 블로킹 대기열에 넣는다.
    • DMA를 통해 파일을 읽어오고, 운영체제의 메모리로 데이터를 복사한다.
    • 운영체제의 메모리에서 프로세스의 메모리로 데이터를 복사한다.
    • 디스크가 CPU에 인터럽트를 통해 완료를 알린다.
    • 프로세스를 준비 완료 대기열에 넣는다.
    • 다른 작업이 없다면, 프로세스를 실행한다.
profile
안녕하세요!

0개의 댓글