Bilgisayar Nedir ve Nasıl Çalışır?

Ertan Öztürk
9 min readOct 23, 2020

--

İster bildiğimiz anlamdaki cihazlar olsun, ister mobil olsun (ki pek çok insan akıllı telefon, tablet gibi cihazların aslında bir bilgisayar olduğunu bilmiyor) bilgisayarlar günlük hayatımızın vazgeçilmez bir parçası oldu. O kadar ki bir şekilde etrafımızda olmadıklarında ciddi eksiklik hissediyoruz ve bu bağımlılığımız artık bir hastalık olarak kabul ediliyor. Ancak kullandığımız pek çok cihazın aksine bilgisayarın aslında ne olduğunu, ne yaptığını, nasıl çalıştığını pek azımız biliyoruz. Bunun sonucunda da bu cihazları ezbere, çoğu zaman neyi niye yaptığımızı bilmeden kullanıyoruz ve bilgisayara istediğimiz bir şeyi yaptıramadığımızda ne yapacağımızı bilemiyoruz. Bazen yaşadığımız sorunu bir başkasına anlatamıyoruz bile.

Bu yazıda bilgisayarların ne olduklarını, nasıl çalıştıklarını sizlere somutlaştırarak anlatmaya çalıştım.

Bilgisayar Nedir?

Bilgisayarlar temelde bizim onlara ilettiğimiz verileri, onlara söylediğimiz şekilde işleyerek sonucu bize ileten ya da saklayan cihazlardır. Ürünleri biz veriyorsak ve neyi nasıl yapacağını yine biz anlatıyorsak, o halde bilgisayara ne gerek kalıyor ki sorusunun cevabı ise bilgisayarın sahip olduğu işlem yapabilme hızıdır. Örneğin bugün sahip olduğunuz bilgisayarın 3GHz bir işlemcisi varsa o cihaz saniyede 3 milyar işlem gerçekleştirebiliyor diyebiliriz. Ayrıca bunu da hiç hata olmaksızın gerçekleştiriyor. Bu bir insanın hiçbir zaman sahip olamayacağı bir yetenek. Bilgisayarın icadının altında yatan sebep de zaten insanların yapacakları hesaplamaları çok daha hızlı yapma istekleridir.

Bilgisayarın Tarihi

İlk bilgisayarın ne olduğu ile ilgili farklı görüşler bulunmakta. Bir kesim ilk bilgisayarın ilkokul birinci sınıfta hepimizin haşır neşir olduğu abaküs olduğunu savunurken diğer bir kesim pascal’ın babası için geliştirdiği mekanik bir hesaplama aracını ilk bilgisayar kabul eder. Arada başka mekanik araçları da bilgisayar kabul edenler olsa da, benim de içinde bulunduğum başka bir kesime göre ilk bilgisayar ENIAC’dır.

Mühendislik alanındaki ilerlemeler çözülmesi zor ve zaman gerektiren hesaplamaları da beraberinde getirdi. Buna bir örnek de Amerika’nın II. Dünya Savaşı’nda yaşadığı sıkıntıydı. O dönemde 60 saniye yol alan bir topun rotasını hesaplamak için bir ekibin 20 saat kadar mesai harcaması gerekiyordu. Amerikan Ordusu bu süreyi kısaltacak ve daha isabetli atışlar yapılmasını sağlayacak bir yol bulmaları için 1941 yılında Pennsylvania Üniversitesi’nden gizli bir çalışma yapmalarını istedi. Yapılan çalışmalar 1947 yılında tamamlandı ve ENİAC tanıtıldı. Tabi bu süreçte savaş bitmiş, böyle bir makineye ihtiyaç da kalmamıştı. ENIAC hava tahmini hesaplamaları gibi farklı amaçlarla kullanılmaya başlandı. Ülkemize gelen ilk bilgisayar da benzer bir amaçla, yol hesaplamalarına yardımcı olması için 1961 yılında karayolları genel müdürlüğü tarafından getirtilen bilgisayardı. Yani bilgisayarların insanlık tarihine girişi bugün bizim ona ihtiyaç duyduğumuz alanlardan çok farklı nedenlerden olmuştur.

30 ton ağırlığındaki ENIAC 167 m2’lik alan kaplıyordu (Bugün pek çok aile bundan daha küçük bir alanda yaşıyor). Bugün alışık olduğumuz monitör, klavye, Mouse gibi donanımları yoktu. Bunun yerine elle takıp çıkarılan fişler, değiştirilen kablolar (yaklaşık 6000 kadar kablo) ve düğmelerle kullanılıyordu. Bunun için de operatör adı verilen 6 kişi gerekiyordu. Yetenekleri ise dört işlem, karekök ve eşitlikten (bugün kullandığımız en basit hesap makinesinin yetenekleri) ibaretti. Ancak bugün çok ilkel görünen bu cihaz sayesinde yukarıda anlattığım top rotası hesabı 20 saatten 15 saniyeye düşebiliyordu.

Geçen zaman içinde bilgisayarlar gelişerek, hem işlem gücünde artış, hem de boyutlarında küçülme olsa da hala ciddi boyutlarda yer kaplıyor ve hala kullanmak için bir operatöre ihtiyaç bulunmaktaydı. Ancak bilgisayarla iletişim kurma açısından büyük bir gelişme yaşanmıştı. Artık bilgisayara bir iş yaptırmak için fişlerle, kablolarla vs gerek kalmıyordu. Punch Card adı verilen bir karta delikler açarak ve sonrasında bu kartları sıralı bir şekilde bilgisayara okutarak istenilen işlem bilgisayara anlatılabiliyordu. Tabi bu işlem için de bir evrensellik söz konusu değildi. Her bilgisayar modelinin yapısı farklı olduğundan hazırladığınız bir punch card’ı tüm bilgisayarlarda kullanmak mümkün olmuyordu. Bilgisayarın kitapçığına göre kartı düzenlemek gerekiyordu. Dünya üzerindeki bilgisayar sayısı sınırlı olduğu ve bilgisayara ulaşmak ciddi lüks olduğu için bu durum pek sorun teşkil etmiyordu.

Terminallerinin ortaya çıkması ile bilgisayar ile iletişim kurmak ciddi anlamda kolaylaşmış olmakla birlikte, bilgisayarların görüntüsü şu an zihnimizde canlanan bilgisayar görüntüsüne daha da yaklaşmıştır. Terminal olarak adlandırdığımız kavram, bugün de aşina olduğumuz, bilgisayara veri girişi için kullanılan klavye ve sonucun bize iletildiği ekrandan oluşan donanımdır. İlk başlarda ekran yerine bir yazıcı kullanılıyordu ve terminaller çok yavaş çalıştığından, punch card’lara göre çok fazla tercih edildiği söylenemezdi. Bu donanımların gelişmesiyle terminaller punch card’ların yerini almıştır.

1970’lerin ortalarına geldiğimizde o dönem için çok çılgınca olan kişisel bilgisayar (PC) fikri doğdu. Teknik olarak kişisel bilgisayar olarak ilk üretilen cihaz 1975 yılında piyasaya sunulan Altair 8800 olsa da bu ürünün bir klavyeye ve ekrana sahip olmaması sebebiyle bir kesim ilk kişisel bilgisayar olarak IBM’in aynı yıl ürettiği IBM PC’yi ilk kişisel bilgisayar olarak kabul ederler. 1976 yılında Steve Jobs ve Steve Wozniak’ın ürettiği Apple I de ilk üretilen kişisel bilgisayarlar arasında yer almaktadır. Adından da anlaşıldığı üzere bilgisayarlar artık operatör adı verilen, mesleği bilgisayar kullanmak olan özel eğitimli insanlar yerine sıradan insanların kullanması için üretiliyordu. Tabi uzun bir süre bilgisayar oyunu oynamak dışında sıradan insanların bilgisayara ihtiyacı olmadı. Bilgisayar daha kolay ulaşılabilir olsa da halen iş için kullanılan bir cihazdı.

Bilgisayarın bugün hayatımızdaki yerine gelmesi için ilk adım kişisel bilgisayarların üretimi olsa da, asıl en büyük adım Tim Berners-Lee’nin World Wide Web ve HTML işaretleme dilini yaratmasıyla gerçekleşti. Bu sayede bugün hala kullandığımız web sitesi kavramı hayatımıza girmeye başladı. Artık bilgisayar o güne kadar yapabildiği işlerden başka bir işe daha yarıyordu.

Bilgisayar artık çok işe yarıyordu ama hala evde ya da işteyken kullanılıyordu. En son kırılma noktası ise mobil cihazlar dediğimiz akıllı telefon ve tabletlerin sahneye çıkmasıyla yaşandı. Artık bilgisayar hep yanımızdaydı.

Bilgisayar Nasıl Çalışır?

Pek çoğunuz bilgisayarların 1’ler ve 0’larla çalıştığına dair bir şeyler duymuştur. Evet, bilgisayarların anlayabildiği tek bir dil var ve o da makine dili dediğimiz binary (ikili) sistemde sayılardan oluşan bir dildir. Tabi bu bir tercih sebebi değil. Bir insanın işlem yapabilme kabiliyetinin kat kat üstünde bir cihaza neden bize daha yakın bir dil kullandırmak yerine bu ilkel sistemi kullanıyorsunuz gibi mantıklı bir soru sorabilirsiniz. Gerçekte bilgisayarın içerisinde 1’ler ve 0’lar dahi yok. Biz bu iki sayıyı olayı daha somutlaştıracak bir sembol olarak kullanıyoruz. Örneğin bilgisayarınızın içerisindeki veri iletilen herhangi bir kablodan 3 ile 5 volt arası bir elektrik akımı geçtiğinde biz o anlık veriyi 1 kabul ediyoruz. Aynı kablodan 0 ile 2 volt arası bir elektrik akımı geçerse de 0 kabul ediyoruz. Kullandığınız CD ya da DVD’nin herhangi bir noktasında lazer ile bir çukur açılırsa o noktadaki veri 1 kabul edilir, herhangi bir işlem yapılmazsa o veri 0’dır. İnternet hattı için kullandığımız fiber kablolarda ışık olduğu an 1, olmadığı an 0’dır.

Peki dünyamızda olan her şeyi nasıl olup da 1 ve 0’a indirgeyebiliyoruz? Bu konu aslında çok kolay olmakla birlikte, sadece alışkanlıklarımızın dışında bir şekilde gerçekleşiyor. Günlük iletişimizi 29 harf, yani 29 işareti kullanarak gerçekleştiriyoruz. Ancak hepimizin varlığını bildiği, sadece 2 işaretten oluşan bir dil var, mors alfabesi. Bu da bize gösteriyor ki, varolan şeyleri bir şekilde yazıya dökebiliyorsak, bu yazıları da pekala sadece iki simgesi olan binary sistemiyle anlatabiliriz. Bu durumun farklı birkaç yapıda nasıl gerçekleştiğini inceleyelim.

Sayılar için taban aritmetiğini matematik dersinden hatırlarsınız. Biz günlük hayatımızda decimal yani 10’lu tabanda işlem yapmaya çok alıştığımızdan diğer sayı tabanları bize çok zor geliyor ama aslında bu tamamen kendi alışkanlığımızdan kaynaklı. Bildiğimiz üzere her bir basamak 0’dan başlar ve taban sayısının 1 eksiğine kadar olan sayıları bu basamakta gösterebiliriz (yani 10’lu tabanda bir basamağa yazabileceğimiz en büyük sayı 9 olabiliyor). Basamağa yazabileceğimiz en büyük sayıya 1 eklemek istediğimizde basamağımızı tekrar 0 yapıp, soldaki ilk basamağı 1 arttırıyoruz. Kullandığımız 10’lu sayı sisteminde 9’dan sonra 10’un gelmesinin matematiksel açıklaması bu. Şimdi bu kuralı 2’li sayı sistemine uygulayalım. 0 tüm sayı sistemlerinde evrenseldir. 2’li yani binary sayı sisteminde 0’a 1 ekleyerek devam edelim. 0’a 1 eklediğimizde sayımız 1 oluyor ve ilk basamak için üst sınıra ulaşmış oluyoruz. Yeni sayımız olan 1’e 1 eklediğimizde yukarıda belirttiğim matematik kuralına göre sayımız 10 oluyor. Bu sayıya da 1 eklediğimizde yeni sayımız 11 oldu. Ona da 1 eklediğimizde yeni sayımız 110 oluyor ve bu süreç böyle devam ediyor. Bu bilgiyle decimal sistemde 45 sayısını binary sistemine çevirmek istediğimizde 101101 sayısını elde ediyoruz. Bu sayılardaki her bir haneye biz bit diyoruz. Örnek verdiğimiz 45 sayısını binary’ye çevirdiğimizde 6 bitlik bir veri elde ediyoruz. 8 bit’lik bir veriyi 1 byte, 1024 byte’lik bir veriyi kilobyte, 1024 kilobyte’lık bir veriyi megabyte, 1024 megabyte’lık bir veriyi gigabyte olarak adlandırıyoruz ve bu böyle devam edip gidiyor. Dikkat ettiyseniz birimler hep 2’nin kuvveti şeklinde düzenleniyor. Bunun nedeni bilgisayardaki her şeyin binary yani 2’li sistem temelli olması.

Bilgisayarlar bize verileri yazabilmemiz için belli bir bit’lik boş alanlar verir. Bu durumu optik form doldururken numaramızı yazdığımız alan gibi düşünebilirsiniz. 8 kutucuk olan bir alana 4 haneli numaramızı yazmak istediğimizde şöyle bir ibareyi dikkate almamız gerekir: “numaranızı başına 0 ekleyerek 8 haneli olacak şekilde yazınız”. Bilgisayarlar da aynı bu şekilde ayırdığı alana verdiğimiz bilgiyi başına 0 koyarak yerleştirir. Yani 8 bitlik bir sistemde 45 sayısını 00101101 şeklinde alır ve paketler. Veriyi bu paket halinde alır, bu şekilde işler, bu şekilde taşır ve bu şekilde saklar. Adresleme dediğimiz şey aslında budur. Bu durumda 8 bit’lik bir sisteme ait bir işlemcinin bir seferde 8 bit’lik verileri işleme sokabileceği sonucuna ulaşabiliriz. 32 bit’lik işlemcilerle 64 bit’lik işlemciler arasındaki temel farkı ve 64 bit işlemcinin nasıl bir avantaj sağlayacağına bu bilgiden ulaşabilirsiniz.

Sayıları binary’e çevirmek ve üzerine işlem yapmak konusu biraz daha akla yatkın görünüyor. Bir sayıyı başka bir sayıya çeviriyoruz ne de olsa. Peki görseller nasıl binary sisteme dönüştürülüyor? Dijital sistemlerde resimler piksel adını verdiğimiz, tek renkten oluşan küçük noktalardan oluşuyor. Bu küçük parçalar görüntü kalitesi daha az olan eski cihazlarda ya da bir fotoğrafı normalden fazla büyütmeye çalıştığınızda karşınıza çıkmıştır. Eğer her piksel için konum ve renk bilgisini saklar isem görselin bir haritasını oluşturabilir ve bu şekilde saklayabilirim. Gerektiğinde de görseli yeniden oluşturabilirim. Bu süreç bizim açımızdan çok uğraştırıcı olsa da bilgisayarların işlem yapabilme kabiliyetlerine göre çok basit ve çok hızlı bir işlem oluyor.

Videolar için de benzer bir mantık söz konusu. Videolar aslında birbiri ardına bizlere gösterilen fotoğraflardan ibaret bir yapıdır. Hepiniz okul kitaplarının kenarına birbirini takip eden resimler çizip, kendi çizgi filminizi yapmışsınızdır. Videolar için geçerli olan bir fps (Frame per second) değeri vardır. Bu değer her saniye için kaç kare fotoğraf kullanılacağını bildirir. Bilgisayar bu yöntemle videoları tıpkı görsellerde olduğu gibi alır ve kullanır.

Bilgisayarın dış dünyayı nasıl algıladığını gördük, peki kendi içinde nasıl çalışıyor?

Bilgisayar hız kazanmak için icat edilen bir cihaz olduğu için, bugüne kadarki tüm gelişimi bunu sağlayacak şekilde olmuştur. Ancak bilgisayarın içindeki diğer parçalar ne kadar hızlı olursa olsun, performansı her zaman en zayıf halka belirler. Bir bilgisayarda bilgiler harddisk’te saklanır ve işlemci bu bilgileri alıp üzerine işlem yapar ve yine harddisk’e kaydeder. Klasik bir harddisk içerisinde birden fazla metal plaka olan ve plakçalarlarda görmeye alışık olduğumuz bir kolla bu plaka üzerine veri kaydeden ya da plaka üzerinden veri okuyan bir cihazdır. Mekanik bir cihaz olduğu için ulaşabileceği hız sınırlıdır. Bilgisayarımızdaki işlemci nanosaniyeler seviyesinde işlem yaparken harddisk’imiz milisaniyeler seviyesinde çalışabiliyor. Bu da en basit anlamda 1.000.000 katlık bir fark demek oluyor.

Şöyle bir hayal kuralım: Dünyanın en hızlı yemek yapan şefine bir mutfakta yemek hazırlatıyoruz, ancak şefimize malzemeleri koyabileceği tezgah, masa gibi bir alan vermiyoruz. Şefimiz buzdolabına gidiyor, buzdolabının içinden bir adet patates alıyor, yemeğinin başına dönüp patatesi kullanıyor, ikinci bir patates için tekrar buzdolabına gidiyor, bu süreç kullanılacak malzemelerin her biri, her bir baharat için tekrarlanıyor. Böyle bir iş düzeninde şefimizden nasıl bir performans bekleyebiliriz? Hepimiz çalışırken ihtiyaç duyduğumuz ürünlerin hızlı ulaşacağımız bir yerde, elimizin altında olmasını isteriz. Bilgisayar için de işlemci ve harddisk arasındaki hız farkı bu ihtiyacı doğuruyor. Ancak bilgisayar sistemlerindeki veri saklama teknolojileri için hız ve maliyet ters orantılı bir yapıya sahip. Depolama alanının hızı arttıkça maliyeti inanılmaz derecede artıyor. Bu nedenle de çok hızlı ve geniş alana sahip bir depolama birimi yapmak mümkün olmuyor. Bu doğrultuda, işlemci ve harddisk arasındaki hız dezavantajını en aza indirmek için şöyle bir fikir üretilmiş: Bilgisayardaki tüm veriler kalıcı olarak hardiskte saklanıyor ve bilgisayar yapacağı işlemler için lazım olan ve muhtemelen lazım olacak verileri harddisk’e göre çok daha hızlı olan RAM’e getirtiyor. Bildiğiniz üzere RAM bellekler harddisk’lere göre çok küçük bir veri saklama kapasitesine sahiptir. Bu nedenle hangi verilerin RAM’e aktarılacağı, bunlardan hangilerinin orada tutulmaya devam edip, hangilerinin geri gönderileceği özel algoritmalarla belirleniyor. Sonrasında ram’daki bilgilerden kullanılacak olan veri işlemciye gönderiliyor ve orada bulunan ram’a göre çok daha hızlı ve daha küçük bir kapasiteye sahip cache belleğe alınıyor. Bu alan L1 ve L2 adında farklı hızlarda ve farklı kapasitelerde iki farklı alandan oluşuyor. Kullanılacak veri ve kullanılma ihtimali yüksek veri önce L2 alanına gelirken, kullanılacak ve kullanılma ihtimali çok daha yüksek olan veriler buradan L1 alanına geçiş yapıyorlar. İşlemci içerisinde bulunan ve işlemlerin gerçekleştiği CPU bir yandan işlem yaparken L1 cache alanında bir sonraki işlemde %90 oranında kullanılacak veriler tutulur, bu tahminin tutmaması halinde kalan %10’luk oranın, %90 ihtimalle ihtiyaç duyulacak veri L2 cache alanında saklanmaktadır. Veri L1 cache alanından register adını verdiğimiz çok çok daha hızlı ancak işlemcinin yukarıda belirttiğimiz adresleme kapasitesi büyüklüğünde (32 bit işlemci için 32 bit, 64 bit işlemci için 64 bit) olan alana gelir ve buradan CPU’ya ulaşarak işleme girer.

Dual-core, quad-core, hexa-core, octa-core… Peki bu işlemcilerdeki çekirdek (core) kavramı nedir?

Klasik bir bilgisayar her ne kadar çok hızlı olsa da her seferde yalnızca bir işlem gerçekleştirebilir. Bilgisayar hikayesinin başlangıcı, gelişmesi hep hızı arama çabası olduğundan, hedef hep bu hızı arttırmak oldu. Bu hedef için de hep işlemcideki transistör sayısını arttırma yoluna gidildi. Gün geldi, işlemci içindeki transistör sayısında kayda değer bir artış gösterilemez oldu. İşlemci içerisindeki çekirdek sayısını 1’den 2’ye çıkarmak bu sınırlılığa ilaç gibi geldi. Çekirdek yine her seferde yalnızca 1 işlem yapıyordu ancak artık bir çekirdeğin nesi var, iki çekirdeğin sesi var dönemine geçmiştik. Peki insanoğlu hız arayışına dur dedi mi? Zaman geçtikçe 4, sonrasında 6, akabinde 8 çekirdekli işlemciler arz-ı endam ettiler sırasıyla.

Çok iyi bildiğimiz ancak gerçekte pek de tanımadığımız bilgisayarları anlatmaya çalıştığım yazımızın böylece sonuna geldik. Aslında daha anlatılacak çok kavram, çok olay var ama ben çok da kafa karıştırmadan, daha yalın tutmayı tercih ediyorum konuyu.

--

--