2012-03-28 9 views
0

나는 등의 epoll, 설문 조사를 사용하여 비 차단 서버와 클라이언트 응용 프로그램을 작성하는 학습이 이벤트 플래그를 건너 왔어요 해요 :I/O 멀티플렉싱에서 쓰기가 어떻게 차단됩니까?

POLLOUT : 쓰기 지금 차단하지 않습니다.

블로킹 읽기의 개념을 이해합니다. 하지만 블로킹을 차단하는 것은 무엇입니까?

답변

2

모든 I/O 작업에서 하드 디스크 (또는 다른 저속 I/O 장치)와 후면으로의 이동 가능성이 있습니다. "차단"통화는 왕복 I/O가 수행되는 동안 기다리는 것입니다. 그래서, 마치 독서가 끝날 때까지 기다릴 수있는 것처럼, 글쓰기를 기다릴 수 있습니다.

일반적으로 기존 응용 프로그램에는 유용하지 않습니다. OS에 데이터를 쓰라고 말하면 더 이상 문제가 아닙니다. 관계형 데이터베이스 시스템과 같이 I/O 장치 (예 : 하드 디스크)에 저장된 데이터 무결성을 보장하려고 할 때 문제가됩니다. 그러나 블로킹은 쓰기가 완료되었음을 보장 할 수있는 유일한 방법이 아니며 컴퓨터의 복잡성이 증가함에 따라 실제 블로킹을 방해 할 수도 있고하지 않을 수도있는 여러 계층의 캐싱이 있음에 유의하십시오.

+0

디스크 파일은 유닉스 용어로는 블록하지 않으며 * "빠름"으로 간주됩니다. 즉 프로세스가 디스크가 대기 상태가 아닌 디스크 대기 상태가됩니다. 'epoll()'은 항상 디스크 파일에 대해'POLLOUT' (그리고'POLLIN')을보고합니다. – caf

3

파이프, 소켓 또는 터미널과 같은 장치에 다른 쪽보다 빠른 속도로 쓰는 경우 관련 커널 버퍼를 채우고 이후 데이터가 다른 쪽.