그럼 이제 IPC에 대한 소개부터 시작해서 왜 IPC가 필요한지 이해해 보겠습니다.
따라서 IPC는 동일한 컴퓨터가 아닌 동일한 컴퓨터에서 실행되는 두
개 이상의 프로세스가 서로 개인 데이터를 교환하는 메커니즘입니다.
따라서 서로 다른 컴퓨터에서 실행되는 프로세스 간의 통신은 IPC라고 하지 않습니다.
그러나 실제로 네트워크의 서로 다른 물리적 컴퓨터에서 실행되는 프로세스
간의 통신을 수행하거나 구현하는 방법에 관한 섹션을 다룰 것입니다.
따라서 IPC를 통한 과정에서는 동일한 컴퓨터에서 실
행되는 프로세스 간의 프로세스 간 통신을 의미합니다.
다른 컴퓨터에서 실행되는 프로세스 간의 IPC를 명시적으로 언급하지 않는 한.
같은 컴퓨터에서 실행되는 프로세스는 특정 기능을 구현하
기 위해 서로 데이터를 교환해야 하는 경우가 많습니다.
따라서 Linux 운영 체제에서는 몇 가지 메커니즘을 제공합니다.
프로세스 간 통신을 구현할 수 있는 메커니즘은 하
나가 아니라 여러 가지가 있다는 점에 유의하세요.
따라서 Linux OS는 사용자 공간 프로세스가 서로
통신을 수행할 수 있는 몇 가지 메커니즘을 제공합니다.
각 메커니즘에는 고유한 장단점이 있습니다.
따라서 이 과정에서는 프로세스 간에 IPC를 구현하는 데
사용되는 모든 메커니즘에 대해 자세히 알아볼 것입니다.
그리고 각 기술의 장단점을 분석해 보겠습니다.
따라서 이 과정에서는 Linux 운영 체제에서 IPC를 수행하는 다양한 방법이 무엇인지 살펴봅니다.
IPC 기술은 Windows, Mac OS 등과 같은
다른 플랫폼에도 잘 매핑되며 개념적으로도 동일합니다.
따라서 이 과정에서 배우게 될 IPC 기술은 Windows 플랫폼이
나 Mac OS 플랫폼 또는 다른 플랫폼에서 일하는 경우와 같이 다
른 플랫폼에서 일하는 경우에도 똑같이 가치 있고 적용 가능합니다.
따라서 이 강좌가 Linux에만 해당한다고 생각하지 마세요.
하지만 이 과정의 모든 코딩 과제와 프로젝트에
는 Linux 운영 체제를 사용할 것입니다.
하지만 이 과정을 통해 얻을 수 있는 교훈이나 지식
은 다른 플랫폼에도 동일하게 적용할 수 있습니다.
또한 내일 여러분이 파이썬 프로그래머가 되든, 자바 프로
그래머가 되든, C샤프 프로그래머가 되든 상관없습니다.
또한 구현할 IPC 기법이 있으며 개념적으로 이러한 IPC 기
법은 이 강좌에서 배우게 될 IPC 기법과 완전히 동일합니다.
따라서 이 과정을 자세히 살펴보고 이 과정을 진행하기 전에 컴퓨터
아키텍처에 대한 높은 수준의 개요를 공부하는 것이 중요합니다.
이 아름다운 다이어그램을 보면 컴퓨터 아키텍처를 크게
세 가지 계층으로 나눌 수 있음을 알 수 있습니다.
가장 아래 계층은 하드웨어 계층, 중간 계층은 운영 체제 또는 커널 공간
, 가장 위쪽 계층은 애플리케이션 계층으로 사용자 공간이라고도 합니다.
이제 이러한 각 계층에 대해 하나씩 살펴보겠습니다.
따라서 이름에서 알 수 있듯이 가장 아래 계층은 하드웨어 계층이며, 컴퓨터 시
스템의 일부이거나 연결된 모든 하드웨어 구성 요소는 하드웨어 계층에 속합니다.
따라서 모든 컴퓨터 시스템 내부에 내장되어 있는 가장 일반
적인 하드웨어 구성 요소는 CPU 칩과 메모리 칩입니다.
그 외에도 USB 포트, 직렬 포트, 키보드 마우스 등 컴퓨터
시스템 내부에 내장되어 있지 않더라도 주변 포트를 통해 컴퓨
터 시스템에 연결할 수 있는 하드웨어 장치가 많이 있습니다.
컴퓨터 시스템의 메모리는 일반적으로 컴퓨터 시스템과 함께 제공되는 램
칩으로 구성되며, 디스크와 같은 보조 스토리지로 구성되기도 합니다.
물론 이제 컴퓨터 시스템에는 8개의 CPU 칩 또는 4개의 CPU 칩이 제공됩니다.
따라서 컴퓨터 시스템의 하드웨어 계층에서 매우 중요한
부분인 CPU 칩이 형성되고, 컴퓨터 시스템의 다음 계
층은 실제로 커널 계층 또는 커널 공간이라고도 합니다.
이름에서 알 수 있듯이 운영 체제는 이 계층에서 실행됩니다.
따라서 운영 체제는 실제로 하드웨어 계층의 최상위에서 작동한다는 점을 기억하세요.
운영 체제는 커널 공간이라는 별도의 계층에서 실행되며,
컴퓨터 시스템의 최상위 계층은 애플리케이션 계층입니다.
그리고 지금까지 컴퓨터 시스템에서 실행한 모든 애플리케이
션 또는 컴퓨터 시스템에 설치한 모든 소프트웨어는 실제로
애플리케이션 계층에서 실행 중인 애플리케이션입니다.
따라서 Chrome과 같은 모든 브라우저, Microsoft Offi
ce, PDF Reader, Adobe Photoshop 등 컴퓨터
시스템에 설치하여 실행 중인 모든 소프트웨어가 해당될 수 있습니다.
따라서 이러한 모든 소프트웨어는 애플리케이션으로 분류됩니다.
이제 컴퓨터 시스템의 여러 계층이 실제로 서로
통신하는 방식에 대해 간략하게 살펴보겠습니다.
그렇다면 운영 체제가 하드웨어 계층에 있는 하드
웨어 구성 요소와 어떻게 상호 작용한다고 생각하
시나요? 정답은 바로 디바이스 드라이버입니다.
따라서 장치 드라이버는 운영 체제의 일부인 특별한 소프트웨어입니다.
그리고 하드웨어와 통신하는 방법에 대해 운영 체제를 실제로 교
육하거나 실제로 가르치는 것은 바로 이 장치 드라이버입니다.
모든 하드웨어에는 관련 장치 드라이버가 있어야 하죠? 운영 체제
에 아무 하드웨어나 무작위로 연결하고 운영 체제가 하드웨어의 기
능을 이해하고, 운영 체제에 연결한 새 장치가 마우스가 아니라
프린터라는 것을 어떻게 알 수 있기를 기대할 수는 없습니다.
따라서 장치 드라이버는 운영 체제를 실제로 교육하고 운영 체제가 주어진
하드웨어 구성 요소와 상호 작용하는 방법을 가르치는 프로그램입니다.
디바이스 드라이버는 하드웨어에 따라 다르다는 점을 기억하세요.
하드웨어에 따라 다릅니다.
다른 장치 드라이버 프로그램을 작성해야 합니다.
다음으로 시스템 프로그래밍 영역에서는 애플리케이션이 운
영 체제와 상호 작용해야 하는 경우가 매우 흔합니다.
따라서 Linux 운영 체제 또는 다른 운영 체제는 사용자 공간에서 실행되는 애플리케
이션이 커널 공간에서 실행되는 운영 체제와 상호 작용하는 다양한 방법을 제공합니다.
이러한 채널의 예로는 넷링크 소켓이 있습니다.
ioctls일 수 있습니다.
디바이스 파일일 수도 있고 시스템 호출일 수도 있습니다.
따라서 애플리케이션은 이러한 유형의 통신 채
널을 사용하여 운영 체제와 상호 작용합니다.
물론 고급 Linux 시스템 프로그래밍에 빠져들면 이러한
통신 채널이 무엇이며 어떻게 작동하는지 알게 될 것입니다.
예를 들어 C 프로그램을 작성해 본 적이 있다면 mallo
c과 무료 시스템 호출을 사용해 본 적이 있을 것입니다.
따라서 이러한 malloc과 free는 실제로 Linux 시스템 호출이며, 애플리케이션은
이러한 시스템 호출을 사용하여 운영 체제에 메모리를 할당하거나 할당 해제하도록 요청합니다.
따라서 애플리케이션이 실제로 운영 체제와 상호 작용하는
데 사용하는 두 가지 예는 malloc과 free입니다.
이제 마지막 통신 유형은 사용자 공간에서
실행되는 두 애플리케이션 간의 통신입니다.
맞습니다.
따라서 시스템 프로그래밍 영역에서는 소프트웨어를 작성하거나 구축해야 하는 경우가 매우 흔합니다.
사용자 공간에서 실행되는 두 애플리케이션 간의 통신을 수행해야 합니다.
따라서 사용자 공간에서 실행되는 두 애플리케이션 간의 통신을 IPC라고 합니다.
이것이 바로 프로세스 간 커뮤니케이션입니다.
이것이 바로 저희 강좌의 핵심입니다.
이제 이 과정에서 논의할 프로세스 간 커뮤니케이
션 기법에는 어떤 것이 있는지 살펴 보겠습니다.
따라서 이 과정은 컴퓨터 아키텍처에 대한 개괄적인 개요였으며, 이 과정의
다음 섹션을 진행하기 전에 이 컴퓨터 아키텍처를 염두에 두어야 합니다.
여러분, 이제부터 시작입니다.
이제 이 과정에서 다룰 모든 IPC 기술이 무엇인지 알아보겠습니다.
따라서 동일한 시스템에서 실행되는 두 프로세스 간에 프로
세스 간 통신을 수행하는 방법에는 여러 가지가 있습니다.
Linux 운영 체제는 다음과 같은 IPC 기술을 제공합니다.
이번 강좌에서는 다양한 IPC 기법을 살펴
보고 각각의 장단점을 분석해 보겠습니다.
Having.
각 IPC 기술의 장단점을 알면 애플리케이션을 더 잘 설계하기 위
해 선택할 가장 적합한 IPC 기술을 결정하는 데 도움이 됩니다.
지원서의 요구 사항에 따라 다르며 기술 면접에서 IPC에 대한 몇 가지 질문이 나올 것으로 예상됩니다.
따라서 IPC 기술은 기술 인터뷰의 관점에서 볼 때 매우 중요한 논의 주제입니다.
따라서 특히 시스템 프로그래밍 영역에서 일하는 제품 기반 회사에 입사한
다면 프로세스 간 커뮤니케이션 기술을 바로 활용할 수 있어야 합니다.
Linux 운영 체제에서 지원하는 다양한 IPC 기법
에 대해 설명하고 각각의 장단점은 무엇인지 설명하라는
질문이 나옵니다. 각 IPC 기술의 사용 사례는 무
엇이며 어떤 시나리오에서 한 IPC 기술을 다른 기술
보다 선호하시나요? 따라서 Linux 운영 체제에서
지원하는 프로세스 간 통신 기술을 철저히 숙지하세요.
그렇다면 이 강좌에서 다룰 IPC 기술에는 어떤 것이 있을까요? 이
강좌에서 다룰 첫 번째 IPC 기술은 Unix 도메인 소켓입니다.
유닉스 도메인 소켓은 이 IPC 기술이 소켓 기반 통신을 기반으로 한다는 점에서 특별합니다.
따라서 소켓을 사용하여 동일한 컴퓨터에서 실행되는 프로세스 간에
프로세스 간 통신을 수행하는 방법을 살펴보고 살펴볼 것입니다.
두 번째 IPC 기술은 네트워크 기반 소켓을 사용하는 것입니다.
이제 실제로 다른 물리적 시스템에서 실행 중인 프로세스 간에 데이터
교환을 수행해야 할 때마다 이러한 네트워크 소켓을 사용해야 합니다.
물론 네트워크 어딘가에서 실행 중인 컴퓨터 간에 데이터 교환을 수행하기 때문
에 이러한 네트워크 소켓은 네트워킹에 대한 배경 지식이 필요하며, 따라서 네
트워크 소켓은 매우 광범위한 논의 영역이므로 이 강좌에서는 다루지 않습니다.
그래서 저는 네트워크 개념과 처음부터 프로그래밍이라는 다른
강좌에서 네트워크 소켓에 대해 매우 자세히 설명했습니다.
네트워크와 네트워크 소켓에 대해 실제로 배우고 싶다면 해당 강좌를 참조하세요.
세 번째 IPC 기술은 메시지 대기열입니다.
이것은 동일한 시스템에서 실행 중인 프로세스
간의 대기열 기반 프로세스 간 통신입니다.
메시지 큐가 어떻게 작업을 단순화하고 프로세스 간의
큐 기반 커뮤니케이션을 지원하는지 살펴볼 것입니다.
네 번째 기술은 공유 메모리 접근 방식입니다.
이 기술에는 동일한 컴퓨터에서 실행 중인 여러 프로세스
에서 실제로 액세스할 수 있는 메모리 청크가 있습니다.
따라서 한 프로세스가 이 공유 메모리의 콘텐츠를 업데이트하면 실제로 이 공유 메모
리를 모니터링하는 다른 모든 프로세스에서 업데이트 내용을 즉시 볼 수 있습니다.
따라서 공유 메모리 접근 방식을 사용하여 프로세스 간
통신을 구현하는 방법에 대해 자세히 살펴보겠습니다.
IPC의 다섯 번째 기술은 실제로 파이프입니다.
이 IPC 기법은 다소 구식이며 업계에서는 사용하지
않으므로 이 과정에서는 이 기법을 다루지 않습니다.
여섯 번째 프로세스 간 통신을 수행하는 기술은 이 강좌
에서 꽤 자세히 다루는 신호의 도움을 받는 것입니다.
따라서 이 강좌에서는 메시지 대기열, 공유 메모리 및 신호
에 대해 살펴보고, 유닉스 도메인 소켓을 살펴볼 것입니다.
이러한 각 기술을 구현의 관점, 디자인
, 토론의 관점에서 논의해 보겠습니다.
이러한 각 기술의 장단점을 분석해 보겠습니다.
어떤 시나리오에서? 어떤 I
PC 기법이 더 적합할까요?