WEBVTT

1
00:05.210 --> 00:12.170
그럼 이제 IPC에 대한 소개부터 시작해서 왜 IPC가 필요한지 이해해
보겠습니다.

2
00:12.890 --> 00:20.840
따라서 IPC는 동일한 컴퓨터가 아닌 동일한 컴퓨터에서 실행되는 두

3
00:20.870 --> 00:23.870
개 이상의 프로세스가 서로 개인 데이터를 교환하는 메커니즘입니다.

4
00:25.040 --> 00:30.050
따라서 서로 다른 컴퓨터에서 실행되는 프로세스 간의 통신은 IPC라고 하지
않습니다.

5
00:30.260 --> 00:36.350
그러나 실제로 네트워크의 서로 다른 물리적 컴퓨터에서 실행되는 프로세스

6
00:36.350 --> 00:41.030
간의 통신을 수행하거나 구현하는 방법에 관한 섹션을 다룰 것입니다.

7
00:42.460 --> 00:48.700
따라서 IPC를 통한 과정에서는 동일한 컴퓨터에서 실

8
00:48.700 --> 00:49.960
행되는 프로세스 간의 프로세스 간 통신을 의미합니다.

9
00:50.500 --> 00:56.440
다른 컴퓨터에서 실행되는 프로세스 간의 IPC를 명시적으로 언급하지 않는
한.

10
00:57.880 --> 01:04.360
같은 컴퓨터에서 실행되는 프로세스는 특정 기능을 구현하

11
01:04.360 --> 01:05.740
기 위해 서로 데이터를 교환해야 하는 경우가 많습니다.

12
01:06.160 --> 01:09.630
따라서 Linux 운영 체제에서는 몇 가지 메커니즘을 제공합니다.

13
01:09.640 --> 01:16.420
프로세스 간 통신을 구현할 수 있는 메커니즘은 하

14
01:16.420 --> 01:17.740
나가 아니라 여러 가지가 있다는 점에 유의하세요.

15
01:18.520 --> 01:24.700
따라서 Linux OS는 사용자 공간 프로세스가 서로

16
01:24.700 --> 01:25.930
통신을 수행할 수 있는 몇 가지 메커니즘을 제공합니다.

17
01:25.960 --> 01:29.200
각 메커니즘에는 고유한 장단점이 있습니다.

18
01:29.410 --> 01:36.460
따라서 이 과정에서는 프로세스 간에 IPC를 구현하는 데

19
01:36.460 --> 01:38.800
사용되는 모든 메커니즘에 대해 자세히 알아볼 것입니다.

20
01:38.800 --> 01:43.720
그리고 각 기술의 장단점을 분석해 보겠습니다.

21
01:45.040 --> 01:51.550
따라서 이 과정에서는 Linux 운영 체제에서 IPC를 수행하는 다양한
방법이 무엇인지 살펴봅니다.

22
01:52.090 --> 01:58.690
IPC 기술은 Windows, Mac OS 등과 같은

23
01:58.690 --> 01:59.320
다른 플랫폼에도 잘 매핑되며 개념적으로도 동일합니다.

24
01:59.320 --> 02:06.190
따라서 이 과정에서 배우게 될 IPC 기술은 Windows 플랫폼이

25
02:06.190 --> 02:11.890
나 Mac OS 플랫폼 또는 다른 플랫폼에서 일하는 경우와 같이 다

26
02:11.890 --> 02:14.650
른 플랫폼에서 일하는 경우에도 똑같이 가치 있고 적용 가능합니다.

27
02:15.580 --> 02:19.070
따라서 이 강좌가 Linux에만 해당한다고 생각하지 마세요.

28
02:19.070 --> 02:25.550
하지만 이 과정의 모든 코딩 과제와 프로젝트에

29
02:25.550 --> 02:26.470
는 Linux 운영 체제를 사용할 것입니다.

30
02:26.480 --> 02:31.790
하지만 이 과정을 통해 얻을 수 있는 교훈이나 지식

31
02:31.790 --> 02:33.140
은 다른 플랫폼에도 동일하게 적용할 수 있습니다.

32
02:35.160 --> 02:42.300
또한 내일 여러분이 파이썬 프로그래머가 되든, 자바 프로

33
02:42.300 --> 02:43.800
그래머가 되든, C샤프 프로그래머가 되든 상관없습니다.

34
02:43.830 --> 02:50.820
또한 구현할 IPC 기법이 있으며 개념적으로 이러한 IPC 기

35
02:51.210 --> 02:54.900
법은 이 강좌에서 배우게 될 IPC 기법과 완전히 동일합니다.

36
03:00.600 --> 03:06.390
따라서 이 과정을 자세히 살펴보고 이 과정을 진행하기 전에 컴퓨터

37
03:06.390 --> 03:10.800
아키텍처에 대한 높은 수준의 개요를 공부하는 것이 중요합니다.

38
03:10.920 --> 03:17.760
이 아름다운 다이어그램을 보면 컴퓨터 아키텍처를 크게

39
03:17.760 --> 03:18.870
세 가지 계층으로 나눌 수 있음을 알 수 있습니다.

40
03:20.420 --> 03:25.730
가장 아래 계층은 하드웨어 계층, 중간 계층은 운영 체제 또는 커널 공간

41
03:25.730 --> 03:32.030
, 가장 위쪽 계층은 애플리케이션 계층으로 사용자 공간이라고도 합니다.

42
03:32.790 --> 03:36.450
이제 이러한 각 계층에 대해 하나씩 살펴보겠습니다.

43
03:36.870 --> 03:43.350
따라서 이름에서 알 수 있듯이 가장 아래 계층은 하드웨어 계층이며, 컴퓨터
시

44
03:43.350 --> 03:50.560
스템의 일부이거나 연결된 모든 하드웨어 구성 요소는 하드웨어 계층에
속합니다.

45
03:50.580 --> 03:57.330
따라서 모든 컴퓨터 시스템 내부에 내장되어 있는 가장 일반

46
03:57.330 --> 04:00.060
적인 하드웨어 구성 요소는 CPU 칩과 메모리 칩입니다.

47
04:00.060 --> 04:07.620
그 외에도 USB 포트, 직렬 포트, 키보드 마우스 등 컴퓨터

48
04:07.620 --> 04:14.070
시스템 내부에 내장되어 있지 않더라도 주변 포트를 통해 컴퓨

49
04:14.070 --> 04:17.160
터 시스템에 연결할 수 있는 하드웨어 장치가 많이 있습니다.

50
04:17.950 --> 04:24.250
컴퓨터 시스템의 메모리는 일반적으로 컴퓨터 시스템과 함께 제공되는 램

51
04:24.250 --> 04:29.920
칩으로 구성되며, 디스크와 같은 보조 스토리지로 구성되기도 합니다.

52
04:30.100 --> 04:35.890
물론 이제 컴퓨터 시스템에는 8개의 CPU 칩 또는 4개의 CPU 칩이
제공됩니다.

53
04:35.890 --> 04:42.970
따라서 컴퓨터 시스템의 하드웨어 계층에서 매우 중요한

54
04:43.630 --> 04:49.600
부분인 CPU 칩이 형성되고, 컴퓨터 시스템의 다음 계

55
04:49.600 --> 04:50.350
층은 실제로 커널 계층 또는 커널 공간이라고도 합니다.

56
04:50.350 --> 04:55.270
이름에서 알 수 있듯이 운영 체제는 이 계층에서 실행됩니다.

57
04:55.270 --> 05:00.640
따라서 운영 체제는 실제로 하드웨어 계층의 최상위에서 작동한다는 점을
기억하세요.

58
05:01.240 --> 05:08.320
운영 체제는 커널 공간이라는 별도의 계층에서 실행되며,

59
05:08.320 --> 05:10.090
컴퓨터 시스템의 최상위 계층은 애플리케이션 계층입니다.

60
05:10.090 --> 05:17.380
그리고 지금까지 컴퓨터 시스템에서 실행한 모든 애플리케이

61
05:17.380 --> 05:23.330
션 또는 컴퓨터 시스템에 설치한 모든 소프트웨어는 실제로

62
05:23.330 --> 05:23.870
애플리케이션 계층에서 실행 중인 애플리케이션입니다.

63
05:23.870 --> 05:30.800
따라서 Chrome과 같은 모든 브라우저, Microsoft Offi

64
05:30.800 --> 05:36.320
ce, PDF Reader, Adobe Photoshop 등 컴퓨터

65
05:36.320 --> 05:36.920
시스템에 설치하여 실행 중인 모든 소프트웨어가 해당될 수 있습니다.

66
05:36.920 --> 05:41.060
따라서 이러한 모든 소프트웨어는 애플리케이션으로 분류됩니다.

67
05:41.480 --> 05:48.440
이제 컴퓨터 시스템의 여러 계층이 실제로 서로

68
05:48.440 --> 05:50.270
통신하는 방식에 대해 간략하게 살펴보겠습니다.

69
05:50.960 --> 05:56.990
그렇다면 운영 체제가 하드웨어 계층에 있는 하드

70
05:56.990 --> 05:58.280
웨어 구성 요소와 어떻게 상호 작용한다고 생각하

71
06:00.200 --> 06:02.740
시나요? 정답은 바로 디바이스 드라이버입니다.

72
06:02.750 --> 06:09.800
따라서 장치 드라이버는 운영 체제의 일부인 특별한 소프트웨어입니다.

73
06:09.800 --> 06:16.670
그리고 하드웨어와 통신하는 방법에 대해 운영 체제를 실제로 교

74
06:16.670 --> 06:18.740
육하거나 실제로 가르치는 것은 바로 이 장치 드라이버입니다.

75
06:19.220 --> 06:24.520
모든 하드웨어에는 관련 장치 드라이버가 있어야 하죠? 운영 체제

76
06:24.530 --> 06:30.980
에 아무 하드웨어나 무작위로 연결하고 운영 체제가 하드웨어의 기

77
06:30.980 --> 06:36.410
능을 이해하고, 운영 체제에 연결한 새 장치가 마우스가 아니라

78
06:36.410 --> 06:41.000
프린터라는 것을 어떻게 알 수 있기를 기대할 수는 없습니다.

79
06:41.860 --> 06:48.550
따라서 장치 드라이버는 운영 체제를 실제로 교육하고 운영 체제가 주어진

80
06:48.550 --> 06:52.720
하드웨어 구성 요소와 상호 작용하는 방법을 가르치는 프로그램입니다.

81
06:53.230 --> 06:56.830
디바이스 드라이버는 하드웨어에 따라 다르다는 점을 기억하세요.

82
06:56.860 --> 06:59.230
하드웨어에 따라 다릅니다.

83
06:59.230 --> 07:02.290
다른 장치 드라이버 프로그램을 작성해야 합니다.

84
07:03.060 --> 07:09.570
다음으로 시스템 프로그래밍 영역에서는 애플리케이션이 운

85
07:09.570 --> 07:10.950
영 체제와 상호 작용해야 하는 경우가 매우 흔합니다.

86
07:11.520 --> 07:18.390
따라서 Linux 운영 체제 또는 다른 운영 체제는 사용자 공간에서 실행되는
애플리케

87
07:18.390 --> 07:24.690
이션이 커널 공간에서 실행되는 운영 체제와 상호 작용하는 다양한 방법을
제공합니다.

88
07:25.100 --> 07:28.710
이러한 채널의 예로는 넷링크 소켓이 있습니다.

89
07:28.740 --> 07:30.270
ioctls일 수 있습니다.

90
07:30.300 --> 07:33.900
디바이스 파일일 수도 있고 시스템 호출일 수도 있습니다.

91
07:34.050 --> 07:42.450
따라서 애플리케이션은 이러한 유형의 통신 채

92
07:42.450 --> 07:43.380
널을 사용하여 운영 체제와 상호 작용합니다.

93
07:44.250 --> 07:51.000
물론 고급 Linux 시스템 프로그래밍에 빠져들면 이러한

94
07:51.000 --> 07:54.810
통신 채널이 무엇이며 어떻게 작동하는지 알게 될 것입니다.

95
07:55.980 --> 08:02.700
예를 들어 C 프로그램을 작성해 본 적이 있다면 mallo

96
08:02.700 --> 08:04.400
c과 무료 시스템 호출을 사용해 본 적이 있을 것입니다.

97
08:04.410 --> 08:11.640
따라서 이러한 malloc과 free는 실제로 Linux 시스템 호출이며,
애플리케이션은

98
08:11.640 --> 08:16.770
이러한 시스템 호출을 사용하여 운영 체제에 메모리를 할당하거나 할당
해제하도록 요청합니다.

99
08:17.700 --> 08:25.050
따라서 애플리케이션이 실제로 운영 체제와 상호 작용하는

100
08:25.050 --> 08:25.740
데 사용하는 두 가지 예는 malloc과 free입니다.

101
08:26.800 --> 08:33.040
이제 마지막 통신 유형은 사용자 공간에서

102
08:33.040 --> 08:34.210
실행되는 두 애플리케이션 간의 통신입니다.

103
08:34.390 --> 08:35.140
맞습니다.

104
08:35.140 --> 08:42.520
따라서 시스템 프로그래밍 영역에서는 소프트웨어를 작성하거나 구축해야 하는
경우가 매우 흔합니다.

105
08:42.550 --> 08:49.300
사용자 공간에서 실행되는 두 애플리케이션 간의 통신을 수행해야 합니다.

106
08:50.340 --> 08:56.130
따라서 사용자 공간에서 실행되는 두 애플리케이션 간의 통신을 IPC라고
합니다.

107
08:56.160 --> 08:58.650
이것이 바로 프로세스 간 커뮤니케이션입니다.

108
08:58.650 --> 09:01.980
이것이 바로 저희 강좌의 핵심입니다.

109
09:01.980 --> 09:07.290
이제 이 과정에서 논의할 프로세스 간 커뮤니케이

110
09:07.290 --> 09:08.070
션 기법에는 어떤 것이 있는지 살펴 보겠습니다.

111
09:08.460 --> 09:15.030
따라서 이 과정은 컴퓨터 아키텍처에 대한 개괄적인 개요였으며, 이 과정의

112
09:15.030 --> 09:20.160
다음 섹션을 진행하기 전에 이 컴퓨터 아키텍처를 염두에 두어야 합니다.

113
09:25.240 --> 09:27.100
여러분, 이제부터 시작입니다.

114
09:27.100 --> 09:32.150
이제 이 과정에서 다룰 모든 IPC 기술이 무엇인지 알아보겠습니다.

115
09:32.170 --> 09:37.360
따라서 동일한 시스템에서 실행되는 두 프로세스 간에 프로

116
09:37.360 --> 09:38.580
세스 간 통신을 수행하는 방법에는 여러 가지가 있습니다.

117
09:38.590 --> 09:42.040
Linux 운영 체제는 다음과 같은 IPC 기술을 제공합니다.

118
09:42.040 --> 09:47.590
이번 강좌에서는 다양한 IPC 기법을 살펴

119
09:47.590 --> 09:50.110
보고 각각의 장단점을 분석해 보겠습니다.

120
09:50.140 --> 09:50.740
Having.

121
09:50.740 --> 09:56.500
각 IPC 기술의 장단점을 알면 애플리케이션을 더 잘 설계하기 위

122
09:56.500 --> 09:59.760
해 선택할 가장 적합한 IPC 기술을 결정하는 데 도움이 됩니다.

123
09:59.770 --> 10:07.450
지원서의 요구 사항에 따라 다르며 기술 면접에서 IPC에 대한 몇 가지
질문이 나올 것으로 예상됩니다.

124
10:07.450 --> 10:13.210
따라서 IPC 기술은 기술 인터뷰의 관점에서 볼 때 매우 중요한 논의
주제입니다.

125
10:13.390 --> 10:18.460
따라서 특히 시스템 프로그래밍 영역에서 일하는 제품 기반 회사에 입사한

126
10:18.460 --> 10:23.930
다면 프로세스 간 커뮤니케이션 기술을 바로 활용할 수 있어야 합니다.

127
10:23.930 --> 10:29.270
Linux 운영 체제에서 지원하는 다양한 IPC 기법

128
10:29.270 --> 10:32.000
에 대해 설명하고 각각의 장단점은 무엇인지 설명하라는

129
10:32.000 --> 10:38.690
질문이 나옵니다. 각 IPC 기술의 사용 사례는 무

130
10:38.690 --> 10:39.710
엇이며 어떤 시나리오에서 한 IPC 기술을 다른 기술

131
10:40.310 --> 10:45.080
보다 선호하시나요? 따라서 Linux 운영 체제에서

132
10:45.080 --> 10:45.680
지원하는 프로세스 간 통신 기술을 철저히 숙지하세요.

133
10:47.200 --> 10:51.130
그렇다면 이 강좌에서 다룰 IPC 기술에는 어떤 것이 있을까요? 이

134
10:52.850 --> 10:59.280
강좌에서 다룰 첫 번째 IPC 기술은 Unix 도메인 소켓입니다.

135
10:59.300 --> 11:06.620
유닉스 도메인 소켓은 이 IPC 기술이 소켓 기반 통신을 기반으로 한다는
점에서 특별합니다.

136
11:07.370 --> 11:13.790
따라서 소켓을 사용하여 동일한 컴퓨터에서 실행되는 프로세스 간에

137
11:13.790 --> 11:16.250
프로세스 간 통신을 수행하는 방법을 살펴보고 살펴볼 것입니다.

138
11:16.340 --> 11:20.900
두 번째 IPC 기술은 네트워크 기반 소켓을 사용하는 것입니다.

139
11:21.260 --> 11:26.960
이제 실제로 다른 물리적 시스템에서 실행 중인 프로세스 간에 데이터

140
11:26.990 --> 11:31.650
교환을 수행해야 할 때마다 이러한 네트워크 소켓을 사용해야 합니다.

141
11:31.670 --> 11:37.880
물론 네트워크 어딘가에서 실행 중인 컴퓨터 간에 데이터 교환을 수행하기 때문

142
11:37.880 --> 11:43.370
에 이러한 네트워크 소켓은 네트워킹에 대한 배경 지식이 필요하며, 따라서 네

143
11:43.370 --> 11:50.720
트워크 소켓은 매우 광범위한 논의 영역이므로 이 강좌에서는 다루지 않습니다.

144
11:50.960 --> 11:58.130
그래서 저는 네트워크 개념과 처음부터 프로그래밍이라는 다른

145
11:58.130 --> 11:59.790
강좌에서 네트워크 소켓에 대해 매우 자세히 설명했습니다.

146
11:59.810 --> 12:05.510
네트워크와 네트워크 소켓에 대해 실제로 배우고 싶다면 해당 강좌를
참조하세요.

147
12:05.540 --> 12:08.310
세 번째 IPC 기술은 메시지 대기열입니다.

148
12:08.340 --> 12:13.530
이것은 동일한 시스템에서 실행 중인 프로세스

149
12:13.530 --> 12:14.290
간의 대기열 기반 프로세스 간 통신입니다.

150
12:14.340 --> 12:21.390
메시지 큐가 어떻게 작업을 단순화하고 프로세스 간의

151
12:21.390 --> 12:22.350
큐 기반 커뮤니케이션을 지원하는지 살펴볼 것입니다.

152
12:23.160 --> 12:26.040
네 번째 기술은 공유 메모리 접근 방식입니다.

153
12:26.160 --> 12:32.340
이 기술에는 동일한 컴퓨터에서 실행 중인 여러 프로세스

154
12:32.340 --> 12:33.810
에서 실제로 액세스할 수 있는 메모리 청크가 있습니다.

155
12:34.170 --> 12:40.770
따라서 한 프로세스가 이 공유 메모리의 콘텐츠를 업데이트하면 실제로 이 공유
메모

156
12:40.770 --> 12:45.090
리를 모니터링하는 다른 모든 프로세스에서 업데이트 내용을 즉시 볼 수
있습니다.

157
12:45.720 --> 12:51.690
따라서 공유 메모리 접근 방식을 사용하여 프로세스 간

158
12:51.690 --> 12:53.850
통신을 구현하는 방법에 대해 자세히 살펴보겠습니다.

159
12:54.120 --> 12:57.780
IPC의 다섯 번째 기술은 실제로 파이프입니다.

160
12:58.110 --> 13:04.440
이 IPC 기법은 다소 구식이며 업계에서는 사용하지

161
13:04.440 --> 13:06.900
않으므로 이 과정에서는 이 기법을 다루지 않습니다.

162
13:07.530 --> 13:13.620
여섯 번째 프로세스 간 통신을 수행하는 기술은 이 강좌

163
13:13.620 --> 13:16.170
에서 꽤 자세히 다루는 신호의 도움을 받는 것입니다.

164
13:16.200 --> 13:21.480
따라서 이 강좌에서는 메시지 대기열, 공유 메모리 및 신호

165
13:21.480 --> 13:24.420
에 대해 살펴보고, 유닉스 도메인 소켓을 살펴볼 것입니다.

166
13:25.320 --> 13:31.170
이러한 각 기술을 구현의 관점, 디자인

167
13:31.170 --> 13:31.950
, 토론의 관점에서 논의해 보겠습니다.

168
13:31.980 --> 13:36.390
이러한 각 기술의 장단점을 분석해 보겠습니다.

169
13:36.390 --> 13:37.430
어떤 시나리오에서? 어떤 I

170
13:37.440 --> 13:40.080
PC 기법이 더 적합할까요?


