
컴퓨터와 외부 장치 간의 데이터 전송을 조율하는 OS의 기능.
장치의 최적 활용
사용자와 시스템 간 빠르고 안정적인 통신
장치 드라이버: 특정 하드웨어 장치를 제어하는 소프트웨어.
버퍼링: I/O 속도 차이를 줄이기 위해 데이터를 임시 저장.
캐싱: 빠른 데이터 접근을 위해 자주 사용되는 데이터 저장.
스풀링: I/O 요청을 임시 저장한 후 장치가 준비되면 전송.
OS가 장치의 세부 사항을 사용자로부터 숨겨 일관된 인터페이스를 제공함.
동기 I/O: 요청 완료까지 프로세스가 대기.
비동기 I/O: 요청 후 즉시 반환, 완료 시 알림.
직접 메모리 접근(DMA)
장치와 메모리 간 데이터 전송을 CPU의 개입 없이 수행.
I/O Kit: 객체 지향 디자인의 핵심 I/O 시스템, 드라이버 개발에는 C++ 사용.
UBC (Unified Buffer Cache): 파일 시스템과 메모리 사이의 데이터 캐싱.
WDM (Windows Driver Model): 기본 드라이버 모델.
WDF (Windows Driver Foundation): 드라이버 개발 단순화 프레임워크. UMDF 및 KMDF로 구성.
I/O Manager: I/O 요청 관리 및 드라이버와의 상호 작용 담당.
두 개 이상의 프로세스 사이에서 데이터를 교환하는 방법.
데이터 공유
효율적인 작업 분배
시스템 성능 최적화
메시지 패싱: 메시지를 통한 데이터 교환.
공유 메모리: 동일한 메모리 영역을 통한 데이터 공유.
파이프: 한 프로세스의 출력이 다른 프로세스의 입력으로 연결.
소켓 통신: 네트워크를 통한 데이터 교환.
세마포어, 뮤텍스: 자원 접근 동기화 방법.
Mach Ports: macOS는 Mach 마이크로커널 기반. Mach port를 사용하여 메시지 기반 통신 제공.
POSIX IPC: UNIX 계열인 macOS가 제공하는 메시지 큐, 세마포어, 공유 메모리.
소켓: UNIX 도메인 소켓 및 네트워크 소켓 지원.
Named Pipes: 데이터 스트림 지원, 네트워크 통신 가능.
Mailslots: 짧은 메시지 전송에 적합한 메시지 큐.
COM (Component Object Model): 윈도우 전용 프레임워크, DCOM으로 네트워크 통신 지원.
소켓: 네트워크를 통한 데이터 교환.