본문 바로가기

KNU_study/운영체제

운영체제(6-2) IPC part

728x90
반응형

 
 

1. interprocess communication(IPC) and Synchronization

 
Process Synchronization -> Semaphores(UNIX)
Thread Synchronization -> mutexes, Semaphores
 
<IPC>
프로세스 간 통신, 프로세스들끼리 서로 데이터를 주고받는 행위 또는 그에 대한 방법을 의미한다. 
프로세스는 완전히 독립된 실행객체다. 서로 영향을 받지 않는다는 장점도 있지만, 서로 간의 통신이 어렵다. 
-> 커널 영역에서 IPC라는 내부 프로세스간 통신을 제공, 프로세스끼리 IPC설비를 이용하여 통신 가능하다. 
여러 프로세스가 동일한 "프로그램"의 일부인 경우가 많다. -> 그들을 조정할 필요가 있다 !!
 
<IPC의 종류>
Shared memory : 프로세스끼리 특정 공통의 메모리 영역을 공유하며 상호간 통신한다. 데이터 자체를 공유
-> Performance가 좋다. 공유 메모리를 한 번 설정하면, protection domain을 교차하지 않고 엑세스한다. 
-> Bad : back 뒤에서 상황이 변하므로 오류가 발생하기 쉽다. 
Message passing : 메시지 큐(Queue)를 사용, 송신 프로세스는 enqueue, 수신 프로세스는 dequeue로 통신.
-> 모든 공유가 명시적이므로 오류 발생 가능성이 줄어든다. 
-> Bad : Overhead 발생(when protection domain 교차 사이에 data copying), context switches 발생.
-> 파이프 : 쉘에서 사용하는 파이프와 동일하다. 
-> 소켓(TCP/ IP) : 로컬에서도 통신이 가능, 원격에서도 통신이 가능하다. 

   

(a) Shared memory, (b) Message passing

 
-> 이러한 IPC 통신에서 프로세스 간 데이터를 동기화하고 보호하기 위해
    세마포어(Semaphore)와 뮤텍스(Mutex)를 사용한다. 
    When 공유된 자원에 (한 번에 하나의) 프로세스만 접근시킬 때 사용한다. 
 
<IPC의 예시 - Signals>
시그널(Signal) : 프로세스에게 전달되는 소프트웨어 인터럽트(interrupt) 신호
소프트웨어 인터럽트를 수신한 프로세스는 신호의 종류에 따라 등록한 핸들러(Handler)를 수행하거나 무시.
또는 운영체제 제어에 의한 프로세스 종료 등이 수행된다. 
-> 매우 짧은 메세지를 가진다. 또한 fixed set of available signals를 가진다. kill은 9, segmentation fault는 11
 
 

2. Pipe와 Socket

 
<Pipes>
두 프로세스가 통신할 수 있는 통로 역할을 수행한다. 
(1) Ordinary pipes
   producer - consumer style이다. (write-end에 생산자, read-end에 소비자)
    파이프를 생성한 프로세스 외부에서는 액세스할 수 없다. (단방향이다.)
    부모 프로세스는 파이프를 만들고, 이를 사용하여 자식 프로세스와 통신한다. 

(2) Named pipes
    부모-자녀에 관계 없이 액세스할 수 있다. (양방향이다.)
    여러 프로세스에서 communication에 명명된 파이프를 사용할 수 있다. 
    UNIX 및 Windows 시스템 모두에서 제공된다. 
 
<Socket>
통신을 위한 endpoint(엔드 포인트)로 정의된다. 
통신은 한 쌍의 소켓 사이에서 이루어진다. 
IPC, ITC : 다중 프로세스 및 스레드 기반 통신 체계이다. 

 
 

3. Example code(C)

 
예시 자료 ppt 참고하기
 
 
 
 
 
 
 

728x90
반응형

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

운영체제(8) Main memory  (1) 2023.06.13
운영체제(7) Deadlock  (0) 2023.06.13
운영체제(6) Synchronization Tools & Examples  (0) 2023.06.12
운영체제(5) CPU Scheduling  (1) 2023.05.18
운영체제(4) Thread  (0) 2023.05.18