Bize Ulaşın

Eğitim İçeriği

Giriş

  • GNU/Linux'un hızlı tarihi
  • lisanslama
  • çekirdek sürümleme
  • yayın döngüsü
  • çekirdek ağaçları
  • ana dal (mainline)
  • çekirdek ile kullanıcı alanı
  • mekanizma ile politika
  • çekirdek sürücü alternatifleri
  • RTOS ile Linux

Bellek Yönetimi

  • Sanal bellek ile fiziksel bellek
  • çekirdekte bellek tahsisi
  • sayfalar
  • bölgeler (zones)
  • API
  • slab

Çekirdek Yaması (Patch)

  • yaşam döngüsü
  • git
  • çekirdek kaynağı
  • yama oluşturma
  • yama kontrolü
  • yama düzeltme
  • yama gönderme
  • denetlenmiş kod

Çekirdek Modülleri

  • çekirdek kaynak kodunu alma
  • konfigürasyon/derleme/kurulum
  • aygıt sürücüleri (statik olarak bağlantılanmış, çalışma zamanında yüklenen)
  • init/exit
  • lisanslama
  • EXPORT_SYMBOL GPL
  • üçüncü dal (out of tree) makefile
  • module-init-tools
  • çekirdek ağacında modül
  • Kconfig
  • parametre geçirimi
  • sparse

Karakter Aygıt Sürücüleri (Char Drivers)

  • mimari
  • kullanıcı/çekirdek arayüzü
  • G/Ç alt sistemi
  • VFS
  • sysfs (aygıtlar, veri yolu (bus), sürücüler, sınıflar),
  • kobject/ktype/kset
  • Linux çekirdek sürücü modeli
  • aygıt dosyaları
  • karakter sürücüsü

    • başlatma
    • kayıt
    • açma, kapatma (release)
    • cdev, cdev add, cdev del,...
    • büyük/küçük numara (major/minor)
    • udev, udevmonitor, udevadm

Gelişmiş Karakter Aygıt Sürücü İşlemleri

  • ioctl
  • unlocked ioctl
  • uyumlu ioctl (compat ioctl)
  • kullanıcı alanı API
  • çekirdek alanı API
  • işlem yaşam döngüsü
  • uyuma/engelleme (blocking)
  • uyuma/uyanma
  • bekleme kuyruğu
  • kalabalık sürü (thundering herd) sorunu
  • poll/select

Çekirdek Hata Ayıklama (Debugging)

  • hata ayıklama
  • çekirdeği hata ayıklama

    • git ile ikili arama (binary search)
    • çekirdekten hata ayıklama desteği
    • printk syslogd, klogd, günlük düzeyleri, hız sınırı, hata ayıklama düzeyleri, seçili alt sistemlerin hata ayıklaması
    • debugfs sorgulama ile hata ayıklama
    • oops hata ayıklaması, oops tetikleme
    • Büyüklü Sayıç Anahtarı (Magic SysRq Key)
    • kgdb/kdb
    • JTAG

İzleme (Tracing)

  • gcov
  • lcov
  • oprofile
  • ftrace

    • nop izleyici
    • fonksiyon izleyici
    • tamamlayıcı (sched switch) izleyici
    • fonksiyon grafiği izleyici
    • dinamik izleyici
  • trace-cmd/kernelshark
  • perf
  • LTTng

Kesintiler (Interrupts)

  • kesintiler ile sorgulama (polling) arasındaki fark
  • kesinti
  • program bölümleri
  • yeniden girilebilirlik (reentrancy)
  • olaylar
  • kesinti işleyicisi
  • paylaşılan kesinti işleyicisi
  • kesinti akışı
  • kesinti kontrolü

İşin Erteleilmesi (Deferring Work)

  • üst/alt yarım işler (top/bottom halves)
  • yumuşak kesintiler (softirqs)
  • tasklet'ler
  • iş kuyrukları (work queues)
  • çalıştırılmış (threaded) kesintiler

Eşzamanlılık (Concurrency)

  • kritik bölge/bölüm
  • atomik
  • yarış durumu (race condition)
  • eşitleme
  • kitaplık kilitleri (locking)
  • kilitleme çözümleri
  • ölüm kalıp (deadlock)
  • rekabet (contention)
  • neyi kilitlemeli?
  • ne kullanılabilir?

    • atomik işlemler
    • spin kilitleri
    • okuyucu-yazıcı spin kilitleri
    • semaphor
    • ikili semaphor
    • mutex
    • okuyucu-yazıcı semaphor
    • tamamlanma değişkenleri (completion variables)
    • sıralı kilitler (sequential locks)
    • ön emir devre dışı bırakma
    • sıralama ve bariyerler

Zaman

  • HZ
  • Jiffies
  • büyük/küçük gecikmeler
  • çekirdek zamanlayıcıları

Donanım G/Ç (Hardware I/O)

  • G/Ç Portları
  • G/Ç Belleği
  • Kayıtlara erişimin yan etkileriyle nasıl başa çıkılır?

Kullanıcı-Çekirdek İletişimi

  • put(get)_user()
  • copy to(from)_user()
  • Çekirdek G/Ç
  • bellek eşleme
  • procfs
  • sysfs
  • debugfs
  • relayfs
  • netlink
  • ioctl

Taşınabilirlik (Portability)

  • kelime boyutu
  • şeffaf türler (opaque types)
  • imzalı/imzasız karakter
  • veri hizalama
  • tam sayı yükseltme (integral promotion)
  • kod yeniden kullanımı
  • biteşlik (endianess)
  • sistem tik zamanı
  • sayfa boyutu
  • yönerge sıralaması
  • SMP/ön emir (preemption/yüksek bellek)

Aksi belirtilmediği sürece bu içeriğin ve kurs taslağının lisansı Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0). altında bulunmaktadır.

Kurs İçin Gerekli Önbilgiler

  • GNU/Linux sistemini son kullanıcı olarak kullanmaya yönelik temel aşinalık
  • Komut satırı kabuğuna yönelik temel aşinalık
  • Kullanıcı alanı (user space) / uygulama geliştirme konusunda temel bilgi
  • Orta düzey C programlama bilgisi
  • Aşağıdaki eğitime katılmış olmalıGömülü GNU/Linux Sistem Mimarisi (şiddetle tavsiye edilir!) ve/veya burada belirtilen konulara dair iyi bir anlayışa sahip olmalı
 35 Saatler

Katılımcı Sayısı


Katılımcı başına fiyat

Danışanlarımızın Yorumları (3)

Yaklaşan Etkinlikler

İlgili Kategoriler