İşletim sistemleri, bilgisayarlarımızın temelini oluşturan karmaşık yazılımlardır. Kullanıcıların uygulamalarla etkileşim kurmasını, donanımı yönetmesini ve kaynakları verimli bir şekilde kullanmasını sağlarlar. Bu karmaşık süreçlerin arkasında, sıklıkla gözden kaçan ancak hayati öneme sahip iki mekanizma yatar: kesmeler ve sistem çağrıları.
Kesmeler (Interrupts): Donanımın Çağrısı
Kesmeler, işlemcinin normal akışını geçici olarak durduran ve belirli bir olaya yanıt vermesini sağlayan sinyallerdir. Bu olaylar donanımdan (örneğin, bir disk sürücüsünden veri gelmesi) veya yazılımdan (örneğin, bir hata oluşması) kaynaklanabilir. Kesmeler, işletim sisteminin olaylara zamanında ve etkili bir şekilde yanıt vermesini sağlayarak sistemin genel performansını ve kararlılığını artırır.
Kesme Çeşitleri
- Donanım Kesmeleri: Donanım aygıtları tarafından üretilir. Örneğin, bir klavyeye basıldığında, ağ kartından bir paket geldiğinde veya bir disk sürücüsünden veri okuma işlemi tamamlandığında donanım kesmesi oluşur.
- Yazılım Kesmeleri (Sistem Çağrıları): Bir programın işletim sisteminden bir hizmet talep etmesiyle oluşur. Örneğin, bir dosya açma, veri okuma veya ekrana bir şey yazdırma işlemleri sistem çağrıları aracılığıyla gerçekleştirilir.
- İstisnalar (Exceptions): Program yürütülürken ortaya çıkan hatalar veya olağandışı durumlar nedeniyle oluşur. Örneğin, sıfıra bölme hatası, geçersiz bellek erişimi veya bir güvenlik ihlali girişimi bir istisna oluşturur.
Kesme İşleme Süreci
- Kesme Talebi: Bir donanım aygıtı veya yazılım, işlemciye bir kesme talebi gönderir.
- Kesme Kontrolü: İşlemci, o anda kesmeleri kabul etmeye hazır olup olmadığını kontrol eder. Kesmelerin önceliği de bu aşamada değerlendirilir.
- Bağlam Değişimi: İşlemci, mevcut çalışmasını durdurur ve mevcut durumunu (kayıt değerleri, program sayacı vb.) belleğe kaydeder.
- Kesme İşleme Rutini (Interrupt Handler): İşletim sistemi, kesme türüne karşılık gelen kesme işleme rutinini (ISR) çalıştırır. Bu rutin, kesmeye neden olan olayı ele alır ve gerekli işlemleri gerçekleştirir.
- Geri Dönüş: Kesme işleme rutini tamamlandığında, işlemci daha önce kaydedilen durumu geri yükler ve normal çalışmasına devam eder.
Sistem Çağrıları (System Calls): Uygulamaların İşletim Sistemiyle İletişimi
Sistem çağrıları, kullanıcı uygulamalarının işletim sisteminin çekirdeğinden hizmet talep etmelerini sağlayan arayüzlerdir. Uygulamaların doğrudan donanıma erişmesi veya işletim sisteminin korumalı alanının dışına çıkması mümkün olmadığından, sistem çağrıları güvenli ve kontrollü bir iletişim yolu sunar.
Sistem Çağrılarının Önemi
- Güvenlik: Sistem çağrıları, uygulamaların doğrudan donanıma erişmesini engelleyerek sistemin güvenliğini sağlar.
- Soyutlama: Sistem çağrıları, uygulamaların donanımın karmaşıklıklarından soyutlanmasını sağlar. Uygulamalar, donanımın nasıl çalıştığını bilmek zorunda kalmadan, yüksek seviyeli bir arayüz aracılığıyla donanımla etkileşim kurabilir.
- Taşınabilirlik: Sistem çağrıları, uygulamaların farklı donanım platformlarında ve işletim sistemlerinde çalışmasını kolaylaştırır. Uygulamalar, işletim sisteminin sağladığı standart sistem çağrılarını kullanarak, donanım farklılıklarından bağımsız hale gelir.
Sistem Çağrılarına Örnekler
- Dosya Yönetimi: Dosya açma (open), dosya okuma (read), dosya yazma (write), dosya kapatma (close).
- Bellek Yönetimi: Bellek ayırma (malloc), bellek serbest bırakma (free).
- Proses Yönetimi: Proses oluşturma (fork), proses sonlandırma (exit).
- Ağ İletişimi: Soket oluşturma (socket), veri gönderme (send), veri alma (receive).
Sistem Çağrıları Nasıl Çalışır?
- Uygulama Talebi: Bir uygulama, işletim sisteminden bir hizmet talep etmek için bir sistem çağrısı yapar.
- Çekirdek Moduna Geçiş: Sistem çağrısı, işlemciyi kullanıcı modundan çekirdek moduna geçirir. Bu, işletim sisteminin korumalı alanına erişimi sağlar.
- Sistem Çağrısı İşleme: İşletim sistemi, talep edilen hizmeti gerçekleştirir.
- Sonuç Döndürme: İşletim sistemi, işlemin sonucunu uygulamaya geri döndürür.
- Kullanıcı Moduna Geçiş: İşlemci, çekirdek modundan kullanıcı moduna geri döner ve uygulama çalışmasına devam eder.
Kesmeler ve Sistem Çağrılarının İlişkisi
Kesmeler ve sistem çağrıları, işletim sistemlerinin temel bileşenleri olmalarına rağmen farklı amaçlara hizmet ederler. Kesmeler, donanım veya yazılımdan gelen olaylara yanıt vermek için kullanılırken, sistem çağrıları uygulamaların işletim sisteminden hizmet talep etmelerini sağlar. Ancak, bu iki mekanizma yakından ilişkilidir. Bir sistem çağrısı yapıldığında, bu durum genellikle bir yazılım kesmesi (software interrupt) tetikler. Bu kesme, işletim sisteminin çekirdeğine kontrolü devreder ve istenen sistem çağrısının işlenmesini sağlar. Dolayısıyla, sistem çağrıları aslında kesme mekanizmasının bir türüdür.
Sonuç
Kesmeler ve sistem çağrıları, modern işletim sistemlerinin ayrılmaz bir parçasıdır. Bu mekanizmalar, donanım ve yazılım arasındaki iletişimi düzenleyerek, uygulamaların işletim sistemiyle etkileşim kurmasını sağlayarak ve sistemin genel kararlılığını koruyarak bilgisayar sistemlerinin verimli ve güvenli bir şekilde çalışmasına katkıda bulunur. Bu kavramları anlamak, işletim sistemlerinin nasıl çalıştığını ve bilgisayar sistemlerinin performansını nasıl etkilediğini anlamak için önemlidir.