Bölüm #9 – Kapatıp Açınca Düzelir mi?

Bölüm #9 – Kapatıp Açınca Düzelir mi?

Gerekli Detay Bölüm #9

Bölümü dinlemek için tıklayın.

EMEA bölgesinin en çok dinlenen 889’uncu podcast’i Gerekli Detay’a hepiniz hoş geldiniz.

Bölüm 9’a hoş geldiniz. Bugün tipik problem çözme yöntemlerinden “kapatıp açma” konusunu ele alacağız. Bilge bir arkadaşımızın dediği gibi, “Çözülemeyecek sorun yoktur, az restart vardır.” diyelim ve dizi önerisi verelim.

IT Crowd. Tatlı bir dizi. Bir şirketin IT departmanındaki elemanların nerd muhabbetleri ve genelde IT’ci tiplerin muzdarip olduğu problemler etrafında dönen güzel bir komedi. Bir de Silicon Valley var. Silikon Vadisi’nde yaşayan bir grubun başından geçen olayları anlatıyor. Bu da çok sevdiğim bir komedi.

Seçtiğimiz masaya, orası “rezerve” diyerek oturmamıza izin vermeyen insanları kınıyorum. “Domates ve maydanoz olmayacak” dediğimde bunu ikinci kez tekrar ettirmeyen insanlara ise teşekkürlerimi sunuyorum.

Bu bölümde de, tıpkı özgür yazılım bölümünde olduğu gibi, hardcore teknik bilgiden uzak durmaya çalışacağız. Çünkü gerçekten kapatıp açınca neden ve nasıl düzeldiğine dair derinlemesine teknik bilgi bende zaten yok. Fakat bu bölümde de birkaç gerekli detay yakalayacağınızdan emin olabilirsiniz.

Bilgisayar denildiğinde aklınıza pek çok farklı elektronik cihaz gelmeli aslında. Cep telefonu, tablet, oyun konsolu, çamaşır makinesi, bulaşık makinesi gibi şeylerin her biri aslında bilgisayar. Hatta alın size bir gerekli detay hemen. Telefona taktığınız SIM kart var ya. O küçücük şey. İşte o, tek başına zaten bir bilgisayar. Malumunuz, bilgisayarlar “kafayı yiyince” kapatıp açıyoruz. Çoğu zaman düzeliyorlar.

Bir bilgisayar, basitçe yazılım ve donanımdan oluşur. Donanımlar bir araya gelerek anlamlı bir bütün oluşturur. Örneğin sizin diskiniz, RAM’iniz, ekran kartınız, işlemciniz vs. birbirleriyle iletişim kurabilecek şekilde bir araya gelir. Elektriği verip cihazınızı açtığınızda, çalışmaya hazır bütün bir devre olur elinizde.

Yazılım ise, aslında bir bakıma elektriğin nereden nasıl akacağını yönetmenizi sağlar. Bu yönetim sayesinde, elektrik yükleri belirli yollardan belirli voltajlarda geçer. Bu da bizi o klasik konuya getiriyor işte. 0’lar ve 1’ler. Bilgisayarlar sıfır ve birlerle çalışır derken kast edilen aslında bu. Elektrik yükü var, yok diye diye Dust 2’de bomba kurabilir ya da double door’a sis atabilirsiniz.

Bu sıfır – bir olayını biraz açalım çünkü önemli bir nokta. Çok basit düşünelim şimdi. Bir anahtar var. Bir lamba var. Anahtarı açınca lamba yanıyor, kapatınca sönüyor. Böyle bir senaryo üzerinden gidelim. Elektrik yükü varsa lamba yanar, yani 1 olur. Yük yoksa lamba yanmaz, yani 0 olur. Bununla ne yapabiliriz? Mesela bir iletişim kuralı belirleyelim. Lamba açıksa, tuvalet dolu. Kapalıysa, tuvalet boş olsun. Bu sayede, eğer bu iletişim kuralını biliyorsak, lambayı kapalı gördüğümüzde tuvaletin boş olduğunu biliriz. Tabii bu noktada, tuvalet dolu olduğunda lambanın mutlaka yakılacağını, yani bunun asla unutulmayacağını, bu sistemin asla bozulmayacağını, elektriğin asla kesilmeyeceğini ön koşul olarak kabul etmemiz lazım.

Kısa bir bilgi daha. Bilişim dünyasında bu iletişim kurallarına “protokol” diyoruz. Cihazlar, pek çok protokolü biliyor. Aynı protokolü bilen cihazlar da kendi aralarında iletişime geçebiliyor. Diyelim ki Gerekli Detay’ın web sitesine girdiniz. Adresin başında HTTP yazıyor mesela. Ne bu? HyperText Transfer Protocol. Ya da duymuşsunuzdur, IP adresi diye bir şey var. Nedir o? Internet Protocol. Sizin bilgisayarınız da, size bu sitenin içeriğini gösteren bilgisayar da bunları ve ihtiyaç duyulan diğer protokolleri biliyor. O yüzden siz rahatlıkla “bana bu sitenin içeriğini göster” talebi gönderiyorsunuz, karşınızdaki bilgisayar da “tamam olur” diyor ve siz bu siteyi ziyaret edebiliyorsunuz.

Ne var şimdi elimizde? Açık ve kapalı. 1 ve 0. 2 farklı durum. Bu iki duruma göre, iki farklı sonuca varabiliyoruz. Bilgisayarlar binary sistemle ya da başka bir deyişle ikili sistemle çalışır falan gibi şeyler duyduysanız o da bu işte. Elektriğin varlığı ve yokluğu ile 2 durum belirtebiliyoruz. Bu, bilgisayardaki en küçük veri birimini gösteriyor bize. Yani bir bit’i ifade ediyor. Normal şartlar altında 8 bit, 1 byte. 1024 byte, 1 kilobyte, 1024 kilobyte, 1 megabyte yapıyor falan işte. Duydunuz bu kavramları daha önceden.

Değiştirelim durumu. Yeni bir lamba ve yeni bir anahtar daha ekleyelim. Kaç farklı durum olabilir? Birinci lamba açık veya kapalı olabilir. İkinci lamba da açık veya kapalı olabilir. Toplamda 4 farklı durum oluşturulabilir böylelikle. 0-0, 0-1, 1-0 ve 1-1. Bak, sisteme yeni bir bit eklediğimizde, 4 farklı durumu ifade edebilir hâle geldik.

Ne diyelim? Mesela lambalar kapalıysa, tuvalet boş. Birinci lamba açıksa, içeride bir kadın var. İkinci lamba açıksa, içeride bir erkek var. İki lamba birden açıksa, tuvalette temizlik görevlisi var ve şu an kullanamazsınız. Al sana dört farklı durum. Ortama 3. biti de eklersek, 2^3 yani 8 farklı durumu ifade edebilir hâle geliriz.

RGB diye bir şey duydunuz mu? Red, Green, Blue. Böyle 3 tane sayı bir araya geliyor, bir renk oluşuyor falan. Aynı mantık. Kırmızının 256 farklı tonu var elinde. 0 ile 255 arasında değer alıyor. Aynı şey yeşil ve mavi için de geçerli. Bunlar malumunuz, ana renkler. Ve bunları karıştırınca tüm renkleri ifade edebiliyorsunuz. Peki 2 üzeri kaç, 256 yapar? 8. Kırmızı tonu ifade etmek için 8 bit’imiz var. Yeşil ve mavi için de 8’er bit’imiz var. Toplam 24 bit. Önceden, Windows XP zamanlarında falan Paint’le uğraştınız mı hiç? Paint “bmp” uzantılı olarak kaydederdi varsayılan olarak. Açıklamasında da “24-bit eşlem resmi” yazardı. Al sana 24 bit işte, 3 kere 8 24. Gerekli Detay.

Özetle bit’in olayı bu. En küçük veri birimi. Ne kadar çok bit’iniz olursa, o kadar çok veriyi ifade edebilirsiniz.

Donanımlardan da kısaca bahsedelim. John von Neumann ve ekibi tarafından 1945’te bir mimari tanımı yapılıyor. Bu tanıma göre bir bilgisayarın tasarımında kabaca şunlar olmalı: Bir işlemci ve bunun içinde işlemden ve kontrolden sorumlu üniteler. Verileri ve talimatları içeren bir bellek. Harici bir depolama aygıtı. Girdi ve çıktı mekanizmaları.

CPU yani işlemci özetle; toplama, çıkarma, çarpma, bölme işlemlerini yapar ve karar mekanizmalarını çalıştırır. RAM yani bellek, az önce de belirttiğimiz gibi işlemlerle ilgili bilgileri ve programın çalışan kısmını tutar. Talimatlardan kasıt buydu. Harici depolama, sizin diskiniz. Girdi çıktı mekanizmaları da bilgisayar ile iletişime geçebilmenizi sağlıyor. Tabii bu mimariyi böyle anlatıp geçiyorum ama aman diyeyim. Çok detaylı bir konu bu. Ben anlatamam, bilmiyorum.

Peki. Diyelim ki bir program yapacağız. Ekrana “Gerekli Detay” yazsın. Bu kadar. Tek işi bu olacak. Şimdi bunu çoluk çocuk falan herkes yapıyor. Bunda bir numara yok. Peki nasıl yapıyor? Mesela, çift tıkladık bu programa ve çalıştırdık. Diskten nasıl okundu? Onu da geçtim diske ilk başta nasıl yazıldı ki? Peki yazılan kodu işlemciye kim gönderdi? Nasıl gönderdi? “Gerekli Detay” yazısını RAM’e kim, nasıl yazdı? Neresine yazdı? Görüntü ekrana nasıl çizildi? Bunlar çok önemli konular aslında.

Bir de şunu düşünün. Binbir çeşit işlemci var, RAM var, disk var. Farklı modellerin bir araya gelmesiyle milyonlarca kombinasyon oluşturulabilir. O program nasıl oluyor da bunların hepsinde çalışıyor? Her elektronik devrede tek tek çalışacak şekilde nasıl yazdılar bu programı? Böyle bir şey yapılmadı belli ki.

Burada da yardımımıza işletim sistemi koşuyor. Günümüzde yazılımlar, donanıma göre yazılmaz. İşletim sistemine göre yazılır. İşletim sistemi de çok derin bir konu. Ama klasik tanımıyla geçeceğim. Donanım ile yazılım arasında bir katmandır işletim sistemi. Aynı zamanda kullanıcı ile donanımın veya yazılımın iletişim kurmasını da sağlar.

Kafaları yakmayalım. İşletim sistemine hemen örnek veriyorum. GNU/Linux, Android, Windows, macOS, iOS. Bunların hepsi işletim sistemine örnek. Mesela sen fareyi hareket ettiriyorsun. Ekranda bir imleç hareket ediyor. İşletim sistemi sayesinde, sen bilgisayarın ile iletişime geçtin işte. Ya da telefonunda dokunmatik ekran var. Telefondaki işletim sistemi, senin ekrana yaptığın dokunuşları anlamlandırıyor. Bir kere dokununca bir şey oluyor, iki kere üst üste dokununca başka bir şey oluyor gibi.

İşletim sistemi, kullandığımız diğer yazılımlara kıyasla çok daha önemli bir yazılım. Mesela bu yayını dinliyorsunuz ya Spotify’da. Spotify yazılımı, işletim sistemine talep gönderiyor. Diyor ki network üzerinden bana şu verileri getirir misin? Getirdiklerini şuraya koyar mısın? Bunları şimdi hoparlöre gönderip ses çıkmasını sağlar mısın? Yani yazılım, aslında her zaman işletim sistemiyle konuşuyor. İşletim sistemi de donanımla konuşuyor ve süreç bu şekilde devam ediyor.

Özetle; senin programın diskte duruyor. Açmayı denediğinde tamamı ya da bir kısmı RAM’e getiriliyor ve bu program artık bir process yani işlem oluyor. İşlemci de RAM’den ilgili alanları okumaya ve çalıştırmaya başlıyor. Programla ilgili her şey RAM’e anında gelecek diye bir şey yok. Bu bilgisayarda aynı anda pek çok process çalışıyor çünkü. Kaynakların dengeli dağıtılması lazım.

Bununla ilgili güzel bir örnek verelim hemen. Mesela bir oyun oynuyorsun. Bölüm bitiyor. Bir sonraki bölüme geçerken “loading” yazısı görüyorsun. Ekranda bir ikon dönüyor falan. Neyi yüklüyor bu? Oyun zaten yüklü değil mi? Yüklü tabii, ama diskinizde yüklü. Şimdi ikinci bölümle ilgili veriler, gerek RAM’e gerekse ekran kartının belleğine getiriliyor. İşlemci, bunları okuyup çalıştırmaya başlıyor. Sen de bekliyorsun o sırada her şeyin hazır hâle getirilmesini.

Elimden geldiğince özetlemeye çalıştım bu kısmı. Ancak şunu rahatlıkla söyleyebilirim. Değil üniversitede bir dönem, bir ömür üzerinde çalışılabilecek konular bunlar.

İşte bu yapıdan dolayı, siz Android için ve iOS için ayrı ayrı uygulama indiriyorsunuz. Birinde çalışan, diğerinde çalışmıyor. Yani tutup iPhone’unuza, Spotify’ın Android versiyonunu pat diye koyup çalıştıramazsınız. iOS’a özel sürümünü indirmeniz lazım. Ya da mesela bir PlayStation oyun diskini alıp Xbox’a taktığınızda çalışmaz. İşletim sistemleri farklı çünkü.

Ama ne gibi bir kolaylığımız oldu? Sen artık kendi telefonuna ya da bilgisayarına özel bir yazılım aramıyorsun. Bakıyorsun işletim sistemine. Ben ne kullanıyorum? Linux. Tamam Linux için Spotify indirip kuruyorum o zaman. Bitti. Bilgisayarımın markası ne, modeli ne bunlar umrumda değil.

Buraya kadar bir şeyler anlaşılmıştır umarım. Bu kısmı biraz uzun tuttum çünkü mevzunun devamını, bunun üzerine inşa edeceğiz.

Şimdi elimizde çalışan bir bilgisayar var. Birincisi, bu bilgisayarın işletim sistemi de çalışıyor. Bundan eminiz. Yoksa zaten bilgisayarı kullanamazdık. Windows’un mavi ekranını düşünün. Ya da mesela bir şey oluyor, bir anda masaüstündeki bütün ikonlar kayboluyor. Fare ya da klavye çalışmamaya başlıyor. Burada belli ki işletim sistemi bir sorunla karşılaşmış. Sistem artık doğru çalışamaz hâle gelmiş. Bazı durumlarda, sıkıntılı bileşeni bulup yeniden başlatırsınız. Sorun çözülür. Bazı durumlarda bulamazsınız. Hatta bazı durumlarda, yeniden başlatmanıza bile imkân kalmaz.

Ne oluyor mesela telefonunuzda? Bir uygulama donup kalıyor. Sonra sistem size bir uyarı çıkarıyor. Bilmem ne uygulaması yanıt vermedi. Bekle, işlemi sonlandır vs. Bak işte. İşletim sistemin sorunlu parçayı bulmuş. Bu program çalışamadı. Olmadı bu iş. Bekleyelim mi yoksa öldüreyim mi diyor size. Kapat gitsin diyorsunuz. Süreç sonlanıyor. Tekrar açmayı deniyorsunuz. Önceki denemede yolunda gitmeyen şeyler, bu sefer yolunda giderse program sorunsuz bir şekilde açılıyor.

Tabii her program sizin gözünüzün önünde değil. Arkaplanda çalışan pek çok servis de var. Bunlar da sorun yaşayabilir. İşletim sisteminin kendisi de sorunlarla karşılaşabilir. Böyle durumlarda, eğer yapabiliyorsak, az önce verdiğim örnekteki gibi ilgili process’i sonlandırıp yeniden açmamız gerekebilir. Bu sayede, bir şekilde bozulmuş yapıyı tekrar düzeltmeyi deneyebiliriz.

Peki ya yapamazsak? İşte o zaman kapatıyoruz cihazı. Diskinizdeki veriler, elektrik kesintisi olsa da silinmez. Ancak RAM’deki ve işlemcinin ön belleğindeki veriler geçicidir. Yani elektrik kesildiği anda silinir, unutulur. Siz bilgisayarı kapattığınız anda, bellekleri boşaltıyorsunuz. Böylelikle, sorunlu duruma dair ne varsa ortadan kaldırmış oluyorsunuz. Sonra tekrar açtığınızda, bütün açılış süreçleri bir kez daha işletiliyor. İşletim sistemi yeniden başlıyor. Servisler yeniden başlıyor. Kullanmak istediğiniz programları tekrar açıyorsunuz. Hayat kaldığı yerden devam ediyor.

Cihaz açık olduğu sürece, işletim sistemi de ayaktadır, çalışır. Hadi bilgisayarınız neyse de, telefonunuz mesela. Günlerce açık kalıyor. Bu zaman diliminde, şayet işletim sisteminizin bileşenlerinde ya da arkaplanda çalışan servislerde bir problem olduysa, bir süre sonra bu sorunu siz de fark edebilirsiniz. Sonra da “öf bu yine kafayı yedi” durumu ortaya çıkar. Sonra kapatırsınız, açarsınız. Günlerdir açık olan her şey kapanmıştır ve yeni bir sayfa açılmıştır. Şayet bu sorunları tetikleyen kalıcı değişiklikler olduysa diskinizde, işte o zaman ne yaparsınız? Format atarsınız.

Gerçek hayatta da böyle aslında. Her gece uyuyoruz. Bir hastalığımız, rahatsızlığımız varsa daha çok uyuyoruz. Eminim ki şu duruma daha önce düşmüşsünüzdür: “Ben pek iyi değilim. Uyumam lazım.” Uzun bir uykudan sonra uyanırsınız ve kendinizi çok daha iyi hissedersiniz. Sistem kapatılır. Tükettiğiniz kaynaklar sizden alınır. Duyu organlarınız işlevlerini büyük ölçüde kaybeder. Hiçbir şey yemez içmezsiniz. Vücut kendini toparlar ve yeniden başlar. Ancak tedavi gerektiren bir durumunuz varsa, uyuyup uyanarak bunu düzeltemezsiniz.

Yani sizin anlayacağınız, söz konusu bilgisayarınız ise, bir kapatıp açmayı deneyin. Düzelebilir. Şayet kendi sağlığınız söz konusuysa, tedbiri elden bırakmamak gerekir.

Gelecek cuma saat 19:28’de tekrar görüşmek dileğiyle. Hoşça kalın.

Bir Cevap Yazın