여러 프로세스를 만들어서 동시 실행을 위하여 프로세스간 통신이 필요하다. 하지만 프로세스들이 서로의 공간을 쉽게 접근하면 데이터/코드가 변경될 수 있으므로 굉장히 위험하다. 그래서 프로세스간 통신을 위한 기법이 나오게된다.
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
: 네트워크 통신을 위한 기술, 클라이언트와 서버 등 두 개의 다른 컴퓨터간의 네트워크 기반 통신을 위한 기술
하나의 컴퓨터 안에서 두 개의 프로레스간에 통신 기법으로도 사용 가능하다.
'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 |