Bilgisayar neden çöker?
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.
İşte bu makalemizde gerçekleşen bu sistem çökmelerinin altında
yatan sebepleri açığa çıkartıyoruz.
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.