엔지니어가 되고 싶은 공돌이
29. I/O System(3) 본문
14. 7 I/O Software Layers
<Goal of I/O software>
- device independence: device마다 코드가 달리지지 않으면 좋겠다.
- uniform naming
- error handling
<I/O Software Layers>
<Device Drivers>
- 정의: 각 I/O device를 control하는 장치별 코드.
- device-independent I/O software와 interrupt handler 사이에서 interacting
- 아주 잘 정의된 device format이 있다.
- device drivers 구현
1. 커널과 정적으로 연결.
2. 부팅 시 선택적으로 시스템에 로드.
3. 실행 중 시스템에 동적으로 로드.
- 운영체제가 망가지는 건 거의 대부분 device driver 때문에 발생한다.
드라이버는 windows XP 충돌의 85%를 차지하며, linux에서는 kernel 보다 7배 더 버그가 많다.
- 안정성과 신뢰성은 매우 중요한 문제이지만, 아직도 해결되지 못한 문제이다.
- linux kernel code의 70%를 차지.
<device independent I/O SW>
- 정의: device driver를 위한 uniform 인터페이스
- unix에서 device는 특수 파일로 처리. open() close()와 같은 system call로 액세스.
major device number: device 종류/minor device number: device 이름
minor device number가 매개변수를 통해 driver에게 전달된다.
- 작업 수행: error reporting(사용자에게 오류 보고), handling error(일정횟수 재시도, 오류 무시, 프로세스 죽이기, error code로 system call)
<user space I/O SW>
- I/O library: fopen(), fgets(), fputs()
'Computer Science > Operating System' 카테고리의 다른 글
31. Storage System(2) - disk scheduling (0) | 2021.05.31 |
---|---|
30. Storage System(1) (0) | 2021.05.29 |
28. I/O System(2) (0) | 2021.05.26 |
27. I/O System (1) (0) | 2021.05.25 |
26. Virtual Memory - Advanced VM Functionality (0) | 2021.05.24 |