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

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

6.2 디스크가 입출력을 처리할 때 CPU가 하는 일은 무엇일까?

  • 최신 컴퓨터는 디스크 IO시에 CPU의 개입이 필요없다.
    • 이는 디스크가 자체적으로 이를 위한 제어기를 가지고 있기 때문이다.
  • 주요 개념: 장치 제어기, 직접 메모리 접근, 인터럽트

6.2.1 장치 제어기

  • 입출력장치는 대부분 두 부분으로 나뉜다.

    • 물리적인 부분
      • 디스크의 헤드, 실린더, 트랙 등
      • 기계장치이므로, CPU에 비해 매우 느리다.
    • 전자(논리)적인 부분
      • 디스크의 제어기
      • 현재는 대부분 자체적인 프로세서와 펌웨어를 갖추고 있음.
  • 장치 드라이버는 어디까지나 운영체제에 속한 코드이므로, 이와 혼동하면 안된다.

6.2.2 CPU가 직접 데이터를 복사해야 할까?

  • 입출력 장치는 장치제어기 덕분에 어느정도 독립적인 작업이 가능하다.
  • 자체 버퍼를 가진 장치가 디스크에서 버퍼로 데이터를 읽었다면, 이를 CPU가 직접 가져가야 할까?
    • CPU는 비싸다.
    • 따라서, 이러한 작업은 장치제어기가 수행하는 것이 좋다.
      • 이를 직접 메모리 접근(direct memory access, DMA)이라고 한다.

6.2.3 직접 메모리 접근

  • 디스크에서 메모리로 데이터를 읽어오는 일도 CPU가 처리 할 수는 있다.
    • 그러나 CPU의 자원은 유한하므로, 이러한 작업을 CPU가 처리하는 것은 낭비가 된다.
    • 따라서 DMA를 통해 디스크에 있는 데이터를 메모리로 직접 복사하는 것이 좋다.
    • 다만 이 과정에서 CPU가 DMA에게 어떤 작업을 수행할지 알려주어야 한다.
      • 이 과정에서 캐시 불일치 문제가 발생할 수 있다.
        • 데이터를 즉시 갱신하는 방법으로 해결할 수 있다.
      • 작업의 완료를 CPU에 알리기 위해 인터럽트를 사용한다.

6.2.4 전 과정 정리

  • 디스크 IO가 처리되는 과정
    • 스레드1이 IO 작업을 시작한다.
    • 운영체제는 스레드 1을 일시 중지하고 CPU를 스레드2에 할당한다.
    • 디스크가 동작하며 데이터를 읽어오고, 작업이 끝나면 DMA를 통해 메모리로 데이터를 복사한다.
    • 디스크가 인터럽트를 일으키고, CPU는 다시 스레드1로 전환한다.

6.2.5 프로그래머에게 시사하는 것

  • 지금까지 알아본 효율적인 작업을 위한 가장 좋은 방법은 비동기이다.
    • 무의존성, 분리(decoupling)을 통해 작업을 병렬로 처리할 수 있다.
profile
안녕하세요!

0개의 댓글