Kiến trúc Arm và Giao diện Kernel Linux - Tác giả trực tiếp giảng dạy

Tác giả của cuốn sách "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" sẽ giúp bạn nắm vững cốt lõi của kiến trúc Arm (Armv8-A) và giao diện nhân Linux!

(4.6) 8 đánh giá

138 học viên

Độ khó Trung cấp trở lên

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

Linux
Linux
linux-kernel
linux-kernel
armv8
armv8
ARM Architecture
ARM Architecture
assembly-language
assembly-language
Linux
Linux
linux-kernel
linux-kernel
armv8
armv8
ARM Architecture
ARM Architecture
assembly-language
assembly-language

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

  • Bạn có thể nắm bắt được các phương thức hoạt động chính cấu thành nên kiến trúc Arm (Armv8-A).

  • Bạn có thể hiểu được giao diện giữa kiến trúc Arm và nhân Linux (tiến trình, xử lý ngắt, lời gọi hệ thống, quản lý bộ nhớ).

  • Bạn có thể học về các chức năng cốt lõi cấu thành nên nhân Linux như tiến trình, xử lý ngắt, lời gọi hệ thống và kỹ thuật quản lý bộ nhớ.

  • Bạn có thể phân tích các thanh ghi, xử lý ngoại lệ, lệnh hợp ngữ, TrustZone và phương pháp quản lý bộ nhớ thông qua mã nguồn tồn tại trong nhân Linux.

1. Phát hành mã giảm giá 30% kỷ niệm cột mốc 300 học viên 

Để kỷ niệm cột mốc vượt qua 300 học viên (Phần 1, 2), 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 200 người đầu tiên.

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

Bài giảng lần này <Arm 아키텍처와 리눅스 커널 인터페이스 - 저자직강> là bài giảng nằm trong lộ trình'Arm dành cho nhà phát triển phần mềm hệ thống - advanced course'.


Những ai muốn học về kiến trúc Arm (Armv8-A, Armv7-A) một cách hệ thống nên tận dụng lộ trình học (giảm giá 30% cho toàn bộ khóa học). Để tham khảo, lộ trình kiến trúc Arm (toàn bộ bài giảng trực tiếp từ tác giả) bao gồm hai phần là Basic CourseAdvanced Course.


Quan trọng nhất trong phần mềm hệ thống hiện đại là
Arm Architecture và Linux Kernel

Không chỉ điện thoại thông minh mà cả chip bán dẫn hệ thống SoC cho AI, ô tô điện Automotive (tự hành, thông tin giải trí), cũng như các máy chủ đám mây và MacBook, các bộ vi xử lý Arm được sử dụng đều là bộ vi xử lý Cortex-A 64-bit dựa trên Armv8-A (Cortex-A53, Cortex-A57, Cortex-A72, v.v.). Có thể coi kiến trúc Armv8-A là nội dung đòi hỏi 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.

Trong xe điện và bán dẫn hệ thống,
đây là nhân hệ điều hành được thực thi nhiều nhất

Cùng với bộ vi xử lý Arm, nhân Linux đang được sử dụng trong điện thoại thông minh, máy chủ đám mây và hệ thống xe điện. Ngoài ra, hầu hết các nhà phát triển phần mềm hệ thống trong ngành bán dẫn hệ thống (fabless) đều thực hiện lập trình trình điều khiển (driver) để điều khiển các con chip do chính họ thiết kế bằng cách sử dụng nhân Linux hoặc trình điều khiển thiết bị Linux.

Tóm lại một lần nữa! Nhân hệ điều hành được thực thi nhiều nhất trên bộ vi xử lý Arm chính là nhân Linux.

'Giao diện giữa kiến trúc Arm và nhân Linux' là
4 lý do nên học

1⃣ Thứ nhất, nếu hiểu rõ về giao diện giữa kiến trúc Arm và nhân Linux (phân tích lệnh assembly), bạn có thể hiểu rõ hơn về cách thức hoạt động chi tiết của kiến trúc Arm. Điều này là do việc phân tích mã nguồn nơi các nội dung học thuyết được triển khai sẽ giúp bạn nội hàm hóa những kiến thức đã học.

2⃣ Thứ hai, các tính năng cốt lõi tạo nên nhân Linux như tiến trình, xử lý ngắt, lời gọi hệ thống (system call) và kỹ thuật quản lý bộ nhớ đều được triển khai bằng cách tận dụng các tính năng của kiến trúc CPU. Nếu hiểu rõ giao diện giữa kiến trúc Arm và nhân Linux, bạn có thể nắm bắt sâu sắc các hoạt động chi tiết của nhân Linux.

3⃣ Thứ ba, bằng cách phân tích các thanh ghi, xử lý ngoại lệ (exception handling), lệnh hợp ngữ (assembly), TrustZone và phương pháp quản lý bộ nhớ thông qua mã nguồn có sẵn trong nhân Linux, bạn có thể đồng thời học hỏi về cấu trúc của kiến trúc Arm và nhân Linux.

4⃣ Thứ tư, bộ vi xử lý Arm và nhân Linux được sử dụng trong hơn 90% sản phẩm của ngành phần mềm hệ thống. Nếu nắm bắt được cách thức nhân Linux hoạt động trên bộ vi xử lý Arm, bạn có thể vận dụng tốt những nội dung đã học.

Hầu hết các phần mềm hệ thống được phát triển gần đây đều dựa trên môi trường bộ vi xử lý Arm và Linux, vì vậy bạn nhất định phải biết những kiến thức liên quan này.

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

Các nhà phát triển đã từng nghe bài giảng trực tiếp từ tác giả của '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' có thể sẽ thấy thắc mắc. Đó là bởi vì giảng viên về kiến trúc Arm lần này đột nhiên lại nói về nhân Linux (Linux kernel). Tuy nhiên, tôi không chỉ là tác giả sách về kiến trúc Arm mà còn là tác giả của sách về nhân Linux. Dưới đây là những kinh nghiệm chính liên quan đến nhân Linux của tôi:

  • Tác giả cuốn sách 'Cấu trúc và nguyên lý của Linux Kernel học qua Debugging' (Năm 2021, 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)

  • '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 2024, Giải thưởng Sách xuất sắc của Viện Hàn lâm Khoa học Quốc gia Hàn Quốc) Tác giả

  • Giảng viên chính của khóa học '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 cách sử dụng ftrace]


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


Với tư cách là giảng viên của khóa học này, tôi tự tin rằng mình có thể giải thích về 'Giao diện giữa kiến trúc Arm và nhân Linux' tốt hơn bất kỳ ai khác.

Khuyên dùng cho những đối tượng sau

Sinh viên mới tốt nghiệp đang tìm việc và các nhà phát triển trẻ trong lĩnh vực phần mềm hệ thống, bao gồm cả lĩnh vực bán dẫn hệ thống (fabless) và xe điện (tự hành, thông tin giải trí)

Các nhà phát triển phần mềm hệ thống muốn biết cách tận dụng các tính năng của kiến trúc Arm để gỡ lỗi trong thực tế

Sinh viên đại học có mục tiêu học lên 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)

Sau khi học xong

  • Nắm vững nguyên lý hoạt động chi tiết của kiến trúc Arm

  • Nắm bắt cách các Subsystem chính của nhân Linux được triển khai bằng cách tận dụng các tính năng của kiến trúc Arm

  • Hiểu cách triển khai lập lịch ngữ cảnh (context scheduling) của nhân Linux

  • Hiểu cách thức hoạt động chi tiết của System Call và Exception Handler trong nhân Linux

  • Tìm hiểu cách thức triển khai hệ thống bộ nhớ của nhân Linux

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

Giới thiệu cấu trúc tổng thể của hệ thống Linux dành cho những học viên chưa quen thuộc với Linux. Giải thích chi tiết về 3 tài nguyên chính được xử lý quan trọng trong nhân Linux (Linux kernel).

Giải thích về tiến trình (không gian người dùng và không gian hạt nhân, tiến trình người dùng, luồng hạt nhân), vốn là cốt lõi của nhân Linux.

Giải thích cấu trúc dữ liệu của tiến trình phụ thuộc vào kiến trúc Arm. Đặc biệt, tập trung vào các thanh ghi liên quan đến chuyển đổi ngữ cảnh (context switch) để trình bày chi tiết nguyên lý hoạt động.

Giải thích chi tiết hoạt động của chuyển đổi ngữ cảnh (context switching) phụ thuộc vào kiến trúc Arm thông qua việc phân tích các lệnh hợp ngữ.

Giải thích luồng xử lý ngắt theo bức tranh tổng thể. Giải thích chi tiết cách xử lý ngắt thông qua việc phân tích 'Bảng vector ngoại lệ của kiến trúc Armv8'.

Giải thích luồng xử lý ngắt dựa trên 2 kịch bản (ngắt xảy ra khi đang thực thi ứng dụng người dùng và ngắt xảy ra khi đang thực thi mã kernel). Tiếp theo, xem xét chi tiết mã trình xử lý ngoại lệ (mã hợp ngữ).

Xem xét toàn bộ luồng thực thi của system call và giải thích chi tiết nội dung của bảng vector exception liên quan đến system call.

Phân tích quy trình lệnh SVC được thực thi khi kích hoạt system call từ không gian người dùng (user space). Tiếp theo, giải thích chi tiết quy trình của trình xử lý ngoại lệ (exception handler) được thực thi trong không gian nhân (kernel space) trong quá trình system call được kích hoạt.

Giải thích các API cốt lõi của kernel được xử lý trong quá trình trình xử lý hệ thống gọi (system call handler) được gọi trong không gian kernel sau khi lệnh gọi hệ thống được kích hoạt (thực thi lệnh SVC). Ngoài ra, nội dung cũng sẽ đề cập chi tiết đến các thông tin ký hiệu (symbol) quan trọng của trình xử lý hệ thống gọi.

Giới thiệu các chức năng chính cấu thành việc quản lý bộ nhớ trong nhân Linux, đồng thời giải thích các tính năng liên quan đến quản lý bộ nhớ cần biết dưới góc độ kiến trúc Arm.

Giới thiệu các cấu hình (config) thiết lập phạm vi địa chỉ ảo trong nhân Linux. Tiếp theo, giải thích các giao diện mà nhân Linux hỗ trợ cho bảng trang đa cấp (multi-level page table).

Giải thích chi tiết về nguyên lý hoạt động của việc tra cứu trang (page lookup) được xử lý bằng các giao diện hỗ trợ trong nhân Linux và cấu trúc của macro fixup.

Đánh giá thực tế từ các học viê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 - Phần 1/2 Bài giảng trực tiếp từ tác giả>


Lưu ý trước khi khóa học bắt đầu

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

  • Rất khuyến khích bạn nên nghe bài giảng trực tiếp từ tác giả của khóa họ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' (Phần 1/2) trước khi bắt đầu.

  • Kiến thức tiên quyết bao gồm Exception Level của kiến trúc Arm, Exception, AAPCS và quản lý bộ nhớ (MMU).

  • 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.

  • Không cần kiến thức chuyên sâu về nhân Linux.

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

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

  • Sinh viên mới tốt nghiệp đang tìm việc và nhà phát triển trẻ trong lĩnh vực phần mềm hệ thống

  • Nhà phát triển phần mềm hệ thống muốn biết phương pháp gỡ lỗi tận dụng các tính năng của kiến trúc Arm

  • 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

  • Sinh viên đại học có mục tiêu học lên cao học trong lĩnh vực phần mềm hệ thống

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

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

  • Hệ điều hành

Xin chào
Đây là austinkim

6,507

Học viên

262

Đánh giá

102

Trả lời

4.9

Xếp hạng

23

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
Ngày đăng: 
Cập nhật lần cuối: 

Đánh giá

Tất cả

8 đánh giá

4.6

8 đánh giá

  • aceoftop1975님의 프로필 이미지
    aceoftop1975

    Đánh giá 122

    Đánh giá trung bình 5.0

    5

    100% đã tham gia

    2024/07/30/Thứ ba 10:40 Tôi rất thích bài giảng. Tôi đã học được rất nhiều điều từ lộ trình (Arm cơ bản/nâng cao) mà bạn cung cấp. Tất cả các bài giảng đều tốt. Trong khi nghe, "Wow~~" Tôi cảm thấy rất cô đơn. Cảm ơn Bây giờ em sẽ nghe nốt phần còn lại của bài giảng và nghe lộ trình mà thầy đưa cho em. Cảm ơn

    • llon44518288님의 프로필 이미지
      llon44518288

      Đánh giá 10

      Đánh giá trung bình 4.9

      5

      100% đã tham gia

      Tôi đã có thể học nội dung này một cách dễ dàng nhờ lời giải thích rõ ràng. Xin cảm ơn.

      • 16225864175님의 프로필 이미지
        16225864175

        Đánh giá 6

        Đánh giá trung bình 5.0

        5

        100% đã tham gia

        • jangmh7595님의 프로필 이미지
          jangmh7595

          Đánh giá 4

          Đánh giá trung bình 5.0

          5

          32% đã tham gia

          • heecheolsong님의 프로필 이미지
            heecheolsong

            Đánh giá 24

            Đánh giá trung bình 5.0

            5

            32% đã tham gia

            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!