본문 바로가기
CS/운영체제

맥락에 따른 비동기 asynchronous

by joaa 2024. 2. 16.

Synchronous programming

: 여러 작업들을 순차적으로 실행하도록 개발

 

 

 

 

Asynchronous programming

: 여러 작업들을 독립적으로 실행하도록 개발

 

 

multi-threads

여러 스레드가 작업을 수행

 

 

 

non-block I/O

I/O를 기다리는 동안 다른 작업을 수행

 

 

asynchronous programming != multithreading

 

asynchronous programming

: 여러 작업을 동시에 실행하는 프로그래밍 방법론

 

multithreading

: asynchronous programming의 한 종류

 

asynchronous 프로그래밍을 가능하게 하는 것은

1. multi-threads

2. non-block I/O

 

 

백엔드 프로그래밍 추세는 스레드를 적게 쓰면서 non-block I/O를 통해 전체 처리량을 늘리는 방향으로 발전 중이다. 

 

 

 

🎈 I/O 관점에서 asynchronous

 

문맥에 따라 case1

synchronous I/O = block I/O

asynchronous I/O = non-block I/O

 

문맥에 따라 case2

synchronous I/O: 요청자가 I/O 완료까지 챙겨야 할 때

asynchronous I/O: 완료를 noti 주거나 callback으로 처리

 

문맥에 따라 case3

asynchronous I/O: block I/O를 다른 thread에서 실행

 

 

 

 

🎈 백엔드 아키텍쳐 관점에서

 

하나의 서비스는 기능과 역할에 따라 여러 개의 마이크로 서비스로 구성되고 이들 사이에는 빈번하게 커뮤니케이션이 발생함. 

 

 

Synchronous communication

C에 장애가 생겼을 때 서비스 전체에 장애가 생기는 문제가 생김

 

 

Asynchronous communication

일부 서비스에 문제가 생겼을 때 전체 서비스에 문제가 생기는 것을 방지

한 방향으로 이벤트를 주는 경우에 활용할 수 있는 구조

 

 

 

 

출처: https://www.youtube.com/@ez.

'CS > 운영체제' 카테고리의 다른 글

block I/O vs non-block I/O  (0) 2024.02.15
스레드와 스레드 풀  (0) 2024.02.13
인터럽트와 시스템 콜  (0) 2024.02.12
CPU 스케줄러  (0) 2024.02.12
OS에서 프로세스 상태  (0) 2024.02.10