파이프 (유닉스)

파이프(pipe)는 유닉스 계열 운영 체제에서(어느 정도까지는 마이크로소프트 윈도우에서) 제공되는 병행성 메커니즘의 하나로서, 두 프로세스생산자-소비자 모델에 따라 통신할 수 있게 해주는 원형 버퍼이다. 즉, 파이프는 한 프로세스가 쓰고 다른 프로세스가 읽는 선입선출 형태의 라 할 수 있다. 파이프의 개념은 코루틴(coroutine)으로부터 영향을 받아 만들어졌으며, 운영 체제 기술의 발전에 큰 공헌을 하였다.

텍스트 터미널 상의 3개의 프로그램의 파이프라인.

파이프에는 일정한 크기의 공간이 할당되어 있다. 어떤 프로세스가 파이프에 데이터를 기록하려고 할 때 충분한 공간이 남아있다면 기록이 즉시 수행되겠지만, 공간이 부족하다면 그 프로세스는 차단된다. 이것은 운영체제가 상호배제를 수행한 결과이다. 즉 한 순간에 1개의 프로세스만이 파이프에 접근할 수 있는 것이다.

파이프에는 지명 파이프(named pipe)와 익명 파이프(anonymous pipe), 2종류가 있다. 익명 파이프는 서로 관련된 프로세스들만 공유할 수 있고, 지명 파이프는 관련이 없는 프로세스들도 공유할 수 있다.

process1 | process2 | process3

역사 편집

파이프라인 개념은 버전 3 유닉스man page에 처음 기술되었으며 더글러스 매클로이가 발명하였다.[1]

같이 보기 편집

각주 편집