WEBVTT

1
00:05.670 --> 00:11.820
Şimdi tartışacağımız bir sonraki API, bir
mesaj kuyruğunu kapatmak için kullanılacak
olan API'dir.

2
00:12.270 --> 00:15.380
Yani API, MK alt çizgi kapanışıdır.

3
00:15.390 --> 00:18.180
Yani bu mesaj kuyruğu kapatma API'si.

4
00:18.180 --> 00:22.530
Ve bu API'nin argümanı basitçe mesaj
kuyruğunun dosya tanımlayıcısıdır.

5
00:23.100 --> 00:27.060
Bu API başarı durumunda sıfır,
başarısızlık durumunda ise eksi bir
döndürür.

6
00:28.600 --> 00:34.450
Dolayısıyla, bir işlem bir mesaj kuyruğu
kullanmayı bitirdiğinde bu API'yi
çağırmalıdır.

7
00:35.780 --> 00:43.070
Maske açma ve maske kapatmanın aslında
birbirleriyle nasıl

8
00:43.070 --> 00:43.850
işbirliği içinde çalıştığına dair birkaç
nokta var.

9
00:44.180 --> 00:52.010
Dolayısıyla, süreç mesaj kuyruğunu
kapattığında, mesaj kuyruğu açma API'sini

10
00:52.010 --> 00:55.850
kullanarak tekrar açmadığı sürece süreç
mesaj kuyruğunu tekrar kullanamaz.

11
00:56.270 --> 01:02.540
İşletim sistemi mesaj kuyruğunu yalnızca
mesaj kuyruğunu kullanan

12
01:02.570 --> 01:03.890
tüm işlemler kapatmışsa kaldırır ve geri
yükler.

13
01:04.070 --> 01:04.790
Doğru.

14
01:04.820 --> 01:10.040
Örneğin, bir P1 süreci olduğunu ve bir
mesaj kuyruğu açtığını varsayalım.

15
01:11.360 --> 01:12.020
Doğru mu? Benzer şekilde, bir P2

16
01:12.050 --> 01:18.950
süreci var ve aynı mesaj kuyruğunda

17
01:18.950 --> 01:19.460
mesaj kuyruğu açma API'sini de çağırdı.

18
01:19.700 --> 01:26.810
Ve bir P3 süreci olduğunu ve aynı mesaj

19
01:26.810 --> 01:27.320
kuyruğunda mesaj kuyruğu açma API'sini de
çağırdığını varsayalım.

20
01:27.410 --> 01:33.230
Yani sistemde şu anda aynı mesaj kuyruğunu
kullanan üç süreç var demektir.

21
01:33.560 --> 01:38.390
Şimdi P3 süreci mesaj kuyruğu kapatma
API'sini çağırırsa.

22
01:38.810 --> 01:46.370
Dolayısıyla işletim sistemi bu mesaj
kuyruğunu yok etmeyecek ve
temizlemeyecektir

23
01:46.370 --> 01:49.310
çünkü hala bu mesaj kuyruğunu kullanan
bazı işlemler vardır.

24
01:49.640 --> 01:55.910
Bu nedenle işletim sistemi mesaj kuyruğunu
ancak ve ancak mesaj kuyruğunu

25
01:55.910 --> 01:58.820
kullanan tüm süreçler mesaj kuyruğunu
gerçekten çağırmışsa kaldırır ve yok eder.

26
01:58.820 --> 01:59.720
API'yi kapat.

27
02:01.220 --> 02:06.680
İşletim sistemi, aynı mesaj kuyruğunu kaç
işlemin kullandığına ilişkin bilgileri
tutar.

28
02:06.710 --> 02:11.210
Yani, kaç işlemin mesaj kuyruğu açma
API'sini çağırdığı.

29
02:11.240 --> 02:13.790
Bu kavram referans sayımı olarak
adlandırılır.

30
02:14.090 --> 02:17.990
Yani mesaj kuyruğu daha önce bahsettiğimiz
bir çekirdek kaynağıdır.

31
02:18.920 --> 02:24.290
Yani mesaj kuyruğu, bir çekirdek kaynağı
için sistem üzerinde

32
02:24.290 --> 02:26.660
çalışan birkaç uygulama süreci tarafından
kullanılan bir çekirdek kaynağıdır.

33
02:26.690 --> 02:28.070
Çekirdek takip eder.

34
02:28.070 --> 02:32.720
Söz konusu kaynağı gerçekte kaç kullanıcı
alanı işleminin kullandığı.

35
02:32.930 --> 02:39.080
Yani bu aslında genel bir ifadedir ve
mesaj kuyruğu da dahil olmak üzere her
çekirdek kaynağı için geçerlidir.

36
02:39.290 --> 02:45.200
Bu nedenle, örneğimizdeki mesaj kuyruğu
olan bir çekirdek kaynağı uygulama süreci
tarafından

37
02:45.260 --> 02:50.930
ilk kez oluşturulduğunda, referans sayısı
değeri işletim sistemi tarafından bir
olarak ayarlanır.

38
02:51.740 --> 02:59.960
Başka süreçler de mevcut çekirdek kaynağı
üzerinde open API'yi çağırırsa, çekirdek

39
02:59.960 --> 03:07.160
veya işletim sistemi söz konusu çekirdek
kaynağının referans sayısını bir artırır,

40
03:07.160 --> 03:11.420
yani artık bir süreç daha söz konusu
çekirdek kaynağını kullanıyor demektir.

41
03:11.900 --> 03:19.510
Dolayısıyla, bir süreç kapatma sistemini
çağırdığında, mesaj kuyruğu

42
03:19.520 --> 03:19.850
kapatma olan mevcut bir çekirdek kaynağını
çağırır.

43
03:19.850 --> 03:25.160
Bizim durumumuzda, çekirdek veya işletim
sistemi referans sayısını bir azaltır.

44
03:25.840 --> 03:26.410
Doğru.

45
03:26.410 --> 03:32.170
Bu şekilde, işletim sistemi herhangi bir
zamanda aynı

46
03:32.170 --> 03:34.450
çekirdek kaynağını gerçekte kaç işlemin
kullandığını takip eder.

47
03:34.870 --> 03:41.380
Ve söz konusu çekirdek kaynağının referans
sayısı sıfıra ulaştığında, aslında

48
03:41.380 --> 03:44.680
söz konusu çekirdek kaynağını kullanan bir
süreç olmadığı anlamına gelir.

49
03:44.710 --> 03:51.640
Bu, çekirdeğin veya işletim sisteminin
artık söz konusu çekirdek kaynağını
temizleyebileceği

50
03:51.640 --> 03:53.710
veya yok edebileceği anlamına gelir ve bu
mesaj kuyruğu da olabilir.

51
03:53.980 --> 03:58.840
Unutmayın, çekirdek kaynağı herhangi bir
şey olabilir, soket dosya

52
03:58.840 --> 04:01.960
tanımlayıcısı olabilir, mesaj kuyruğu
dosya tanımlayıcısı olabilir ve

53
04:02.740 --> 04:03.730
herhangi bir şey olabilir, değil mi? İşte
böyle.

54
04:04.300 --> 04:06.280
Ucuz atlattık.

55
04:06.280 --> 04:12.430
Ve işletim sistemi sadece mesaj kuyruğunu
temizler ve tamamen yok eder.

56
04:12.430 --> 04:16.210
Yalnızca bu mesaj kuyruğunun referans
sayısı sıfıra ulaştığında.

57
04:17.530 --> 04:20.080
Yani bu mesaj kuyruğu kapatma API'siydi.

58
04:20.170 --> 04:25.900
Daha sonra, mesaj kuyruğundan mesajın
nasıl gönderileceği

59
04:25.900 --> 04:26.440
ve alınacağı ile ilgili API'yi
tartışacağız.


