Course Outline
Perkenalan
- sejarah singkat GNU/Linux
- perizinan
- versi kernel
- siklus rilis
- pohon kernel
- jalur utama
- kernel vs. ruang pengguna
- mekanisme vs. kebijakan
- alternatif driver kernel
- RTOS vs. Linux
Memori Management
- Memori virtual vs. memori fisik
- alokasi memori di kernel
- halaman
- Zona
- API
- lempeng
Patch Kernel
- siklus hidup
- Mengetik
- sumber kernel
- membuat patch
- periksa patch
- memperbaiki tambalan
- tambalan kapal
- kode yang diaudit
Modul Kernel
- dapatkan sumber kernel
- konfigurasikan/bangun/instal
- driver perangkat (tertaut secara statis, dimuat saat runtime)
- inisiasi/keluar
- perizinan
- SIMBOL EKSPOR GPL
- keluar dari pohon makefile
- modul-init-alat
- modul di pohon kernel
- Konfigurasi K
- parameter lewat
- jarang
Pengemudi Char
- arsitektur
- antarmuka pengguna/kernel
- Subsistem I/O
- Bahasa Inggris VFS
- sysfs (perangkat, bus, driver, kelas),
- objek ko/tipe k/kset
- model penggerak kernel linux
- file perangkat
- pengemudi char
- inisialisasi
- pendaftaran
- membuka, melepaskan
- cdev, cdev tambah, cdev hapus,...
- angka mayor/minor
- udev, monitor udev, udevadm
Operasi Driver Karakter Lanjutan
- bahasa inggris
- ioctl yang tidak terkunci
- kompatibel dengan ioctl
- API ruang pengguna
- API ruang kernel
- siklus hidup proses
- tidur/memblokir
- tidur/bangun
- antrian tunggu
- kawanan yang bergemuruh
- jajak pendapat/pilih
Debugging Kernel
- serangga
- men-debug
- men-debug kernel
- pencarian biner dengan git
- dukungan debug dari kernel
- printk syslogd, klogd, loglevels, batas laju, level debug, debug subsistem selektif
- debugging dengan meminta debugfs
- oops debugging, menegaskan oops
- Kunci SysRq Ajaib
- kgdb/kdb
- JTAG
Pelacakan
- gcov
- bahasa inggris
- profil
- trace cepat
- pelacak nop
- pelacak fungsi
- pelacak sakelar terjadwal
- pelacak grafik fungsi
- pelacak dinamis
- jejak-cmd/kernelshark
- sempurna
- LTTng
Interupsi
- interupsi vs. polling
- mengganggu
- bagian program
- masuk kembali
- Peristiwa
- penangan interupsi
- penangan interupsi bersama
- mengganggu aliran
- kontrol interupsi
Menunda Pekerjaan
- bagian atas/bawah
- perangkat lunak
- tugas kecil
- antrian kerja
- interupsi berulir
Konkurensi
- wilayah/bagian kritis
- atom
- kondisi balapan
- sinkronisasi
- penguncian
- solusi penguncian
- jalan buntu
- pendapat
- apa yang harus dikunci?
- apa yang bisa digunakan?
- operasi atom
- kunci putar
- kunci putar pembaca-penulis
- tiang sinyal
- semafor biner
- muteks
- semafor pembaca-penulis
- variabel penyelesaian
- kunci berurutan
- nonaktifkan preemption
- ketertiban dan hambatan
Waktu
- HZ
- Jiffie sebentar
- penundaan besar/kecil
- pengatur waktu kernel
Perangkat Keras I/O
- Port masukan/keluaran
- Memori I/O
- Bagaimana menangani efek samping saat mengakses register?
Pengguna-Kernel Communication
- menempatkan(dapatkan)_pengguna()
- salin ke(dari)_pengguna()
- Input/Output Kernel
- pemetaan memori
- proses
- sistem operasi
- debugfs
- relai
- tautan jaringan
- bahasa inggris
Portabilitas
- ukuran kata
- jenis buram
- karakter bertanda tangan/tidak bertanda tangan
- penyelarasan data
- promosi integral
- penggunaan kembali kode
- kegigihan
- sistem centang
- ukuran halaman
- instruksi pemesanan
- SMP/preemption/memori tinggi
Kecuali dinyatakan lain, konten dan garis besar kursus ini dilisensikan berdasarkan Atribusi-NonKomersial-BerbagiSerupa 4.0 Internasional (CC BY-NC-SA 4.0).
Requirements
- Kemampuan dasar dalam menggunakan sistem GNU/Linux sebagai pengguna akhir
- Keakraban dasar dengan shell baris perintah
- Pengetahuan dasar tentang ruang pengguna / pengembangan aplikasi
- Pengetahuan pemrograman C tingkat menengah
- Harus pernah menghadiri Embedded GNU/Linux Systems Architecture sebelumnya (sangat direkomendasikan!) dan/atau memiliki pemahaman yang baik tentang topik yang diuraikan di sana
Testimonials (5)
Edward adalah seorang fasilitator yang hebat
Zibusiso Ncube - Agricatural Research Council
Course - Ionic 4 and Angular for Developers
Machine Translated
Maybe more exercises could be better for lerning but the time was to little
Gianpiero Arico' - Urmet Spa
Course - Embedded Linux Systems Architecture
Miguel's knowledge of the subject was extensive. He made the training easy to understand and the flow was balanced; adding on to each section with new features as needed. He covered everything that was asked and answered each and every question thoroughly. It was a very pleasant experience.
Paul Coaton - SEMPCheck Services
Course - Flutter Development Bootcamp with Dart
That the trainer adapts to our needs
Eduardo Fontecha - ORMAZABAL PROTECTION & AUTOMATION S.L.U.
Course - The Yocto Project - An Overview - hands-on
The trainer was enthusiastic, kind, and loved the topic