WEBVTT

1
00:07.020 --> 00:12.480
Şimdi dinleyici tehditlerinin ne olduğunu
ve bunlara neden ihtiyaç duyduğumuzu
tartışalım.

2
00:13.170 --> 00:18.840
Yavaş yavaş asıl sorunumuza, yani
kusurların serileştirilmesi ifadesine
doğru yaklaşıyoruz.

3
00:19.860 --> 00:25.440
Bu nedenle, bir uygulamanın sürekli olarak
harici olayları dinlemesi gereken yaygın
bir senaryodur.

4
00:26.040 --> 00:31.260
Bu harici olaylar herhangi bir zamanda
gelebilir ve uygulamanın bu olayları
işlemesi gerekir.

5
00:31.920 --> 00:36.180
Uygulama bu harici olayları dinlemek için
tehditleri kullanabilir.

6
00:36.630 --> 00:42.750
Pekala, diyelim ki SDP olarak adlandırılan
örnek bir sürecimiz var.

7
00:43.200 --> 00:48.870
Burada, sürecimizin tek iş parçacıklı bir
süreç olduğunu vurgulamak için SDP adını
seçiyorum.

8
00:49.260 --> 00:56.700
Bu işlemin örtüşen bir özelliğe sahip
olduğu anlamına gelir ve basitçe

9
00:56.700 --> 00:58.800
bu uygulamanın tasarım gereği tek iş
parçacıklı olması gerektiği anlamına
gelir.

10
01:02.210 --> 01:08.090
Dolayısıyla bu çok güçlü bir varsayımdır
ve zamanın herhangi bir noktasında,

11
01:08.090 --> 01:15.530
bu süreç mantığını çoklu tehditler
bağlamında yürütmeye çalışırsak, bu
basitçe

12
01:15.530 --> 01:18.380
varsayımımızı ihlal ettiğimiz ve tam bir
başarısızlık olduğu anlamına gelir.

13
01:19.100 --> 01:19.490
Tamam.

14
01:20.240 --> 01:27.380
Diyelim ki bir STB sürecimiz var ve bu tek
iş parçacıklı

15
01:27.410 --> 01:30.200
bir süreç ve bu sürecin belirli rutinleri
ve işlevleri var.

16
01:30.890 --> 01:31.250
Tamam.

17
01:31.760 --> 01:34.670
Şimdi bu işlevlerin her birinin ne
yaptığını açıklayayım.

18
01:36.370 --> 01:42.010
Şimdi, sürecimizin bir ağ soketini
dinlemesi

19
01:42.010 --> 01:48.790
gerektiğini varsayalım, böylece paket dış
ağdan

20
01:48.790 --> 01:49.960
geldiğinde, sürecimiz bu paketi
işleyebilmelidir.

21
01:50.800 --> 01:54.790
Bu yüzden sürecimizin bir ağ soketini
dinlemesi gerekir.

22
01:55.150 --> 01:55.570
Tamam.

23
01:56.200 --> 02:03.760
Sürecimizin yaptığı şey, yeni üçlüye
odaklanmak ve bu

24
02:03.760 --> 02:05.650
güvenin bir ağ soketini dinleme
sorumluluğuna sahip olmasıdır.

25
02:06.250 --> 02:09.010
Yani böyle bir üçüncüye paket dinleyici iş
parçacığı denir.

26
02:09.670 --> 02:16.450
Dinleyici iş parçacığı kavramını bir
önceki ders radyosunda zaten açıklamıştım,

27
02:16.450 --> 02:22.120
bu nedenle bu basitçe bu paket dinleyici
iş parçacığının engellendiği

28
02:22.120 --> 02:22.660
ve şimdi paketin bir sokete gelmesini
beklediği anlamına gelir.

29
02:23.080 --> 02:29.890
Ve paket gelir gelmez, paket dinleyici iş
parçacığı olan bu iş parçacığı,

30
02:29.890 --> 02:35.770
paket işleme işlevine bir çağrı yaparak
paketi ortalama uygulama koduna enjekte
eder.

31
02:36.460 --> 02:36.880
Tamam.

32
02:37.120 --> 02:41.410
Ve Argumento, bu fonksiyon az önce gelen B
paketidir.

33
02:42.880 --> 02:49.240
Böylece bu rutin paket sürecinin SDP
sürecimize ait bir rutin olduğunu
görebilirsiniz.

34
02:49.720 --> 02:55.930
Ve bu paket işlem rutini, paket geldiğinde

35
02:55.930 --> 02:56.530
paket dinleyici iş parçacığı bağlamında
yürütülür.

36
02:57.650 --> 02:58.100
Tamam.

37
02:59.330 --> 03:04.670
Bir SDP'nin ağdan gelen belirli paketleri
bu kadar basit bir şekilde işlemesi bir
gerekliliktir.

38
03:05.960 --> 03:12.230
Benzer şekilde, sürecimizin işletim
sisteminden gelen belirli

39
03:12.230 --> 03:12.750
olayları dinlemek için haber olacağını
varsayalım.

40
03:13.340 --> 03:19.460
Şu ana kadar işlemimizin tekrar Kernel
Even Listener Thread adında yeni bir parça
oluşturması gerekiyor.

41
03:19.970 --> 03:26.240
Merak etmeyin, size bir sürecin nasıl bir
grup dinleyici iş parçacığı

42
03:26.240 --> 03:29.690
oluşturabileceğini ve harici olayları
dinleyebileceğini göstereceğim bir demo
program oluşturacağız.

43
03:30.530 --> 03:30.950
Tamam.

44
03:32.410 --> 03:39.190
Dolayısıyla, çekirdekten veya temel
işletim sisteminden gelen herhangi

45
03:39.190 --> 03:41.540
bir olay SDP sürecinin ana mantığına
enjekte edilecektir.

46
03:41.560 --> 03:43.570
Neden rutin bir

47
03:44.530 --> 03:44.950
olay? Pekala.

48
03:45.250 --> 03:50.980
Böylece Colonel Evens işlevi bu çekirdek
olay dinleyicisi iş parçacığı bağlamında
yürütülür.

49
03:52.330 --> 03:57.640
Aynı şey STP sürecimizle etkileşime geçmek
isteyen kullanıcı için de geçerlidir.

50
03:58.930 --> 04:05.290
Sürecimiz SDP tarafından oluşturulan başka
bir iş parçacığı daha vardır ve bu iş
parçacığı kullanıcı

51
04:05.290 --> 04:10.420
girdisi dinleyici iş parçacığı olarak
adlandırılır ve bu iş parçacığı sürekli
olarak kullanıcıdan girdi bekler.

52
04:10.870 --> 04:14.650
Bir kullanıcı sürece bazı bilgiler
girebilir.

53
04:15.370 --> 04:17.490
Neden bazıları seelye ya da

54
04:17.500 --> 04:18.400
bazıları UI? Önemli değil.

55
04:19.180 --> 04:27.660
Böylece herhangi bir girdi gelir gelmez,
Clia işleyici

56
04:27.690 --> 04:28.510
işlevi kullanıcı girdisi dinleyici iş
parçacığı bağlamında yürütülecektir.

57
04:29.410 --> 04:29.770
Tamam.

58
04:31.880 --> 04:38.780
Ve son olarak, sistemde STP sürecimize
bazı

59
04:38.900 --> 04:39.920
veriler gönderen başka bir süreç olabilir.

60
04:40.560 --> 04:43.430
Neden süreç iletişiminde olan IPC?
Sürecimiz,

61
04:44.060 --> 04:48.800
kanıtları tekrar dinlememiz gerekip
gerekmediğini sordu.

62
04:48.800 --> 04:53.990
Bazı harici süreçlerden gelebilecek tüm
veriler tek ve herhangi bir zamanda
olabilir.

63
04:54.290 --> 05:00.440
Ve bunun için, sürecimizin süreç iletişim
iş parçacığı adı

64
05:00.440 --> 05:00.890
verilen yeni bir dinleyici iş parçacığı
oluşturması gerekir.

65
05:01.550 --> 05:01.970
Tamam.

66
05:02.300 --> 05:08.630
Ve süreç iletişim iş parçacığı tarafından
herhangi bir veri tespit edilir edilmez,
süreç iletişim

67
05:08.630 --> 05:14.930
iş parçacığımız bir işlev IPC sürecini
çağırarak bu verileri uygulama ESDP
kaydına iter.

68
05:15.350 --> 05:21.350
IPC süreci işlevini bu süreç iletişim iş
parçacığı bağlamında yürüteceğiz, böylece
bir

69
05:22.880 --> 05:28.740
iş parçacığı kullanarak bir sürecin aynı
anda tüm olayları dinleyebileceğini
görebilirsiniz.

70
05:29.090 --> 05:37.820
Ve hatta geldiğinde ve bu olaylar
işlendiğinde,

71
05:37.820 --> 05:38.960
ancak bu olaylar dinleyici tehditleri
bağlamında işlenir.

72
05:39.950 --> 05:42.800
Ve son olarak, bazı iç olaylar olabilir.

73
05:42.800 --> 05:44.030
Örneğin, sizin süreciniz.

74
05:44.040 --> 05:47.150
SDP, zamanlayıcı iş parçacığı adında bir
iş parçacığı oluşturdu.

75
05:47.840 --> 05:55.020
Ve diyelim ki 10 saniye sonra ya da
diyelim ki keyfi sayıda

76
05:55.020 --> 06:03.140
saniye sonra, zamanlayıcı izleri
zamanlayıcı olay işlevini çağırarak
uygulama SDP'sine yeni bir

77
06:03.140 --> 06:07.520
hesaplama enjekte eder, böylece
zamanlayıcı bile işlevi zaman tehdidi
bağlamında yapıcıda yürütülür.

78
06:08.480 --> 06:14.210
Bu yüzden endişelenmenize gerek yok, bir
tür uygulama olacak şekilde bir örnek

79
06:14.210 --> 06:20.540
uygulayacağız ve size çeşitli dinleyici iş
parçacıklarını nasıl başlatacağınızı
göstereceğim ve ardından

80
06:20.540 --> 06:24.710
bu dinleyici iş parçacıklarının ilgili
olayları STP sürecimize nasıl
itebileceğini göstereceğim.

81
06:26.030 --> 06:32.960
Şimdi burada varsayımdaki en büyük
sorunumuzun SDP sürecinin

82
06:32.960 --> 06:34.190
tek iş parçacıklı bir süreç olması
olduğunu görebilirsiniz.

83
06:34.190 --> 06:41.660
Ancak şimdi, çeşitli dinleyici denemeleri
ve zamanlayıcı iş parçacıkları
başlattıktan sonra, uygulamamız SDP,

84
06:41.660 --> 06:47.480
temel tasarımına ve mimarisine aykırı olan
çok iş parçacıklı tasarıma doğru ilerleme
eğilimindedir.

85
06:48.380 --> 06:53.930
Bu işlevlerin packet process, IPC process,
yield, handler kernel, hatta

86
06:53.930 --> 06:58.910
evenson timer bile kendi dinleyici iş
parçacıklarının bağlamında yürütüleceğini
görebilirsiniz.

87
07:00.330 --> 07:07.440
Yani bu, Tippi'nin şu anda zorla sahip
olduğu gibi, bu sürecin çok iş parçacıklı
hale geldiği

88
07:07.480 --> 07:13.170
ve geliştiricinin olayları dinlemek için
tehditleri dinlemeye başlamak zorunda
olduğu için hiçbir seçenek görmediği
anlamına gelir.

89
07:14.160 --> 07:15.750
Sahip olduğu tek yol bu.

90
07:16.410 --> 07:22.230
Aynı zamanda, tahmin süreci örtüşen veri
yapıları özelliğine sahip

91
07:22.230 --> 07:25.740
olduğundan, tipu sürecini tek iş
parçacıklı olarak sürdürmek istiyor.

92
07:26.640 --> 07:32.340
Dolayısıyla, harici olayları dinlemek ve
aynı zamanda süreci tek

93
07:32.340 --> 07:33.720
bir iş parçacığı olarak sürdürmek için iki
gereksinim vardır.

94
07:34.080 --> 07:37.080
Bu iki gereklilik birbiriyle çelişiyor
gibi görünmektedir.

95
07:38.520 --> 07:42.240
b işleminin bazı D veri yapılarını
koruduğunu düşünün.

96
07:42.930 --> 07:43.320
Tamam.

97
07:43.740 --> 07:49.380
Ve paket dinleyici iş parçacığının, paket
işlem rutininin çağrıldığı ve

98
07:49.380 --> 07:53.910
bu Pockett işlem rutini nedeniyle bazı
Paket B aldığını varsayalım.

99
07:53.920 --> 08:00.090
Diyelim ki b veri yapısını güncellemeye
çalışıyor, bu durumda D

100
08:00.090 --> 08:02.580
veri yapısı paket dinleyici iş parçacığı
bağlamında güncelleniyor demektir.

101
08:03.360 --> 08:10.860
Aynı zamanda, P1 sürecinin IPC süreci
işlevinin dahil

102
08:10.860 --> 08:17.550
olduğu bazı veriler gönderdiğini ve bu
işlevin

103
08:17.550 --> 08:18.000
de aynı veri yapısını güncellemeye
çalıştığını varsayalım.

104
08:18.870 --> 08:23.340
Yani şimdi bu güncelleme bu süreç iletişim
dizisi bağlamında yapılıyor.

105
08:23.850 --> 08:30.060
Yani iki farklı iş parçacığı şimdi aynı
veri yapısını güncellemeye çalışıyor

106
08:30.060 --> 08:34.380
ve bu nedenle kilitlemeyi dağıtmanız
gereken üçüncü bir senkronizasyona ihtiyaç
var.

107
08:35.730 --> 08:41.850
Yani bir kez daha, p sürecimizin tek iş
parçacıklı

108
08:41.850 --> 08:42.450
bir süreç olmayan bir ESDP olduğu
yayılımına karşı çıkıyoruz.

109
08:43.290 --> 08:49.500
STP sürecimizin kaynak kodu içinde
herhangi bir kilitleme

110
08:49.500 --> 08:51.180
tüm iş parçacığı senkronizasyon tekniğini
kullanmamamız gerekiyor.

111
08:53.510 --> 08:56.300
Bunu yaptığınız anda, bu varsayımı elde
edeceksiniz.

112
08:57.320 --> 09:05.150
Artık sorun ifadesi açık olduğuna göre,
süreç harici

113
09:05.150 --> 09:12.770
olayları dinlemek isterken, aynı zamanda
sürecin dahili uygulama

114
09:12.770 --> 09:13.220
mantığını tek iş parçacıklı olarak
sürdürmek istemesi gerekir.

115
09:13.760 --> 09:19.820
Peki bu nasıl başarılabilir, çözüm olay
döngüsünden geliyor

116
09:19.820 --> 09:20.390
ve bundan sonra tartışacağımız şey de bu.

117
09:20.900 --> 09:22.760
Dolayısıyla sorun ifadesi açıktır.

118
09:22.790 --> 09:27.590
Şimdi bu sorunu çözmek için mavinin bile
nasıl kullanılabileceğini tartışacağız.


