Pazar, Ekim 05, 2008

sürücülerle nereye kadar!

macbook'ta debianı adam etmeye çabaladığım şu sıralar bir kez daha kendimi sürücülerle boğuşurken buluverdim. askerliğim boyunca uğraştığım TSK'nın win2k bilgisayarları sağolsun; karşılaştığım türlü dertler, ticari bir işletim sistemi tercih etsen bile bu sürücü belasının kurtulamayacağın bir illet olduğunu bir kez daha hatırlatmış oldu bana.

herşeyden önce anlamadığım, insanoğlunun bilgisayarını başka bir şirketten, işletim sistemini başka bir şirketten almaya nasıl ikna olmuş olduğu. adam bir donanım satıyor ve bu donanımın başka bir şirketin ürettiği yazılım olmadan hiçbir anlamı yok. sadece bilgisayarlar değil, örneğin bir ağ kamerası aldınız, bunu kullanabilmek için bir bilgisayarınızın, bir de sorunsuz calışan bir işletim sisteminizin olması gerekiyor (ki bu sıradan bir windows kullanıcısı için kurulumdan sonraki 3-4 aya tekabül ediyor, sonrasında sistem çatırdamaya başlıyor), belki o zaman ağ kameranız size hizmet vermeye lütfedebilir, tabi o da üreticiler kullandığınız işletim sistemi için bir sürücü yazmışlarsa.

bence bu işler bir noktada yanlış bir yola sapmış, IBM'in PC standardını serbest bırakması bir kırılma noktası olabilir. herşeyden önce cihazlar çalışmak için neden dış bir işletim sistemine ihtiyaç duyuyorlar, neden kendi işletim sistemleri kendi üzerilerinde gelmiyor?

unix, ilk zamanlarda dosya yönetmekten başka bir amacı olmayan bir sistem, ve günümüz işletim sistemleri bu sistem üzerine oturtulmuş durumda. unix'te birinci kural "herşey bir dosyadır.", yani bilgisayarınıza taktığınız ethernet arabirimi de, ağ kamerası da sistem için birer dosyadan başka bir şey değildir. çıkış için dosyaya birşey yazılır, giriş için dosyadan birşeyler okunur. cihazlarin sürücüleri de bu dosyaya yazma-okuma işlemlerini cihazın anlayacağı dile tercüme eder. yani aslında bilgisayar dediğimiz şey iki kavramdan ibarettir: "giriş-çıkış", "kodlama-çözümleme". 1900'lerde de bu böyleydi, 3000'lerde de bu böyle olacak.

ama umarım 3000'lerde hala sürücülerle uğraşıyor olmayız. yıl 3000'de bir uzay gemisine bindiğimde yanımda getirdiğim bir aygıtı kullanabilmek için uzay gemisi bana sürücü CDsi sorarsa o gemiyi yakabilirim.

neyse ki şu sıralar bell labs plan9 projesi ile unix'te sapılan "herşeyi dosyaya benzetme" yolundan dönme çabası içerisinde. yeni işletim sistemi için model olarak internet seçilmiş. bu da insana gelecek için biraz umut aşılıyor.

herhangi bir donanımı çalışır hale getirmek bir adsl modemi çalışır hale getirmekten daha zor olmamalı, gerekli bağlantıları yaptıktan sonra tarayıcımdan bir adrese girmeliyim ve karşıma ayarlar sayfası çıkmalı, gerekli ayarları yaptıktan sonra cihaz çalışır hale gelmeli.

bir uzay gemisindesiniz, evdeki sevdiklerinize son halinizin fotoğrafını göndermek istiyorsunuz, ve çevrenizde bir sürü akıllı aygıt var, bu aygıtların aklında da sadece 2 soru var: "girdileri nereden alacağım?", "çıktıyı nereye vereceğim?". kodlama-çözümleme ile ilgili soruların cevapları doğumlarında veya sonradan, donanım veya yazılım olarak beyinlerine kazınmış durumda. sizin ihtiyacınız olan bir ağ kamerası, fotoğrafı kaydetmek için bir dosya sunucusu ve mesaj göndermek için bir e-posta sunucusu.

ve şimdi kullanacağınız aygıtların sorularına cevap verelim:

ağ kamerası ayar sayfasında: görüntü dondurulduğu anda çıkışını dosya formatında, şu ayarlarda şu adresteki dosya sunucusuna gönder, girişin şu klavye üzerindeki şu kısayollar; şu kısayolda görüntüyü dondur, şu kısayolda görüntü akışına devam et.

dosya sunucusu ayar sayfasında: girişinde şu ağ kamerasından akan verileri kabul et, şu adrese şu dosya ismiyle kaydet ve şu e-posta sunucusuna şu ayarlarla gönder.

e-posta sunucusu ayar sayfasında: girişinde şu dosya sunucusundan akan verileri kabul et, transfer tamamlanınca çıkışın şu eposta adresi.


eğer fotoğrafın kaydını tutmak istemiyorsanız o zaman dosya sunucusunu hiç kullanmayabilirsiniz, ağ kamerasını doğrudan e-posta sunucusuna bağlayacak şekilde ayarlarınızı değiştirmeniz yeterli olacaktır.

ama ne yazık ki günümüzde bu tip ölçeklendirmelere gitmek, kolayca bileşen değişikliği yapabilmek çok mümkün değil. çünkü ürettiğimiz aygıtların bir PC olmadan bir anlamları yok, PC'lerin efendi diğer aygıtların köle olduğu bir düzende yaşıyoruz, elimizdeki cihazı ancak PC'mizin gücünün izin verdiği ölçüde kullanabiliyoruz. halbuki iş paylaşımı ve haberleşmeye dayalı bir tasarım üzerine ilerlenmiş olsa, her cihazı çalıştığınız sistemden bağımsız olarak gerçek gücünde kullanmak mümkün olacaktı, belki de işletim sistemi diye birşey olmayacaktı.

sun'in vizyonunda da söylendiği gibi "ağ demek bilgisayar demek!", inşallah.

4 yorum:

  1. "Plan 9 is most notable for representing all system interfaces, including those required for networking and the user-interface, through the filesystemrather than specialized interfaces." diyor wikipedia.

    YanıtlaSil
  2. aklında da sadece 2 soru var: "girdileri nereden alacağım?", "çıktıyı nereye vereceğim?". kodlama-çözümleme ile ilgili soruların cevapları doğumlarında veya sonradan, donanım veya yazılım olarak beyinlerine kazınmış durumda

    Hımm, bu tam da sürücü tanımı değil mi?

    YanıtlaSil
  3. aslında sorun da bu, şu anda bu soruların cevapları sürücülerde saklı, bence bu cevaplar cihazların beyninde olmalı, yani her cihaz üzerinde kendi işletim sistemi ile gelmeli.

    her cihaz birer web servisi gibi olmalı, yayınladıkları wsdl'ler aracılığıyla ne istediğini ve karşılığında neler verebileceğini söyleyebilmeli. web servisi mantığında istemcinin hangi programlama diliyle yazıldığının veya hangi sistemde koştuğunun bir önemi yoktur, tek yapması gereken wsdl'da belirtilen formatta bir soap mesajı yaratıp, boşlukları elindeki verilerle doldurduktan sonra http mesajı olarak sunucuya gönderip, dönen http mesajını yine wsdl'da belirtilenlerin ışığında çözümlemektir.

    wsdl'lar sayesinde kodu gerçek zamanlı biçimde otomatik olarak oluşturmak da mümkün. yani önceden yazılmış bir kod olmadan işleyen bir sistem yaratabilirsiniz.

    bir web servisi istemcisi, sunucunun ne yaptığı ile ilgilenmez, sadece elindeki bilgiyi sunucuya gönderir ve karşılığında söz verilen veriyi bekler.

    sürücüler ise sunucunun işine burnunu çok fazla sokan istemciler gibi, çünkü wsdl'da sunulan bilgileri sürücünün içine gömmüş oluyoruz.

    YanıtlaSil
  4. şu 9P protokolü belgesinden alıntı:

    "system calls operating on files are translated into requests and responses transmitted on the connection to the appropriate service."

    aslında plan9 da herşeye dosya muamelesi yapmaya devam ediyor ancak bu sefer işin altyapısı tamamen istemci-sunucu mimarisi üzerine oturtuluyor. böyle bir dosya sisteminin varlığı önemli, bence çıkmaza girilen nokta plan9'un da hala aygıt yönetmeye çalışması, halbuki sadece dosya yönetse kafi.

    bir cihazın büyük kardeş rolüne bürünmesi bana ters geliyor, yukarıda verdiğim örnekte olduğu gibi fotoğraf çekebilen bir cihazı eposta gönderebilen bir cihazla beraber kullanmak için PC gibi bir büyük kardeşe ihtiyaç olmamalı.

    YanıtlaSil