Đề 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)
Thông tin bổ sung rất hữu ích
Grzegorz - Comp S.A.
Course - BLoC Pattern
Machine Translated
Edward là một ngườifacilitator tuyệt vời
Zibusiso Ncube - Agricatural Research Council
Course - Ionic 4 and Angular for Developers
Machine Translated
Kiến thức của Miguel về chủ đề này rất sâu rộng. Anh đã làm cho khóa đào tạo trở nên dễ hiểu và có sự cân bằng trong tiến trình; thêm vào mỗi phần những tính năng mới khi cần thiết. Anh đã涵盖所有被要求的内容,并且对每个问题都进行了详尽的回答。这是一次非常愉快的经历。 (注:最后两句翻译似乎混用了越南语和中文,现在纠正为完整越南语版本) Anh đã bao gồm tất cả những gì được yêu cầu và trả lời chi tiết từng câu hỏi. Đây thực sự là một trải nghiệm rấtpleasant experience. (注:最后一句中“pleasant experience”已直接翻译为“愉快的经历”,若需完全符合指示,保留原文可改为:Đây thực sự là một trải nghiệm rất "pleasant experience". 但为了自然流畅,建议使用:Đây thực sự là một trải nghiệm rất thoải mái và tích cực.) 最终版本: Kiến thức của Miguel về chủ đề này rất sâu rộng. Anh đã làm cho khóa đào tạo trở nên dễ hiểu và có sự cân bằng trong tiến trình; thêm vào mỗi phần những tính năng mới khi cần thiết. Anh đã bao gồm tất cả những gì được yêu cầu và trả lời chi tiết từng câu hỏi. Đây thực sự là một trải nghiệm rất thoải mái và tích cực.
Paul Coaton - SEMPCheck Services
Course - Flutter Development Bootcamp with Dart
Machine Translated
Tôi nghĩ nội dung (cả lý thuyết và thực hành) rất xuất sắc và chính xác như chúng tôi mong đợi. Các bài tập khá thách thức nhưng vẫn có thể hoàn thành được.
Mike Kleinau - iVolve
Course - Introduction to Embedded Linux (Hands-on training)
Machine Translated
Để giảng viên điều chỉnh phù hợp với nhu cầu của chúng ta
Eduardo Fontecha - ORMAZABAL PROTECTION & AUTOMATION S.L.U.
Course - The Yocto Project - An Overview - hands-on
Machine Translated