Salı , 22 Eylül 2020
Home » Teknoloji » Linux’ta Her Şey Birer Dosya
Linux’ta Her Şey Birer Dosya 1 – files documents paper folder1

Linux’ta Her Şey Birer Dosya

“Linux’ta her şey birer dosyadır” (Everything is a file)

Linux’ta aygıtlar (klavye, fare, ekran, yazıcı, vb), TCP/UDP soketler, Unix domain soketler, prosesler, prosesler arası iletişim kurmaya yarayan  pipe adı verilen mekanizmalar, vb bütün sistem bileşenleri ya birer dosyadır, ya dosya sistemi (file system) üzerinde dosya gibi görünür ya da bunlara olan erişim bir dosyaya erişimle benzer şekilde tasarlandığı için dosyalar üzerinde yapılan işlemler bu bileşenler üzerinde de yapılabilir. Linux’ta yönetilen bütün kaynaklar bu üç kategoriden birine girdiği için “Linux’ta her şey bir dosyadır”.

Aşağıdaki gibi sistemde bulunan işlemciler ve memory ile ilgili bilgiler ekstra bir araca ihtiyaç duyulmadan dosya sistemi üzerinden alınabilir.

Linux’ta Her Şey Birer Dosya 2 – 1 1Pq6BeNkLH0h3xqrWZwT6A1 1024x4691 1

Görüldüğü üzere sistem kaynaklarının işletim sistemi tarafından dosya arabirimi üzerinden sunulması, gerek dosyalarla nasıl etkileşime geçeceğini bilen kullanıcıların işini gerekse çalışmak için bu bilgiye ihtiyacı bulunan programların yazımını kolaylaştırmaktadır. Karşılaştırma olması açısından Windows ile yönetilen bir sistemde, sistemin ne kadar zamandır ayakta olduğunu anlamak için uptime veya systeminfo gibi bir araç kullanılır. uptime bilgisini elde etmek isteyen kişi ya anılan programları kullanmalı ya da Windows’un sağladığı API ile, API’ın desteklediği programlama dillerinden biri ile bir program yazmalıdır. Aynı kişi, Linux’ta metin dosyası okuma fonksiyonu sunan herhangi bir araç (cat) veya bir programlama dili ile /proc/uptime dosyası okunarak sistemin ne kadar süredir açık olduğu öğrenilebilir.

/proc dizinine benzer şekilde /dev dizini altında işletim sisteminin yönettiği bütün cihazlar bulunmaktadır. Aşağıdaki ekran görüntüsünde sistemde bulunan disk bölümleri (disk partition) listelenmiş ve bu bölümlerin  /dev/ dizininde bulunduğu gösterilmiştir.

Linux’ta Her Şey Birer Dosya 3 – 1 H7neUQLZe hGILBbOfFkCw1 1024x3031 1

Yukarıdaki /dev dizininin görüntülendiği ekran çıktısında (/dev/null, /dev/zero ve /dev/random) özel aygıtları bulunmaktadır. Bu aygıtlar “Linux’ta her şey neden dosya olmalıdır?” sorusuna çok güzel birer örnek oluşturdukları için onları anlatarak devam edelim.

/dev/null dosyası üzerine yazılan karakterleri sonsuz bir boşluğa atar. Bazen çalıştırılan aracın ekrana yazdığı çıktılarla ilgilenmeyip sadece çıkış kodu ile ilgilenebiliriz. Bu gibi durumlarda aşağıda olduğu gibi ilgili aracın verdiği çıktıyı /dev/null’a yönlendirebiliriz.

Linux’ta Her Şey Birer Dosya 4 – 1 O BvpjCiHM9EMbbqrCIU6g1 1024x6101 1

/dev/zero dosyası okunmak üzere açıldığında, her okumada okuyan programa 0 – ASCII NUL karakterini verir ve bunu sonsuza kadar yapılabilir. Yani bu dosyayı sonsuz sayıda 0 içeren bir dosya gibi düşünebiliriz. /dev/zero’dan yapılan okumalar bir dosyaya yönlendirilirse istenen büyüklükte içeriği 0 olan bir dosya elde edilir. dd aracı dosyalar arasında dönüşüm yapmak için kullanılır. Aşağıda dd ile 1 GB’lık bir dosya oluşturulmuştur. bs (block size) parametresi dd’nin okuma/yazma işlemlerini kaçar byte ile yapacağını belirler.

Linux’ta Her Şey Birer Dosya 5 – 1 sXYwI Qzo6gY4AxfuZWxGg1 1024x6091 1

/dev/zero’nun bir kullanım alanı da dd’ye of – output file parametresi ile bir disk bölümünün (örneğin /dev/sda1) verilmesi ve partition içeriğinin  0’lar ile doldurulmasıdır. Bu sayede ilgili disk bölümündeki bütün veriler silinebilir.

Linux’ta Her Şey Birer Dosya 6 – 1 dm740 vMFa9 J1X0R9RZDA1 1024x6101 1

dd ile disk 0’lar ile doldurulsa bile bazı özel teknikler kullanılarak verilerin tutulduğu manyetik alandan diskte verinin daha uzun süre durduğu state öğrenebilmektedir. Bu sebeple disk içeriği temizleme için üreticinin sağladığı güvenli silme yöntemi tercih edilmelidir.

/dev/random dosyası ise her okumada okuyucusuna random bir karakter vermektedir. /dev/random rassallığı en üst düzeyde sağlayabilmek için device driver’lardan diskin dönüş hızı, ağdan paketlerin gelişi vb. parametreleri seed olarak kullanarak karakterleri üretir.

/dev/random dosyası rastsallığı garanti edecek yeterli entropy bulamadığında yeni bir karakter döndürmez ve okuyucuyu bloklar, bu da zaman zaman çok yavaş çalışmasına sebep olur. Alternatif olarak, eldeki entropy ile rassal sayı üretmek için /dev/urandom kullanılabilir.

Linux’ta Her Şey Birer Dosya 7 – 1 Hiam W7Y6np5KwGwHX10VA1 1024x6101 1

FUSE (File System User Space) ile çekirdek (kernel) seviyesinde kod değişikliği gerekmeden kullanıcı seviyesinde ihtiyaca uygun olarak dosya sistemleri geliştirilebilir. Örneğin GDriveFS aracı, Google Drive’da bulunan dosyalar lokal dosya sistemindeki bir klasöre mount edilip kullanılabilir. Benzer şekilde Wikipedia yazılarını okumak için WikipediaFS ve Amazon S3’teki bir bucket’ı sanki lokal dosya sisteminde kullanmak için de s3fs-fuse kullanılabilir.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir