예시 답변
- IPC는 프로세스 간 통신으로써 독립된 프로세스를 커널영역을 통해 내부 프로세스간 통신을 저공하게 되고, 프로세스는 커널이 제공하는 ipc설비를 이용해 통신을 합니다.
- Ipc 종류엔 message passing과 Shared memory 방법이 있습니다. (추가 답변)
- 메시지 전달 방식은 커널을 통해 메시지를 전달하는 방식으로 자원이나 데이터를 주고받습니다.
- 커널을 이용하기 때문에 구현이 비교적 쉬우며 시스템 콜이 필요하고 이로 인해 오버헤드가 발생합니다.
- 공유 메모리 방식은 공유 영역을 구축하여 자원, 데이터를 주고 받습니다.
- 커널 의존도가 낮기 때문에 속도가 빠르고 통신이 자유롭습니다.
- IPC - 프로세스 간 통신
- 프로세스: 완전히 독립된 실행 객체 (다른 프로세스의 영향을 받지 않음)
- 독립되어 있어서 별도의 설비가 없이 서로 간에 통신이 어렵다는 문제가 있음.
- 커널 : 메모리에 상주하는 부분으로써, 운영체제의 핵심적인 부분을 의미.
- 운영체제 자체도 소프트 웨어이기 때문에 메모리에 올라가야 사용할 수 있음.
- 메모리 공간의 제약으로 많은 부분을 올리지 못하고 필수적인 부분을 상주하게 되는데, 이를 커널이라고 한다.
- 정보공유(Information Sharing) : 여러 사용자가 동일한 정보에 엑세스 할 필요가 있을 수 있음.
- 가속화(Computation Speed-up) : 특정 작업(task) 여러 개의 서브 작업으로 쪼개어 프로세스의 병렬성을 키움으로써 처리 속도를 높일 수 있음.
- 모듈화(Modularity) : 특정한 시스템 기능을 별도의 프로세스(스레드)로 구분하여 모듈화된 시스템을 구성할 수 있는데, 이 때 모듈간의 통신이 필요함.
- 편의성(Convenience) : 다수의 사용자가 동시에 여러가지 작업을 수행 할 수 있음.
- 메시지 전달과 공유 메모리
- 커널을 통해 메시지를 전달하는 방식으로 자원이나 데이터를 주고 받음
- 커널을 이용하기 때문에 구현이 비교적 쉬움
- 시스템 콜이 필요하며 이로 인해 오버헤드 발생
- 오버헤드 : 어떤 처리를 하기 위해 들어가는 간접적인 처리시간 메모리.
- Pipe, Signal, Message, Queueing, Socket 등
파이프(Pipe & Named Pipe)
- 'Pipe' 라고 불리는 선입선출 형태로 구성된 메모리를 여러 프로세스가 공유하여 통신을 수행함.
- 하나의 프로세스가 파이프를 통해 다른 프로세스를 직접 전달하며 데이터는 한 쪽 방향으로만 이동함.
- 하나의 프로세스가 'Pipe'를 이용중이라면 다른 프로세스는 접근할 수 없다.
시그널(Signal)
- 프로세스 ID를 통해 특정 프로세스에 메시지를 전달하는 방식
메시지 큐잉(Message Queueing)
- 메시지가 발생하면 고정 크기의 메시지를 연결리스트를 통해 프로세스 간 통신 수행
- 메시지 단위의 통신이며 메시지 큐 ID를 통해 통신
소켓(Socket)
- 네트워크 상에서 프로세스 간에 통신하는 방식
- 로컬 뿐 아니라 원격 통신도 가능
- 공유 메모리 영역을 구축하고 공유 영역을 통해 자원이나 데이터를 주고 받음
- 커널 의존도가 낮기 때문에 속도가 빠르고 통신이 자유로움
- 데이터 자체를 공유하도록 지원하며, 한 프로세스에서 변경한 메모리 공간의 내용을 다른 프로세스에서 접근할 수 있다. 공유 메모리는 커널에서 관리된다.
- 자원과 데이터를 공유하기 때문에 동기화 이슈 발생
- Semaphore 등
세마포어(Semaphore)
추후 작성..!!!