강의

멘토링

로드맵

Inflearn brand logo image
Hardware

/

Embedded IoT

Cấu trúc và nguyên lý Linux kernel: Nửa sau của interrupt [Bài giảng trực tiếp của tác giả Phần 1-6]

Tác giả của "디버깅을 통해 배우는 리눅스 커널의 구조와 원리" giải thích đúng đắn khái niệm cốt lõi về 'phần sau ngắt' của Linux kernel mới nhất (v6.1), được dùng nhiều nhất trong phần mềm hệ thống.

(5.0) 2 đánh giá

176 học viên

  • austinkim
저자 직강
임베디드리눅스
리눅스커널
인터럽트
Operating System
Linux
linux-kernel
ARM Architecture
interrupt

Dịch cái này sang tiếng Việt

  • Khái niệm cơ bản và cách thức hoạt động của phần sau ngắt

  • Xử lý ngắt phần sau từ góc độ driver thiết bị.

  • Xử lý phần ngắt sau bằng tính năng threaded IRQ.

  • Phương pháp xử lý Softirq và Tasklet

1. Phát hành coupon giảm giá 30% khi vượt qua 500 người🙏

Để kỷ niệm việc vượt qua 500 học viên tham gia khóa học Linux Kernel, chúng tôi phát hành coupon giảm giá 30%. Cảm ơn các bạn. Chỉ dành cho 100 người đầu tiên.

2. Hướng dẫn lộ trình 🎯

Khóa học này là lộ trình'Linux kernel - khóa học cơ bản dành cho nhà phát triển phần mềm hệ thống'được bao gồm trong khóa học.

Nếu bạn là nhà phát triển phần mềm hệ thống trong lĩnh vực bán dẫn hệ thống, ô tô, v.v.

Kernel Linux cần thiết phải biết

Hệ điều hành được sử dụng nhiều nhất trên tất cả các thiết bị IT là gì? Chính là hệ điều hành Linux. Nó được sử dụng trong điện thoại thông minh, TV kỹ thuật số, hệ thống giải trí hàng không và máy chủ. Các công ty bán dẫn hệ thống sử dụng Linux (Linux device driver) để điều khiển phần cứng mà họ thiết kế. Ngoài ra, Linux cũng được ứng dụng rộng rãi trong các bộ phận khác nhau cấu thành xe điện (Automotive) như hệ thống thông tin giải trí (infotainment), lái xe tự động và telematics.

Cốt lõi của hệ điều hành Linux là Linux kernel. Cùng với kiến trúc Armv8-A, có thể nói rằng Linux kernel là nội dung đòi hỏi kiến thức nền tảng được cần thiết nhất trong ngành phần mềm hệ thống hiện tại.

Các nhà phát triển phần mềm hệ thống Linux, lập trình viên hệ thống nhúng Linux (BSP) chú ý!

Trong lĩnh vực phần mềm hệ thống Linux bao gồm bán dẫn hệ thống, lĩnh vực xe điện (tự lái, infotainment) với vai trò nhà phát triển junior

Người chuẩn bị việc làm muốn làm việc trong lĩnh vực phát triển phần mềm hệ thống Linux như bán dẫn hệ thống, xe điện

Những người mong muốn học cao học trong lĩnh vực phần mềm hệ thống Linux (bộ nhớ, hệ thống tập tin, hệ điều hành)

Các lập trình viên từ lĩnh vực khác muốn chuyển đổi sự nghiệp sang lĩnh vực phần mềm hệ thống Linux

Tuy nhiên, kernel Linux như một bức tường khổng lồ đối với những người mới bắt đầu trong lĩnh vực phần mềm hệ thống. Những người mới bắt đầu có lẽ đã có kinh nghiệm từ bỏ nhiều lần khi học kernel Linux. Kernel Linux vốn đã khó khăn này đang ngày càng phát triển phức tạp hơn khi các phiên bản được nâng cấp.Từ năm 2024 trở đi, phiên bản kernel Linux sẽ được nâng cấp lên v6.6 trở lên vànhưng rào cản gia nhập đang ngày càng cao hơn.

Các nhà phát triển phần mềm hệ thống Linux hoạt động trong nhiều lĩnh vực khác nhau bao gồm bán dẫn hệ thống và xe điện đều biết rằng họ cần hiểu rõ về Linux kernel để có thể nâng cao năng lực phát triển. Tuy nhiên, việc nắm bắt được cách học Linux kernel như thế nào và quan trọng hơn là cần biết những nội dung gì trong công việc thực tế là một tình huống khó khăn.

Cốt lõi của cốt lõi trong phát triển Linux device driver: Nửa sau của interrupt

Khi bắt đầu làm nhà phát triển phần mềm hệ thống Linux, hầu hết sẽ phát triển trình điều khiển thiết bị Linux, và trong quá trình này, một trong những yếu tố bắt buộc phải triển khai và tối ưu hóa là interrupt. Phần sau của interruptlà nội dung cần thiết phải biết cùng với interruptlà. Lý do có thể kể ra một vài điều như sau;

  • Hầu hết các trình xử lý ngắt được sử dụng cùng với kỹ thuật nửa sau của ngắt.

  • Các vấn đề chính của thiết bị ngoại vi được điều khiển thông qua ngắt được xác định trong routine liên quan đến phần sau của ngắt - cùng với trình xử lý ngắt.

Vì vậy, trong chương 6 của cuốn sách 'Cấu trúc và Nguyên lý của Linux Kernel' mà tôi đã viết, tôi giải thích về 'Kỹ thuật Xử lý Nửa Sau của Interrupt' như sau.

  • threaded IRQ(IRQ thread)

  • Softirq

  • Tasklit

Tôi đã cấu trúc để độc giả có thể học các kỹ thuật xử lý phần sau của interrupt thông qua thực hành debug ftrace bằng nhiều cách khác nhau.

Điểm khác biệt của khóa học

Khóa học này được cấu thành bởi nội dung chưa từng được đề cập trên YouTube hay bất kỳ nền tảng giảng dạy nào khác! Chúng ta sẽ debug các cấu trúc dữ liệu liên quan đến kỹ thuật xử lý nửa sau của interrupt trong Linux kernel và các cấu trúc dữ liệu đa dạng cấu thành Linux kernel (task_struct, cấu trúc thread_info) thông qua memory dump của Linux kernel. Những ai tham gia khóa học này có thể tải xuống chương trình giáo dục (TRACE32) để thực hành trực tiếp.

1. Cung cấp chương trình mô phỏng TRACE32 (dành cho giáo dục) và dump kernel Linux

Trình gỡ lỗi TRACE32 và các chương trình liên quan được sử dụng rộng rãi trong toàn bộ quá trình phát triển phần mềm hệ thống Linux. Chương trình TRACE32 cần có giấy phép mới có thể chạy được. Nếu bạn tham gia khóa học nàyChương trình mô phỏng TRACE32 giáo dục cho 'Tài liệu bài giảng Inflearn'có thể tải xuống để sử dụng trực tiếp chương trình mô phỏng TRACE32 để debug memory dump. Ngoài ra, bạn có thể tải xuống 6 kernel memory dump để thực hành debug các hoạt động đa dạng của kỹ thuật interrupt bottom half (threaded IRQ, Softirq).

2. Giải thích dễ hiểu và chi tiết về khái niệm cơ bản của kỹ thuật nửa sau interrupt

Khi học kernel Linux, chúng ta phân tích mã nguồn kernel. Tuy nhiên, trong quá trình phân tích mã nguồn kernel, chúng ta gặp phải nhiều trở ngại. Khó có thể xác định hàm đó được gọi theo luồng nào, cấu trúc dữ liệu của routine phân tích thực sự có giá trị như thế nào. Bài giảng này sẽ phá bỏ tất cả những trở ngại đó.

Phân tích mã nguồn kernel Linux liên quan đến kỹ thuật xử lý ngắt phần sau (interrupt bottom half) cùng với call stack của chương trình TRACE32 và cấu trúc dữ liệu chi tiết. Bạn có thể học kỹ thuật xử lý ngắt phần sau hiệu quả hơn nhiều so với việc tự học kernel Linux một mình. Ngoài ra, việc phân tích cả các thông điệp ftrace được trích xuất từ memory dump giúp bạn có thể nắm bắt chi tiết nguyên lý hoạt động của kỹ thuật xử lý ngắt phần sau một cách lập thể.

3. Giới thiệu phương pháp debug của các nhà phát triển BSP kernel Linux tại các công ty bán dẫn hệ thống toàn cầu

Gần đây ngành bán dẫn hệ thống đang nổi lên. Các nhà phát triển hệ thống Linux kernel tại các công ty bán dẫn hệ thống toàn cầu debug driver Linux kernel theo cách nào?

Trong bài giảng này, chúng ta sẽ đề cập đến nội dung sau. Chúng ta sẽ phân tích các hoạt động chính của kernel bằng cách sử dụng trình mô phỏng TRACE32 để debug các cấu trúc dữ liệu của kernel liên quan đến process với memory dump của Linux kernel, và tải memory dump bằng crash-utility.

Chúng ta sẽ học những nội dung như thế này

Giải thích toàn bộ quy trình xử lý ngắt và lý do tại sao cần có kỹ thuật nửa sau của ngắt.

Giới thiệu phương thức threaded IRQ được sử dụng nhiều như kỹ thuật xử lý phần sau của interrupt và giải thích các chức năng cốt lõi.

Kỹ thuật threaded IRQ giải thích luồng thực thi theo bức tranh tổng thể và giải thích chi tiết mã nguồn.

Giới thiệu patch liên quan đến threaded IRQ và cách thiết lập ftrace. Giải thích chi tiết luồng thực thi của kỹ thuật threaded IRQ cùng với các thông điệp Ftrace.

Phân tích chi tiết các cấu trúc dữ liệu liên quan đến phương thức threaded IRQ bằng cách sử dụng các chương trình TRACE32 và Crash Utility.

Giới thiệu về Softirq và giải thích lý do tại sao cần hiểu rõ về Softirq.

Giải thích chi tiết về các loại dịch vụ Softirq - là cốt lõi của Softirq và luồng thực thi theo từng giai đoạn.

Dịch vụ Softirq yêu cầu và thực thi hoạt động - thông qua phân tích luồng thực thi toàn bộ và mã nguồn - được giải thích chi tiết.

Giải thích về kernel thread ksoftirqd/[n] là daemon thực thi dịch vụ Softirq và phân tích chi tiết về tasklet.

Giải thích các tracepoint ftrace liên quan đến Softirq và phân tích chi tiết các thông điệp ftrace.

Cung cấp chương trình TRACE32 giáo dục (simulator) và 6 bản dump bộ nhớ kernel Linux

Trong bài giảng này, chúng ta sẽ giải thích về cấu trúc dữ liệu và call stack tạo nên kỹ thuật interrupt bottom half thông qua việc debug memory dump của Linux kernel - phương pháp debug tiên tiến (Advanced) nhất trong ngành phần mềm hệ thống Linux.

TRACE32 và Crash utility cùng các chương trình gỡ lỗi tương tự được sử dụng để cung cấp các phương pháp gỡ lỗi nâng cao có thể 'gỡ lỗi bộ nhớ kernel Linux'.

Bạn có thể tải xuống chương trình TRACE32 dành cho giáo dục (phiên bản mô phỏng) từ chương trình giảng dạy của khóa học.Học viên có thể sử dụng chương trình TRACE32 để tải kernel memory dump được cung cấp trong bài giảng này và thực hành debug cùng với giảng viên.

Bạn có thể tải xuống trực tiếp Crash Utility được vận hành như một dự án mã nguồn mở để tải dump bộ nhớ kernel và thực hiện debug. Sử dụng các tính năng đa dạng mà Crash Utility hỗ trợ để phân tích cấu trúc dữ liệu của kernel hoặc call stackGỡ lỗi trực tiếpCó thể làm được.

Dựa trên kinh nghiệm viết sách/giảng dạy
Sâu sắc và chi tiết hơn ai hết!


Tác giả toàn cầu & Nhà phát triển phần mềm hệ thống Linux (Kiến trúc Arm, RISC-V)

Trong lĩnh vực phần mềm hệ thống tại Hàn Quốc, đây là tác giả độc nhất vô nhị! Đã viết sách về 'Kiến trúc Arm (Armv8-A, Armv7-A)' và 'Linux Kernel' (cả 2 cuốn sách đều được chọn là sách xuất sắc của Viện Hàn lâm Khoa học Hàn Quốc), và là người đầu tiên tại Hàn Quốc viết sách "Reverse Engineering Armv8-A Systems" (tiếng Anh) thông qua nhà xuất bản nước ngoài (Packt), là một tác giả toàn cầu. Trên hết, đây là một nhà phát triển đang làm việc hiểu rõ nhất về các xu hướng phần mềm hệ thống mới nhất (xe điện, bán dẫn hệ thống - phần mềm hệ thống). Đồng thời cũng là một nhà giáo dục tích cực nhất trong việc truyền bá kiến thức trong lĩnh vực phần mềm hệ thống.

  • 'Reverse Engineering Armv8-A Systems: A practical guide to Kernel, Firmware, and TrustZone analysis' tác giả cuốn sách (tiếng Anh), (nhà xuất bản Packt)

  • Tác giả của 'Cấu trúc và nguyên lý của Linux kernel thông qua debugging' (2021, Giải thưởng sách xuất sắc của Viện Hàn lâm Khoa học Hàn Quốc)

  • Tác giả của 'Cấu trúc và nguyên lý kiến trúc Arm cho phát triển phần mềm hệ thống' (2024, Giải thưởng Sách xuất sắc của Viện Hàn lâm Khoa học Hàn Quốc)

  • 'Programmers Dev Course: Chuyên gia hệ thống Linux và kernel' Giảng viên chính (khóa 1~2)

  • Tháng 6 năm 2022, Hội nghị Khoa học Máy tính Tổng hợp Hàn Quốc (KCC2022) - Bài thuyết trình hướng dẫn [Chinh phục kernel Linux bằng ftrace]

  • LG Electronics - Giảng viên nội bộ về 'Linux Kernel' và 'Kiến trúc Armv8' (bao gồm các nhà phát triển trong nước và nước ngoài) - (2020~2024)


Tôi có thể tự tin nói rằng tôi là một giảng viên có thể giải thích các chức năng chính cấu thành nên nhân Linux tốt hơn bất kỳ ai khác trong nước.

Những lưu ý trước khi học

Lưu ý khi sử dụng chương trình TRACE32

  • Chương trình giáo dục TRACE32 chỉ có thể thực hành trong môi trường Windows.

  • Chương trình giáo dục TRACE32 chỉ có thể được sử dụng cho mục đích 'giáo dục' và không được phép chỉnh sửa hoặc phân phối cho mục đích thương mại.

  • Nếu có thắc mắc khi sử dụng chương trình TRACE32 giáo dục trong bài gi강 này thìChắc chắn dành cho nhà giáo dụcHãy đặt câu hỏi.

Môi trường thực hành và tài liệu giảng dạy được cung cấp

  • Hệ điều hành và phiên bản (OS): Raspberry Pi (Raspbian), Linux kernel v6.1

  • Tài liệu hướng dẫn chương trình giáo dục và cài đặt TRACE32 (bài giảng)

  • 6 bản dump bộ nhớ kernel Linux (vmcore)

Kiến thức cần có và lưu ý

  • Tốt nhất là bạn nên biết đại khái về cách thức hoạt động của Linux.

  • Tốt nhất là bạn nên nghe trước khóa học 'Cấu trúc và Nguyên lý của Linux Kernel: Debugging - Basic [Phần 1-2 do tác giả trực tiếp giảng dạy]'.

  • Nếu bạn có kiến thức về hệ điều hành hoặc kiến trúc máy tính thì sẽ có thể học bài một cách thoải mái hơn.

  • Không cần kiến thức sâu về Linux kernel làm điều kiện tiên quyết.

Khuyến nghị cho
những người này

Khóa học này dành cho ai?

  • Lập trình viên Junior mong muốn phát triển năng lực trong lĩnh vực phần mềm hệ thống, bao gồm bán dẫn hệ thống và xe điện (lái tự động, thông tin giải trí).

  • Ứng viên mong muốn phát triển phần mềm hệ thống trong các lĩnh vực như bán dẫn hệ thống và ô tô điện.

  • Sinh viên đại học có mục tiêu học cao học trong lĩnh vực phần mềm hệ thống (bộ nhớ, hệ thống tập tin, hệ điều hành)

  • Lập trình viên từ lĩnh vực khác muốn chuyển đổi sự nghiệp sang lĩnh vực phần mềm hệ thống

Cần biết trước khi bắt đầu?

  • ngôn ngữ C

  • Kiến trúc máy tính

  • hệ điều hành

Xin chào
Đây là

5,549

Học viên

156

Đánh giá

85

Trả lời

4.9

Xếp hạng

21

Các khóa học

글로벌 저자 & 리눅스 시스템 소프트웨어 개발자 (Arm, RISC-V 아키텍처)

국내 시스템 소프트웨어 분야에서 전무후무한! 'Arm 아키텍처(Armv8-A, Armv7-A)'와 '리눅스 커널' 책을 쓴 저자(2권의 책 모두 대한민국 학술원 우수도서에 선정)이며, 국내 최초로 해외 출판사(Packt)를 통해 "Reverse Engineering Armv8-A Systems" 책(영어)을 집필한 글로벌 저자입니다. 무엇보다 최신 시스템 소프트웨어 트렌드(전기자동차, 시스템 반도체- 시스템 소프트웨어)를 가장 잘 알고 있는 현업 개발자입니다. 또한 시스템 소프트웨어 분야에서 가장 지식 전파 활동을 활발하게 하는 교육자입니다. 

  • 'Reverse Engineering Armv8-A Systems: A practical guide to Kernel, Firmware, and TrustZone analysis' 책(영어) 저자, (Packt 출판사)

  • '시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리'(2024년, 대한민국 학술원 우수도서상) 저자

  • '디버깅을 통해 배우는 리눅스 커널의 구조와 원리' (2021년, 대한민국 학술원 우수도서상) 저자

  • '프로그래머스 데브 코스: 리눅스 시스템 및 커널 전문가' 메인 강사

  • 2022년 6월, 한국컴퓨터종합학술대회 (KCC2022) - 튜토리얼 발표 [ftrace를 이용해 리눅스 커널 정복하기]

  • LG전자 '리눅스 커널' 및 'Armv8 아키텍처' 사내 강사(국내 및 해외 개발자 포함) - (2020년~현재)

국내에서 어느 누구보다 리눅스 커널과 Arm 아키텍처(Armv8-A, Armv7-A)를 잘 설명할 수 있는 교육자라고 자신있게 말씀드릴 수 있습니다.

강의문의 : austindh.kim@gmail.com

주요 로드맵 🎯

'시스템 소프트웨어 개발자를 위한 Arm - basic course'

'시스템 소프트웨어 개발자를 위한 Arm - advanced course'

시스템 소프트웨어 개발자를 위한 Linux kernel - basic course

Chương trình giảng dạy

Tất cả

85 bài giảng ∙ (10giờ 12phút)

Tài liệu khóa học:

Tài liệu bài giảng
Ngày đăng: 
Cập nhật lần cuối: 

Đánh giá

Tất cả

2 đánh giá

5.0

2 đánh giá

  • dlrbcnvk님의 프로필 이미지
    dlrbcnvk

    Đánh giá 19

    Đánh giá trung bình 4.9

    5

    61% đã tham gia

    • aceoftop1975님의 프로필 이미지
      aceoftop1975

      Đánh giá 95

      Đánh giá trung bình 5.0

      5

      100% đã tham gia

      2024/07/20/Sat 10:53 I listened to the lecture well. While listening to the lecture, I learned a lot about Linux. If you make other lectures, I will listen to them carefully. Thank you.

      1.165.874 ₫

      Khóa học khác của austinkim

      Hãy khám phá các khóa học khác của giảng viên!

      Khóa học tương tự

      Khám phá các khóa học khác trong cùng lĩnh vực!