tolpp.com
yazılım ve programlama günlüğü

System Calls (Sistem Çağrıları) Mar 31, 2012

Sistem çağrıları OS tarafından servisler için sağlanan arayüzdür. Doğrudan donanıma erişenler gibi düşük seviye görevler (tasks) assembly dilinde instructionlar içerdiği halde genellikle C, C++ dilleriyle yazılmışlardır. System call’lar sayesinde yazılımcı doğrudan donanıma müdahale etmez. Donanım üzerinde gerçekleştireceği işlemi system call kullanarak gerçekleştirir. Bu sayede olası sistem haatalarından kaçınılmış olur.

System call’ların da, sistemden sisteme değişiyor olması yazılımcının işini zorlaştırır. Bu değişiklik, bir OS için yazılan programın başka bir OS üzerinde çalışamamasına sebep olur. Bu yüzden programcılar, doğrudan sistem call’lar yerine application program interface(API) kullanmayı tercih ederler.

Neden API kullanılır?

  • API'ler programın her sistem üzerinde çalışabilmesini sağlar.
  • API kullanımı, her sistemin system call'larını ezbere bilmeyi gerektirmez.
  • Birden fazla sistem işlemini kısa fonksiyonlarla yapabilmeyi sağlar. Programcı API fonksiyonunun içeriğiyle ilgilenmez. Fonksiyonun parametrelerini ve dönüş değerini bilmesi yeterlidir.

API’lerin programlamayı oldukça kolaylaştırdığı doğrudur. Ancak daha spesifik işlemler için system call’ları kullanmak gerekebilir.

System Call Tipleri

  • Process Control (Süreç Kontrolü)
    • bitirme, iptal etme
    • yükleme, çalıştırma
    • create process(süreç yaratma), terminate process(süreç sonlandırma)
    • process attributelerini getirme, process'e attribute atama
    • belli bir süre bekleme
    • bekleme event'ı, sinyal event'ı
    • memory bölgesini allocate, free işlemleri
  • File Management (Dosya Yönetimi)
    • dosya yaratma, dosya silme
    • açma, kapama
    • okuma, yazma, konumunu değiştirme(reposition)
    • dosya attributelerini getirme, atama
  • Device Management (Aygıt Yönetimi)
    • request device, release device
    • okuma, yazma, reposition
    • device attributelerini getirme, atama
    • mantıksal olarak aygıtları ilişkilendirmek, ayırmak
  • Information Maintenance (Bilgilendirme Hizmeti)
    • zamanı veya tarihi getirme, atama
    • sistem verisini getirme, atama
    • process, dosya veya device attributelerinin getirilmesi, atanması
  • Communications (İletişim)
    • iletişim bağlantısının yaratılması, silinmesi
    • mesaj alma, gönderme
    • durum bilgisinin transferi
  • Protection (Koruma)
    • dosyaların yazma, okuma, çalıştırma izinleri
    • kullanıcıların system call'lar üzerindeki yetkileri

Kaynak : Operating System Concepts ~ Eight Edition (s55-s60)