G/Ç İşlemlerinin Eşzamanlanması
Önceki XIII. Oylum - Düşük Seviyeli Girdi ve Çıktı Sonraki
G/Ç İşlemlerinin Eşzamanlanması
Günümüzdeki çoğu işletim sisteminde normal G/Ç işlemleri eşzamanlı yapılmaz. Örneğin, bir write çağrısı normal olarak dönse bile bu, verinin ilgili ortama (örn, disk) yazılmış olduğu anlamına gelmez.
Eşzamanlamanın gerektiği durumlarda, işlev dönmeden önce tüm işlemlerin tamamlanmış olduğundan emin olunmasını sağlayan özel işlevler vardır.
int sync
(void)
işlev
Bu işleve yapılacak bir çağrı, veri aygıta yazılana kadar dönmez. Çekirdekte içinde veri bulunan tüm tamponlar boşaltılır (veri yerine yazıldıktan sonra tampon silinir), böylece sistemin tamamı tutarlı duruma gelir (veriyi paralel yazan bir süreç yoksa).
sync işlevinin prototipi unistd.h başlık dosyasında bulunur.
Normal dönüş değeri sıfırdır.
Yazılımlar çoğunlukla sistemdeki tüm verinin değil, bir dosya ile ilgili bir verinin o dosyaya yazıldığından emin olmak ister. Bu bakımdan sync fazla gelir.
int fsync
(int dosyatanıtıcı)
işlev
fsync işlevi yazmak amacıyla açılmış ve tanıtıcısı dosyatanıtıcı olan dosyaya tüm veri fiziksel olarak yazılıncaya kadar dönmez.
fsync işlevinin prototip unistd.h başlık dosyasında bulunur.
Bu işlev çok evreli yazılımlarda bir iptal noktasıdır. fsync çağrısı sırasında evre bazı özkaynakları (bellek, dosya tanıtıcı, semafor, vb.) ayırdığında bu bir sorun olur. Evre tam bu anda bir iptal alırsa ayrılan özkaynaklar yazılım sonlanana kadar ayrılmış olarak kalır. Bu tür fsync çağrılarından kaçınmak için iptal eylemcileri kullanılarak korunulmalıdır.
İşlevin normal dönüş değeri sıfırdır, bir hata oluşmuşsa -1 ile döner. Aşağıdaki errno hata durumları bu işlev için tanımlanmıştır:
EBADF
dosyatanıtıcı tanıtıcısı geçersiz
EINVAL
Sistemde ilgili oluşum gerçeklenmediğinden eşzamanlama mümkün değil
Kimi zaman bir dosya tanıtıcı ile ilgili verinin tamamını yazmak gerekmez. Örneğin, veritabanı dosyalarına veri yazarken dosya boyutu değişmeyeceğinden dosyanın içerdiği verinin aygıta yazılması yeterlidir. Dosya ile ilgili değişiklik zamanı gibi temel veriler önemli değildir ve bu bilgilerin olduğu gibi bırakılması bir sorun çıktığında dosyanın başarıyla kurtarılmasını engellemez.
int fdatasync
(int dosyatanıtıcı)
işlev
fdatasync çağrıldığında, dosya verisinin tamamı aygıta yazılmadan dönmez. Bekleyen tüm G/Ç işlemleri için parçalar veri bütünlüğünü sağlayacak şekilde birleştirilir.
Tüm sistemler fdatasync işlemini gerçekleştirmez. Bu işlevselleğin olmadığı sistemlerde fdatasync işlemleri, gerçekleştirilen eylemler fdatasync için gereken işlemlerin bir üst kümesi olarak bir fsync çağrısı ile benzeştirilir.
fdatasync işlevinin prototip unistd.h başlık dosyasında bulunur.
İşlevin normal dönüş değeri sıfırdır, bir hata oluşmuşsa -1 ile döner. Aşağıdaki errno hata durumları bu işlev için tanımlanmıştır:
EBADF
dosyatanıtıcı tanıtıcısı geçersiz
EINVAL
Sistemde ilgili oluşum gerçeklenmediğinden eşzamanlama mümkün değil
Önceki Üst Ana Başlık Sonraki
Girdi ve Çıktının Beklenmesi Başlangıç Eşzamansız G/Ç
Bir Linux Kitaplığı Sayfası