안녕 친구들! 오늘은 IPC가 무엇이고 왜 하는 지 설명해줄거야. IPC는 Interprocess Communication을 의미해. 다시 말해, process 간 통신(이하 IPC)을 말하지. processA가 있고 processB가 있다면 서로 데이터를 어떻게 주고 받을까? 궁금하지 않아? 함께 공부해보자.
그 전에 운영체제에서 프로세스가 뭔지 다들 알지? 좋았어! 그래도 한 번 간단하게 정리하고 넘어가자! 프로세스는 (컴퓨터공학에서) 일의 단위를 의미해. 자세한 건, 이전 글을 참고하자.
IPC의 목적은 Cooperating(협력)하기 위함이야. Cooperating을 할 수 있도록 하는 환경을 제공하는 이유가 몇 가지 있는데 같이 살펴보자.
- Information sharing(정보 공유) : 몇몇의 사용자들이 같은 정보를 이용한다고 해보자. 우리는 그들이 그런 정보들에 concurrent한 접근을 할 수 있도록 환경을 제공해야해.
- Computation speedup : Task를 빨리 수행하기 위해서 여러 subtask들로 나누게 되면 우리는 좀 더 수월하게 task를 마칠 수 있어.
- Modularity : 우리는 시스템을 모듈화하여 건설하길 원할 때도 있어. 예를 들면, 여러 개의 개별적인 프로세스나 스레드로 나누는 것 처럼 말이지.
- Convenience : 어떤 사용자는 동시에 많은 task들을 한 번에 처리하도록 원할 수 있어. 예를 들어, 음악을 들으면서 문서를 편집한다거나 하는 경우가 있어.
IPC를 하는 방법은 기본적으로 두 가지 모델이 있어.
(a) Message passing : Cooperating하는 process들 간에 메세지를 교환하는 수단으로서 발생하는 통신을 말해. 이 모델은 작은 양의 데이터를 교환하는 데 매우 유용해. 또한 shared memory model에 비해 구현하기도 쉬워. 하지만 shared memory model에 비해 느려. 왜냐하면 system call을 이용하여 구현하고 커널의 개입이 필요하거든. 한 마디로, time-consuming하지.
(b) Shared memory : Cooperating process에 의해서 공유되어지는 메모리 영역을 의미해. 여기에서 프로세스들은 데이터를 읽고 쓰면서 정보를 교환하지. Message passing에 비해 빨라. 왜냐하면 처음 shared-momory region을 차지할 때에만 System call이 한 번 필요하거든. 일단 메모리 영역을 차지하고 나면, 이후는 일반적인 메모리 접근과 같아.
표가 좀 더 읽기 편하니까 정리한다는 느낌으로 보자.
Message passing model | Shared memory model | |
속도 | 느림 | 빠름 |
시스템 콜 | 여러 번 | 한 번 |
데이터 양 | 적음 | 많음 |
어느 정도 이해가 되는 것 같아? 혹시 모르는 것 있으면 댓글이나 메일로 알려줘! 여기까지 이해가 된다면 다음으로 넘어가 보자. 잘했어!
이제 다음 글에서 Message passing model 에 대해 좀 더 자세하게 알아볼거야. 오늘도 수고했어!
참고한 웹사이트 목록입니다. 감사합니다.
[1] https://jhnyang.tistory.com/24
[2] https://www.w3schools.in/operating-system-tutorial/interprocess-communication-ipc/
'컴퓨터과학 > 운영체제(Operating System)' 카테고리의 다른 글
Interrupt와 polling의 차이 (0) | 2020.01.15 |
---|---|
IPC에서 message passing은 무엇일까? (0) | 2020.01.06 |