본문 바로가기
Computer Science/운영체제

09. 프로세스와 IPC

by _S0_H2_ 2021. 8. 1.
728x90
반응형

여러 프로세스를 만들어서 동시 실행을 위하여 프로세스간 통신이 필요하다. 하지만 프로세스들이 서로의 공간을 쉽게 접근하면 데이터/코드가 변경될 수 있으므로 굉장히 위험하다. 그래서 프로세스간 통신을 위한 기법이 나오게된다.

ex ) 웹서버

ex ) 리눅스 : 리눅스의 프로세스간 공간은 완전히 분리되어 있다. 사용자 공간은 절대 접근할 수 없지만 커널 공간은 공유한다. 프로세스간 통신을 위한 특별한 기법이 필요한데 이때 IPC기법 등의 기법이 필요하다.




1. IPC ?

= InterProcess Communication

1 ) Pipe

: 단방향 통신, fork()로 자식 프로세스를 만들었을 때 부모와 자식간의 통신을 한다

fork() 라는 시스템콜은 호출하면 현재 프로세스(부모)를 똑같이 복사한 새로운(자식) 프로세스를 호출한다. 부모와 자식 프로세스를 구분하기위하여 process ID는 다르게 생성한다. 자식 프로세스는 0!

2 ) Message Queue

: FIFO 정책으로 데이터를 전송한다.

양방향으로 통신이 가능하다.

3 ) Shared Memory

: kernel space에 메모리 공간을 만들고, 해당 공간을 변수처럼 쓰는 방식이다. 공유메모리 key를 가지며 여러 프로세스가 접근 가능하다.

4 ) Signal

: 유닉스의 전통적 기법으로 커널 또는 프로세스에서 다른 프로세스에 어떤 이벤트가 발생되었는지를 알려주는 기법이다. 프로세스 관련 코드에 관련 시그널 핸들러를 등록해서, 해당 시그널 처리를 실행한다.

  • 주요 시그널 : 기본동작
    • 시그널 무시
    • 시그널 블록
    • 등록된 시그널 핸들러로 특정 동작 수행
    • 등록된 시그널 핸들러가 없으면 커널에서 기본동작 수행
SIGKILL : 프로세스 종료
SIGALARM : 알람 발생
SIGSTP : 프로세스 중지
SIGCONT : 멈춰진 프로세스 실행
SIGINT : 프로세스에 인터럽트 보내서 프로세스 종료
SIGSEGV : 프로세스가 다른 메모리 영역 침범

PCB에 해당 프로세스가 블록/처리해야하는 시그널 관련 정보를 저장

5 ) Socket

: 네트워크 통신을 위한 기술, 클라이언트와 서버 등 두 개의 다른 컴퓨터간의 네트워크 기반 통신을 위한 기술
하나의 컴퓨터 안에서 두 개의 프로레스간에 통신 기법으로도 사용 가능하다.

 

728x90
반응형

'Computer Science > 운영체제' 카테고리의 다른 글

11. 가상메모리  (0) 2022.03.04
10.Thread  (0) 2021.12.14
08. 프로세스와 Context Switching  (0) 2021.08.01
07. 프로세스 구조  (0) 2021.07.31
06. 인터럽트  (0) 2021.07.31