일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
31 |
- linked list
- 스케듈링
- 프로토콜 체계
- Process scheduling
- Operating System
- DS
- socket
- Queue
- IPC
- process
- 운영체제
- direct communication
- 자료구조
- tcp
- 스택
- 데이터구조
- interprocess communication
- 윤성우
- 열혈
- 프로세스
- OS
- indirect communication
- 링크드리스트
- 데이타구조
- C
- stack
- 큐
- System Structures
- operating
- Data Structure
- Today
- Total
미래와 연결될 첫걸음
Interprocess Communication(IPC) #3.4 본문
Process간의 소통(통신)을 살펴보기 이전에, 우선 왜 process간에 소통이 필요하게 되었는지에 대해 생각해보겠습니다.
OS에서 Processes가 동시에 실행될 때, processes들은 independent process와 cooperating processes로 나눌 수 있습니다.
즉, 다른 process의 영향을 전혀 받지 않는 process가 필요할 수도 있을 것이고, 다른 process와 영향을 주고 받으면서 data를 공유하는 process가 필요할 수도 있을 것입니다.
- Indenpent process : 다른 processes에게 영향을 줄 수 없고, 영향을 받지도 않는 process입니다. 그래서 data를 공유할 수 없습니다.
- Cooperatiog process : 다른 processes에게 영향을 줄 수 있고, 영향을 받는 process입니다. 그래서 data를 공유할 수 있습니다.
그렇다면, 언제 Cooperating process이 되는 상황이냐?
1. Information sharing : 여러 user들이 같은 정보(information)에 관심이 있을 때, 이 정보에 대해 동시에 접근 할 수 있게 해줘야 합니다.
2. Computation speedup : 계산을 빠르게 하려면, 혼자서 하는 것보다 여러 명이 나누어서 병렬적으로 계산하는 것이 빠를 것입니다.
multi와 같은 개념이죠. 이 때에도 일을 나누어주어야 하니 어떠한 정보에 접근할 수 있게 해줘야 합니다.
3. Modularity : 모듈성인데요. 만일, system이 하나의 큰 덩어리로 되어 있다면, 어느 한부분이 고장났을 때,
그 한부분 때문에 다른 부분을 사용하지 못하게 되겠죠? 그래서, 이 system을 여러 개의 processes와
thread로 나누어 놓습니다. 그러면, 한부분이 고장나더라도 그 부분만 고치면 되겠죠?
이 모듈성 때에도 data 공유가 필요할 것입니다.
4. Convenience : user가 동시에 여러 일을 할 수가 있습니다. 음악을 들으면서 편집을 하는 것처럼요.
이럴 때에도 Cooperating process가 필요합니다.
즉, Cooperating process가 필요한 상황들이 발생하게 되는데,
Cooperating process는 Interprocess Communication(IPC)를 통해 data와 information을 주고 받게 되는 것이죠.
이 IPC에는 일반적으로 크게 두 가지 메커니즘이 있습니다.
1. shared memory : data를 공유하는 공간이 따로 있어서 그 공간을 통해 communication을 합니다.
message passing보다 더 빠릅니다. 왜냐하면, message passing은 보통 system call을 통해 실행하는데 이 때, 시간이 더 소비되기 때문이죠. shared memory는 공유할 공간을 만드는 system call만 필요합니다. 또, 공유할 공간이 만들어지고 난 이후는 커널(kernel)의 도움이 필요하지 않습니다.
2. message passing : message를 보냄으로 communication을 합니다.
message passing은 더 적은 양의 data를 교환할 때 유용합니다(conflict가 없기 때문이죠). 또, distributed system에서 shared memory보다 더 쉽게 실행 할 수 있습니다.
* conflict : 어떤 한 resource에 대해 여러 접근이 발생하는 것.
다음에 Shared Memory와 Message Passing에 대해 더 자세히 다뤄보겠습니다.
'Infra > OS' 카테고리의 다른 글
#2.3 System Structures - System Calls (0) | 2022.01.12 |
---|---|
#2.1 System Structures - OS services (0) | 2022.01.10 |
Interprocess Communication(IPC) #3.4 Message-Passing 1 (0) | 2019.07.01 |
Interprocess Communication(IPC) #3.4 Shared Memory (0) | 2019.06.29 |
Operations on Processes #3.3 (0) | 2019.06.26 |