inflearn logo

Cấu trúc và nguyên lý của Kernel Linux: Tiến trình [Bài giảng trực tiếp từ tác giả Phần 1-4]

Tác giả của cuốn sách "Cấu trúc và nguyên lý của nhân Linux học qua debugging" giải thích một cách bài bản về các khái niệm cốt lõi của tiến trình trong nhân Linux mới nhất (v6.1), vốn được sử dụng nhiều nhất trong phần mềm hệ thống.

(5.0) 9 đánh giá

269 học viên

Độ khó Cơ bản

Thời gian Không giới hạn

trace32
trace32
Linux
Linux
linux-kernel
linux-kernel
Operating System
Operating System
Computer Architecture
Computer Architecture
trace32
trace32
Linux
Linux
linux-kernel
linux-kernel
Operating System
Operating System
Computer Architecture
Computer Architecture

Đánh giá từ những học viên đầu tiên

Đánh giá từ những học viên đầu tiên

5.0

5.0

염재영

97% đã tham gia

Tôi nghĩ nội dung bài giảng rất chi tiết và tốt cho việc ôn tập!:) Khi làm công việc BSP thực tế, tôi thường phải phân tích kernel log hoặc sử dụng TRACE32 để phân tích và theo dõi các vấn đề CRASH, nên khi nghĩ đến những điều đó thì tôi cảm thấy đây là một bài giảng rất hay!

5.0

김건우

30% đã tham gia

Tuyệt vời.

5.0

sunny75

100% đã tham gia

2024/07/13/Thứ bảy 21:07 Tôi thực sự thích bài giảng về Linux. Cảm ơn

Bạn sẽ nhận được điều này sau khi học.

  • Vai trò của tiến trình trong nhân Linux

  • Cách hoạt động cơ bản của quy trình (process)

  • Cấu trúc ngăn xếp (stack) của tiến trình

  • Cách gỡ lỗi các luồng thực thi khác nhau của quy trình bằng TRACE32

  • Cách thức hoạt động của tiến trình trong cấu trúc hệ thống đa nhân

<Thông báo>

1. Phát hành mã giảm giá 30% nhân dịp đạt mốc 500 người học🙏

Để kỷ niệm cột mốc hơn 500 học viên tham gia khóa học nhân Linux, chúng tôi xin phát hành mã giảm giá 30%. Xin cảm ơn các bạn. Số lượng có hạn cho 100 người đầu tiên.

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

Bài giảng lần này <Cấu trúc và nguyên lý của Linux Kernel: Process [Tác giả trực tiếp giảng dạy Phần 1-4]> là bài giảng nằm trong lộ trình'Linux kernel - basic course dành cho nhà phát triển phần mềm hệ thống'.

Những ai muốn học các chức năng chính cấu thành nên nhân Linux một cách hệ thống nên tận dụng lộ trình học tập (giảm giá 30% cho toàn bộ khóa học).).

Các lĩnh vực như bán dẫn hệ thống, ô tô, v.v.

Nhân kơ-nen Linux mà các nhà phát triển phần mềm hệ thống nhất định phải biết


Hệ điều hành được sử dụng nhiều nhất trong tất cả các thiết bị IT là gì? Đó chính là hệ điều hành Linux. Nó đang được sử dụng trong điện thoại thông minh, TV kỹ thuật số, hệ thống giải trí trên máy bay 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 do chính họ thiết kế. Ngoài ra, Linux cũng đang được sử dụng rộng rãi trong các linh kiện khác nhau (thông tin giải trí, tự hành, viễn thông) cấu thành nên xe điện (Automotive).

Trọng tâm của hệ điều hành Linux chính là nhân Linux (Linux kernel). Cùng với kiến trúc Armv8-A, có thể coi nhân Linux là nội dung đòi hỏi những kiến thức nền tảng cần thiết nhất trong ngành phần mềm hệ thống hiện nay.

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) hãy chú ý!

Nhà phát triển trẻ (Junior Developer) trong lĩnh vực phần mềm hệ thống Linux, bao gồm các lĩnh vực bán dẫn hệ thống và xe điện (tự lái, giải trí đa phương tiện)

Người đang chuẩn bị xin việc 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 và xe điện.

✅ Những người có nguyện vọng 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, hệ điều hành) in the field of Linux system software (memory, file systems, operating systems)

✅ Các nhà phát triển từ các lĩnh vực khác đang muốn chuyển đổi sự nghiệp sang lĩnh vực phần mềm hệ thống Linux to the Linux system software field

Tuy nhiên, nhân Linux giống 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 chắc hẳn đã từng có trải nghiệm bỏ cuộc nhiều lần khi đang học về nhân Linux. Phiên bản nhân Linux vốn đã khó nay lại càng trở nên phức tạp hơn khi được nâng cấp. Sau năm 2024, phiên bản nhân Linux đang được nâng cấp lên v6.6 trở lên, khiến rào cản gia nhập ngày càng cao hơn.

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

Tiến trình (Process), nội dung đầu tiên mà những người mới bắt đầu học về nhân Linux (Linux kernel) được học.

Người mới bắt đầu sẽ học chủ đề nào đầu tiên khi tìm hiểu về nhân Linux? Hầu hết đều học về tiến trình (process). Các cuốn sách về 'Nhân Linux' thường bắt đầu với nội dung về tiến trình. Ngoài ra, tiến trình cũng được coi là một chủ đề nhất định phải biết cùng với hệ thống tệp và hệ thống bộ nhớ.

Những người mới bắt đầu sẽ cảm thấy thế nào khi bắt đầu học về tiến trình (process)? Tiến trình được coi là nội dung nhất định phải biết nhưng lại rất dễ gây nhàm chán. Lý do là gì? Tôi nghĩ đó là vì người học cảm thấy không có nội dung nào có thể áp dụng ngay vào các dự án thực tế. Ngoài ra, tiến trình còn gây nhàm chán vì có nhiều nội dung mơ hồ. Cuối cùng, dù có học hành chăm chỉ thì những gì đã học cũng không đọng lại được lâu.

Vì vậy, trong cuốn sách 'Cấu trúc và nguyên lý của Linux Kernel' do tôi viết, tôi đã biên soạn nội dung để độc giả có thể học về các tiến trình thông qua nhiều phương pháp thực hành gỡ lỗi ftrace khác nhau.

Điểm khác biệt của bài giảng

Khóa học lần này bao gồm những nội dung chưa từng được đề cập trên YouTube hay bất kỳ nền tảng bài giảng nào trước đây! Chúng ta sẽ gỡ lỗi các cấu trúc task_struct và thread_info đại diện cho các tiến trình thông qua bản sao lưu bộ nhớ (memory dump) của nhân Linux. Những người tham gia khóa học này có thể tải xuống chương trình giáo dục (TRACE32) và trực tiếp thực hành.

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

Trình gỡ lỗi và chương trình TRACE32 đượ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 chỉ có thể chạy khi có giấy phép. Nếu tham gia khóa học này, bạn có thể tải xuống chương trình mô phỏng TRACE32 dành cho giáo dục từ 'Tài liệu bài giảng Inflearn' và trực tiếp sử dụng chương trình mô phỏng TRACE32 để gỡ lỗi bản sao bộ nhớ (memory dump). Ngoài ra, bạn cũng có thể tải xuống và thực hành với 8 bản sao bộ nhớ hạt nhân (kernel memory dump) để gỡ lỗi các hoạt động khác nhau của tiến trình (tạo, hủy tiến trình, ngữ cảnh ngắt).

2. Giải thích các khái niệm cơ bản về quy trình một cách dễ hiểu và chi tiết

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

Phân tích mã nguồn Linux Kernel liên quan đến tiến trình cùng với Call Stack và cấu trúc dữ liệu chi tiết của chương trình TRACE32. Bạn có thể học về tiến trình hiệu quả hơn nhiều so với việc tự học Linux Kernel một mình. Ngoài ra, bằng cách phân tích cả thông báo ftrace được trích xuất từ Memory Dump, bạn có thể nắm bắt nguyên lý hoạt động của tiến trình một cách đa chiều.

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

Gần đây, ngành công nghiệp bán dẫn hệ thống đang trở nên nổi bật. Các nhà phát triển Linux Kernel BSP tại Qualcomm, nơi sở hữu công nghệ hàng đầu trong số các công ty bán dẫn hệ thống toàn cầu, sẽ gỡ lỗi (debug) trình điều khiển nhân Linux theo cách nào?

Trong bài giảng lần này, chúng ta sẽ đề cập đến nội dung sau. Chúng ta sẽ sử dụng trình mô phỏng TRACE32 để gỡ lỗi các cấu trúc dữ liệu của nhân hệ điều hành liên quan đến tiến trình từ bản sao lưu bộ nhớ (memory dump) của Linux kernel, đồng thời tải bản sao lưu bộ nhớ bằng crash-utility để phân tích các hoạt động chính của kernel. Đặc biệt, phương pháp gỡ lỗi khi ngăn xếp (stack) của tiến trình bị hỏng hoặc xảy ra tràn ngăn xếp (stack overflow) là nội dung mà ngay cả các nhà phát triển tại các công ty fabless hàng đầu cũng thường không nắm rõ.

Bạn sẽ học được những nội dung này

Giải thích về tiến trình, một trong ba tài nguyên chính của hệ thống Linux, và lý do tại sao cần phải học về tiến trình. Giới thiệu một cách dễ hiểu về các khái niệm cơ bản của tiến trình.

Giải thích không gian thực thi của tiến trình và lý do tại sao cần phải biết về tiến trình.

Phân tích các hoạt động cơ bản của tiến trình bằng cách sử dụng chương trình gỡ lỗi Crash-Utility và TRACE32.

Phân tích cấu trúc task_struct, nơi lưu trữ và quản lý thông tin thuộc tính của tiến trình, bằng cách sử dụng các chương trình gỡ lỗi TRACE32 và Crash-Utility.

Giải thích về macro current, một macro được sử dụng rộng rãi trong nhiều tính năng và hệ thống con (subsystem) của nhân Linux. Mã nguồn nhân...

Phân tích chi tiết đến tận cấp độ mã hợp ngữ.

Giải thích luồng thực thi của tiến trình trong cấu trúc hệ thống đa nhân. Các cấu trúc dữ liệu liên quan cũng sẽ được giải thích.

Sử dụng chương trình TRACE32 để debug chi tiết các hoạt động khi tiến trình được tạo ra hoặc kết thúc. Giải thích chi tiết về cấu trúc dữ liệu của tiến trình và luồng gọi hàm. (Học viên có thể tải chương trình TRACE32 và bản dump bộ nhớ kernel được tải lên trong bài giảng này để thực hành theo.)

Sử dụng chương trình TRACE32 để phân tích chi tiết về thông tin ngữ cảnh ngắt (interrupt context) của tiến trình nơi trình xử lý ngắt (interrupt handler) đang thực thi. Giải thích về ngữ cảnh ngắt thông qua việc phân tích các thông điệp ftrace được trích xuất từ chương trình Crash-utility.

Phân tích cấu trúc dữ liệu và call stack của bản dump cùng với mã nguồn nhân Linux.


Cung cấp chương trình TRACE32 dùng cho giáo dục và 8 bản dump bộ nhớ nhân Linux

Trong bài giảng này, chúng tôi sẽ giới thiệu phương pháp gỡ lỗi tiên tiến nhất (Advanced) trong ngành phần mềm hệ thống Linux - phương pháp gỡ lỗi Linux kernel memory dump - cách mà các nhà phát triển nhân Linux tại Qualcomm, một công ty bán dẫn hệ thống hàng đầu thế giới, đang thực hiện gỡ lỗi. Chúng tôi cung cấp các phương pháp gỡ lỗi nâng cao để có thể gỡ lỗi bộ nhớ nhân Linux bằng cách sử dụng các chương trình gỡ lỗi như TRACE32 và Crash utility.

✅ 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. Học viên có thể sử dụng chương trình TRACE32 để tải bản ghi nhớ bộ nhớ hạt nhân (kernel memory dump) được cung cấp trong bài giảng này và thực hành gỡ lỗi cùng lúc.

✅ Bạn có thể trực tiếp tải xuống Crash Utility, một dự án mã nguồn mở, và nạp bản sao lưu bộ nhớ nhân (kernel memory dump) để thực hiện gỡ lỗi. Bằng cách tận dụng các tính năng đa dạng mà Crash Utility hỗ trợ, bạn có thể trực tiếp gỡ lỗi các cấu trúc dữ liệu hoặc ngăn xếp cuộc gọi (call stack) của nhân hệ điều hành.

Dựa trên kinh nghiệm viết sách và giảng dạy,
tôi sẽ truyền đạt sâu sắc và chi tiết hơn bất kỳ ai!

Tôi là tác giả của những cuốn sách về 'Linux Kernel' và 'Kiến trúc Arm (Armv8-A, Armv7-A)' vô tiền khoáng hậu trong lĩnh vực phần mềm hệ thống tại Hàn Quốc. Ngoài ra, tôi còn là một nhà phát triển đang làm việc thực tế, người nắm rõ nhất 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 là một nhà giáo dục hoạt động 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.

  • Tác giả cuốn 'Cấu trúc và nguyên lý của nhân Linux học qua debug' (năm 2021, Giải thưởng Sách ưu tú của Viện Hàn lâm Khoa học Quốc gia Hàn Quốc))

  • 'Cấu trúc và nguyên lý của kiến trúc Arm dành cho phát triển phần mềm hệ thống'(năm 2023) Tác giả

  • Giảng viên chính của 'Programmers Dev Course: Chuyên gia Hệ thống và Nhân Linux'

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

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


Tôi có thể tự tin nói rằng mình là một nhà giáo dục 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 tại Hàn Quốc.

Lưu ý trước khi học

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

  • Chương trình đào tạo TRACE32 chỉ có thể thực hành trong môi trường Windows.

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

  • Nếu có bất kỳ thắc mắc nào trong quá trình sử dụng chương trình đào tạo TRACE32 của bài giảng lần này, nhất định hãy đặt câu hỏi cho người hướng dẫn.

Môi trường thực hành và tài liệu bài giảng đượ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 cài đặt và chương trình đào tạo TRACE32 (Bài giảng)

  • 8 bản sao lưu bộ nhớ nhân Linux (vmcore)

Kiến thức tiên quyết và lưu ý

  • Sẽ rất tốt nếu bạn biết sơ lược về cách thức hoạt động của Linux.

  • Tốt nhất bạn nên nghe bài giảng 'Cấu trúc và nguyên lý của nhân Linux: Gỡ lỗi - Cơ bản [Tác giả trực giảng phần 1-2]' trước khi bắt đầu.

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

  • Bạn không cần phải có kiến thức chuyên sâu về nhân Linux (Linux kernel) từ trước.

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

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

  • Nhà phát triển trẻ muốn nâng cao 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à lĩnh vực xe điện (tự hành, thông tin giải trí)

  • Người đang chuẩn bị tìm việc 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à xe đ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, hệ điều hành)

  • Nhà phát triển từ các lĩnh vực khác đang muốn chuyển hướng 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?

  • Hệ điều hành

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

  • Ngôn ngữ C

Xin chào
Đây là austinkim

6,316

Học viên

241

Đánh giá

96

Trả lời

4.9

Xếp hạng

22

Các khóa học

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)

Là tác giả vô tiền khoáng hậu trong lĩnh vực phần mềm hệ thống tại Hàn Quốc, người đã viết các cuốn sách về 'Kiến trúc Arm (Armv8-A, Armv7-A)' và 'Linux Kernel' (cả hai cuốn sách đều được Viện Hàn lâm Khoa học Quốc gia Hàn Quốc bình chọn là Sách ưu tú), đồng thời là tác giả toàn cầu đầu tiên tại Hàn Quốc viết cuốn sách tiếng Anh "Reverse Engineering Armv8-A Systems" thông qua nhà xuất bản nước ngoài (Packt). Trên hết, ông là một nhà phát triển đang làm việc thực tế, người nắm rõ nhất 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). Ngoài ra, ông còn là một nhà giáo dục hoạt động 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.

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

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

  • Tác giả cuốn sách 'Cấu trúc và nguyên lý của nhân Linux học qua việc gỡ lỗi' (Giải thưởng Sách hay của Viện Hàn lâm Khoa học Quốc gia Hàn Quốc năm 2021))

  • Giảng viên chính của 'Programmers Dev Course: Chuyên gia Hệ thống Linux và Kernel'

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

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

Tôi có thể tự tin khẳng định rằng mình là một giảng viên có khả năng giải thích về Linux Kernel và kiến trúc Arm (Armv8-A, Armv7-A) tốt hơn bất kỳ ai khác tại Hàn Quốc.

Liên hệ giảng dạy: austindh.kim@gmail.com

Lộ trình chính 🎯

'Arm dành cho nhà phát triển phần mềm hệ thống - khóa học cơ bản'

'Arm dành cho nhà phát triển phần mềm hệ thống - khóa học nâng cao'

Linux kernel dành cho nhà phát triển phần mềm hệ thống - khóa học cơ bản

Thêm

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

Tất cả

71 bài giảng ∙ (9giờ 21phú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ả

9 đánh giá

5.0

9 đánh giá

  • heecheolsong님의 프로필 이미지
    heecheolsong

    Đánh giá 21

    Đánh giá trung bình 5.0

    5

    100% đã tham gia

    • redkyo008975님의 프로필 이미지
      redkyo008975

      Đánh giá 4

      Đánh giá trung bình 5.0

      5

      100% đã tham gia

      • ioniakim2638님의 프로필 이미지
        ioniakim2638

        Đánh giá 9

        Đánh giá trung bình 4.9

        5

        100% đã tham gia

        • nexgedu18614님의 프로필 이미지
          nexgedu18614

          Đánh giá 1

          Đánh giá trung bình 5.0

          5

          30% đã tham gia

          • wodud0432886님의 프로필 이미지
            wodud0432886

            Đánh giá 3

            Đánh giá trung bình 5.0

            5

            97% đã tham gia

            Tôi nghĩ nội dung bài giảng rất chi tiết và tốt cho việc ôn tập!:) Khi làm công việc BSP thực tế, tôi thường phải phân tích kernel log hoặc sử dụng TRACE32 để phân tích và theo dõi các vấn đề CRASH, nên khi nghĩ đến những điều đó thì tôi cảm thấy đây là một bài giảng rất hay!

            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!

            1.161.013 ₫