Cảm ơn bạn đã gửi yêu cầu! Một thành viên trong đội ngũ của chúng tôi sẽ liên hệ với bạn ngay lập tức.
Cảm ơn bạn đã gửi đặt chỗ! Một thành viên trong đội ngũ của chúng tôi sẽ liên hệ với bạn ngay lập tức.
Đề cương khóa học
Giới thiệu
- lịch sử ngắn gọn về GNU/Linux
- giấy phép
- phiên bản hạt nhân
- chu kỳ phát hành
- cây mã nguồn hạt nhân (kernel trees)
- mainline (đường chính)
- hạt nhân so với không gian người dùng
- cơ chế so với chính sách
- phương án thay thế cho trình điều khiển hạt nhân
- RTOS so với Linux
Quản lý bộ nhớ
- Bộ nhớ ảo so với bộ nhớ vật lý
- phân bổ bộ nhớ trong hạt nhân
- trang (pages)
- vùng (zones)
- API
- slab
Vệt sửa hạt nhân (Kernel Patch)
- vòng đời
- git
- mã nguồn hạt nhân
- tạo vệt sửa
- kiểm tra vệt sửa
- sửa lỗi vệt sửa
- phân phối vệt sửa
- mã nguồn đã kiểm toán
Mô-đun hạt nhân
- tải mã nguồn hạt nhân
- cấu hình/xây dựng/cài đặt
- trình điều khiển thiết bị (được liên kết tĩnh, tải khi chạy)
- khởi tạo/hủy
- giấy phép
- EXPORT SYMBOL GPL
- makefile ngoài cây mã nguồn
- module-init-tools
- mô-đun trong cây mã nguồn hạt nhân
- Kconfig
- truyền tham số
- sparse
Trình điều khiển ký tự (Char Drivers)
- kiến trúc
- giao diện người dùng/hạt nhân
- hệ thống con 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 hạt nhân Linux
- tệp thiết bị
- trình điều khiển ký tự
- khởi tạo
- đăng ký
- mở, đóng
- cdev, cdev add, cdev del,...
- số major/minor
- udev, udevmonitor, udevadm
Hoạt động nâng cao của trình điều khiển ký tự
- ioctl
- unlocked ioctl
- compat ioctl
- API không gian người dùng
- API không gian hạt nhân
- vòng đời tiến trình
- ngủ/chặn
- ngủ/thức
- hàng đợi chờ (wait queue)
- bầy ong (thundering herd)
- poll/select
Gỡ lỗi hạt nhân
- gỡ lỗi
- gỡ lỗi hạt nhân
- tìm kiếm nhị phân bằng git
- hỗ trợ gỡ lỗi từ hạt nhân
- printk syslogd, klogd, mức log, giới hạn tốc độ, mức gỡ lỗi, hệ thống con gỡ lỗi
- gỡ lỗi bằng cách truy vấn debugfs
- gỡ lỗi lỗi, gây ra lỗi (oops)
- Phím Magic SysRq
- kgdb/kdb
- JTAG
Theo dõi (Tracing)
- gcov
- lcov
- oprofile
- ftrace
- tracer nop
- tracer hàm
- tracer chuyển lịch trình (sched switch)
- tracer đồ thị hàm
- tracer động
- trace-cmd/kernelshark
- perf
- LTTng
Ngắt
- ngắt so với quét (polling)
- ngắt
- phần đoạ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 chia sẻ
- dòng ngắt
- kiểm soát ngắt
Hoãn công việc
- phần đầu/phần cuối
- softirqs
- tasklets
- dãy công việc (work queues)
- ngắt luồng (threaded interrupts)
Đồng thời
- vùng/phần đoạn quan trọng
- nguyên tử (atomic)
- trạng thái tranh chấp (race condition)
- đồng bộ hóa
- khóa
- giải pháp khóa
- deadlock (chết khóa)
- độ tranh chấp
- nên khóa gì?
- có thể sử dụng gì?
- phép toán nguyên tử
- spin locks
- spin locks đọc/ghi
- semaphore
- binary semaphore
- mutex
- semaphore đọc/ghi
- biến hoàn thành
- sequential locks
- vô hiệu hóa tiền chế
- trật tự và hàng rào (barriers)
Thời gian
- HZ
- Jiffies
- độ trễ lớn/nhỏ
- hẹn giờ hạt nhân
I/O phần cứng
- Cổng I/O
- Bộ nhớ I/O
- Xử lý các tác dụng phụ khi truy cập thanh ghi như thế nào?
Giao tiếp Người dùng - Hạt nhân
- put(get)_user()
- copy to(from)_user()
- I/O hạt nhân
- ánh xạ bộ nhớ
- procfs
- sysfs
- debugfs
- relayfs
- netlink
- ioctl
Tính di động
- kích thước từ
- kiểu không rõ ràng (opaque types)
- ký / không ký char
- sự căn chỉnh dữ liệu
- phép tăng cường nguyên (integral promotion)
- tái sử dụng mã
- endianess
- nhịp hệ thống (system tick)
- kích thước trang
- trật tự hướng dẫn
- SMP/tiền chế/bộ nhớ cao
Ngoại trừ khi có ghi chú khác, nội dung và chương trình khóa học này được cấp phép theo Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0).
Yêu cầu
- Hiểu biết cơ bản về việc sử dụng hệ thống GNU/Linux như một người dùng cuối
- Hiểu biết cơ bản về dòng lệnh (command line shell)
- Hiểu biết cơ bản về phát triển không gian người dùng (user space) / ứng dụng
- Hiểu biết trung cấp về lập trình C
- Đã tham gia Kiến trúc hệ thống GNU/Linux nhúng trước đó (khuyên dùng!) và/hoặc có sự hiểu biết tốt về các chủ đề được nêu ra ở đó
35 Giờ
Đánh giá (3)
Mọi thứ đều ổn.
Adrian Rybka - SEOyon
Khóa học - Flutter Development Bootcamp with Dart
Dịch thuật bằng máy
Thông tin bổ sung rất hữu ích
Grzegorz - Comp S.A.
Khóa học - BLoC Pattern
Dịch thuật bằng máy
Cách trình bày và giao tiếp của giảng viên.
Gianpiero Arico - Urmet Spa
Khóa học - Embedded Linux Systems Architecture
Dịch thuật bằng máy