İçeriğe geç
academia.sh

Ders 09 / 09

Çekirdek Dökümü Çözümlemesi

Koşum bedeli sıfır olan kanalın ölçülmesi: çekirdek dökümü sıkı demetin kapattığı 14 olgudan 3'ünü geri getiriyor, açık yüzey 13 oluyor ve dört kanal birlikte 8 olgu geri getirerek geri gelme oranını 0,5714'e çıkarıyor; dökümün bedeli koşumda değil, taşıdığı hassas veride.

İçindekiler

Üç kanal ölçüldü ve üçü de koşum sırasında çalıştı: sistem çağrısı izlemesi yüzde 34, çekirdek içi izleme yüzde 6, örnekleme profili yüzde 3 bedelle. Dördüncü kanal bu düzenin dışındadır. Çekirdek dökümü, süreç çöktükten sonra yazılır; koşan sürece hiçbir şey ödetmez, koşum bedeli yüzde 0’dır.

Bedeli sıfır olan bir kanalın zararsız olması beklenir. Ölçü tersini söyler: döküm geri getirdiği olgu sayısında 3 ile en yüksek ikilinin içindedir ve getirdikleri arasında kullanıcı kimlik eşlemesi ile yetenek kümesi vardır. Bu ders o çelişkiyi çözer — sıfır bedel koşumda ödenmez, saklamada ödenir — ve kursu kapatır.

Koşum Bittikten Sonra Bakan Kanal

Bir süreç ölümcül bir sinyalle sonlandığında çekirdek, sürecin bellek görüntüsünü bir dosyaya yazabilir. Bu dosya bir olay akışı değildir; tek bir anlık kesittir ve sürecin son durumunu taşır: bellek içeriği, yetki durumu, kimlik alanları, açık kaynakların izleri.

Varsayımlar sürüyor. Döküm süreç sonlandığında yazılır ve koşum sırasında hiçbir şey ödetmez (GZ22). Dökümün taşıdığı dört olgu koddaki listedir (GZ23). Bedeller modeldeki yüzdelerdir, gerçek ölçüm değildir; taban koşum 1000 zaman birimidir (GZ24). Döküm tek anlıktır: koşum boyunca değişen bir olgunun yalnız son değeri görünür (GZ25). Döküm dosyası kalıcıdır; okunabildiği sürece taşıdığı olgular görünür kalır (GZ26). Dört kanal aynı anda açık olabilir ve koşum bedelleri toplanır (GZ27). Dökümün boyutu ve saklama süresi modelde yoktur (GZ28) ve bu, ölçünün dışında kalan asıl maliyettir.

# ornek dokum , calistirilmis degildir
$ cat /proc/sys/kernel/core_pattern
<dokum-yolu-sablonu>
$ ulimit -c
<dokum-boyut-siniri>
$ ls -l <dokum-dizini>
-rw-------  1 <sahip> <grup>  <boyut>  <zaman>  core.<surec-adi>.<no>

Blok çalıştırılmadı ve değerleri kurgudur. Dosyanın izin bitlerinin dar olması rastlantı değildir; nedeni aşağıda ölçülür.

# M03/K05 ortak tanim -- bu ders dort kanalin tamamini kurar.
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"]},
}
SIKI_DEMET = ["surec-ad-alani", "takma-ad-alani", "ag-ad-alani", "makine-ad-alani",
              "denetim-grubu", "yetenek-kirpma", "kullanici-ad-alani", "zorunlu-etiket"]
KANAL = {
    "sistem-cagrisi-izleme": ["kok-dosya-agaci", "oteki-takmalar", "dosya-sahipligi",
                              "yetenek-kumesi", "saat"],
    "ornekleme-profili":     ["islemci-payi", "islemci-sayisi", "sistem-yuku"],
    "cekirdek-ici-izleme":   ["oteki-sureclerin-listesi", "ata-surec-zinciri",
                              "dinleyen-baglanti-noktalari", "cekirdek-ayarlari",
                              "sistem-yuku"],
    "cekirdek-dokumu":       ["kullanilan-bellek", "yetenek-kumesi", "erisim-etiketi",
                              "kullanici-kimlik-esleme"],
}
# GZ24: bedeller 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, kanallar, olgular=OLGULAR):
    kapali = {o for o, _ in olgular} - set(gorunen(duzenekler, olgular))
    geri = set()
    for k in kanallar:
        geri |= set(KANAL[k]) & kapali
    return sorted(geri)


def yuzey(duzenekler, kanallar=(), olgular=OLGULAR):
    g = set(gorunen(duzenekler, olgular))
    geri = set(geri_gelen(duzenekler, kanallar, 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)})}


g = set(gorunen(SIKI_DEMET))
kapatilan = len(OLGULAR) - len(g)
ys = yuzey(SIKI_DEMET, ["cekirdek-dokumu"])
print("olgu:", len(OLGULAR), "| eksen:", len({e for _, e in OLGULAR}),
      "| siki demet: gorunen", len(g), "kapattigi", kapatilan)
print()
print("dokumun tasidigi olgu       eksen      siki demette durumu")
for o in KANAL["cekirdek-dokumu"]:
    print(f"  {o:26s}{dict(OLGULAR)[o]:11s}"
          f"{'zaten goruluyor' if o in g else 'GERI GELIYOR'}")
print()
print("kanal                   geri  acik yuzey  acik eksen  bedel  kosum")
for k in KANAL:
    y = yuzey(SIKI_DEMET, [k])
    b = KANAL_BEDELI[k]
    print(f"  {k:22s} {y['geri_gelen']:4d}  {y['acik_yuzey']:10d}  {y['acik_eksen']:10d}"
          f"  {b:5d}  {TABAN_SURE * (100 + b) // 100:5d}")
h = yuzey(SIKI_DEMET, list(KANAL))
bh = sum(KANAL_BEDELI.values())
print(f"  {'DORT KANAL BIRDEN':22s} {h['geri_gelen']:4d}  {h['acik_yuzey']:10d}"
      f"  {h['acik_eksen']:10d}  {bh:5d}  {TABAN_SURE * (100 + bh) // 100:5d}")
print()
print("siki demetin kapattigi olgu:", kapatilan)
print("dort kanalla geri gelen    :", h["geri_gelen"])
print("geri gelme orani           :", round(h["geri_gelen"] / kapatilan, 4))
print("hicbir kanalin getirmedigi :",
      sorted(set(o for o, _ in OLGULAR) - g - set(geri_gelen(SIKI_DEMET, list(KANAL)))))
print()
print("OLGU KUMESI SUPURMESI (dort kanal birden)")
de = [o for o, _ in OLGULAR
      if yuzey(SIKI_DEMET, list(KANAL),
               [x for x in OLGULAR if x[0] != o])["acik_yuzey"] != h["acik_yuzey"]]
buyuten = [e for e in sorted({e for _, e in OLGULAR})
           if yuzey(SIKI_DEMET, list(KANAL),
                    OLGULAR + [("yeni-olgu", e)])["acik_yuzey"] > h["acik_yuzey"]]
print("  cikarma: acik yuzey", h["acik_yuzey"], "| degistiren", len(de),
      "| degistirmeyen", len(OLGULAR) - len(de))
print("  ekleme : yuzeyi buyuten eksen", buyuten, "-> acik yuzey", h["acik_yuzey"] + 1)
olgu: 24 | eksen: 9 | siki demet: gorunen 10 kapattigi 14

dokumun tasidigi olgu       eksen      siki demette durumu
  kullanilan-bellek         kaynak     GERI GELIYOR
  yetenek-kumesi            yetki      GERI GELIYOR
  erisim-etiketi            etiket     zaten goruluyor
  kullanici-kimlik-esleme   kullanici  GERI GELIYOR

kanal                   geri  acik yuzey  acik eksen  bedel  kosum
  sistem-cagrisi-izleme     2          12           7     34   1340
  ornekleme-profili         1          11           7      3   1030
  cekirdek-ici-izleme       3          13           8      6   1060
  cekirdek-dokumu           3          13           7      0   1000
  DORT KANAL BIRDEN         8          18           8     43   1430

siki demetin kapattigi olgu: 14
dort kanalla geri gelen    : 8
geri gelme orani           : 0.5714
hicbir kanalin getirmedigi : ['bellek-siniri', 'makine-adi', 'makine-arayuzleri', 'makine-yonlendirme-tablosu', 'paylasilan-gecici-dizin', 'politika-kurallari']

OLGU KUMESI SUPURMESI (dort kanal birden)
  cikarma: acik yuzey 18 | degistiren 18 | degistirmeyen 6
  ekleme : yuzeyi buyuten eksen ['cekirdek'] -> acik yuzey 19

Kâhin, Kanal, Geri Gelen Olgu

Üç sayı yan yana durur. Kâhin: sürecin 24 olgusu, dokuz eksende. Kanal: çekirdek dökümü dört olgu taşıyor. Geri gelen olgu ve açık yüzey: dördünden 3’ü sıkı demetin kapattığı olgulardır ve geri gelir; açık yüzey 10’dan 13’e çıkar, açık eksen 7’de kalır.

Geri gelen üçlü kullanilan-bellek, yetenek-kumesi ve kullanici-kimlik-eslemedir. Üçü de üç ayrı düzeneğin kapattığı olgulardır: sırasıyla denetim grubu, yetenek kırpma ve kullanıcı ad alanı. Tek bir dosya, üç ayrı izolasyon kararını aynı anda geçersizleştirir. Dördüncü olgu erisim-etiketi sıkı demet altında zaten görünüyordu; zorunlu etiket düzeneği kendi ekseninde onu bilerek açık bırakıyor.

Açık eksenin 7’de kalması, önceki derste görülen ayrımı doğrular: döküm hiçbir kapalı ekseni yeniden açmaz, üç açık ekseni kalınlaştırır. Buna karşın açık yüzeyi 13’e çıkarır ve bu, çekirdek içi izlemeyle birlikte dört kanalın en büyük tekil yüzeyidir. Bedeli en düşük olan kanal, yüzeyi en çok büyüten iki kanaldan biridir.

Sıfır Bedel Nerede Ödeniyor

Koşum bedeli sıfırdır çünkü döküm koşan sürece dokunmaz. Bedel başka yerdedir ve üç biçimde ortaya çıkar.

Birincisi kalıcılıktır (GZ26). Öteki üç kanal, açık oldukları sürece bilgi verir; kapatıldıklarında görünürlük biter. Döküm bir dosyadır: bir kez yazıldığında, silinene kadar taşıdığı olguları göstermeye devam eder. Bir saatliğine açılan izleme bir saatlik görünürlük üretir, bir kez yazılan döküm ise saklandığı süre boyunca görünürlük üretir.

İkincisi dosyanın içeriğidir. Döküm, sürecin bellek görüntüsünü taşır; bellekte o anda ne varsa dökümde de vardır. Bu, ölçüde sayılan dört olgunun çok ötesinde bir kümedir: işlenen veri, oturum bilgileri, yapılandırma değerleri ve kimlik bilgileri bellekte bulunabilir. Çekirdek dökümü hassas veri taşır. Bu kurs dökümün içinden gizli veri çıkarma yordamını yazmaz; ölçtüğü şey dökümün hangi olguyu görünür kıldığıdır, o görünürlüğün nasıl kötüye kullanılacağı değil.

Üçüncüsü erişimdir. Dökümün üretildiği yol ve dosyanın sahipliği, kimin okuyabileceğini belirler. Paylaşılan bir dizine yazılan bir döküm, izolasyon demetinin dışındaki süreçler için de okunabilir olabilir.

Daraltma yolları buradan doğrudan çıkar. Döküm üretimi kapatılabilir ya da süreç başına kaynak sınırıyla boyut sınırına bağlanabilir; yetki yükselten süreçler için döküm üretimi ayrıca engellenebilir. Dosya dar izinlerle ve yalnız ayrıcalıklı sürecin okuyabileceği bir dizine yazılır, paylaşılan geçici dizinlere değil. Dökümler bir saklama politikasına bağlanır: tanı bittiğinde silinir. Dinlenirken şifreleme, dosyayı yedeklere ve kopyalara karşı da korur. Dördü birlikte, koşum bedeli sıfır olan kanalın gerçek bedelini yönetilebilir kılar.

Dört Kanalın Toplamı

Dört kanal birlikte açıldığında sonuç kursun üçüncü iddiasıdır. Sıkı demet 24 olgudan 14’ünü kapatıyordu; dört kanal bunların 8’ini geri getirir. Geri gelme oranı 0,5714‘tür: izolasyonun kapattığı olguların yarıdan fazlası gözlemle geri geliyor. Açık yüzey 10’dan 18’e, açık eksen 7’den 8’e çıkar. Toplam koşum bedeli yüzde 43‘tür ve koşum 1430’a uzar; dördünü aynı anda açık tutmak ender bir kurulumdur, ama kurulumun sınırını bu satır çizer.

Geri gelmeyen altı olgu da öğreticidir: bellek-siniri, makine-adi, makine-arayuzleri, makine-yonlendirme-tablosu, paylasilan-gecici-dizin ve politika-kurallari. Bunlar hiçbir kanalın listesinde yoktur ve kapalı kalırlar. İzolasyon, gözlem kanallarının bakmadığı yerlerde çalışmaya devam eder; delinen şey izolasyonun tamamı değil, kanalların kesiştiği kısmıdır.

Olgu kümesi süpürmesi son kez koşar. Çıkarma tarafında açık yüzeyi 24 olgunun 18’i değiştiriyor, 6’sı değiştirmiyor — değiştirmeyenler tam olarak yukarıdaki altılıdır. Ekleme tarafında yüzey yine yalnız cekirdek ekseninde büyüyor (18’den 19’a). Dört dersin dördünde de aynı sonuç çıktı: kapatıcısı olmayan eksen, listeye eklenen her olguyu doğrudan yüzeye yazar.

Özet

  • Çekirdek dökümü dört olgu taşıyor; 3’ü geri geliyor (kullanilan-bellek, yetenek-kumesi, kullanici-kimlik-esleme) ve açık yüzey 13 oluyor.
  • Koşum bedeli yüzde 0’dır; bedel kalıcılıkta, dosyanın içeriğinde ve erişimindedir. Döküm hassas veri taşır ve saklama ile erişimi sınırlanmalıdır.
  • Tek bir dosya üç ayrı düzeneğin — denetim grubu, yetenek kırpma, kullanıcı ad alanı — kararını aynı anda geçersizleştiriyor.
  • Dört kanal birlikte: geri gelen 8, açık yüzey 18, açık eksen 8, toplam bedel yüzde 43; geri gelme oranı 0,5714.
  • Altı olgu hiçbir kanalla geri gelmiyor; izolasyon kanalların bakmadığı yerde çalışmayı sürdürüyor.
  • Daraltma: döküm üretiminin kapatılması ya da boyut sınırına bağlanması, dar izinli ve paylaşılmayan bir dizin, saklama politikası ve dinlenirken şifreleme.

Kurs Kapanışı

Kurs tek bir kuralla yürüdü: bir izolasyonun sayısı kapattığı yüzey değil, açık bıraktığı yüzeydir; neyin hâlâ görüldüğü yazılmayan izolasyon ölçülmemiş sayılır. Aşağıdaki tablo dokuz dersi aynı ölçüyle yan yana koyar. gozlem konusunun dört satırı bu konuda ölçülen sayılardır; izolasyon konusunun beş satırı o derslerin kendi sayılarıyla doldurulur.

Ders Kâhin İzolasyon ya da kanal Açık yüzey / geri gelen
Ad Alanları 24 olgu / 9 eksen beş ad alanı 15 görünen; ağ ve makine ad alanı kendi eksenini tam kapatan tek ikili
Denetim Grupları 24 olgu / 9 eksen + denetim grubu 12 görünen; 3 olgu kapanıyor, islemci-sayisi açık kalıyor
Yetkiler 24 olgu / 9 eksen + yetenek kırpma 11 görünen; beş yetenek kümesinden yalnız biri kapanıyor, dosya yetkileri açık
Zorunlu Erişim Denetimi 36 erişim çiftinin 8’i gerekli + zorunlu etiket 10 görünen (sıkı demet); politikasız 28 fazla izin, kaba politika 10, dar politika 1; denetim kipinde yüzey 10 yerine 11
Konteyner Çalışma Zamanı 24 olgu / 9 eksen yaygın 6 düzenek / sıkı 8 düzenek 12‘ye karşı 10; iki düzenek yüzeyi yalnız 2 olgu daraltıyor, **açık eksen 7’de duruyor**
Sistem Çağrısı İzleme 24 olgu / 9 eksen kanal: 5 olgu gösteriyor, bedel yüzde 34 geri gelen 2, açık yüzey 12, açık eksen 7
Başarım Profilleme 24 olgu / 9 eksen kanal: 3 olgu gösteriyor, bedel yüzde 3 geri gelen 1, açık yüzey 11, açık eksen 7
Çekirdek İçi İzleme 24 olgu / 9 eksen kanal: 5 olgu gösteriyor, bedel yüzde 6 geri gelen 3, açık yüzey 13, açık eksen 8
Çekirdek Dökümü Çözümlemesi 24 olgu / 9 eksen kanal: 4 olgu taşıyor, bedel yüzde 0 geri gelen 3, açık yüzey 13, açık eksen 7

Kursun iki konusu birbirinin karşıtıydı ve ölçü bunu sayıyla yazdı: izolasyon 14 olgu kapattı, gözlem 8’ini geri getirdi.

Bu ders M03 müfredatının da sonudur. Beş kurs tek bir ekseni izledi: sistemin gerçek durumu ile operatörün elindeki kanıt arasındaki farkı ölçmek. Linux’a Giriş adları ve izinleri okumayı, Kabuk Programlama komutu bir araca dönüştürmeyi, Sistem Yönetimi çıktıdan çıkarılan tanının kaç kez yanlış olduğunu, Linux Ağ Yönetimi ve Sorun Giderme bir arızayı katman katman daraltmayı, Çekirdek Arayüzleri ve İzolasyon da izolasyonun açık bıraktığı yüzeyi ölçtü.

İki borç da ödendi. Ad alanı ve denetim grubu, Sistem Yönetimi kursunun servis yöneticisi dersinde ve Linux Ağ Yönetimi kursunun ağ yapılandırması bölümünde iki kez bu kursa havale edilmişti. Bu kurs ikisini de kurdu ve ikisini de açık bıraktıkları yüzeyle birlikte ölçtü: süreç ad alanı kendi süreç numarasını, denetim grubu işlemci sayısını açık bırakıyor, gözlem kanalları ise ikisinin kapattığı olguların bir kısmını geri getiriyor.

Sırada Bilgisayar Ağları müfredatı var. Bu kursta ağ, yalnız bir eksen olarak geçti: kapatılan üç olgu, yeniden açan bir kanal. Ağın kendisi — paketin iki uç arasında izlediği yol, katmanların görevleri, adresleme ve protokoller — orada kurulur. İlk kurs İnternet Nasıl Çalışır, bir adres satırına yazılan isteğin uçtan uca yolculuğunu izleyerek başlar.

İlerlemeni kaydetmek ve not almak için Giriş yap

Notlarım

Not almak için giriş yapmalısın.

Aramak için yazmaya başlayın.

↑↓ Esc gezin · aç · kapat