Recommanded Free YOUTUBE Lecture: <% selectedImage[1] %>

컴퓨팅에서의 파이프라인

컴퓨팅에서 파이프라인이란 연속적으로 이루어진 데이터 처리의 집합으로, 한 요소의 출력은 다음 요소의 입력이 된다. 파이프라인의 요소들은 종종 병렬적으로 혹은 시분할방식으로 처리가 된다. 파이프라인을 이용하면 컴퓨터는 프로세스가 산술연산을 수행하는 동안에 다음번 명령어를 가져올 수 있다. 다음번 명령어는 버퍼에 가져다 놓는다. 이러한 cyle를 끊임없이 반복하므로써, 주어진 시간동안 더 많은 명령을 수행할 수 있다.

attachment:laundrypipe6.gif

Unix 파이프라인

유닉스 운영체제(:12)에서의 파이프라인은 표준 Stream들의 연속된 프로세스들을 말한다. 이들 프로세스들은 표준출력(:12)된 결과를 다른 프로세스에 표준입력(:12)형식으로 넘겨주는 방식으로 연결이 된다.

attachment:unixpipeline.png

유닉스 shell(:12)에서 파이프라인을 이용해서 작업을 처리하는 예이다.
# curl "http://en.wikipedia.org/wiki/Pipeline_(Unix)" | \
sed 's/[^a-zA-Z ]/ /g' | \
tr 'A-Z ' 'a-z\n' | \
grep '[a-z]' | \
sort -u | \
comm -23 - /usr/dict/words
  • curl을 이용해서 HTML(:12)로 구성된 웹페이지의 내용을 가져온다.
  • sed를 이용해서 영문자가 아닌것들과 공백문자들을 제거한다.
  • tr을 이용해서 대문자를 모두 소문자로 변경한다.
  • grep를 이용해서 알파벳단어들을 가져온다. (공백라인의 제거)
  • sort를 이용해서, 알파벳순서로 정렬한다. -u 옵션을 이용해서 중복되는 단어들을 제거한다.
  • comm은 두개의 파일을 비교한다. -23 옵션을 이용하면 두번째 파일에서 새로발견된 줄을 가져올 수 있다. 결과적으로 /usr/dict/words 에 존재하지 않는 새로운 단어들을 출력한다.
  • 특수문자인 "|"는 운영체제에게 앞의 명령어의 실행결과인 출력을 다음 명령어에게 넘기라고 알려준다. 즉 curl을 이용해서 가져온 웹페이지 출력을 sed 에게 넘겨주란 의미가 된다.

참고문서

IPC pipe(:12) wikipedia