İşletim Sistemleri Konsepti [2]

İşletim sistemi nedir

İşletim sistemi en temelinde donanımı ve harici birimleri yöneten bir yazılımdır.

Bizim klavyeden veri girdiğimizde ekranda yazıları görmemiz, yeni bir program açtığımızda veya kapattığımızda bu programa yeterli kaynak tahsili ... her gibi işletim sisteminin temel görevidir.

Özetlersek bu yazılım bilgisayar donanımını yönetir ve programlar için kaynak tahsisi yapar.

Temel Kavramlar

Bu kısımda amacım kullanacağımız kavramlar hakkında ön bilgi sahibi olmanızdır.

Gelin bunlara bir göz atalım.

  1. Process (İşlem): Bellekte çalışan bir programın aktif durumu. İşletim sistemi, işlemleri yönetir ve kaynakları (CPU, bellek, I/O) tahsis eder.
  2. Program : Disk üzerinde bulunan, çalıştırılabilir halde olan ama şuan da çalışmayan kod satırları. Çalıştırdığımız haline program diyoruz.
  3. Thread (İş Parçacığı): Bir işlem içinde çalışan daha küçük yürütme birimi. Çok çekirdekli işlemcilerde paralel yürütme için önemlidir.
  4. CPU Scheduling (CPU Zamanlaması): İşletim sisteminin, hangi işlemin CPU'yu kullanacağını ve ne zaman kullanacağını belirlemesi. Bu, verimliliği artırmak için kritik bir mekanizmadır.
  5. Memory Management (Bellek Yönetimi): İşletim sistemi, belleği verimli kullanmak için sayfalama ve segmentasyon gibi teknikleri kullanarak programlara bellek tahsisi yapar.
  6. Virtual Memory (Sanal Bellek): Fiziksel belleği aşan programları çalıştırmak için disk alanını bellek olarak kullanma tekniği.
  7. File System (Dosya Sistemi): İşletim sisteminin dosyaları düzenleme ve yönetme yöntemleri. Dosya isimlendirme, dizin yapıları ve izinler bu sistemin bir parçasıdır.
  8. I/O Management (Girdi/Çıktı Yönetimi): Girdi/çıktı cihazlarıyla (disk, yazıcı, klavye gibi) etkileşimi düzenlemek ve yönetmek için kullanılan yöntemler.
  9. Deadlock (Kilitlenme): İki veya daha fazla işlemin, birbirlerinin kaynaklarını beklediği bir durumda kalması ve ilerleyememesi. İşletim sistemleri kilitlenmeleri önlemek veya çözmek için algoritmalar kullanır.
  10. Concurrency (Eşzamanlılık): Aynı anda birden fazla işlemin veya iş parçacığının yürütülmesi durumu. Bu, işletim sisteminin eşzamanlı görevleri yönetme kapasitesidir.
  11. Security and Protection (Güvenlik ve Koruma): İşletim sistemlerinin, sistemin ve kullanıcı verilerinin korunmasını sağlamak için kullandığı yöntemler.

Kernel

Kernel dediğimiz kavram bir işletim sisteminin kalbidir. Literatürel olarak tanımlamamız gerekirse: işletim sistemi kerneli (çekirdek), bir bilgisayar sisteminde işletim sisteminin en temel ve kritik bileşenidir. Kernel, donanım ve yazılım arasındaki etkileşimi yönetir ve işletim sisteminin diğer tüm bileşenlerinin üzerine inşa edildiği temel katmandır.

Biz yazılımcılar olarak bir işletim sistemi üzerinde program geliştiriyorsak, örneğin C# ile bir form,ekrana Hello World yazan bir program, Bir sunucuda çalışan Web sitesi ... arka planda kernel'e bağlanır. Nasıl bağlandığını bir alt kısımda inceleyelim.

Kernel API

Kernel API, biz yazılımcıların donanıma erişmesini sağlar. Kernel API olmasaydı ekrana hello world yazan bir komut için binlerce satır kod yazmamız gerekecekti. Ayrıca bunun yetkilendirmesi güvenliği ciddi derece problem olacaktı. Gelin bu örnek üzerinden inceleyelim.

Hello World

Bu kod, derlendikten sonra bir kullanıcı uygulaması haline gelir ve kullanıcı modunda çalışır. Ancak, donanıma doğrudan erişim kullanıcı modunda mümkün değildir. Bunun yerine, işletim sistemi çekirdeği (kernel) bu erişimi sağlar.

Programda kullanılan printf() fonksiyonu, bir C standardı kütüphane fonksiyonudur. printf(), aslında terminale veri yazmak için Linux'un çekirdeğindeki bazı sistem çağrılarını dolaylı olarak kullanır. Bu sistem çağrılarının en önemlilerinden biri write() sistem çağrısıdır.

write(), Kernel API'nin bir parçasıdır ve işletim sistemi çekirdeği bu çağrıyı işleyerek terminale veri yazar.

Bu işlem şu adımlardan oluşur:

  • Kullanıcı modundaki program, write() sistem çağrısını yapar.
  • Program, bu sistem çağrısını işletim sistemine iletir.
  • İşletim sistemi çekirdeği bu çağrıyı alır ve terminale (veya standard output) yazma işlemini gerçekleştirir.

İşletim sisteminin çekirdeği, donanım ile doğrudan etkileşime girebilen tek seviyedir. Dolayısıyla, terminale yazma işlemi sırasında çekirdek, I/O yönetimi yaparak ilgili yazma işlemini gerçekleştirir. Donanımın karmaşıklığını ve güvenliğini kernel kontrol eder.


Eğer eğitim içeriğinde bir hata fark ederseniz, lütfen bunu bize e-posta yoluyla bildirin. Uygulamalı eğitimlerdeki sorunlara yaklaşımım ve bakış açım, yeni öğrendiğim bilgiler doğrultusunda değişebilir. Sizlerin de farklı bir bakış açınız varsa, bunu bizimle paylaşmaktan çekinmeyin.