728x90
Blocking vs Non-blocking
☞ 프로그램을 바로 실행가능한지 아닌지에 따라 다름
Blocking I/O model
- System Call이 끝날때까지 프로그램이 대기하고, System Call이 완료될 때 return하는 모델
- Wait Queue에 들어감.
Non-blocking I/O model
- System Call이 완료되지 않아도 대기하고 않고 return 하는 모델
- Wait Queue에 들어가지 않는다.
Synchronize(동기) vs Asynchronize(비동기)
☞ 결과물을 가져오는 시점에 따라 다름
동기(synchorunous)
- 요청을 보낸후 응답을 받아야하지만 다음 동작이 이루어지는 방식
- 모든 일이 순차적으로 실행됌
비동기(asynchrounous)
- 요청을 즉시 처리하지 않아도 그 대기 시간동안 또 다른 동작이 이루어지는 방식
- 모든 일이 병렬적으로 실행
Synchronize
- System Call이 끝날때까지 기다리고 결과물을 가져옴.
Asynchronize
- Callback 함수를 통해 System Call이 나중에 완료될 때 결과물을 가져옴.
ASynchronous Vs Non-Blocking
System Call이 즉시 Return될 때 데이터의 포함 유무에 따라 나뉜다
ASynchronous
- 요청에 대한 처리가 완료되지 않아도 운영체제에서 응답준비가 되면 응답.
Non-Blocking
- 요청에 대한 처리가 가능하면 응답하고, 불가능하면 Error를 반환.
Blocking Vs Synchronous
Wait Queue 유무에 따라 나뉠 수 있음.
Blocking
- System Call의 return 을 기다리는 동안 wait Queue에 필수로 머뭄.
Synchronous
- System Call의 return을 기다리는 동안 Wait Queue에 선택적으로 머물 수 있음.
참 고
출 처 : https://velog.io/@guswns3371/synchronize-VS-asynchronizeblocking-VS-non-blocking
728x90
'JAVA' 카테고리의 다른 글
[Java] 동시성 문제 (0) | 2022.03.28 |
---|---|
[Java] 직렬화(Serialization)란? (0) | 2022.03.26 |
[Java] 인터페이스란? (0) | 2022.03.25 |
[Java] static 이란? (2) | 2022.03.24 |
[Java] GC 종류별 차이 (0) | 2022.03.24 |