1. Device Controller
(근데 이렇게 I/O디바이스마다 지 할거 하려고 CPU를 인터럽트 하는데, CPU가 너무 혹사 당하는 것같아서 사용하는게 DMA Controller
= 작업이 다 되면 인터럽트 ❌ 직접 메모리로 이동까지 시켜줌)
2. Device Driver
= 디스크를 실행하기 위해 필요한 코드를 담고 있음
(ex. 펌웨어)
✅ 컨트롤러와의 차이 ?
컨트롤러는 하드웨어 드라이버는 소프트웨어
3. Interrupt Handler
IO장치를 접근하는 것은 모두 커널모드에서 수행됨 = 운영체제를 통해서만 수행이 되는 것
그럼 사용자 프로세스가 IO를 수행하기 위해서는 ? system call
간단하게 라이프 사이클을 알아보면
1. 프로세스가 시스템콜을 통해 IO를 OS에게 요청(인터럽트랑 비슷한 시스템콜)
2. OS는 디바이스 컨트롤러에게 디바이스 드라이버를 통해 일을 시킨다
3. OS는 CPU제어권을 다른 프로세스에게 넘긴다(I/O요청은 오래 걸리니까)
4. 다른 프로세스 수행 중 디바이스가 I/O작업을 끝내면 인터럽트 신호를 보낸다(하드웨어 인터럽트)
✔️ 인터럽트는 총 두번
참고 : https://kouzie.github.io/operatingsystem/%EC%8B%9C%EC%8A%A4%ED%85%9C-%EA%B5%AC%EC%A1%B0,-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8-%EC%B2%98%EB%A6%AC/#%EB%8F%99%EA%B8%B0%EC%8B%9D-%EC%9E%85%EC%B6%9C%EB%A0%A5
http://melonicedlatte.com/computerarchitecture/2020/01/01/234600.html