Hepimizin korkulu rüyası “bilgisayarın çökmesi” durumu neden yaşanır? PC’ler neden çöker?
Bilgisayar kullanan herkesin başına gelmiştir, çalışırken, oyun oynarken, internette gezerken… Bir hata ekranı çıkar ve çalışan uygulama çöker. Ya da daha kötüsü, sistem çöker ve bilgisayarı baştan başlatmak zorunda kalırsınız. Yaptığınız şeyin bölünmesi bir yana, üzerinde çalıştığınız işte veri kaybedebilir veya oyunda güç bela geçtiğiniz bölümle baştan uğraşmak zorunda kalabilirsiniz.
Mavi ekran Windows tanıtımında Bill Gates’in bile başına gelmiştir. Hem de birden fazla defa! Özellikle ilk Windows sürümlerinde ya da diğer eski işletim sistemlerinde mavi ekran ya da hata mesajları bugün olduğundan çok daha sık gerçekleşir ve kayıplar da daha büyük olurdu. Günümüzde bu hatalar azalmış olsa da bitmiş değildir. Yepyeni, gıcır gıcır Windows 7 ya da Snow Leopard da çöker, Linux sürümleri de; kaçış yoktur.
Uygulamalar çakışırsa
Bir bilgisayarın çökmesinin sayısız farklı sebebi vardır. Sorun donanımda veya yazılımda olabilir.
En sık karşılaşılan sorun çalışan uygulamaların çökmesidir. Bu çökmelerin temel sebebi yazılımın kuralları uygulamaması ya da programcıların beklemediği bir durumun gerçekleşmesidir. Bunun en yaygın sebebi hafıza hatalarıdır. Kullanıcıların karşısına en sık çıkan hata “memory error”dür.
İşletim sistemi yazılıma kullanması için kaynak ayırır. Uygulama normal çalışırken bu mevcut hafıza limitleri dahilinde kalır ve genellikle sorunla karşılaşılmaz. Ancak yazılımdaki hatalar yüzünden ya da beklenmeyen bir durumla karşılaşıldığı için yazılım ek sistem kaynağına ihtiyaç duyabilir ve bu kaynağı kimseye sormadan kullanmaya kalkışabilir.
Yazılım kendisine ait olmayan hafızayı kullanmaya kalktığında, o hafıza bölümü başka bir yazılım tarafından kullanılıyorsa bir çakışma gerçekleşir. Yazılımlar verileri koydukları gibi bulamazlar ve alıp işlemeye kalktıklarına beklenmedik bir hata ile karşılaşarak çökerler.
Aslında uygulamaları çökerten işletim sisteminin kendisidir. İşletim sistemi bunu sistemi korumak için yapar ve etkileri kestirilemeyen durumları baştan engeller.
Yazılımlar yazılırken…
Beklenmedik durumlar yazılımı çökertebilir. Yazılım iyi bir istisna kontrolüyle (Exception handling) donatılmadıysa çöker.
Programcılar yazılımları hazırlarken, kullanıcıların sadece belirli veriler girmesine izin verir. Bu veriler yazılımın işleyebileceği türde komutlardır. Eğer kullanıcı yazılımın işleyemeyeceği türde bir veri girerse yazılım çöker. Kullanıcı, programcının beklemediği ve engellemediği ya da yazılıma bu durumla karşılaşırsa ne yapmasını gerektiğini söylemediği durumlarda gerçekleşen budur.
Eğer yazılımlar bu tür durumlarda çökmeseydi, sonuçta ortaya yazılım kilitlenip kalırdı veya yapmaması gereken şeyler yapar, sistemde garipliklere sebep olurdu. Bu durum da zaman zaman gerçekleşir ve kullanıcılar beklenmedik durumlarla karşılaşır.
Donmalar da bir çeşit çökmedir
Yazılımlar bazen donar, aslında bu da bir çökme çeşididir. Yazılım ekranda görünmeye devam etse de işlevini yerine getirememektedir ve kısılıp kalmıştır. Bu durumda işletim sistemine yazılımı zorla çökertmesi söylenebilir. Bu Windows’ta Ctrl-Alt-Delete tuşlarına aynı anda basılarak açılan görev yöneticisinden yapılır. İşletim sistemi durumu fark edip bir süre sonra otomatik olarak da yazılımı kapatabilir.
Çökmeler hemen hemen her gün yaşanan olaylardır ve en sık kullanılan uygulamalarda haliyle daha sık karşılaşmak mümkündür. Özellikle internet tarayıcılar pek çok beklenmedik durumla karşılaştıkları için sık sık çökerler.
Oyunlar da belirli ve kısıtlı bir zaman diliminde yetiştirilmeye çalışılan ticari yapımlar olduklarından açıklarla ve hafıza kullanım hatalarıyla doludurlar. İyi oyunlar elbette kolay kolay çökmez. Sorunlu oyunlar için de bu durumları düzelten yamalar çıkartılır.
Kernel çekirdeği ve hiyerarşi
Bazı hatalar sadece uygulamayı değil, bütün işletim sistemini çökertmeyi başarır. Bunun için kernel seviyesinde bir hata olması gerekir. Kernel bir işletim sisteminin çekirdeği ve en önemli parçasıdır. Donanım katmanının üzerinde kernel, daha sonra da soğanın katmanları gibi önem sırası azalan yazılımlar kaplıdır. Her biri birbiriyle ve diğer seviyelerle etkileşim içerisinde ve bir hiyerarşinin parçası olarak görevini yapar.
İlk işletim sistemlerinde çoğu işlem kernel seviyesine çok yakın çalıştığı için, oluşan küçük hatalar bile sistemi çökertebiliyordu. Günümüzde sistemlerin daha az çökmesini sağlamak için araya güvenlik ve istikrar sunan bir mesafe konuldu.
Artık uygulamalar daha yalıtılmış bir şekilde çalışıyor, bu da kernelin saçmalamasını ve çökmesini engelliyor. Örneğin Chrome internet tarayıcı, sekmeleri birbirinden yalıtılmış bir şekilde çalıştırıyor. Bu sayede bir sekme çöktüğünde internet tarayıcı bütün diğer sekmelerle birlikte çökmüyor.
Ekran kartı sürücüleri
Yazılımları yalıtmak, sürücülere göre daha kolay. Sürücüler, donanımın işletim sistemi tarafından tanınmasını ve işletim sisteminin gerekli işlemleri donanıma yaptırmasını sağlayan yazılımlardır. İşte bu yüzden işletim sisteminin çekirdeğinden uzaklaştırılamazlar. Sürücüler kötü yazılmışsa sistem tamamen çöker, uygulamalar saçmalar, performans sürünür; yani kötü olaylar olur.
İşletim sistemiyle uyumlu çalışan sürücüler test edilmiş ve imzalanarak onaylanmıştır. Ancak bu sürücüler de sorunsuz değildir; kolay kolay da olamaz. Çünkü programcılık çok detaylı ve zor bir iştir, yapılan hatalar kendisini kötü bir şekilde gösterir. İyi yazılmış sürücüler kolay kolay sorun çıkartmaz ve donanımın içerisinde bulunan komut setlerini verimli bir şekilde kullanarak performansa olumlu etkide bulunur.
Yeni sürücüler, yeni DirectX
Sürücüler içerisinde en karmaşık olanları işlemci sürücüleridir. Diğer donanımlar kısıtlı sayıda işlemle uğraşırken, ana işlemci pek çok işle uğraşır. Bu genişlik ve esneklik de daha çok soruna davetiye çıkartır.
Özellikle oyuncular ekran kartı sürücülerinden muzdarip olurlar. Ekran kartları, oyunları daha gerçekçi ve eğlenceli hale getirmek için pek çok ince detayla uğraşırlar. Bütün bu grafik detayların programlanması da epey meşakkatli bir iştir. Hataya oldukça müsaittir ve oyun piyasasındaki rekabet, programcıları diğerlerinden daha detaylı, daha iyi görünen oyunlar yapmaya zorladıkça işin çapı büyür. DirectX’in yeni sürümüne göre programlama yapmak, yeni şeyler öğrenmek ve kullanmak demektir, daha iyi grafikler hiç de kolay bir iş değildir.
Ekran kartlarında bulunan anti-aliasing, anisotropic filtering gibi sayısız özellik bu donanım için yazılan sürücülerin oldukça karmaşık olmasında pay sahibidir. Yeni oyunlarla birlikte ekran kartı sürücüleri de güncellenip durur ve sürümler arasındaki küçük farklar pek çok hatayı giderebildiği gibi, beklenmedik yeni hatalara da sebep olabilir.
Hata bildirimleri işe yarıyor
Günümüzde sistem çökmeleri işletim sistemi tarafından takip ve kayıt edilerek, geliştirici firmaya yollanıyor ve analiz ediliyor. Kullanıcının onayıyla gerçekleşen bu işlem sayesinde en sık karşılaşılan sorunlar ve buna sebep olan koşullar anlaşılarak bunlara karşın çözüm geliştirilebiliyor.
Çökmelerden sonra karşınıza çıkan hata bildirimleri bu açıdan çok önemli. Sorunların hızla çözülebilmesi için bunları yollamanız faydalı olacaktır. Yollanan bilgiler yazılımın çökmeden önce yaptığı işlem, kullanılan sürücü ve donanım gibi bir ton veri içerir.
Windows 7 geçmişte edinilen tecrübeler ışığında hafızanın durumunu takip ederek sorun olduğunda yazılımı yalıtıp çökmenin bütün sisteme yansımasını engellemeye çalışır. İşletim sisteminin çökmesi baştan engellenirse de durumun analizi daha kolay olur
Donanım sorunları ise bambaşka bir dünya
Çökmeler fiziksel donanım sorunlarından da kaynaklanabilir. Parçalar beklendiği gibi çalışmazsa durum yazılıma yansır ve ortaya ısrarla tekrarlanan sorunlar çıkar. Mesela içi toz dolu bir heatsink veya bozuk bir fan yüzünden aşırı ısınan ekran kartınız, ekranda garip şekiller çıkmasına sebep olabilir. Basit bir kısa devre yüzünden bilgisayarınız açılmayabilir.
Çok ilginç bir sebep ama kozmik ışınlar bile sistem çökmesine sebep olabilir. Ölçülmesi çok zor olan ve fark edilmeyen koşullar bilgisayarın çalışmasını etkilediğinde ortaya hatalar çıkar. Bu gibi durumların sebebini kestirmek imkansızdır. Mesela mutfak flöresanını yaktığınızda modemin bağlantısının kesildiğini şans eseri fark edebilirsiniz.
Modemin kapanıp açılma sebebi yüksek voltajdan kaynaklanan anlık bir elektromanyetik dalgadır. Ancak az önce belirttiğimiz gibi etkenleri anlamak her zaman mümkün olmayabiliyor.
Gelecekte ne olacak? Sistem yine çökecek mi?
Anlaşılması güç hatalar bir yana, makalemizde yazılım çökmelerinin temel sebebinin hatalı çalışan bir işlemin sonlandırılması olduğunu birlikte görmüş olduk. Uygulamalar insanlar tarafından yazılıyor ancak uygulamaları yazanlar insanlar değil başka uygulamalar çalıştıran makineler bile olsaydı, hatalar ve çökmeler yine olacaktı. Çökmelerin sebebi hatalar olmasına karşın, çökmeler sistemin kalanını koruyan bir mekanizma olarak çalışmaya devam edecek.
Peki bu hep böyle mi gidecek? İki ihtimal var, birincisi artan işlem miktarı yüzünden işler daha da karmaşık hale gelecek ve gelecekte çakışmalar ve sorunlar tekrar artacak. İkinci ihtimal ise sorunlar, yazılımların daha da iyi yalıtılması sayesinde iyice azalacak.
Donanımsal olarak da artan çekirdek sayısı sayesinde yazılımlar donanım bazında da yalıtılırsa güvenlik ve istikrar artacaktır. Ancak tek başına işlemcilerin çekirdek sayısının artmasından öte, işlemciye veri besleyen çevre birimlerin de darboğazları ve çakışmaları engelleyecek şekilde gelişmesi gerekiyor. Sürücüler ve uygulamalar da uygun bir şekilde hazırlanmalı.
Bu tür sorunlardan korumak için sanal bilgisayar kullanabileceğinizi ve bu konuda bir rehberimiz olduğunu da hatırlatalım.