[10분 테코톡] 호떡의 알아두면 쓸데있는 I/O 기본 개념
- I/O는 컴퓨터 장치/시스템 간 데이터 이동을 의미하며, 응용 프로그램 관점에서는 데이터의 출입력을 뜻함. 📤
- Input/Output은 데이터 흐름의 주체 기준이며, 버퍼는 임시 메모리 공간으로 이해. 💾
- 리눅스에서 모든 것은 파일로 추상화되어, I/O 대상과 관계없이 파일 I/O 방식으로 처리 가능. 🗂️
- 응용 프로그램은 시스템 콜 인터페이스를 통해 커널 기능에 안전하게 접근. 🛡️
open
시스템 콜은 파일 식별자(파일 디스크립터) 획득, read
/write
는 실제 I/O 수행. 🔑
- 표준 입출력(키보드, 모니터)은 미리 정의된 파일 디스크립터(0, 1, 2)를 가짐. ⌨️
- 애플리케이션 종류와 무관하게, 커널 위에서 동작하는 I/O는 시스템 콜을 통해 동일하게 수행됨. ⚙️
- 응용 프로그램 I/O는 유저/커널 레벨 버퍼 간 데이터 복사로 이해 가능. 🧻
- Blocking I/O는 커널 버퍼 상태에 따라 스레드가 대기하는 I/O 방식. ⏳