다음 위로 이전 목차 리눅스 프로그래머를 위한 가이드

6.2.4 파이프의 Atomic 동작 (Atomic Operations with Pipes)

원자화(Atomic)가 고려되어야 하는 동작들은 어떤 이유에서건 수행을 하는데 방해를 받아서는 않된다. 전체의 동작이 한번에 일어난다. POSIX 표준은 /usr/include/posix1_lim.h 파일에 파이프의 원자(Atomic) 동작을 위한 최대 버퍼의 크기를 명시하고 있다.:

	#define	_POSIX_PIPE_BUF		512
자동적으로 파이프로 부터 512바이트까지 쓰거나 읽을 수 있다. 사이에 걸쳐지는 것은 쪼개어 질 것이며, 원자화(Atomic)되지 않는다. 리눅스에서 원자화(Atomic)되는 동작의 한계는 "linux/limits.h" 파일에 정의되어 있다.:

	#define	PIPE_BUF	4096
보다시피, 리눅스는 POSIX에서 필요로 하는 최소한의 바이트를 수용한다. 파이프 동작의 원자화(Atomicity)는 한개 이상의 프로세스(FIFOS)가 포함될 때 중요하게 된다. 예를 들어 파이프에 쓰여지는 바이트의 수가 한개의 동작의 원자 한계(Atomic Limit)를 초과하거나 복수개의 프로세스가 파이프를 쓰고 있는 경우, 자료는 사이에 끼워 넣어지거나(interleaved) 내던져 질 것 이다(chunked). 바꿔 말하면, 한 프로세스가 쓰기를 수행하는 동안 다른 프로세스가 파이프라인에 자료를 넣을 수 있다는 것이다.


이전:6.2.3 파이프, 쉬운 방법 다음:6.2.5 반이중 파이프 정리

Copyright (c) 1996,1997 by Euibeom.Hwang & SangEun.Oh All Rights Reserved

Email To:Webmaster , Another address
LAST UPDATE Nov 15,1997
Created Nov 15,1997