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) : 로컬에서도 통신이 가능, 원격에서도 통신이 가능하다.
-> 이러한 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 참고하기
'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 |