Post

디스크가 입출력을 처리할 때 CPU가 하는 일


컴퓨터 구조

컴퓨터 구조를 공부하면서 알게된 내용을 요약해서 작성해보자.

디스크가 입출력을 처리할 때 CPU가 하는 일

  • 최신 컴퓨터 시스템인 경우, 디스크가 입출력을 처리할 때 CPU 개입이 필요하지 않다.
  • 디스크가 입출력 요청을 처리하는 동안 운영 체제는 CPU가 다른 작업을 수행하도록 스케줄링한다.
  • CPU는 다른 스레드를 실행 중이거나, 커널 모드에서 커널 프로그램을 실행하느라 바쁠 수 있고, 유휴 상태일 수도 있다.

장치 제어기

  • 디스크와 같은 입출력 장치는 대체로 두 부분으로 나눌 수 있다.
  • 하나는 기계 부분이다.
  • 입출력 요청이 들어왔을 때 읽어야 하는 데이터가 헤드가 위치한 트랙에 없을 가능성이 있다.
  • 이때 헤드가 특정 트랙으로 이동해야 하는데, 이 과정을 탐색이라 한다.
    • 이 과정은 디스크 입출력 중에서 매우 시간을 많이 소모하는 작업에 해당된다.
    • 기계 장치라 CPU속도와 비교하면 극도로 느릴 수 밖에 없기 때문이다.
  • 눈에 보이고 만질 수 있는 기계 부분을 제외한 나머지 부분은 전자 부문이다.
  • 전자 부분은 전자 부품으로 구성되어 있으며, 이를 장치 제어기라고 한다.
  • 장치 제어기와 장치 드라이버를 혼동하지 않도록 하자.
  • 장치 드라이버는 운영 체제에 속한 코드이다.
  • 장치 제어기는 운영 체제에 해당하는 장치 드라이버와 외부 장치를 연결하는 다리에 해당한다.

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

  • CPU 입장에서 데이터를 직접 복사하는 것은 계산 리소스를 극도로 낭비하는 일이다.
  • 인간은 CPU 개입이 없는 상황에서 직접 장치와 메모리 사이에 데이터를 전송할 수 있는 하나의 작동 방식을 설계했으며, 이 작동 방식은 직접 메모리 접근이라는 이름을 가지고 있다.

직접 메모리 접근

  • 메모리와 외부 장치 사이에서 데이터를 이동시키는 역할을 하는 것이 직접 메모리 접근이다.
  • CPU 개입 없이 장치와 메모리 사이에 직접 데이터를 전송하는 것이다.

전 과정 정리

  • CPU로 실행하는 스레드1 입출력 요청 -> 운영체제가 스레드1의 실행 일시 중지 -> CPU를 스레드2에 할당 -> 스레드2 실행 -> 디스크 동작 데이터 준비 완료 -> DMA 작동 방식으로 직접 장치와 메모리 사이 데이터 전송 -> 데이터 전송 완료 -> 인터럽트 작동 방식으로 CPU에게 완료 알림 -> CPU는 스레드2 일시 중지 -> 인터럽트 처리 -> 운영체제 스레드1 요청 처리 확인 -> CPU를 다시 스레드1에 할당 -> 스레드1 중단되었던 위치부터 계속 실행
  • 디스크가 입출력 요청을 처리할 때 CPU가 그 자리에서 기다리지 않고 운영 체제의 스케줄링에 따라 스레드2를 실행한다.