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
Testimoni (5)
Informasi tambahan yang sangat berguna
Grzegorz - Comp S.A.
Kursus - BLoC Pattern
Diterjemahkan Mesin
Edward adalah fasilitator yang hebat
Zibusiso Ncube - Agricatural Research Council
Kursus - Ionic 4 and Angular for Developers
Diterjemahkan Mesin
Pengetahuan Miguel tentang subjek tersebut sangat luas. Dia membuat pelatihan mudah dipahami dan alurnya seimbang; menambahkan fitur baru ke setiap bagian sesuai kebutuhan. Dia membahas semua yang diminta dan menjawab setiap pertanyaan dengan sangat rinci. Ini merupakan pengalaman yang sangat menyenangkan.
Paul Coaton - SEMPCheck Services
Kursus - Flutter Development Bootcamp with Dart
Diterjemahkan Mesin
Bahwa pelatih menyesuaikan diri dengan kebutuhan kami
Eduardo Fontecha - ORMAZABAL PROTECTION & AUTOMATION S.L.U.
Kursus - The Yocto Project - An Overview - hands-on
Diterjemahkan Mesin
Instruktur sangat antusias, ramah, dan menyukai topik tersebut
Isaac Murphy - Royal New Zealand Airforce
Kursus - Build Native iOS and Android Apps with Flutter
Diterjemahkan Mesin