CS/운영체제
프로세스 간 커뮤니케이션
:_:
2022. 2. 24. 11:12
InterProcess Communication (IPC) : 프로세스 커뮤니케이션 기법
프로세스간 커뮤니케이션은 원칙적으로 금지되어있다.
→ 프로세스의 코드가 다른 프로세스의 코드나 데이터를 바꿀 수 있는 방법 x
→ 프로세스는 다른 프로세스 공간에 접근할 수 없다.
그래서 프로세스 간에 커뮤니케이션을 해야될 필요가 있어 IPC 기법을 제공하는 것이다.
→ 동시에 실행된 결과들을 특정 프로세스가 모아서 정리해야 되고 각각의 프로세스간 통신 필요한 경우 있다.
ex. fork () 시스템 콜
→ fork 함수로 프로세스 자신을 복사해서 새로운 프로세스로 만들 수 있다.
기본적으로 프로세스 생성시, 리눅스(유닉스 계열)에서는 최초 프로세스를 제외하고는, fork() 시스템콜을 사용해 부모 프로세스를 복사하여 자식 프로세스를 생성한다.
→ 프로세스를 fork() 해서 여러 프로세스를 동시에 실행시킬 수 있다.
CPU가 한 개일때만 생각하지만, 최근에는 CPU 안에 코어가 8개 되는 경우도 많고 각 프로세스를 각 코어에 동시 실행 가능(병렬 처리)
파일을 사용한 커뮤니케이션
→ 프로세스간 저장매체는 공유가능하다.
(간단히 다른 프로세스에 전달할 내용을 파일에 쓰고, 다른 프로세스가 해당 파일을 읽으면 됨)
→ file 을 사용하면 실시간으로 직접 원하는 프로세스에 데이터 전달이 어렵다.
계속 실시간으로 읽고만 있을 수 없으므로.
실제 프로세스 : 리눅스 예
프로세스간 공간은 완전히 분리되어 있다.
커널 공간은 공유한다.
다양한 IPC 기법
정리
- 여러 프로세스 동시 실행을 통한 성능 개선, 복잡한 프로그램을 위해 프로세스간 통신 필요
- 프로세스간 공간이 완전 분리
- 프로세스간 통신을 위한 특별한 기법 필요 (IPC: Inter Process Conmunication)
- 대부분 IPC 기법은 결국 커널 공간을 활용하는 것임 → 이유 : 커널 공간은 공유하기 때문
제로베이스 컴퓨터 공학 전공자 따라잡기 강의 시청 후 정리한 내용입니다.
728x90