Ana içeriğe geç

İlk Adımlar, Tanımlar, Kavramlar

Dokümanın Amacı'nda da belirtildiği gibi, konular mümkün mertebe sadeleştirilerek anlatılmıştır. Bu noktada üzerinde önemle durulması gereken nokta; konunun, burada görülenden çok daha derin olduğudur.

Bu ön kabulü yapabildiysek, devam edebiliriz.

Nedir?

"Linux nedir?" sorusunu sormadan önce, öncesinde yanıtlamamız ve açıklamamız gereken bazı temel kavramlar var. Bu noktada, özellikle de fişe takıp çalıştırdığımız bir aletin bir anda elimiz ayağımız olduğu gerçeğini de kabullenerek, bilgisayarın ne olduğundan bahsetmekte yarar görüyorum.

Bilgisayar Nedir?

Hesap yapmakta (compute) kullanılan alettir bilgisayar (computer). "Alet" diyorum, çünkü bu işi yapmanıza yardımcı olabilecek pek çok şey, bilgisayar olarak kabul edilebiliyor. Abaküs de buna dâhil.

Ancak ben, pek de açılmamamız gerektiğine inanıyorum. Günümüzdeki çalışma mantığıyla bilgisayar, kabaca, hesap yapabilen elektronik beyindir. Gerekli bileşenlere sahip bir elektronik devre, bir aritmetik hesap yapabilir durumdaysa, bu arkadaşımıza bilgisayar diyebiliriz. Çaylak Linuxçu serisinin girişinde bahsettiğim İşletim Sistemi Yazı Dizisi'nin ilk yazısında, bu kavrama değiniyoruz aslında. Okumadınız mı? Okumadıysanız okuyun lütfen. Ben de zamanında okusaydım, hayat çok farklı yerlere getirebilirdi bizleri...

Ayıp olmaması için bir tanım bırakalım:

Tanım

Bilgisayar: Birtakım aritmetiksel ve mantıksal işlemi yürüterek veriyi işleyen, saklayan, gösteren aygıt.

"Bilgisayar" kelimesini dilimize kim kazandırmıştır?

Computer yerine, bilgisayar kelimesini Türkçe'mize kazandıran kişi; kıymetli hocamız Prof. Dr. Aydın KÖKSAL'dır.

Bu mantıkla düşünürseniz, aslında sadece "bilgisayar" diyerek geçtiğimiz masaüstü veya dizüstü sistemler değil, pek çok aygıtın "bilgisayar" olarak ele alınabileceğini fark edeceksiniz. Cep telefonu, çamaşır makinesi, mikrodalga fırın, filtre kahve makinesi gibi pek çok cihaz, esasında bir bilgisayardır. Bütünüyle bir bilgisayar olmasa bile, içinde bir ya da birkaç tane bilgisayar barındırır.

Bilgisayarın ne olduğu ve tarihsel gelişimi, başlı başına bir kitap konusu. Ve bu detaylar, Çaylak Linuxçu'nun kapsamına girmiyor. Dolayısıyla yazılım ve donanım kavramlarından da kısaca bahsedip, sonrasında işletim sistemi konusuna kısaca değineceğiz.

Tanım

Yazılım: Yazılım, bilgisayarımızın çalıştırabileceği komutlar dizisidir. Oyunlar, not defterleri, sürücüler, medya oynatıcılar... Bunların tamamı yazılıma örnek olarak verilebilir.

Donanım: Bilgisayarın fiziksel parçalarıdır. Amiyane tabirle, vurunca ses gelen parçalara donanım deriz. Hoparlör, klavye, fare, bellek, işlemci, disk, anakart gibi parçalar, donanıma örnek olarak verilebilir.

İşletim Sistemi Nedir?

İşletim sistemleri; üzerine kitaplar yazılan, araştırmalar yapılan, üniversitelerde ders olarak okutulan bir konudur. Bu konu genelinde, tüm dünyada 100 birimlik bilgi varsa, bunun 1'i (belki de fazla söylüyorum) anca vardır bende. Kendi araştırmalarımdan tuttuğum notları, zaten kişisel web sitemde paylaşmıştım. Dolayısıyla daha önce de belirttiğim gibi, kısaca değineceğiz bu konuya.

Kabul edilmiş ortak bir tanımı olmasa da, işletim sistemi için yaygın kabul görmüş bazı tanımlar vardır. İşletim sistemi için; bir bilgisayarın kaynaklarının programlar arasında paylaştırılmasından ve bu programların çalıştırılmasından sorumlu yazılım olarak bahsedebiliriz.

Tanım

İşletim Sistemi: Bilgisayarın donanımını ve bu donanımlar üzerinde çalışan yazılımları yöneten; kaynak yönetimi, girdi-çıktı işlemleri, sistemin stabil çalışması, kullanıcıların bilgisayarı kullanabilmesi gibi pek çok kritik konuda görev alan bir yazılımdır.

Bilgisayar kullandığınız tipik bir gününüzü düşünelim:

  • Müzik dinliyorsunuz.
  • O sırada web'de geziniyorsunuz. Tarayıcınızda bazı bağlantılara tıklıyorsunuz.
  • Hoşunuza giden bir doküman gördünüz, indirmeye başladınız.
  • Bu sırada e-posta istemciniz açık, yeni bir mail geldiğini görüyorsunuz.
  • Windows 11'e yükseltmek ister misiniz gibi bir soru geliyor, Hayır'a basıyorsunuz.

Bu süreçte pek çok yazılım, pek çok iş yapıyor. Ek olarak, bunların bazıları internet bağlantınızı aktif olarak kullanıyor. Bazıları, siz fark etmeden, arkaplanda birtakım işlerle meşgul. Bu sırada donanımlarınızda da ilginç durumlar yaşanıyor tabii. Ekranda görüntüler değişiyor sürekli. Hoparlörden sesler geliyor. Klavyeden tuşlara basılıyor. Fare hareket ediyor vs.

Tüm bunlar aynı anda gerçekleşiyor gibi görünse de, durum aslında pek de böyle değil. Bu işlerin her biri, sırayla, çok ama çok kısa süreliğine yapılıyor (tek çekirdekli bir işlemciniz olduğunu varsayarak konuşuyorum). Dahası, bunların her biri, aynı sınırlı kaynakları tüketmek zorunda. Yani:

  • Şu an hangi iş yapılacak? Hangi işler daha önemli? Hangileri - nispeten - daha önemsiz? Özetle, CPU'yu nasıl dağıtacağız? (CPU scheduling)
  • Hangi işe, ne kadar RAM ayırdık? Hangisi, verdiğimiz bu kaynakla yetindi? Kimler daha fazla RAM istiyor? Kimler, bizden aldığı RAM'i düzgün kullanmıyor? (Memory allocation)
  • O sesi kim gönderdi? Ekranda ne görülecek? Bu basılan tuş neydi? Tuşu kime gönderelim? Öyle ya, notepad'de A'ya basınca "A" yazıyor. FIFA oynarken ise orta açıyoruz. (Input/output redirection)
  • Yeni bir program çalıştırmak istiyorsunuz. "Bu program sisteminizde bilmem ne değişiklik yapmak istiyor falan filan". Bu hareketi yapmak için yönetici hesabı olmalısınız. İşlem reddedildi vs. (Security)

gibi, gibi, gibi... Aklınıza gelebilecek neredeyse her şey, işletim sisteminin görevidir. Bizler bilgisayarlarımızı işletim sistemlerinin kabuğu aracılığıyla kullanıyoruz. Yazılımlar; donanımlarımızı işletim sistemi sayesinde kullanabiliyor. İşletim sistemi, bir yandan tüm donanıma hükmederken diğer yandan kullanıcılar ile yazılımlar ve yazılımlar ile donanımlar arasında bir köprü görevi görüyor.

İşletim sistemlerine birkaç örnek verebilir misiniz?

GNU/Linux, Windows, MacOS, iOS, Android gibi örnekler verilebilir.

Çekirdek (Kernel) Nedir?

İşletim sistemi, esasında bir yazılımlar bütünüdür. "Üreticinin size sunduğu her şey" olarak tanımlayanlar da var işletim sistemini. Ne demek istiyoruz? Örneğin, bir Windows satın aldınız. İçerisinde Outlook gibi bir e-posta istemcisi, Edge gibi bir tarayıcı, Not Defteri uygulaması, Windows Media Player gibi bir medya oynatıcısı vs geliyor. Bütün paket, Windows'un içerisinde.

Bilgisayarı kullanılabilir hâle getiren pek çok yardımcı program, işletim sisteminizin bir parçası. Daha düşük seviyede düşünelim. Mesela parolanızı giriyorsunuz, doğru ise oturum açabiliyorsunuz. Bu "oturum açma" sürecini yöneten şey de bir program ve o da işletim sisteminizin bir parçası. Ya da farenizi hareket ettirip bir şeylere tıklayarak bilgisayarınızı kullanmanıza olanak sağlayan "masaüstü" ortamınız da, işletim sisteminizin bir parçası. Onlarca, yüzlerce yazılım bir araya gelerek, bilgisayarınızı kullanılabilir hâle getiren "işletim sistemi"ni oluşturuyor. Ancak bunların arasında bir tanesi var ki; donanımı dirilten, işletim sisteminin kalbi, ruhu olan bir parça. Bu parça, tahmin edeceğiniz üzere kernel.

İşletim sisteminin merkezinde yer alan ve sistemde olan biten her şey üzerinde kontrolü olan yazılıma, kernel (çekirdek) diyoruz.

  • Kernel, bilgisayarınızın açılışından itibaren çalışmaya başlar ve asla durmaz. Kernel durursa, bilgisayarınız kullanılmaz hâle gelir ve yeniden başlatmak zorunda kalırsınız.
  • Kernel, sürücüler (driver) aracılığıyla donanımlarınızı kontrol eder.
  • Bilgisayarın açılışında (boot), kaynak yönetiminde, girdi-çıktı yönetiminde, işlerin yönetiminde ve daha birçok kritik noktada görev alır.
  • Kernel, kendisi için ayrılmış özel RAM alanında barınır ve bu noktayı da korumakla görevlidir. Zaten bellek yönetimi de, kernel'in sorumluluğundadır.
  • İşler ters giderse ve kernel bir şekilde sağlıklı çalışamaz hâle gelirse, UNIX sistemler için kernel panic denilen durum ortaya çıkar ve sistemi yeniden başlatmak zorunda kalırsınız. Benzer bir durum, Windows sistemlerden aşina olduğumuz Mavi Ekran / Blue Screen of Death şeklinde karşımıza çıkar.

Tanım

Kernel: İşletim sisteminin merkezinde yer alan ve sistemde olan biten her şey üzerinde kontrolü olan yazılıma, kernel (çekirdek) diyoruz.