pipex(1) - 프로세스와 프로세스간 통신 IPC

yeham·2023년 4월 2일
0

42Seoul

목록 보기
10/18
post-thumbnail

pipex 프로그램은 리눅스 환경에서 사용 가능한 파이프라인 '|'을 구현하는 프로젝트입니다.

우선 파이프라인에 대해 구현하기 전에 프로세스가 무엇인지 그리고 프로세스 간 통신인 ipc에 이해하고 시작하겠습니다.

프로그램 (Program)

프로그램은 컴퓨터에서 실행될 때 특정 작업을 수행하는 일련의 명령어들의 모음입니다.

우리가 코딩으로 작성하는 소스코드들의 묶음을 말하며, 명령어들의 모음일 뿐이지 프로그램 자체만으로 무언가 일을 할 수 있는 게 아닙니다.
이는 저장 장치에 저장되어 있지만, 메모리에는 올라가지 않아 실행되고 있지 않은 정적인 상태를 의미

제 mac의 프로그램들입니다. 흔히 알고 있는 .exe 파일들을 말하며, 이를 실행시키기 위해서는 컴퓨터의 메모리 위에서 실행시켜야 합니다.

프로세스 (Process)

이러한 프로그램을 실행하는 순간 파일은 컴퓨터 메모리 위에 올라가고 실행되는데, 이렇게 작동 중인 프로그램을 프로세스라 합니다.
즉 메모리에 load 되어서 CPU 자원을 할당받아 연속적으로 실행되고 있는 동적인 상태를 말합니다.

IPC (Inter Process Communication)

프로세스 간 통신 IPC → 서로 다른 프로세스가 데이터를 주고받을 수 있다는 뜻이며 동시에 접근 가능한 공유하는 메모리가 필요합니다.
따라서 프로세스는 통신할 수 있는 공간이 없기 때문에 통신을 위한 공유 메모리 즉, 별도의 공간을 만들어 주어야 합니다.

별도의 공간 : 파일 / 신호 / 소켓 / 메시지 큐 / 파이프 / 지명 파이프 / 세마포어 / 공유 메모리 / 메시지 전달 / 메모리 맵 파일

이 중에서 파이프에 대해 구현하는 프로젝트입니다.

파이프 (PIPE)

정의

  • 유닉스 계열 운영체제, 병행성 메커니즘, 두 프로세스가 생산자-소비자 모델에 따라 통신할 수 있게 해주는 원형 버퍼, 선입 선출 형태의 큐

  • 파이프는 프로세스 간 통신 방법 중 하나로 부모 - 자식 프로세스 간 IPC 방법 중 하나

  • PIPE를 통해서 동일한 PPID를 가진 프로세스들 간에 단방향 통신을 지원

구조

  • FIFO 구조

  • 생성된 PIPE에 대하여 Write 또는 Read만 가능

유의사항

  • 쌍방 통신을 위해서는 Write 용 PIPE 하나 Read 용 PIPE 하나씩 만들어야 합니다.

  • read()와 write()가 기본적으로 block 모드로 작동하기 때문으로 프로세스가 read 대기 중이라면, read가 끝나기 전에는 write를 할 수가 없게 됩니다.

profile
정통과 / 정처기 & 정통기 / 42seoul 7기 Cardet / 임베디드 SW 개발자

0개의 댓글