티스토리 뷰

Server/Linux

[Linux] 프로세스간 통신

annajinee 2017. 7. 10. 17:32

<<프로세스 간 통신>>

프로세스간 동기화 : 시그널
동일한 시스템 내에 메세지 : 파이프
서로 다른 시스템에 프로세스끼리 메세지 : 소켓

Interrupt : 기대하지 앟은 이벤트를 다뤄 야 할 때
정상적으로 실행되고 있는 프로세스 에게 전달된다. 리눅스 시스템은 이벤트가 발생하면 관련된 프로세스에게 이벤트와 관련된 시그널을 보내게 된다. 

시그널은 유일한 번호가 붙여져 있다. 
예) 전면에서 수행중인 프로세스를 강제로 종료하기위해 ctr+c를 누르면 커널은 해당 프로세스에게 SIGTERM의 이름의 시그널을 보내게 되는데 이는 15번에 해당 된다.

커널만 시그널을 보낼 수 있는 것이 아니고 어떤 프로세스든지 권한만 있으면 선택된 프로세스에게 특정 시그널을 보낼 수 있다.
kill명령어는 지정한 프로세스에게 SIGTERM 시그널을 전달 한다.

시그널은 수신한 프로세스는 보통 다음 중에 하나로 반응하게 된다.
1) 시그널에 대해 기본적인 방법으로 대응한다. 대부분의 시그널에 대해서 프로세스는 종료하게 된다.
2) 시그널을 무시한다. 단, SIGKLL과 SIGSTOP은 무시될 수 없다.
3) 프로그래머가 지정한 함수를 호출한다.

-Signal Handler
: 프로그래머는 프로세스가 특정 시그널을 포착했을 때 수행해야 할 별도의 함수를 지정 할 수 있는데 이를 일컫는다.
실행중인 프로세스가 시그널을 포착하게 되면 현재 진행중인 작업의 실행을 잠시 중단하고 시그널 핸들러를 실행하게 된다.
시그널 핸들러의 실행이 끝나면 아까 중단했던 작업을 이어서 실행하게 된다.

*파이프 ( | )
예) ls -la | wc -l
: 두 개의 명령이 파이프로 연결되면 앞에 놓인 명령이 표준출력하는 내용을 뒤에 놓인 명령어 표준입력으로 받아들인다.
이때 중간에서 다리 역할을 하는 것을 파이프라 한다.

:파이프는 사용자가 파이프로 연결한 명령 라인을 실행하면 일시적으로 만들어졌다가 작업이 끝나면 삭제되는 임시파일이다.

*Named Pipe ( FIFO )
:파일로 존재하면서 두개 이상의 프로세스가 이를 통해 메시지를 주고 받을 수 있도록 해준다.
한쪽의 프로세스가 네임드 파이프를 개방하여 쓰기를 수행하고 다른 쪽의 프로세스는 네임드 프이프를 개방하여 읽기를 수행하는 식.

*소켓
: 커널의 도움이나 파일 시스템을 사용하여 메시지를 주고 받는 것이 아니라 네트워크 장치를 통해 메시지를 주고 받는다.
대부분 서로 다른 시스템에 존재하는 프로세스 간의 통신을 위해서 선택됨.

-소켓은 연결형 모델과 비연결형 모델이 있다.
연결형 모델

'Server > Linux' 카테고리의 다른 글

[Linux] ssh 접속  (0) 2017.07.10
[Linux] waitpid예제-WNOGANG옵션  (0) 2017.07.10
[Linux] waitpid 예제  (0) 2017.07.10
[Linux] 프로세스  (0) 2017.07.10
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함