관리 메뉴

드럼치는 프로그래머

[시스템프로그래밍] I/O에서 동기적,비동기적,블록킹이란? 본문

★─Multi Media/☆─3학년 2학기

[시스템프로그래밍] I/O에서 동기적,비동기적,블록킹이란?

드럼치는한동이 2009. 10. 14. 19:24

I/O에서 동기적,비동기적,블록킹이란 무엇인지 가르쳐 주세요.

 


안녕하세요.

 

마찬가지로 I/O를 공부하던중 동기적,비동기적,블록킹이 무엇인지 정확하게

확립하고 싶어 이렇게 글을 남깁니다.

 

좋은 하루 되세요.

 

re: I/O에서 동기적,비동기적,블록킹이란


데이터의 읽기를 예로 들면..

"읽기 요청"과 "실제로 데이터를 가져올 수 있는 순간"의 일치 정도에 따라

동기적, 비동기적으로 나뉩니다.

 

[읽는 측]

1. 데이터 읽기 요청

2. 함수 호출한 상태에서 대기

3. 반환되면서 파라미터에 데이터가 전달됨

 

이렇게 읽기 요청과 동시에 그 호출한 자리에서 멈춘 걸로 생각하면 이해가 쉽겠죠.

이게 "동기(synchronous)" 입니다.

 

이렇게 하지 않고 "요청만 보내고", "읽은 데이터가 준비됐다"는 신호를 받아서 하는 것이

비동기화 입니다.

즉, 이벤트 처리기 같은 것을 두고, "읽기 요청에 대한 처리 완료" 신호가 오면,

다른 데서 데이터를 가져오거나 하는 처리를 하는 것이 되죠.

 

작성은 동기 쪽이 쉽죠. 그냥 일반적인 "순차 실행"으로 생각하면 되니깐요.

비동기가 짜기가 번거롭고 예외 처리도 번거롭지만 효율성은 더 좋습니다.

 

동기화 시켜서 "완료될 때까지 기다리는 상태"를 블록킹(blocking) 이라고 합니다.

비동기의 경우 함수 호출을 하면 바로 다음 것을 수행하고, 처리 완료 이벤트가 올 때

처리를 해주는 식이니 넌-블록킹(non-blocking) 이라고 하구요.



[출처] http://kin.naver.com/detail/detail.php?d1id=1&dir_id=10106&docid=6253857&qb=64+Z6riw7KCBIOu5hOuPmeq4sOyggQ==&enc=utf8

Comments