Invalid Opcode "Paranoia is the belief in a hidden order behind the visible" — The Pi Moive

3Nov/0910

Linux ve Exception Handling

Tabii ki, her zaman olduğu gibi linux neden "plansız yapılaşma"'nın pc kanadı olduğunu bir kez daha gösteriyor. Linux'de SEH olmadığı gibi yerine geçecek hiçbir şeyde yok. Kısaca dedikleri bir program ya hatasız çalışır yada hiç çalışmaz. Microsoft'daki insanlar iyi ki fuzzy logic'i linux'dekiler önce görüp hatalı programlara kendi hatalarını telafi etme şansı vermişler.

Bu bitirme bittiğinde muhtemelen linux için bir SEH yazacağım.

Comments (10) Trackbacks (0)
  1. Linux’da SEH yok derken neyi kastettiğinizi tam anlayamadım. SEH bir programlama dili özelliği, kernel ile ilgisi yok.
    C++, C# (Mono), Python gibi Linux altında derleyicisi olan dillerde, desteklenen bir özellik.

  2. Aksine bir kernel özelliğidir. Mesela Linux’de C++ ile kod yazarken SEH yoktur. Linux ne yapıyor ? Signal’im var diyor. O da C++ gibi C gibi dillerde sadece güvenli sonlanmayı sağlıyor. Program devam edememiş oluyor. Diğer söyledikleriniz ise zaten script dilleri olduğu için istediklerini yapabilirler hatta onlarda aslında SEH gerektiren bir durum bile oluşmayabilir çünkü yorumluyor adam.

    Örneğin linux user mode programcılara “FS sizindir istediğiniz gibi oyayın” dese, hemen kendi SEH’imizi yazabilirdik. Tabii bu durumda kütüpanelerde programlar arasında inanımaz çakışmalar olurdu o da ayrı mesele.

  3. Linux için SEH yapısını sağlayabilecek olan şey sigaction’dır.

    Sonuçta Windowsda exception dediğiniz şey Linux dünyasında signal’dir ve signalleri handle etmek için ise son derece gelişmiş bir altyapı sağlar.

    Bunları ise sigaction ile handle edersiniz ve böylece SEH dediğiniz şeyi Linux dünyasında yakalamış olursunuz.

    “Linux’de SEH olmadığı gibi yerine geçecek hiçbir şeyde yok. ” gibi iddialı cümleleri ise biraz daha Linux hakkında bilginiz olduğunda söylemeyeceğinize eminim.

  4. Malesef windows’daki exception ile linux’deki signal farklı şeylerdir. Signal’in windows’daki karşılığı user mode apc’lerdir. Signalleri aldımızda SEH falan elde etmiş olmayız. Yazımı okursanız farkı göreceksiniz.

    Aslında bu olay rocket science’da değil yani biraz windows’un dökümantasyonunu okuyan “under the hood” köşelerini karıştıran her hangi biri bunların arasındaki farkı görebilir.

    Linux bilgilme gelince sanırım ürettiğim şeyler ve blog’umdaki yazılar ortaya koymaktadır.

  5. “Tabii ki, her zaman olduğu gibi linux neden “plansız yapılaşma”‘nın pc kanadı olduğunu bir kez daha gösteriyor.”

    Plansız derken neden bahsediyorsunuz biraz daha açabilir misiniz bunu?

  6. Sıfır dökümanstasyon ve büyük bir kod yığını. hiçbir şeyin standartı yok örneğin bir driver yazıyorsunuz istediğiniz gibi takılabilirsiniz ve sonucunda diğer insanlarda “istedikleri gibi” takılırlar netice ne olur ? A’de çalışıp B’de çalışmayan sürücüler.

    Linux’e driver’a yazmak için kitap arayın bulamayacaksınız. 1-2 tane abuk kitap var onları saymayın çünkü acpi ara yüzü gibi basit şeylere bile nasıl ulaşacağınızı anlatmıyorlar (Burada ulaşamazsanız USB bir aygıt yazamazsınız).

    Modüler sistem ? öyle bişi yok. :D :D lkm’ler sadece sizi kolayca kernel moda ulaştırıp bırakıyor.

    Şimdi Windows’un Driver Modeline bakın. Eklenen her şeyin her fonksiyonun tekniğin altında bir sebeb var. Bu yüzden bu kadar modüler. PnP mekanizması pürüzsüz.

  7. Alıntı:
    Linux’e driver’a yazmak için kitap arayın bulamayacaksınız. 1-2 tane abuk kitap var onları saymayın çünkü acpi ara yüzü gibi basit şeylere bile nasıl ulaşacağınızı anlatmıyorlar (Burada ulaşamazsanız USB bir aygıt yazamazsınız).

    Evet, çünkü “Geometri bilmeyen giremez!” Siz neden hiç bir teknik makaleyi kamuya açık yayınlamıyorsunuz?

  8. Ancak “Geometri bilmeyen giremez!” ile ilgisi yok neden derseniz zaten driver kitabından donanım standartlarını anlatmasını beklemiyorum. Sağlamalarını böylece A’nin yazdığı ile B’nin yazdığının çakışmamasını bekliyorum.

    Ben yayınlamıyorum çünkü sizin dediğiniz gibi “Geometri bilmeyen giremez!” 2 sebebten 1.’si herkesin c&p yapması, 2.’si konu hakkında en ufak bir fikri bile olmayan zealotlarla uğraşmak.

  9. Şu, insanların konularla ne kadar alakalı ya da alakasız olduğu mevzusuna bu kadar kafayı takmamış olsanız çok daha iyi olacak kanaatimce.

    Farkedemediğiniz ya da egonuz izin vermediği için bilmediğiniz şey, bilgi yarıştırmanın çokta doyurucu, sizi zevklerin en tepesine oturtacak kadar iyi birşey olmadığıdır.

    Kimse cihan alimi, yarmış yalamış yutmuş değil, herkes birşeylerin peşinde çalışa çalışa birşeyler öğreniyor. Siz linux ne kadar çarpık bir yapı vs. derken, onun ve onun gibi felsefelerin açtığı yollardan büyük oranda istifade ettiğinizi hemen unutuyorsunuz. Yaşınız belki müsait değildir ya da ilgi alanınıza girmiyordur bilemem ama MSDN dediğiniz şey ilk çıktığı günlerde bu kadar özgür döküman deryası değildi, herşey için yıllık para ödüyordunuz. Bilgi demek herşey için para demekti bir zamanlar.

    Veyahut atıyorum herhangi bir donanımın çalışma prensipleri ya da veri iletişimi temellerini anlatan bir açık kaynak makaleye, örneğe hemen ulaşabiliyorsunuz. Bugün bilgi gerçekten el altında, önceden bu böyle değildi. Microsoft gibi firmalara kalsaydı sonsuza kadar da öyle olacaktı.

    Ama nedir GNU diyoruz, bilginin paylaşılması, kodun okunabilmesi diyoruz vs. vs. bunlar çok ama çok değerli şeylerdir. Arabın yağı bol bulduğunda yaptığını biz bilgiye yapmayalım, ayıptır.

  10. Tabii ki bazı yönlerden haklısınız.


Leave a comment


No trackbacks yet.