Đề cương khóa học
Giới thiệu
- Lịch sử nhanh chóng của GNU/Linux
- Cấp phép
- Phiên bản kernel
- Chu kỳ phát hành
- Cây kernel
- Mainline
- Kernel so với không gian người dùng
- Cơ chế so với chính sách
- Các lựa chọn thay thế trình điều khiển kernel
- RTOS so với Linux
Bộ nhớ Management
- Bộ nhớ ảo so với bộ nhớ vật lý
- Cấp phát bộ nhớ trong kernel
- Trang
- Vùng
- API
- Slab
Vá Kernel
- Vòng đời
- Git
- Mã nguồn kernel
- Tạo vá
- Kiểm tra vá
- Sửa vá
- Gửi vá
- Mã đã được kiểm toán
Module Kernel
- Lấy mã nguồn kernel
- Cấu hình/biên dịch/cài đặt
- Trình điều khiển thiết bị (liên kết tĩnh, tải khi chạy)
- Khởi tạo/thoát
- Cấp phép
- EXPORT SYMBOL GPL
- Makefile ngoài cây
- module-init-tools
- Module trong cây kernel
- Kconfig
- Truyền tham số
- Sparse
Trình điều khiển Ký tự
- Kiến trúc
- Giao diện người dùng/kernel
- Hệ thống I/O
- VFS
- sysfs (thiết bị, bus, trình điều khiển, lớp)
- kobject/ktype/kset
- Mô hình trình điều khiển kernel Linux
- Tệp thiết bị
- Trình điều khiển ký tự
- Khởi tạo
- Đăng ký
- Mở, giải phóng
- cdev, cdev add, cdev del,...
- Số chính/phụ
- udev, udevmonitor, udevadm
Các Thao tác Trình điều khiển Ký tự Nâng cao
- ioctl
- ioctl không khóa
- ioctl tương thích
- API không gian người dùng
- API không gian kernel
- Vòng đời quy trình
- Ngủ/chặn
- Ngủ/đánh thức
- Hàng đợi chờ
- Bầy đàn sấm sét
- poll/select
Gỡ lỗi Kernel
- Lỗi
- Gỡ lỗi
- Gỡ lỗi kernel
- Tìm kiếm nhị phân với git
- Hỗ trợ gỡ lỗi từ kernel
- printk syslogd, klogd, mức nhật ký, giới hạn tốc độ, mức gỡ lỗi, chọn lọc các hệ thống con
- Gỡ lỗi bằng cách truy vấn debugfs
- Oops debugging, khẳng định oops
- Magic SysRq Key
- kgdb/kdb
- JTAG
Truy vết
- gcov
- lcov
- oprofile
- ftrace
- Tracer nop
- Tracer hàm
- Tracer chuyển đổi lịch trình
- Tracer đồ thị hàm
- Tracer động
- trace-cmd/kernelshark
- perf
- LTTng
Ngắt
- Ngắt so với thăm dò
- Ngắt
- Phần chương trình
- Khả năng tái nhập
- Sự kiện
- Trình xử lý ngắt
- Trình xử lý ngắt được chia sẻ
- Luồng ngắt
- Điều khiển ngắt
Hoãn Công việc
- Nửa trên/nửa dưới
- softirqs
- tasklets
- Hàng đợi công việc
- Ngắt được luồng hóa
Đồng thời
- Vùng/phần quan trọng
- Nguyên tử
- Điều kiện đua
- Đồng bộ hóa
- Khóa
- Giải pháp khóa
- Bế tắc
- Tranh chấp
- Khóa cái gì?
- Có thể sử dụng cái gì?
- Thao tác nguyên tử
- Khóa quay
- Khóa quay đọc-ghi
- Semaphore
- Semaphore nhị phân
- Mutex
- Semaphore đọc-ghi
- Biến hoàn thành
- Khóa tuần tự
- Vô hiệu hóa ngăn chặn
- Sắp xếp và rào cản
Thời gian
- HZ
- Jiffies
- Độ trễ lớn/nhỏ
- Bộ hẹn giờ kernel
I/O Phần cứng
- Cổng I/O
- Bộ nhớ I/O
- Làm thế nào để xử lý các tác dụng phụ khi truy cập thanh ghi?
Người dùng-Kernel Communication
- put(get)_user()
- copy to(from)_user()
- I/O Kernel
- Ánh xạ bộ nhớ
- procfs
- sysfs
- debugfs
- relayfs
- netlink
- ioctl
Tính di động
- Kích thước từ
- Loại mờ đục
- char có dấu/không dấu
- Căn chỉnh dữ liệu
- Quảng bá tích phân
- Tái sử dụng mã
- Endianess
- Tick hệ thống
- Kích thước trang
- Thứ tự hướng dẫn
- SMP/ngăn chặn/bộ nhớ cao
Trừ khi có quy định khác, nội dung và bản phác thảo khóa học này được cấp phép theo Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0).
Requirements
- Có kiến thức cơ bản về sử dụng hệ thống GNU/Linux với vai trò người dùng cuối.
- Có kiến thức cơ bản về giao diện dòng lệnh (command line shell).
- Có kiến thức cơ bản về phát triển ứng dụng / không gian người dùng.
- Có kiến thức lập trình C ở mức trung cấp.
- Nên đã tham gia khóa học Embedded GNU/Linux Systems Architecture (rất khuyến khích!) hoặc có hiểu biết sâu sắc về các chủ đề được đề cập trong khóa học đó.
Testimonials (5)
Edward is an awesome facilitator
Zibusiso Ncube - Agricatural Research Council
Course - Ionic 4 and Angular for Developers
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