본문 바로가기

반응형

async io

(2)
서버 스레드 모델 연구 들어가며 오늘은 서버 개발에 대해 알아 보자. 특히 서버 성능과 직결 되는 서버의 스레딩 모델에 대해 알아 보도록 하겠다. 본격적인 내용을 다루기 전에 서버에서 말하는 성능에 대한 정의를 먼저 해보록 하자. 보통 서버에서 주요한 성능 측정 요소는 응답시간이다. 클라이언트로 부터 요청을 받고 결과를 가공하여 응답 하기 까지 시간이 얼마나 걸리는지가 서버의 성능을 측정하는데 주요 요소로 사용 된다. 그렇다면 이 응답 시간에 가장 영향을 미치는 요소는 무엇일까? 첫번째는 IO 연산이다. 파일이든 네트워크든 IO 연산이 발생하면 아래 그림과 같은 과정이 발생한다. 서버 어플리케이션이 IO를 요청하면 OS를 거쳐 하드웨어 까지 전달되고, 하드웨어에서 작업이 완료 될때까지 작업은 블로킹 된다. 이 시간을 디바이스 ..
[C#] 비동기 프로그래밍 - async io 동기와 비동기의 차이 이전 포스트 [C#] 비동기 프로그래밍 - async/await에서는 연산 중심의 비동기 메소드를 작성하는 방법에 대해 살펴 보았다. 이번 포스트에서는 IO 중심의 비동기 예를 살펴 보도록하겠다. 먼저 동기 IO가 어떻게 이루어지는 아래 그림을 통해 살펴 보자. 예를 들어 FileStream 객체의 Write메소드를 이용해 파일에 무엇인가 쓰려고하면 아래 그림과 같은 과정이 진행 된다. 실제 쓰기 작업은 프로그램이나 OS 영역이 아닌 하드웨어 영역에서 이루어지는데 동기 IO, 그러니까, 블로킹 호출에서는 쓰기 작업이 완료 될 때까지 프로그램이 대기하게 된다. 비동기는 IO를 요청하고 대기하는 것이 아니라 즉시 리턴 한다. 그리고 IO작업이 완료 되면 OS를 통해 그 완료를 통보 받아..

반응형