WEBVTT

1
00:06.880 --> 00:12.550
Evet, çocuklar, şimdi Taimur'un nasıl
yürüdüğünü, yani işletim

2
00:12.550 --> 00:13.810
sisteminin zamanlayıcı kavramını nasıl
uyguladığını anlamaya çalışalım.

3
00:14.620 --> 00:19.930
Dolayısıyla Zamanlayıcı, ayrı bir iş
parçacığı veya tamamen ayrı

4
00:19.930 --> 00:21.040
bir süreç olabilen ayrı bir kod akışı
bağlamında yürür.

5
00:21.460 --> 00:24.640
Öyleyse bunu aşağıdaki diyagramın
yardımıyla anlamaya çalışalım.

6
00:25.090 --> 00:28.900
Makinenizde çalışan bir B uygulaması
yazdığınızı varsayalım.

7
00:30.710 --> 00:34.820
Bu uygulamada, bazı argümanları kabul eden
aptal bir fonksiyonunuz var.

8
00:35.060 --> 00:35.450
Değil mi? Ve işlevsizlik

9
00:35.810 --> 00:38.000
bir parça iş yapar.

10
00:39.170 --> 00:44.270
Man, çalışan ve mantığını yürüten gerçek
uygulamanızı temsil ediyor, değil mi?

11
00:44.900 --> 00:50.810
Burada zamanın bir noktasında
uygulamanızın yeni bir zamanlayıcı
başlattığını varsayalım.

12
00:51.170 --> 00:51.560
Değil mi? Diyelim ki new time a

13
00:51.920 --> 00:58.340
launch, uygulamanızın yeni bir zamanlayıcı
başlatmak

14
00:58.340 --> 01:00.080
için kullandığı varsayımsal bir API olsun.

15
01:00.390 --> 01:00.770
Doğru mu? Şimdi, uygulamanızın bir
zamanlayıcı başlattığını

16
01:02.660 --> 01:09.440
unutmayın çünkü uygulamanız zamanlayıcı
sona erdiğinde yürümek

17
01:09.440 --> 01:11.540
için benzersiz bir şey yapmak istiyor.

18
01:11.810 --> 01:12.200
Değil mi? Zamanlayıcının sona ermesi

19
01:13.160 --> 01:22.160
sonucunda yapılan iş birimi, bu

20
01:22.160 --> 01:22.570
aptal fonksiyon tarafından temsil edilir.

21
01:22.930 --> 01:23.300
Doğru.

22
01:24.530 --> 01:30.020
Dolayısıyla, ne zaman bir zamanlayıcı
oluştursak, zorlamamız

23
01:30.020 --> 01:30.560
gereken zorunlu argümanlardan biri
fonksiyon işaretçisidir.

24
01:30.980 --> 01:37.730
Bu işlev işaretçisi, zamanlayıcınızın
süresi dolduğunda çalıştırılacak bir
işlevi temsil eder.

25
01:38.000 --> 01:38.360
Değil mi? Ve eğer bir

26
01:38.720 --> 01:44.060
fonksiyonu çağırıyorsanız, bu fonksiyona
bazı

27
01:44.060 --> 01:44.510
argümanlar eklemeniz gerektiği açıktır.

28
01:45.200 --> 01:48.800
Yani her zamanlayıcı için en az iki şeyi
duraklatmanız gerekir.

29
01:49.130 --> 01:54.530
Birincisi, zamanlayıcı ateşlendiğinde
yürüteceği iş birimidir.

30
01:55.130 --> 01:58.460
Bu iş birimi bu aptal fonksiyon tarafından
temsil edilir.

31
01:58.760 --> 02:04.730
İkinci argüman ise bu aptal fonksiyona
argüman olarak ayrıştırılacak olan
argümandır.

32
02:05.240 --> 02:05.660
Değil mi? Dolayısıyla, bu API çağrılır
çağrılmaz, süreciniz

33
02:07.400 --> 02:15.740
sonraki kod satırlarını yürütmeye devam
edecek, işletim

34
02:16.400 --> 02:19.970
sisteminiz ise yeni bir iş parçacığı
oluşturacaktır.

35
02:19.970 --> 02:28.040
Bu kod satırını doğru eklediğinizde yeni
bir iş parçacığı D1 şeklinde ayrı bir kod
akışı oluşturacaktır.

36
02:28.310 --> 02:28.700
Doğru.

37
02:29.330 --> 02:35.960
Dolayısıyla bu blok, patent süreci
tarafından oluşturulan yeni bir D1 iş
parçacığını temsil eder.

38
02:37.940 --> 02:43.730
Şimdi, bu API'nin son kullanma süresi beş
saniyeye eşit olan bir işlem oluşturduğunu
varsayalım.

39
02:44.420 --> 02:48.020
B Süreci bu ipliği çatallar çatallamaz.

40
02:48.530 --> 02:49.050
Değil mi? Bir zamanlayıcı oluşturmak için,
bu

41
02:49.070 --> 02:55.700
iş parçacığı çalışmayacak ve bloke
kalacaktır.

42
02:56.240 --> 02:56.660
Doğru mu? İşletim sistemi bu tehdidi blok
halinde

43
02:57.790 --> 03:04.630
tutacaktır, oysa R süreci P API'den sonra

44
03:04.630 --> 03:09.400
istediğini yürütebilir, yanında yeni bir
zaman dönmüştür.

45
03:10.630 --> 03:12.480
İş parçacığı çatallanması bu şekilde
çalışır, değil

46
03:12.490 --> 03:15.400
mi? Ana süreciniz yürütme akışına devam
eder.

47
03:17.010 --> 03:22.920
Şimdi, bu zamanlayıcının sona erme süresi
beş saniye olarak ayarlandığından.

48
03:23.340 --> 03:31.950
Bu, sadece beş saniye geçtikten sonra
işletim sisteminin burada

49
03:31.950 --> 03:36.120
belirtilen AIG argümanıyla bir fool
fonksiyonunu çağıracağı anlamına gelir.

50
03:36.570 --> 03:41.490
Şu anda, aptal fonksiyon sahip olduğu
mantığı yürütebilir.

51
03:42.360 --> 03:44.790
Zamanlayıcının nasıl yürüdüğünü
görebilirsiniz.

52
03:45.060 --> 03:51.840
için işlevi, zamanlayıcı ateşlendiğinde
yapmamız gereken yürüyüş birimini temsil

53
03:52.380 --> 03:58.800
eder, değil mi? Dolayısıyla, işlev havuzu
yalnızca API yeni

54
03:58.800 --> 04:00.180
başlatma zamanının çağrılmasından sonra
beş saniye geçtikten sonra
tetiklenecektir.

55
04:01.230 --> 04:07.440
Böylece Full zamanlayıcı bağlamında
yürütülmesini tamamladığında, denenen
zamanlayıcı kapatılır.

56
04:08.810 --> 04:13.720
Zamanlayıcının kapatıldığını söylediğimde,
zamanlayıcı iş parçacığının çekirdek

57
04:13.760 --> 04:14.660
veya işletim sistemi tarafından
öldürüldüğü anlamına gelir.

58
04:15.290 --> 04:22.250
Dolayısıyla, bu işlev yürütülmesini
tamamlayıp geri döner dönmez,

59
04:22.250 --> 04:23.510
tragedy one zamanlayıcısı çekirdek
tarafından otomatik olarak öldürülür.

60
04:23.510 --> 04:29.780
İşletim sistemimiz, çünkü zamanlayıcı
tarafından yapılması gereken iş birimi
tamamlanmıştır.

61
04:32.570 --> 04:39.280
İşlem olan uygulama ücreti, yalnızca tam
bir işlevin sonunda

62
04:39.280 --> 04:41.660
bir zamanlayıcı tarafından işgal edilen
tüm kaynakları serbest bırakmalıdır.

63
04:41.960 --> 04:49.580
Şu anda, bu argümanı hazırlamak için
uygulamanızın belirli veri yapılarını

64
04:49.580 --> 04:55.940
doğru şekilde günlüğe kaydetmiş olması ve
bu öğrenci yapılarının bu

65
04:57.170 --> 04:58.430
zamanlayıcı işlevine aptal bir argüman
olarak ayrıştırılmış olması mümkün
olabilir.

66
04:58.730 --> 04:59.180
Doğru.

67
04:59.600 --> 05:05.540
Yani bu tam fonksiyonun sonunda bu veri
yapılarını beslemek sizin
sorumluluğunuzda, değil

68
05:06.230 --> 05:11.450
mi? Zamanlayıcı işlevi yürüyüşünü
tamamlamadan hemen önce, tüm kaynakları
serbest bırakmalıdır.

69
05:12.170 --> 05:17.060
Merak etmeyin, tüm bu mantığı
uygulayacaktık ve bunu

70
05:17.060 --> 05:18.050
nasıl yapacağınızı bir örnek yardımıyla
size göstereceğim.

71
05:19.010 --> 05:23.780
Yani teknik terimle aptal işlevine
zamanlayıcı geri çağrısı denir.

72
05:24.380 --> 05:30.800
Zamanlayıcıların işletim sistemi
tarafından nasıl uygulandığına ilişkin
burada

73
05:30.800 --> 05:32.050
tartıştığımız mekanikler tüm zamanlayıcı
türleri için geçerlidir.

74
05:32.060 --> 05:35.900
Yani, bir kısa zamanlayıcı, periyodik
zamanlayıcı veya üstel geri çekilme
zamanlayıcısı.

75
05:37.530 --> 05:44.760
Bir kısa zamanlayıcı olması durumunda,
işlev yürütülmesini tamamen

76
05:44.760 --> 05:47.280
tamamladığında, albay veya işletim sistemi
381 hakkını öldürür.

77
05:47.850 --> 05:55.530
Periyodik zamanlayıcı durumunda ise, işlev
tam olarak yürütülmesini

78
05:55.530 --> 05:58.320
tamamladığında, işletim sistemi 381'i
tekrar blok durumuna geçirir.

79
05:58.920 --> 05:59.310
Doğru.

80
05:59.610 --> 06:02.130
Ve bir oyundan sonra, beş saniye geçti.

81
06:02.400 --> 06:07.200
Sonra tekrar fonksiyon çağrılır ve bu
döngü sonsuza kadar tekrar eder.

82
06:08.970 --> 06:16.590
Ve zamanlayıcının üstel geri dönüşünün
fonksiyon olması durumunda, Fu
yürütülmesini tamamlamıştır.

83
06:17.040 --> 06:21.780
İşletim sistemi yine zamanlayıcı 381'i
bloga doğru belirtmek için koydu.

84
06:23.210 --> 06:27.740
Ancak şimdi beş saniye beklemek yerine 10
saniye bekleyeceğiz.

85
06:28.100 --> 06:28.490
Doğru.

86
06:28.820 --> 06:35.270
Ve yalnızca 10 saniye geçtikten sonra,
zamanlayıcı geri çağrısı

87
06:35.270 --> 06:37.460
yürütülmesini bitirdiğinde yalnızca
zamanlayıcı geri çağrısı tekrar çağrılır.

88
06:37.670 --> 06:44.900
İşletim sistemi T1 zamanlayıcısını tekrar
engellenmiş duruma

89
06:44.960 --> 06:45.350
getirecek ve bu kez süre bekleyecektir.

90
06:45.350 --> 06:47.000
T 20 saniyeye eşittir.

91
06:47.240 --> 06:47.600
Değil mi? Yani her seferinde bekleme
zamanlayıcısı

92
06:48.050 --> 06:51.980
önceki bekleme süresinin iki katı
olacaktır.

93
06:52.970 --> 06:58.250
Dolayısıyla, kısa, periyodik ve üstel
zaman geri

94
06:58.330 --> 06:59.420
dönüşünü uygulamak için temellerin farklı
olmadığını görebilirsiniz.


