hc-kang.log
로그인
hc-kang.log
로그인
[37일차] | 컴퓨터 밑바닥의 비밀 | 책너두
Heechan Kang
·
2024년 5월 27일
팔로우
0
책너두
컴퓨터 밑바닥의 비밀
0
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)을 통해 작업을 병렬로 처리할 수 있다.
Heechan Kang
안녕하세요!
팔로우
이전 포스트
[36일차] | 컴퓨터 밑바닥의 비밀 | 책너두
다음 포스트
[38일차] | 컴퓨터 밑바닥의 비밀 | 책너두
0개의 댓글
댓글 작성