일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- JPA
- 파이썬
- Algorithm
- 운영체제
- spring webflux
- IT
- Heap
- design pattern
- Java
- Kafka
- MSA
- 컴퓨터구조
- C
- 백준
- MySQL
- 디자인 패턴
- redis
- 알고리즘
- 자료구조
- Galera Cluster
- OS
- 자바
- c언어
- Spring
- mongoDB
- Proxy
- react
- JavaScript
- 네트워크
- Data Structure
Archives
- Today
- Total
시냅스
TIL : OS 프로세스 간 통신 본문
프로세스 간 통신 (Interprocess Communication)
- 독립적 : 프로세스 간 데이터 통신 X
- 협력적
- 프로세스 간 영향을 주거나 받음
- 프로세스 간 통신 기법 IPC
공유 메모리 시스템에서의 프로세스 간 통신 (IPC in Shared-Memoty Systems)
- 공유 메모리 영역을 통해 통신한다.
- 공유 메모리 공간을 사용하기 위해선 자신의 주소 공간에 포함시켜야 한다.
- 일반적으로 운영체제는 한 프로세스가 다른 프로세스의 메모리에 접근하는 것을 금지해야하지만 이 제약 조건을 제거한다.
Producer - Consumer Problem
- 생사자는 정보를 제공하고 소비자는 소비하는 모델
- Compler(생산) -> assembly code -> Assembler(소비)
- Browser(소비) <-> Web server(생산)
Shared Memoty 를 이용한 Solution
- 생산자와 소비자를 동시에 실행한다
- 생산자가 buffer 에 채우고 소비자가 소비한다.
- 생샌자와 소비자가 틍정영역에 메모리를 공유해야 한다.
위의 문제점
- 특정영역의 메모리만 쓰려면 application 프로그래머가 직접 관리해야 한다
메세지 전달 시스템에서의 프로세스 간 통신 (IPC in Message-Passing Systems)
- 동일한 주소 공간을 공유하지 않고도 OS가 메세지를 주고 받는 프로세스 들에게 수단을 제공해 줌
- Send (API)
- Reveice (API)
- 통신 연결이 설정되어 있어야 한다.
- 직접 또는 간접 통신 (direct or indirect)
- direct: 하나의 링크, 프로세스 쌍들의 연결이 자동으로 구축된다, 받는 사람과 주는 사람이 명시적이다.
- indirect
- mailbox 또는 port로 송신된다.
- P, Q가 같은 받스를 쓸 때에만 링크가 생긴다.
- 통신하고 있는 각 프로세스 사이에는 다수의 서로 다른 연결이 존재할 수 있고 각 연결은 하나의 메일박스에 대응된다.
- 동기식 또는 비동기식 통신 ( synchronous or asynchronous)
- Synchronization
- 봉쇄형(blocking) 보내기 : 송신하는 프로세스는 메세지가 수신 프로세스 또는 메일박스에 의해 수신될 때까지 봉쇄된다.
- 봉쇄형(blocking) 받기 : 메세지가 이용 가능할 때까지 수신 프로세스가 봉쇄된다.
- 필자 각주: 영화를 다 다운로드 받아야 확인 가능
- Asynchronous
- 비봉쇄형(nonblocking) 보내기 : 송신하는 프로세스가 메세지를 보내고 작업을 재시작한다.
- 비봉쇄형(nonblocking) 받기 : 송신하는 프로세스가 유요한 메세지 또는 널을 받는다.
- 필자 각주: 약간 유튜브 처럼 동영상 로딩하면서 시청하는 거
- Synchronization
- 자동 또는 명시적 버퍼링 : 프로세스들에 의해 교환되는 메세지는 임시 큐에 들어가있다. 이런 큐는 3가지 방식이 있다.
- 무용량 : 큐의 최대 길이가 0으로, 링크 안에 대기 메세지를 가질 수 없다. 송신자는 수신자가 메세지를 수신할 때 까지 기다려야 한다.
- 유한 용량
- 큐는 유한한 길이 n을 가진다. 즉, 최대 n 개의 메세지를 안에 들여 놓는다. 큐가 가득차지 않았다면 메세지는 큐에 놓이며 송신자는 대기 하지 않고 계속 실행한다. 링크가 만원이면 송신자는 봉쇄된다.
- 무한 용량
- 큐는 잠재적으로 무한한 길이를 가진다. 따라서 메세지들이 얼마든지 큐 안에서 대기할 수 있다. 송신자는 절대 봉쇄되지 않는다.
- 직접 또는 간접 통신 (direct or indirect)
'운영체제' 카테고리의 다른 글
멀티 쓰레딩 Thread and Concurrency (0) | 2022.04.12 |
---|---|
TIL : OS Thread (0) | 2021.11.19 |
TIL : OS IPC 시스템의 사례 (0) | 2021.11.16 |
TIL : OS processes (0) | 2021.11.12 |
TIL : OS Structure (0) | 2021.11.12 |
Comments