# System Call (Sistem Çağrısı)

Adres: https://softwaredictionary.org/tr/terimler/system-call
Kategori: İşletim Sistemleri
Son güncelleme: 2026-09-30
Okunuşu: sistım kol

Kısaca: System call, bir programın işletim sistemi kernel'ından bir dosyayı okumak ya da process başlatmak gibi ayrıcalıklı bir işlem yapmasını istediği çağrıdır.

## System call (sistem çağrısı) nedir?

Çoğu zaman syscall diye kısaltılan system call, bir uygulama ile kernel arasındaki resmî kapıdır. Programlar kısıtlı bir kullanıcı modunda çalışır ve donanıma ya da diğer programların belleğine doğrudan dokunamaz; bu yüzden bir dosyayı açmaları, ağ üzerinden veri göndermeleri, bir process başlatmaları veya daha fazla bellek almaları gerektiğinde bir system call yapar ve işi kernel'a bırakırlar.

Bir system call yapmak için program, bir syscall numarasını ve argümanlarını CPU yazmaçlarına koyar ve CPU'yu kernel moduna geçiren, x86-64'te `syscall` gibi özel bir komut çalıştırır. Kernel isteği doğrular, işlemi gerçekleştirir ve kullanıcı moduna geri dönmeden önce bir sonuç ya da hata kodu döndürür. Unix benzeri sistemlerdeki yaygın system call'lar arasında `open`, `read`, `write`, `fork`, `execve` ve `mmap` vardır.

Bir banka gişesini düşünün. Müşteriler kasaya giremez ama isteklerini gişe görevlisine verebilir; görevli onu kontrol eder ve parayı onlar adına ele alır. Çoğu geliştirici system call'ları nadiren elle yazar; C'deki `printf`, Python'daki `open()` ya da `Node.js`'teki `fs.readFile` gibi fonksiyonlar bunları sizin için arka planda yapar.

System call, normal bir fonksiyon çağrısı ya da kütüphane API'siyle aynı şey değildir. Normal bir fonksiyon çağrısı kullanıcı modunda programınızın içinde kalır; system call ise kernel'a geçer ve bu onu belirgin biçimde yavaşlatır. Kütüphanelerin çoğu zaman veriyi tamponlayıp çok sayıda küçük çağrı yerine daha az sayıda, daha büyük system call yapmasının nedeni bu maliyettir.

## Önemli noktalar

- System call, kullanıcı modundaki bir programın kernel'dan ayrıcalıklı bir hizmet istemesinin yoludur.
- Her system call CPU'yu kullanıcı modundan kernel moduna ve geri geçirir.
- Örnekler arasında `open`, `read`, `write`, `fork` ve `mmap` vardır.
- Standart kütüphaneler system call'ları sarmalar; bu yüzden geliştiriciler onları nadiren doğrudan çağırır.
- System call'lar normal fonksiyon çağrılarından pahalıdır; bu yüzden programlar onları toplu yapmaya çalışır.

## Örnek: Python'ın os modülü üzerinden system call yapmak

```python
import os

# os.open, os.write and os.close are thin wrappers
# around the open, write and close system calls
fd = os.open("hello.txt", os.O_WRONLY | os.O_CREAT, 0o644)
os.write(fd, b"Hello from a system call\n")
os.close(fd)

# Ask the kernel for this process's ID (the getpid system call)
print(os.getpid())
```

## Sık sorulan sorular

**System call ile API arasındaki fark nedir?**

API, yazılımı kullanmak için tanımlanmış herhangi bir arayüzdür; system call ise kernel'ın sağladığı belirli alt düzey arayüzdür. C standart kütüphanesi gibi kütüphane API'leri system call'ları sarmalayarak onları kullanmayı daha kolay ve taşınabilir kılar.

**Bir programın hangi system call'ları yaptığını nasıl görebilirim?**

Linux'ta bir programı `strace` altında, örneğin `strace ls` ile çalıştırarak yaptığı her system call'ı argümanları ve sonuçlarıyla birlikte yazdırabilirsiniz. Diğer işletim sistemleri de benzer izleme araçları sunar.

**System call'lar neden yavaştır?**

Her system call CPU'yu kullanıcı modundan kernel moduna ve geri geçirir ve kernel isteği doğrulamak zorundadır. Bu ek yük tek bir çağrı için çok küçüktür, ancak bir program milyonlarca küçük çağrı yaptığında birikir.

---

Software Dictionary: https://softwaredictionary.org/tr · https://softwaredictionary.org/tr/llms.txt
