Kerangka Materi

Pengantar

  • sejarah singkat GNU/Linux
  • lisensi
  • versi kernel
  • siklus rilis
  • pohon kernel
  • mainline
  • kernel vs. ruang pengguna
  • mekanisme vs. kebijakan
  • alternatif driver kernel
  • RTOS vs. Linux

Manajemen Memori

  • memori virtual vs. memori fisik
  • alokasi memori di kernel
  • halaman
  • zona
  • API
  • slab

Patch Kernel

  • siklus hidup
  • git
  • sumber kernel
  • buat patch
  • periksa patch
  • perbaiki patch
  • kirim patch
  • kode yang diaudit

Modul Kernel

  • dapatkan sumber kernel
  • konfigurasi/pembuatan/instalasi
  • driver perangkat (terikat statis, dimuat saat runtime)
  • init/exit
  • lisensi
  • EXPORT SYMBOL GPL
  • makefile di luar pohon
  • module-init-tools
  • modul di dalam pohon kernel
  • Kconfig
  • passing parameter
  • sparse

Driver Karakter

  • arsitektur
  • antarmuka pengguna/kernel
  • subsistem I/O
  • VFS
  • sysfs (perangkat, bus, driver, kelas),
  • kobject/ktype/kset
  • model driver kernel Linux
  • file perangkat
  • driver karakter
    • inisialisasi
    • registrasi
    • open, release
    • cdev, cdev add, cdev del,...
    • nomor major/minor
    • udev, udevmonitor, udevadm

Operasi Lanjutan Driver Karakter

  • ioctl
  • unlocked ioctl
  • compat ioctl
  • API ruang pengguna
  • API ruang kernel
  • siklus hidup proses
  • tidur/blokir
  • tidur/bangun
  • antrian tunggu
  • thundering herd
  • poll/select

Debugging Kernel

  • debugging
  • debugging kernel
    • pencarian biner dengan git
    • dukungan debug dari kernel
    • printk syslogd, klogd, loglevels, rate limit, level debug, debug subsistem selectif
    • debugging dengan query debugfs
    • debugging oops, mengklaim oops
    • Kunci Sistem Req Ajaib
    • kgdb/kdb
    • JTAG

Tracing

  • gcov
  • lcov
  • oprofile
  • ftrace
    • tracer nop
    • tracer fungsi
    • tracer beralih jadwal
    • tracer grafik fungsi
    • tracer dinamis
  • trace-cmd/kernelshark
  • perf
  • LTTng

Interrupts

  • interrupt vs. polling
  • interrupt
  • bagian program
  • reentrancy
  • event
  • penangan interrupt
  • penangan interrupt bersama
  • alur interrupt
  • kontrol interrupt

Menunda Pekerjaan

  • top/bottom halves
  • softirqs
  • tasklets
  • work queues
  • interrupsi berbasis thread

Konkurensi

  • wilayah/bagian kritis
  • atomic
  • kondisi balapan
  • sinkronisasi
  • penguncian
  • solusi penguncian
  • deadlock
  • konten persaingan
  • apa yang harus dikunci?
  • apa yang dapat digunakan?
    • operasi atomic
    • spin locks
    • reader-writer spin locks
    • semaphore
    • binary semaphore
    • mutex
    • reader-writer semaphore
    • variabel completion
    • sequential locks
    • nonaktifkan preemption
    • pengaturan dan penghalang

Waktu

  • HZ
  • Jiffies
  • delay besar/kecil
  • timer kernel

I/O Perangkat Keras

  • Port I/O
  • Memori I/O
  • Bagaimana cara menangani efek samping saat mengakses register?

Komunikasi Pengguna-Kernel

  • put(get)_user()
  • copy to(from)_user()
  • I/O Kernel
  • pemetaan memori
  • procfs
  • sysfs
  • debugfs
  • relayfs
  • netlink
  • ioctl

Portabilitas

  • ukuran kata
  • tipe opak
  • char bertanda/tidak bertanda
  • perataan data
  • promosi integral
  • penggunaan ulang kode
  • endianess
  • sistem tick
  • ukuran halaman
  • urutan instruksi
  • SMP/preemption/high memory

Kecuali dicatat lain, konten dan struktur kursus ini dilisensikan di bawah Atribusi-NonKomersial-BerbagiSerupa 4.0 Internasional (CC BY-NC-SA 4.0).

Persyaratan

  • Keterampilan dasar dalam menggunakan sistem GNU/Linux sebagai pengguna akhir
  • Keterampilan dasar dalam shell baris perintah
  • Pengetahuan dasar tentang pengembangan ruang pengguna / aplikasi
  • Pengetahuan pemrograman C menengah
  • Harus telah mengikuti Sistem Tersemat GNU/Linux Architecture (disarankan kuat!) dan/atau memiliki pemahaman yang baik tentang topik-topik yang dijelaskan di sana
 35 Jam

Jumlah Peserta


Biaya per Peserta

Testimoni (5)

Kursus Mendatang

Kategori Terkait