Đề cương khóa học

Giới thiệu

  • Lịch sử nhanh của GNU/Linux
  • Giấy phép
  • Phiên bản kernel
  • Chu kỳ phát hành
  • Các 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 trình điều khiển kernel khác nhau
  • 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 kernel
  • Trang
  • Khu vực
  • API
  • Slab

Bảng vá Kernel

  • Chu trình sống
  • Git
  • Nguồn kernel
  • Tạo bảng vá
  • Kiểm tra bảng vá
  • Sửa lỗi trong bảng vá
  • Gửi bảng vá
  • Mã đã được kiểm tra

Mô-đun Kernel

  • Lấy nguồn kernel
  • 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 tại runtime)
  • Khởi tạo/kết thúc
  • Giấy phép
  • EXPORT SYMBOL GPL
  • Makefile ngoài cây
  • Module-init-tools
  • Mô-đun 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 tin 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ố major/minor
    • udev, udevmonitor, udevadm

Các thao tác 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 kernel
  • Chu trình sống của quy trình
  • Ngủ/chặn
  • Ngủ/đánh thức
  • Hàng đợi chờ
  • Thundering herd
  • poll/select

Gỡ lỗi Kernel

  • 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, loglevels, giới hạn tốc độ, cấp độ gỡ lỗi, hệ thống con gỡ lỗi có chọn lọc
    • Gỡ lỗi bằng cách truy vấn debugfs
    • Gỡ lỗi oops, xác nhận oops
    • Magic SysRq Key
    • kgdb/kdb
    • JTAG

Theo dõi

  • gcov
  • lcov
  • oprofile
  • ftrace
    • nop tracer
    • function tracer
    • sched switch tracer
    • function graph tracer
    • dynamic tracer
  • trace-cmd/kernelshark
  • perf
  • LTTng

Ngắt

  • Ngắt so với quét
  • Ngắt
  • Khu vực chương trình
  • Tính tái nhập
  • Sự kiện
  • Xử lý ngắt
  • Xử lý ngắt chia sẻ
  • Lưu trình xử lý ngắt
  • Kiểm soát ngắt

Hoãn công việc

  • Top/bottom halves
  • softirqs
  • tasklets
  • hàng đợi công việc
  • Ngắt đa luồng

Đồng bộ hóa

  • Khu vực/vùng quan trọng
  • Nguyên tử
  • Điều kiện đua
  • Đồng bộ hóa
  • Khóa
  • Giải pháp khóa
  • Tắc đường
  • Tranh chấp
  • Khóa gì?
  • Có thể sử dụng gì?
    • Các thao tác nguyên tử
    • Khóa spin
    • Khóa spin đọc-ghi
    • Semaphore
    • Semaphore nhị phân
    • Mutex
    • Semaphore đọc-ghi
    • Biến hoàn thành
    • Khóa tuần tự
    • Tắt cướp
    • Đặt hàng và rào cản

Thời gian

  • HZ
  • Jiffies
  • Trễ lớn/nhỏ
  • Bộ đếm thời gian kernel

I/O Phần cứng

  • Cổng I/O
  • Bộ nhớ I/O
  • Cách xử lý tác dụng phụ khi truy cập các thanh ghi?

Giao tiếp Người dùng-Kernel

  • 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 dữ liệu mờ
  • char ký tự có dấu/không dấu
  • Cân đối dữ liệu
  • Tăng cường nguyên tử
  • Sử dụng lại mã
  • Đổi chiều
  • Tick hệ thống
  • Kích thước trang
  • Thứ tự hướng dẫn
  • SMP/preemption/bộ nhớ cao

Trừ khi có ghi chú khác, nội dung và cấu trúc 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

  • Am hiểu cơ bản về việc sử dụng hệ thống GNU/Linux như người dùng cuối
  • Am hiểu cơ bản về shell dòng lệnh
  • Kiến thức cơ bản về phát triển không gian người dùng/ứng dụng
  • Kiến thức lập trình C trung cấp
  • Đã tham dự Kiến trúc Hệ thống GNU/Linux nhúng trước đó (được khuyến khích mạnh mẽ!) và/hoặc có hiểu biết tốt về các chủ đề được trình bày ở đó
 35 Giờ học

Số người tham gia


Giá cho mỗi người tham gia

Đánh giá (5)

Các khóa học sắp tới

Các danh mục liên quan