728x90
Blocking와 Non Blocking
설명에 앞서 각각의 프로그램 실행하는 순서 관점에서 본다면 더 쉽게 이해가 가능하다.
1. Blocking I/O Model
- Blcoking I/O Model 에서는 System Call이 끝날때까지 프로그램은 대기해야하고 Sysytem Call이 완료되면 그때야 Return 한다.
- Wait Queue에 들어간다.
2. Non-Blocking I/O Model
- Non-Blocking I/O Model 에서는 System Call이 완료되지 않아도 대기하지 않고 Return 된다.
- Wait Queue에 들어가지 않는다.
3. Blocking vs Non-Blocking
→ 프로그램이 호출되는 함수가 바로 return이 되느냐 않느냐 차이이다.
Synchronous vs Asnchronous
1. Synchronous
- Synchronous 에서는 System Call이 끝날때까지 기다리고 결과물을 가져온다.
2. Asynchronous
- System Call 이 완료되지 않아도 나중에 완료가 되면 그 때 결과물을 가져온다.
- 주로 Callback 함수를 통해 결과물을 가져온다.
3. Synchronous 와 Asynchronous 차이점
→ 결과물을 가져오는 시점이 다르다.
Blocking vs Synchronus // Non-Blocking vs Asyncronous
1. Blocking vs Synchronus
- Wait Queue 유무
- Blocking은 Return을 기다리는동안 필수로 Wait Queue에 머문다.
- Syncronous는 Return을 기다리는 동안 Wait Queue에 머물 수도 아닐 수도 있다.
2. Non-Blocking vs Asyncronous
- System Call이 즉시 Return 될 때 데이터의 포함 유무
- Asyncronous는 요청에 처리 완료와 관계없이 응답한다. 이후 운영체제에서 응답할 준비가 되면 응답한다.
- Non-Blocking은 요청에 처리할 수 있으면 바로 응답하고 아니면 Error를 반환다.
참고