---
title: 'Sistem Çağrısı İzleme'
source: 'https://academia.sh/tr/kurslar/cekirdek-arayuzleri/sistem-cagrisi-izleme'
course: 'Çekirdek Arayüzleri ve İzolasyon'
language: tr
updated: '2026-08-17T18:09:58+00:00'
license: 'CC BY-SA 4.0'
---

# Sistem Çağrısı İzleme

Gözlemin izolasyonu delmesinin ilk ölçüsü: sıkı demetin kapattığı 14 olgudan 2'si sistem çağrısı izlemesiyle geri geliyor, açık yüzey 10'dan 12'ye çıkıyor ve koşum yüzde 34 yavaşlıyor; kanalın gösterdiği beş olgunun üçü zaten görünürdü.

İzolasyon konusu sekiz düzenekli sıkı bir demetle kapandı: bir sürecin 24 gözlenebilir
olgusundan 14'ü kapanmış, 10'u görünür kalmıştı ve dokuz eksenin yedisinde hâlâ bir şey
açıktı. Oradaki soru "ne kadarını kapattık" değil, "ne açık kaldı" idi. Bu konu aynı soruyu
ters yönden sorar: kapatılan 14 olgunun kaçı, sistemi anlamak için kullandığımız araçlar
yüzünden geri gelir.

Sorunun tersliği bir söz oyunu değildir. Gözlem araçları izolasyonu delmek için yazılmadı;
bir sürecin ne yaptığını göstermek için yazıldı. Ne var ki bir sürecin ne yaptığını
göstermek, tam olarak izolasyonun gizlemeye çalıştığı şeyi göstermek anlamına gelir. Kursun
iki konusu bu yüzden birbirinin karşıtıdır ve bu ders karşıtlığın en pahalı örneğiyle açar:
sistem çağrısı izlemesi.

## Kanal ile Süzgecin Karşıtlığı

Ortak tanımın iki nesnesi vardır. **İzolasyon düzeneği bir süzgeçtir:** belirli bir ekseni
kapatır ve o eksende genellikle bir olguyu açık bırakır. **Gözlem kanalı bir kanaldır:**
kapatılan olguların bir kısmını geri getirir. **Kâhin** sürecin bütün olgularıdır; kurguyu
biz yazdığımız için biliniyor. Ölçülen şey **açık kalan yüzeydir** — görünen olgularla geri
gelen olguların birleşimi.

Bu dersin varsayımları şunlardır. Kanal, izolasyon kurulduktan sonra ve demetin **dışından**
çalışır; izleyen taraf izlenen tarafın kısıtlarına bağlı değildir (**GZ1**). Kanal yalnız
kendi listesindeki olguları gösterir, yeni olgu üretmez (**GZ2**). Bir olgu geri geldiğinde
tam olarak geri gelir; kısmi görünürlük yoktur (**GZ3**). Sistem çağrısı izlemesinin
gösterdiği beş olgu koddaki listedir (**GZ4**). Kanal bedelleri **modeldeki yüzdelerdir,
gerçek ölçüm değildir**; taban koşum 1000 zaman birimidir (**GZ5**). Bedel koşum boyunca
sabittir, izlenen çağrı sayısıyla değişmez (**GZ6**). İzleme, süreç **çalışırken** açıktır;
koşum bittikten sonra bakan bir kanal değildir (**GZ7**).

Araç tarafında görülen şey, sürecin çekirdekten istediği hizmetlerin sırasıdır: hangi dosya
açıldı, hangi meta veri okundu, hangi saat sorgulandı. Sistem çağrısının kendisi İşletim
Sistemi Kavramları kursunda mekanizma olarak kurulmuştu ve burada tekrarlanmaz.

```text
# ornek dokum , calistirilmis degildir
$ strace -f -e trace=file,clock -p <surec-no>
openat(AT_FDCWD, "/etc/<ayar-dosyasi>", O_RDONLY)       = 3
newfstatat(3, "", {st_mode=S_IFREG|0644, st_uid=0}, 0)  = 0
openat(AT_FDCWD, "/proc/self/mountinfo", O_RDONLY)      = 4
clock_gettime(CLOCK_REALTIME, {tv_sec=<saniye>})        = 0
```

Bu döküm çalıştırılmadı ve içindeki değerler kurgudur. Ölçülen şey dökümün kendisi değil,
dökümden **hangi olgunun okunabildiğidir**; onu aşağıdaki kod sayar.

```python
# M03/K05 ortak tanim -- yalniz bu dersin kullandigi parcalar.
# Izolasyon bir suzgectir: eksen kapatir , her eksende bir sey acik birakir.
# Gozlem kanali bir kanaldir: kapatilan olgularin bir kismini GERI getirir.
OLGULAR = [
    ("oteki-sureclerin-listesi", "surec"), ("kendi-surec-numarasi", "surec"),
    ("ata-surec-zinciri", "surec"),
    ("kok-dosya-agaci", "takma"), ("oteki-takmalar", "takma"),
    ("paylasilan-gecici-dizin", "takma"),
    ("makine-arayuzleri", "ag"), ("makine-yonlendirme-tablosu", "ag"),
    ("dinleyen-baglanti-noktalari", "ag"),
    ("kullanici-kimlik-esleme", "kullanici"), ("dosya-sahipligi", "kullanici"),
    ("makine-adi", "makine"),
    ("islemci-payi", "kaynak"), ("bellek-siniri", "kaynak"),
    ("kullanilan-bellek", "kaynak"), ("islemci-sayisi", "kaynak"),
    ("cekirdek-surumu", "cekirdek"), ("cekirdek-ayarlari", "cekirdek"),
    ("sistem-yuku", "cekirdek"), ("saat", "cekirdek"),
    ("yetenek-kumesi", "yetki"), ("dosya-yetkileri", "yetki"),
    ("erisim-etiketi", "etiket"), ("politika-kurallari", "etiket"),
]
DUZENEK = {
    "surec-ad-alani":     {"eksen": ["surec"], "acik_kalan": ["kendi-surec-numarasi"]},
    "takma-ad-alani":     {"eksen": ["takma"], "acik_kalan": ["kok-dosya-agaci"]},
    "ag-ad-alani":        {"eksen": ["ag"], "acik_kalan": []},
    "kullanici-ad-alani": {"eksen": ["kullanici"], "acik_kalan": ["dosya-sahipligi"]},
    "makine-ad-alani":    {"eksen": ["makine"], "acik_kalan": []},
    "denetim-grubu":      {"eksen": ["kaynak"], "acik_kalan": ["islemci-sayisi"]},
    "yetenek-kirpma":       {"eksen": ["yetki"], "acik_kalan": ["dosya-yetkileri"]},
    "zorunlu-etiket":     {"eksen": ["etiket"], "acik_kalan": ["erisim-etiketi"]},
}
YAYGIN_DEMET = ["surec-ad-alani", "takma-ad-alani", "ag-ad-alani",
                "makine-ad-alani", "denetim-grubu", "yetenek-kirpma"]
SIKI_DEMET = YAYGIN_DEMET + ["kullanici-ad-alani", "zorunlu-etiket"]

# GZ4: sistem cagrisi izleme kanalinin gosterdigi olgular
IZLEME = ["kok-dosya-agaci", "oteki-takmalar", "dosya-sahipligi", "yetenek-kumesi", "saat"]
# GZ5: kanal bedelleri MODELDEKI yuzdelerdir , gercek olcum degildir
KANAL_BEDELI = {"sistem-cagrisi-izleme": 34, "ornekleme-profili": 3,
                "cekirdek-ici-izleme": 6, "cekirdek-dokumu": 0}
TABAN_SURE = 1000


def gorunen(duzenekler, olgular=OLGULAR):
    kapali = set()
    for d in duzenekler:
        v = DUZENEK[d]
        for e in v["eksen"]:
            kapali |= {o for o, x in olgular if x == e}
        kapali -= set(v["acik_kalan"])
    return [o for o, _ in olgular if o not in kapali]


def geri_gelen(duzenekler, kanal, olgular=OLGULAR):
    g = set(gorunen(duzenekler, olgular))
    kapali = {o for o, _ in olgular} - g
    return sorted(set(kanal) & kapali)


def yuzey(duzenekler, kanal=(), olgular=OLGULAR):
    g = set(gorunen(duzenekler, olgular))
    geri = set(geri_gelen(duzenekler, kanal, olgular))
    return {"gorunen": len(g), "geri_gelen": len(geri), "acik_yuzey": len(g | geri),
            "acik_eksen": len({e for o, e in olgular if o in (g | geri)})}


print("olgu:", len(OLGULAR), "| eksen:", len({e for _, e in OLGULAR}))
g = set(gorunen(SIKI_DEMET))
print("siki demet: duzenek", len(SIKI_DEMET), "| gorunen", len(g),
      "| kapattigi", len(OLGULAR) - len(g))
print()
print("kanalin gosterdigi olgu     eksen      siki demette durumu")
for o in IZLEME:
    e = dict(OLGULAR)[o]
    print(f"  {o:26s}{e:11s}{'zaten goruluyor' if o in g else 'GERI GELIYOR'}")
print()
print("demet          gorunen  geri gelen  acik yuzey  acik eksen")
for ad, d in (("yalin", []), ("yaygin", YAYGIN_DEMET), ("siki", SIKI_DEMET)):
    y = yuzey(d, IZLEME)
    print(f"  {ad:12s} {y['gorunen']:7d}  {y['geri_gelen']:10d}"
          f"  {y['acik_yuzey']:10d}  {y['acik_eksen']:10d}")
print()
yuz = KANAL_BEDELI["sistem-cagrisi-izleme"]
ys = yuzey(SIKI_DEMET, IZLEME)
print("bedel: taban", TABAN_SURE, "-> kosum", TABAN_SURE * (100 + yuz) // 100,
      "| yuzde", yuz)
print("geri gelen olgu basina bedel:", round(yuz / ys["geri_gelen"], 2), "yuzde puan")
print("kanal bedelleri (modeldeki yuzdeler , olcum degil):", KANAL_BEDELI)
print()
print("OLGU KUMESI SUPURMESI -- cikarma (siki demet + izleme kanali)")
geri_dusen, gorunen_dusen = [], []
for o, _ in OLGULAR:
    y = yuzey(SIKI_DEMET, IZLEME, [x for x in OLGULAR if x[0] != o])
    if y["geri_gelen"] < ys["geri_gelen"]:
        geri_dusen.append(o)
    elif y["gorunen"] < ys["gorunen"]:
        gorunen_dusen.append(o)
print("  taban acik yuzey", ys["acik_yuzey"],
      "| degistiren", len(geri_dusen) + len(gorunen_dusen),
      "| degistirmeyen", len(OLGULAR) - len(geri_dusen) - len(gorunen_dusen))
print("    geri geleni dusuren:", ", ".join(geri_dusen), "-> geri 1 , acik yuzey 11")
print("    goruneni dusuren   :", len(gorunen_dusen), "olgu -> gorunen 9 , acik yuzey 11")
print()
print("OLGU KUMESI SUPURMESI -- ekleme (her eksene bir yeni olgu)")
for e in sorted({e for _, e in OLGULAR}):
    y = yuzey(SIKI_DEMET, IZLEME, OLGULAR + [("yeni-olgu", e)])
    print(f"  +{e:10s} olgu 25  gorunen {y['gorunen']:2d}  geri {y['geri_gelen']}"
          f"  acik yuzey {y['acik_yuzey']:2d}")
```

```
olgu: 24 | eksen: 9
siki demet: duzenek 8 | gorunen 10 | kapattigi 14

kanalin gosterdigi olgu     eksen      siki demette durumu
  kok-dosya-agaci           takma      zaten goruluyor
  oteki-takmalar            takma      GERI GELIYOR
  dosya-sahipligi           kullanici  zaten goruluyor
  yetenek-kumesi            yetki      GERI GELIYOR
  saat                      cekirdek   zaten goruluyor

demet          gorunen  geri gelen  acik yuzey  acik eksen
  yalin             24           0          24           9
  yaygin            12           2          14           7
  siki              10           2          12           7

bedel: taban 1000 -> kosum 1340 | yuzde 34
geri gelen olgu basina bedel: 17.0 yuzde puan
kanal bedelleri (modeldeki yuzdeler , olcum degil): {'sistem-cagrisi-izleme': 34, 'ornekleme-profili': 3, 'cekirdek-ici-izleme': 6, 'cekirdek-dokumu': 0}

OLGU KUMESI SUPURMESI -- cikarma (siki demet + izleme kanali)
  taban acik yuzey 12 | degistiren 12 | degistirmeyen 12
    geri geleni dusuren: oteki-takmalar, yetenek-kumesi -> geri 1 , acik yuzey 11
    goruneni dusuren   : 10 olgu -> gorunen 9 , acik yuzey 11

OLGU KUMESI SUPURMESI -- ekleme (her eksene bir yeni olgu)
  +ag         olgu 25  gorunen 10  geri 2  acik yuzey 12
  +cekirdek   olgu 25  gorunen 11  geri 2  acik yuzey 13
  +etiket     olgu 25  gorunen 10  geri 2  acik yuzey 12
  +kaynak     olgu 25  gorunen 10  geri 2  acik yuzey 12
  +kullanici  olgu 25  gorunen 10  geri 2  acik yuzey 12
  +makine     olgu 25  gorunen 10  geri 2  acik yuzey 12
  +surec      olgu 25  gorunen 10  geri 2  acik yuzey 12
  +takma      olgu 25  gorunen 10  geri 2  acik yuzey 12
  +yetki      olgu 25  gorunen 10  geri 2  acik yuzey 12
```

## Kâhin, Kanal, Geri Gelen Olgu

Üç sayı yan yana durur. **Kâhin:** sürecin 24 olgusu, dokuz eksende. **Kanal:** sistem
çağrısı izlemesi beş olgu gösteriyor. **Geri gelen olgu ve açık yüzey:** bu beş olgunun
**2'si** sıkı demetin kapattığı olgulardır ve geri gelir; açık yüzey **10'dan 12'ye** çıkar.

Geri gelen ikili `oteki-takmalar` ve `yetenek-kumesi`dir. Birincisi takma ad alanının
kapattığı bir olgudur: kök dosya ağacı değiştirilmiş olsa bile, sürecin hangi takma
noktalarını okuduğu çağrı dizisinde görünür. İkincisi yetenek kırpmanın kapattığı olgudur:
sürecin hangi yetkiyi kullanmaya çalıştığı, çağrının başarısız dönüşünde bile okunur. İkisi
de düzeneklerin "kapattı" dediği olgulardır ve kanal ikisini de geri açar.

Açık **eksen** sayısı ise 7'de kalır. Bunun nedeni, geri gelen iki olgunun eksenlerinde
zaten açık bir şey olmasıdır: takma ekseninde `kok-dosya-agaci`, yetenek ekseninde
`dosya-yetkileri` sıkı demette de görünüyordu. Yani bu kanal **yeni eksen açmıyor**, açık
eksenleri **kalınlaştırıyor**. Ayrım önemlidir: eksen bir izolasyon kararının konusudur,
olgu ise o kararın kalitesinin ölçüsüdür.

## Beş Olgu Gösteriliyor, İkisi Yeni

Kanalın gösterdiği beş olgunun **üçü** — `kok-dosya-agaci`, `dosya-sahipligi`, `saat` —
sıkı demet altında **zaten görünüyordu**. İzleme bunları göstermekle yeni bir şey açmaz;
yalnız var olan görünürlüğü tekrarlar.

Buradan çıkan okuma kursun ikinci iddiasının bu konudaki karşılığıdır: **bir aracın çok şey
göstermesi, çok şey geri getirmesi anlamına gelmez.** Sistem çağrısı izlemesi dört kanalın
en ayrıntılısıdır; her çağrıyı, argümanlarını ve dönüş değerini verir. Buna karşın geri
getirdiği olgu sayısı **2'dir** ve bu, dört kanalın içinde en yüksek sayı değildir. Aracın
ürettiği satır sayısıyla izolasyona açtığı gedik arasında doğru orantı yoktur.

Demet tablosu aynı şeyi başka bir yönden söyler. İzolasyon yokken kanal **0** olgu geri
getirir — geri getirecek kapalı olgu yoktur, 24 olgunun hepsi zaten görünür. Yaygın altı
düzenekli demette geri gelen **2**, sıkı sekiz düzenekli demette yine **2**'dir. Eklenen iki
düzenek bu kanalın gediğini **hiç** daraltmaz: kullanıcı ad alanı `dosya-sahipligi`ni açık
bırakıyor, zorunlu etiket ise bu kanalın listesinde olmayan bir olguyu kapatıyor. Sıkılaşan
izolasyon, kanalın açtığı yüzeyi kendiliğinden kapatmaz.

## Bedel: Koşum Yüzde 34 Yavaşlıyor

Kanalın bedeli koşumu yavaşlatmasıdır. Modeldeki taban koşum 1000 zaman birimidir; izleme
açıkken **1340** olur, yani **yüzde 34**. Bu sayı ve öteki üç kanalın sayıları **modeldeki
yüzdelerdir, gerçek ölçüm değildir**; makineye, yüke ve izlenen çağrı türüne göre gerçek
değer başka çıkar. Modelde durmalarının nedeni büyüklük sırasını sabit tutmaktır.

Bedelin kaynağı yapısaldır. İzleme, izlenen sürecin her sistem çağrısında denetimi izleyen
tarafa geçirir; bir çağrı, birkaç bağlam değiştirmeye dönüşür. Bu yüzden bedel **çağrı
yoğunluğuyla** artar: hesap ağırlıklı bir koşum az etkilenir, dosya ve ağ ağırlıklı bir
koşum çok. Modelde bedel sabit alınmıştır (**GZ6**) ve gerçek sistemde bu varsayım kaba bir
yaklaşıklıktır.

Geri gelen olgu başına bedel **17,0 yüzde puandır**. Bu oran kursun geri kalanında
karşılaştırma birimi olacak; şimdilik tek başına anlamı, izlemenin **pahalı ve dar** bir
kanal olduğudur. Bedelin ikinci yüzü ölçünün dışında kalır: yavaşlayan bir süreç, zamana
duyarlı davranışını değiştirir. Zaman aşımları farklı yerlerde dolar, yarış durumları başka
sıraya girer. İzleme yalnız gözlemez, gözlediği şeyi **değiştirir**; aralıklı bir arıza
izleme açıkken kaybolabilir.

## Olgu Kümesi Süpürmesi

Bu kursta ikinci tohum yoktur; yerine olgu kümesi süpürülür. Çıkarma süpürmesinde 24 olgu
tek tek listeden düşürülür. Sonuç: açık yüzeyi **12** olgu değiştiriyor, **12** olgu
değiştirmiyor. Değiştirenlerin yalnız **2'si** — `oteki-takmalar` ve `yetenek-kumesi` — geri
gelen sayısını düşürüyor; kalan 10'u zaten görünen olgulardır ve çıkarıldıklarında görüneni
düşürürler. Değiştirmeyen 12 olgu, sıkı demetin kapattığı ve bu kanalın listesinde olmayan
olgulardır.

Ekleme süpürmesi daha keskin bir şey söyler. Dokuz eksenin her birine birer yeni olgu
eklendiğinde açık yüzey **yalnız bir eksende** büyür: `cekirdek`. Nedeni doğrudan düzenek
tablosundadır — sekiz düzeneğin hiçbiri çekirdek eksenini kapatmıyor. Çekirdek sürümü,
çekirdek ayarları, sistem yükü ve saat, sıkı demet altında bile olduğu gibi görünür. Modelde
bu eksene eklenen her yeni olgu doğrudan açık yüzeye yazılır; öteki sekiz eksene eklenen
olgular kapalı kalır.

Bu sonuç ölçünün kurguya bağlı yerini de gösterir. Açık yüzeyin **büyüklüğü** seçilen 24
olguya bağlıdır ve başka bir liste başka bir sayı verirdi. Açık yüzeyin **duyarlılığı** ise
listeye değil, düzenek tablosuna bağlıdır: hangi eksenin kapatıcısı yoksa yüzey o eksende
büyür.

## Yüzeyi Daraltmak

Bu ders bir gedik sayıyor, o gediğin nasıl kullanılacağını değil. Kursun sınırı bağlayıcıdır:
kaçış, yetki yükseltme ya da atlatma yordamı hiçbir derste yazılmaz. Sayılan her yüzeyin
yanında daraltma yolu yazılır ve bu kanalın daraltma yolları dörttür.

Birincisi izleme yeteneğinin kendisidir. Bir süreci izlemek ayrı bir yetki gerektirir;
yetenek kırpma listesine bu yetkinin eklenmesi, demet içinden başlatılan izlemeyi keser.
İkincisi izleyicinin **konumudur**: izleyen taraf demetin dışındaysa (**GZ1**) sayılan gedik
açıktır, izleyici de aynı demetin içine alınırsa kanal demetin kısıtlarına bağlanır.
Üçüncüsü izleme çıktısının kendisidir; döküm bir dosyaya yazılıyorsa o dosya sürecin
gördüğü her yolu ve yetki denemesini taşır ve erişimi sınırlanmalıdır. Dördüncüsü
kapsamdır: izleme tanı süresince ve dar bir çağrı süzgeciyle açılır, sürekli açık bırakılmaz.

Dördü de bir şeyi ortaklaşa söyler. Kanal, izolasyonun bir kusuru değildir; **ayrı bir
erişim denetimi konusudur.** İzolasyon kararı ile gözlem kararı aynı yerde verilmediğinde,
ikinci karar birincisini sessizce geri alır. En az yetki ilkesinin kendisi Siber Güvenlik
müfredatında kurulmuştu ve burada tekrarlanmaz; buradaki karşılığı tek cümledir: bir demeti
izleyebilen taraf, o demetin kapattığı olguların bir kısmını görebilen taraftır ve bu
görünürlük demetin yapılandırmasında değil, izleyicinin yetkisinde yazılıdır.

## Özet

- Sıkı demet 24 olgunun 14'ünü kapatıyor, 10'u görünür bırakıyor; sistem çağrısı izlemesi
  kapatılanların **2'sini** geri getiriyor ve açık yüzey **12** oluyor.
- Kanalın gösterdiği beş olgunun **üçü** zaten görünüyordu: çok gösteren araç çok geri
  getiren araç değildir.
- Geri gelen ikili `oteki-takmalar` ve `yetenek-kumesi`dir; açık eksen 7'de kalır, yani kanal
  yeni eksen açmaz, açık eksenleri kalınlaştırır.
- Bedel **yüzde 34** (taban 1000, koşum 1340) ve geri gelen olgu başına **17,0 yüzde
  puandır**; bu yüzdeler modeldeki değerlerdir, gerçek ölçüm değildir.
- Süpürme: açık yüzeyi 24 olgunun 12'si değiştiriyor; eklenen yeni olgu yüzeyi yalnız
  **çekirdek** ekseninde büyütüyor, çünkü o ekseni kapatan düzenek yok.
- Daraltma: izleme yeteneğinin kırpılması, izleyicinin demet içine alınması, döküm dosyasının
  erişim denetimi ve dar kapsam.

## Sonraki Adım

Bu kanal pahalıydı ve dardı. Sıradaki kanal tam tersi bir yerde durur: örnekleme tabanlı
işlemci profili koşumu **yüzde 3** yavaşlatır, yani izlemenin onda birinden azına mal
olur. Sonraki ders bu ucuz kanalın kaç olgu geri getirdiğini sayar — sonuç **1'dir** ve bu,
denetim grubunun kapattığı bir olgudur. Ucuzluğun tek başına bir erdem olmadığı, örnek
sayısını büyütmenin geri gelen olguyu hiç değiştirmediği tabloda görünecek.
