[네트워크] Blocking I/O & Non-Blocking I/O

함민혁·2023년 7월 18일
0

cs면접준비

목록 보기
11/43

I/O란

데이터의 이력(Input)과 출력(Output)을 함께 일컫는 말임
어떤 디바이스를 통해 입력과 출력이 이뤄지는 작업을 모두 I/O라고 함
네트워크를 통해서 다른서버로 데이터를 전송하거나, 다른 서버로부터 데이터 전송을 받는 것도 I/O에 포함됨

I/O가 성능에 미치는 영향

I/O는 애플리케이션의 성능에 많은 영향을 미침
I/O가 많아진다는 것은 애플리케이션이 연산을 할 때까지 CPU가 아무것도 하지 못하고 대기하는 시간이 길어진다는 뜻임
높은 성능을 보장해야하나는 애플리케이션 입장에서 I/O는 큰 장애물이 될 수 있음

Blocking I/O

I/O작업이 진행되는 동안 유저 프로세스가 자신의 작업을 중단한 채, I/O가 끝날때까지 대기하는 방식을 의미함

Non-Blocking I/O

A함수가 I/O 작업을 호출했을 때 I/O 작업이 완료될때까지 A함수의 작업을 중다하는 게 아니라 I/O호출에 대해 즉시 리턴하고, 이어서 A함수가 다른 일을 수행할 수 있도록 하는 방식을 의미
중간중간 시스템 콜을 보내서 I/O가 완료됐는지 커널에 물어보고, 완료되면 I/O 작업을 완료함

출처 : https://etloveguitar.tistory.com/140

profile
Born to be FE developer 🧑🏻‍💻

0개의 댓글