현재 실행 중인 프로그램과 그 프로그램이 사용하는 데이터를 저장
한 장소에서 다른 장소로 전송하는 동안 임시로 저장하는 메모리 영역
입출력 작업의 효율성을 높이기 위해 사용
되며, 버퍼를 통해 데이터는 더 빠르게 처리될 수 있음생산자와 소비자 사이의 속도 차이를 관리
디스크에서 RAM으로
또는 네트워크를 통해 전송할 때
사용 버퍼링은 데이터를 일정량 모아서 한 번에 전송
함으로써 효율성을 높이고, 자원 사용을 최적화자주 사용되는 데이터나 결과를 임시로 저장하는 메모리 영역
데이터에 대한 빠른 접근이 가능
하며, 시스템의 전체 성능을 향상데이터의 접근 속도 개선이 목적
메모리에도 있고, 디스크 캐시도 있다.
그 요청을 받아서 실제 파일 시스템에 전달
메모리와 하드 드라이브 사이에서 옮깁니다.
운영 체제의 일부
입출력 장치(예: 하드 드라이브, SSD 등)를 관리
입출력 작업 시
, 데이터를 임시로 저장하는 공간(버퍼)을 관리하여, 데이터 전송이 더 효율적으로 이루어지도록한 번에 많은 양의 데이터를 읽거나 쓸 때, 이를 적당한 크기로 나누어 처리
프로세서 내부에 있는 CPU 캐시
또는 운영 체제에 의해 관리되는 디스크 캐시
멀티 쓰레딩을 통한, 디스크 병렬+동시 접근이 불가능
멀티 쓰레딩을 통한, 디스크 병렬+동시 접근이 가능
컴퓨터가 네트워크를 통해 데이터를 보내고 받을 수 있게 해주는 하드웨어 부품
I/O 서브시스템
, 운영 체제
, 그리고 관련 하드웨어(예: 하드 드라이브, 네트워크 인터페이스 카드)
에 의해 수행됩니다. 요청을 실제 하드웨어 장치로 전달
하며, 완료되면 데이터를 애플리케이션에 반환
드라이버와 시스템 호출을 사용
하여 I/O 작업을 처리데이터 전송, 버퍼링, 캐싱 및 에러 검사와 같은 작업을 포함
하여, 실제 데이터 이동을 관리운영 체제
와 하드웨어 장치 간
의 통신을 가능하게 하는 소프트웨어
드라이버는 이 명령어들을 운영 체제가 이해할 수 있는 방식으로 번역
프로그램이 운영 체제의 기능을 요청할 때 사용하는 메커니즘
운영 체제의 보호된 서비스나 데이터에 접근하려고 할 때, 프로그램은 시스템 호출을 통해 운영 체제에 이러한 작업을 대신 실행해달라고 요청
프로그램이 파일을 열거나 네트워크를 통해 데이터를 보내고 싶을 때, 프로그램은 이를 직접 할 수 없습니다.
파일을 여는 시스템 호출을 하거나 네트워크 소켓을 생성하는 시스템 호출을 사용하여 운영 체제가 이러한 작업을 수행하도록 요청
디스크 I/O 병목 현상이 발생할 수 있음
SSD를 사용하는 경우 여러 쓰레드가 동시에 I/O 작업을 수행할 수 있어.
여러 I/O 요청을 동시에 받아들여 순서를 조정하고, 가능한 한 효율적으로 디스크에 요청을 전달할 수 있음을 의미해.
하드웨어 레벨에서 I/O 요청의 처리 순서를 최적화할 수 있어,
현대의 파일 시스템과 운영 체제는 여러 쓰레드로부터 오는 I/O 요청을 동시에 처리할 수 있는 능력이 있어, 이는 동시에 여러 파일을 읽거나 쓸 때 유용해.
하지만 I/O 바운드 작업의 경우, CPU 사용률이 낮기 때문에 CPU 코어 수보다 많은 쓰레드를 생성할 수 있어.
I/O 바운드 작업의 경우, I/O 작업을 기다리는 동안에도 다른 쓰레드가 CPU 작업을 진행할 수 있으므로, CPU 코어 수보다 많은 쓰레드를 사용할 수 있어.
SSD의 경우 동시에 여러 I/O 요청을 처리할 수 있는 능력이 있지만, 이 역시 한계가 있어.
SSD의 IOPS(Input/Output Operations Per Second)와 처리량을 고려하여 너무 많은 쓰레드가 동시에 I/O 요청을 하지 않도록 주의해야 해.