İşletim Sistemleri ve Bilgisayarlar

Bilgisayar donanımı, işletim sistemleri ve Linux'a kapsamlı giriş

Kubedo Academy’e hoş geldiniz! Bu bölümde bilgisayarların çalışma prensiplerini ve Linux işletim sisteminin temellerini öğreneceksiniz.

Bölüm İçeriği

Bu bölümde aşağıdaki konuları işleyeceğiz:


1. Bilgisayarlar Nasıl Çalışır?

Bu modül, bilgisayarların çalışma mantığını anlamakla ilgilidir. Bilgisayar çalışma mantığı (burada işlediğimiz x86 mimarisi), işletim sistemlerinden bağımsızdır. Günümüzde artık dilimize yerleşmiş olan “RAM azmış”, “yavaş çalışıyor”, “işlemcisi iyiymiş” gibi terimlerin de ne anlama geldiğini bilmemiz gerekiyor. İşletim sistemlerini ve Linux işletim sistemini anlamak için donanımların nasıl davrandığını anlamamız gerekir. Çünkü aslında bütün işlemlerin yapıldığı ve sonlandığı yer donanım ve bilgisayar mimarisidir.

Öyleyse başlayalım.

Kolunuzdaki dijital saatler aslında ilkel bir mikro bilgisayardır. Bu mikro bilgisayar, saati gösterme fonksiyonunu yerine getirir.

Saatin kaç olduğu bilgisi ekranında görünür. Buna çıktı (Output) diyebiliriz. Sol ve sağ tarafında bulunan minik tuşlarla zamanı ayarlayabilirsiniz. Diyelim ki şu anki değeri 00:00 yaptınız. Yani bilgisayara girdi (Input) verdiniz. Bu, hafızaya yani Memory‘ye kaydedildi. Saat ilerlemeye devam ettikçe, input artma eğilimi gösterecektir (CPU-sayaç).

Bilgisayar, belirli başlı parçaları üzerinden işlem yapan bir alettir. Daha iyi anlamak için parçalara bölüp bunların ne işe yaradığına bakmamız gerekir.

  • Klavye, Mouse ve Touchpad: Bilgisayara komut göndermek için kullanabileceğimiz donanımlardır.
  • Ekran ve Yazıcı: Bilgisayardan elde edilen çıktının (Output) görüntülendiği ortamlardır.

Ana Bilgisayar Parçaları

Ana Kart (Mainboard)
İşlemci  (CPU)
Hafıza   (RAM)
Sabit Disk  (HDD/SSD)
Ağ Kartı (gömülü)
Ses Kartı (gömülü)
Grafik Kartı (gömülü)
PDU/Pil (elektrik dağıtıcısı)

Bizim daha çok ilgilendiğimiz kısımlar CPU, RAM ve DISK. Çünkü bildiğimiz anlamdaki işlemler bu üçlü arasında gerçekleşir; çıktılar ise ekranımıza yansır veya mesaj olarak iletilir.

Sabit Disk

Sabit Disk

Uzun süreli ve değişmeyen verilerin saklandığı alandır; çok daha az değişikliğe uğrayan veri saklama alanıdır.

[!NOTE] Modern sistemlerde geleneksel HDD’lerin yerini SSD (Solid State Drive) almaktadır. SSD’ler mekanik parça içermediği için çok daha hızlı okuma/yazma performansı sunar.

Hafıza (RAM)

RAM Modülü

Verilerin işlemci tarafından işlenebilmesi için disk üzerinden veya ağ üzerinden yüklendiği, erişimi çok hızlı olan ve çok fazla silinip yazılan, değişen veri saklama ortamıdır. Burada veriler ikili (binary) formattadır; yani veriler sadece işlemcinin işlem yapacağı düzendedir.

Aslında tarladaki patates gibi düşünebiliriz: Mahsul topraktan çıkmamış haliyle diskteki veriler gibidir; sonrasında onları tek tek çıkarıp işlersiniz ve işlemeden önce tek tek ayırmanız gerekir - orası hafızadaki binary ortam gibidir; sonunda ise işlersiniz çünkü artık tek tek işlenebilir hale gelmişlerdir.

İşlemci (CPU)

CPU

İşlenecek veriler her bir CPU döngüsünde işlenir. 32 bit ve 64 bit ayrımı buradan gelir. CPU üzerindeki binary bilgiler 32 bit (32 ayrı binary kanal) ile işlenirlerse bu 32 bit işlemci demektir.

Örneğimizden devam edelim: İşlemcinin icra sorumlu bir bıçak olduğunu düşünelim. Patatesleri tek tek kesmek yerine 32 patatesi aynı hizada toplayıp tek bir bıçakla kesebilirsiniz. Burada 1 kesme işleminde 32 ayrı birim iş yapmış olursunuz. CPU kendi 32 register’ı üzerinde her bir CPU cycle’da (kaç GHz ise) bu işlemi yapacaktır.


2. İşletim Sistemleri ve Linux

Tarla ve patates örneğinden devam edecek olursak; işletim sistemleri, patates işleme ve patates cipsi üretme tesisleridir. Patates işleme tesisi olmadan patatesleri işlemek için her seferinde farklı bir toplama yöntemi kullanmak ve her seferinde farklı kişilerin kullandığı farklı kesim tezgahlarında işlenmeleri gerekecekti.

İşletim sistemleri, yazılım ve donanımların uyumlu konuşabilmeleri ve işlemleri istedikleri hızda/zamanda yapabilmeleri için kolaylaştırıcı birer yazılım topluluğudur.

Aslında bilgisayarınızın elektrik düğmesine basmanızdan itibaren yazılımlar birbirlerini çağırarak bir sıralı düzen içinde işletim sistemini başlatırlar.

Linux Boot Sırası

BIOS --> MBR (SABİT DİSK) --> GRUB --> KERNEL --> SYSTEMD --> Programlar

Bu size bahsettiğim sıra Linux için geçerlidir. Farklı işletim sistemlerinde MBR sonrasındaki süreç farklılık gösterir.

Windows için:

BIOS --> MBR --> Windows Boot Manager

Mac için:

BootROM --> Boot Loader

[!TIP] Mac’lerin farklı olmasının sebebi, donanımın işletim sistemi ile beraber geliştirildiği için bazı ek bileşenlerin donanımdan okunması sürecidir. Mac’lerde PC’lerden farklı olarak NVRAM ve SMC donanımları bulunur.


3. Peki Nedir Bu Linux?

Linux diye algıladığımız şey, çekirdek (kernel) diye adlandırdığımız bir ana yazılım ve onun etrafında toplanan açık kaynak yazılımlar topluluğudur. Windows işletim sistemi dediğinizde grafik arayüz ve komut satırı, tarayıcı dahil komple bir pakettir ve tek bir üründen bahsederiz.

Aslında atomlarına ayırdığınızda, Microsoft şirketinde çalışıyor olsaydık grafik arabici ve komut satırı kısımlarını farklı kişilerin geliştirdiğini görebilirdik. Linux işletim sisteminde Kernel dışındaki tüm yazılımlar dışarıdan eklenmektedir.

Linux’un Doğuşu

Geçmişine bakacak olursak; başlangıçta amatör ve hevesli bir yazılımcının hayatında heyecan yaratmak için çok “kalender ve alçakgönüllü” bir şekilde yazdığı şu not ile başlamıştır.

Linux'un Doğuşu
Linus Torvalds’ın orijinal duyurusu

Helsinkili bir öğrenci Linus Torvalds bu mail içinde:

“Basit bir şey yazıyorum, Minix işletim sistemine benzer, oradan aldıklarımla derledim…” diyerek mailing list üzerinden yardım istemiştir.

Sonrasında oldukça mütevazi şu cümleleri yazmıştır:

"GNU gibi büyük ve profesyonel bir şey yapmıyorum, şu an için AT sabit diskleri 
için yazdığım driver ile çalışıyor, sanırım hiçbir zaman başka disklerde 
çalışmayacak zaten."

Çekirdek Nedir ve Ne İşe Yarar?

Çekirdek, CPU donanımını kontrol eden, belleği ayıran, verilere erişen, işlemleri planlayan, uygulamaları çalıştıran ve birbirlerinden koruyan işletim sisteminin özel bir parçasıdır. Bilgisayar başladığında bilgisayara yüklenen ilk programdır. Çekirdekteki en kritik kod parçaları, işletim sisteminde çalışan diğer uygulamaların üzerine yazılmaması için belleğin korumalı alanlarına yüklenir.

Linux İşletim Sistemini Oluşturan Bileşenler

Linux, yazılım geliştirmenize, uygulamaları çalıştırmanıza ve daha fazlasını yapmanıza olanak tanıyan çeşitli farklı donanım türlerine yüklenebilen açık kaynaklı bir işletim sistemidir.

Çekirdek ve etrafındaki yazılımlara siz karar vererek kendi dağıtımınızı yapabilirsiniz. OpenSUSE Build ile istediğiniz parçalarla kendi logonuzu da tasarlayarak bir Linux yapabilirsiniz.

Kullanıcı Alanı ve Çekirdek Alanı

Çekirdeğin sistemi sonlandırmasını ve çökmesini önlemek için, işletim sistemlerinin tümünün çekirdeğini çekirdek alanı (kernel space) adı verilen korumalı ve kısıtlı bellekte çalıştırdığını bilmek önemlidir.

User Space vs Kernel Space

Bir kullanıcı bir uygulamayı veya aracı çalıştırdığında, bu uygulama veya araç kullanıcı alanı (user space) adı verilen alanda çalışır. Bu ayrım kritiktir. Bu uygulamaları çekirdek alanından ayrı çalıştırmaları sayesinde, çekirdek kaynaklarına müdahale edemezler ve sistemin paniğe kapılmasına (çökmesine) neden olamazlar.


4. Günümüzdeki Linux

“LİNUX HER YERDE!!!”

Şu an bulunduğunuz ortamda mutlaka minimum bir Linux vardır. Akıllı televizyonların neredeyse tamamı Linux ile çalışmaktadır. Android cep telefonları Linux ile çalışmaktadır; ayrıca aklınıza gelmeyecek onlarca cihaz Linux Kernel ile hizmet etmektedir.

Size bazı rakamlar:

  • Günde yaklaşık 700.000 Linux ile çalışan TV satılmaktadır.
  • Günde 850.000 Linux çalışan Android cep telefonu hayatımıza girmektedir.

Eğer internete girip tarayıcıda Google, Twitter, Amazon, LinkedIn, Facebook yazarsanız yine bir Linux sunucuya bağlanıyorsunuz.

Neredeyse her yeni teknoloji Linux bağlantılı oluşmakta. Geçtiğimiz yıllarda Linux, Container teknolojileri ile inanılmaz bir ivme yakalamıştır. Docker ismini mutlaka duymuşsunuzdur. Linux içerisindeki bir özellik olan cgroups olmasaydı Docker ve beraberinde gelen Kubernetes hayatımızda bu kadar kolay yer alamazdı.

Linux Dağıtımları

Linux diye bahsettiğimiz şey aslında Linux Çekirdeği’dir (KERNEL). Kernel’i kendiniz kernel.org üzerinden indirip derleyip bir loader yardımı ile bilgisayarınıza kurabilirsiniz. Ama bu çok zahmetli ve tamamen size özel bir çözüm olacaktır.

İnternette hazır bir sürü Kernel ve yükleyicisini içeren, artı başka açık kaynak kodlu yazılımları içine ekleyip sunan dağıtım (distribution) mevcuttur.

[!IMPORTANT] Son bir tavsiye: İnternete açacağınız ve üzerinde iş yükü barındırılacak sunucularınızı (Debian, Ubuntu, Rocky Linux, AlmaLinux, RHEL, SUSE) dağıtımlarından birisi olsun. Diğer dağıtımlar iyidir ama verilerinizi emanet ederken güvenilir ve eski topluluğu olan dağıtımları tercih etmelisiniz.

[!WARNING] CentOS Uyarısı: CentOS 8, 31 Aralık 2021’de yaşam döngüsü sonuna ulaşmıştır. Yeni projeler için Rocky Linux veya AlmaLinux tercih edilmelidir. Bu dağıtımlar, CentOS’un manevi mirasçılarıdır ve RHEL ile uyumludur.


5. Türkiye’de Linux ve Açık Kaynak

Bu konudan mutlaka bahsetmemiz gerekiyor, çünkü Türkiye’de Linux dediğinizde etrafınızda sizinle ilgili “Hah, bu da hippi, özgürlükçü, enterprise olmayan” gibi önyargılar belirir. Bunlar maalesef özellikle Microsoft ürünleri kullanan firmaların ve bunlara inanmış bir IT sektörünün size dayattığı şeylerdir.

Bağımsız düşünmek demek, çözmeniz gereken sorunlarda bir firmanın ürünlerini ve lisanslarını düşünmeden çözüm üretebilmektir.

Linux LEGO gibidir - elinizle istediğiniz şekli verip istediğiniz kadar özelleştirebilirsiniz. Windows gibi platformlar ise size son kullanıcı gözüyle bakarlar ve oldukça az esnektirler. LEGO ile yapılmış bir arabayı isterseniz değiştirerek bir uçak yapabilirsiniz, fakat aldığınız bir araba oyuncağı ile hiçbir değişiklik yapamazsınız.

Açık Kaynak ve Topluluk

Açık kaynak ve Linux kullanması gerçekten de prensip ve metot gerektiren şeylerdir, yoksa yaptığınız çözümler ileride insanlar için daha büyük sorunlar haline gelebilir.

[!CAUTION] Çokça yapılan bir yanlışı önce düzeltelim: Açık kaynak ürün kullanmak bedava değildir. Kullandığınız çözüm için lisans ücreti ödemezsiniz ama kurduğunuz açık kaynak ürünü artık takip etmeniz ve community içerisinde olmanız gerekmektedir.


6. Linux Kurulumu

Önce hangi Linux ve amaç soruları gelir. Kuracağınız Linux ile amacınız ne olacaktır?

  • Denemek ve görmek için
  • Masaüstü ortamı olarak kullanmak için
  • Sunucu olarak

Linux işletim sistemi, Windows ile kıyaslandığında çok daha az kaynak tüketmektedir. Kullanmadığınız eski bilgisayarınıza rahatlıkla Linux kurabilirsiniz.

[!TIP] EĞİTİM İÇERİĞİNİ KULLANABİLMENİZ İÇİN LİNUX KURMANIZA GEREK YOKTUR! Cep telefonu, tablet veya bilgisayar ile Kubedo Academy’deki tüm eğitimleri yapabilirsiniz.

Sunucu Kurulumu İçin Tavsiyeler

Kurulum öncesi karar verirken nelere dikkat etmelisiniz:

  1. Sunucuların öncelikle ihtiyacını iyi belirlemelisiniz ve hangi servisleri çalıştıracağınıza karar vermelisiniz.
  2. İyi mühendisler HLD mutlaka yapar ve bir arkadaşıyla yapacağı şeyi tartışır. Tartışılmamış tasarımların kısa süre sonra ciddi müdahaleye ihtiyaç duyduğunu gördüm.
  3. Her zaman Single Purpose sunucu kurun - sunucunuzun üzerinde hem mail sunucusu hem DB sunucusu olmasın.
  4. Varsayılan bir disk bölümleme mantığınız olsun. Mesela: / 10GB, /home 5GB gibi.
  5. Sunucularınızı mümkünse fiziksel kurmayın. Sanallaştırma için kendinize bir hipervizör edinin: KVM, Proxmox veya Xen gibi.
  6. Kurduğunuz sunucularda her şeyi sorgulayın: Neden böyle yapıyorum? Bu parametre ne demek? Bu sayede daha çok şey öğrenebilirsiniz.

[!WARNING] “Ezbere yaptığınız her şey bir gün başınıza bela olacaktır, unutmayın!”

  1. Sunucularınızın toplam disklerini olabildiğince küçük tutun. Ben bütün Linux kurulumlarının (default) en fazla 20GB ihtiyacı olduğunu düşünüyorum.
  2. Kurulum sonrası mutlaka /etc klasörünü yedekleyin:
cp -rp /etc /etc-first-install
  1. Mümkünse data bölümünü her zaman LVM yapın. Sonradan ekleyeceğiniz diskleri sistem çalışırken tanıtabilirsiniz.
  2. Sanallaştırma kullanıyorsanız golden copy yapın.

Linux Dağıtımları ve Kullanım Alanları

DağıtımÖnerilen Kullanım
DebianWeb, PHP, MySQL, Nginx, Apache
UbuntuMasaüstü, Debian ile aynı (ama ilk tercihim Debian olur)
Rocky/AlmaFile Server, Network Host, NFS server, Docker host, Kurumsal yazılımlar
SUSESAP kurulumları (HANA, ECC, Portal), Kurumsal yazılımlar
RHELOracle, kurumsal yazılımlar, tam destek gerektiren ortamlar

Eğitimi Nasıl Kullanmalıyım?

Eğitim konuları olabildiğince sizin shell (komut satırı) üzerinde yetkinliğinizi geliştirmek üzere sıralanmıştır. Ben eğitim sırasında komutları yazmanızı ve kendinizi sınamanızı tavsiye ederim.

Aynı bölümü mutlaka en az 2-3 kere tekrar etmeniz ve sonradan öğrendiğiniz komutlarla öncekileri kontrol etmenizi öneririm.

[!CAUTION] Dikkat! Eğitim platformu sadece test ve eğitim içindir. Platform üzerinden eğitim dışı kullanımlar loglanacaktır ve yasaktır!


Sonraki Adım

Bölüm 2: Komut Satırı ve Linux →


Konu Tekrarı - Kısa Sınav