강의

멘토링

커뮤니티

Hardware

/

Embedded IoT

Kiến trúc Arm và giao diện nhân Linux - Giảng dạy trực tiếp của tác giả

Tác giả của "시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리" sẽ giúp bạn nắm bắt chính xác cốt lõi của kiến trúc Arm (Armv8-A) và giao diện nhân Linux!

(4.5) 6 đánh giá

125 học viên

  • austinkim
저자 직강
이론 중심
arm-linux
리눅스커널
운영체제
어셈블리어
Linux
linux-kernel
armv8
ARM Architecture
assembly-language

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

  • Có thể hiểu các phương thức hoạt động chính tạo nên Kiến trúc Arm (Armv8-A).

  • Có thể hiểu giao diện củ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 các chức năng cốt lõi cấu thành kernel 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ớ.

  • Thanh ghi, xử lý ngoại lệ, lệnh assembly, TrustZone và phương pháp quản lý bộ nhớ có thể được phân tích bằng mã nguồn hiện có trong nhân Linux.

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

Để kỷ niệm việc vượt qua 300 học viên (phần 1,2), chúng tôi phát hành coupon giảm giá 30%. Cảm ơn các bạn. Chỉ dành cho 200 người đầu tiên.

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

Bài giảng nàyLộ trình'Arm cho nhà phát triển phần mềm hệ thống - khóa học nâng cao'được bao gồm trong khóa học.


Những ai muốn học kiến trúc Arm (Armv8-A, Armv7-A) một cách có hệ thống nên sử dụng lộ trình học (giảm giá 30% toàn bộ khóa học). Tham khảo, lộ trình kiến trúc Arm (toàn bộ khóa học trực tiếp từ tác giả) làBasic CourseKhóa học Nâng caoĐược cấu thành từ 2 phần.


Quan trọng nhất trong phần mềm hệ thống hiện đại
Kiến trúc Arm và nhân Linux

Smartphone cũng như SoC hệ thống bán dẫn cho AI, ô tô điện Automotive (tự lái, infotainment) và bộ xử lý Arm được sử dụng trong máy chủ cloud và MacBook đều là bộ xử lý Cortex-A 64-bit dựa trên Armv8-A (Cortex-A53, Cortex-A57, Cortex-A72, v.v...). Có thể nói rằng kiến thức nền tảng được yêu cầu nhiều nhất trong ngành phần mềm hệ thống hiện tại chính là kiến trúc Armv8-A.

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

Bộ xử lý Arm cùng với kernel 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, 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) chủ yếu thực hiện lập trình driver để điều khiển chip mà họ thiết kế bằng cách sử dụng kernel Linux hoặc device driver Linux.

Tóm lại một lần nữa! Kernel của hệ điều hành chạy nhiều nhất trên bộ xử lý Arm chính là Linux kernel.

'Giao diện giữa kiến trúc Arm và nhân Linux' -
4 lý do tại sao bạn cần học

1⃣ Thứ nhất, nếu hiểu rõ giao diện giữa kiến trúc Arm và kernel 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. Bởi vì việc phân tích mã nguồn đã triển khai những nội dung học được từ lý thuyết sẽ giúp bạn nội hóa kiến thức đã học.

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

3⃣ Thứ ba, bằng cách phân tích register, exception handling, assembly instruction, trust zone và phương thức quản lý bộ nhớ thông qua source code có sẵn trong Linux kernel, bạn có thể học đồng thời về nội dung cấu thành kiến trúc Arm và Linux kernel.

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

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

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!

'Cấu trúc và nguyên lý của kiến trúc Arm để phát triển phần mềm hệ thống' - các nhà phát triển đã tham gia khóa học trực tiếp của tác giả có thể thấy thắc mắc. Bởi vì lần này giảng viên kiến trúc Arm đột nhiên nói về Linux kernel. Tuy nhiên, tôi không chỉ là tác giả viết về kiến trúc Arm mà còn viết cả sách về Linux kernel. Các thành tích chính liên quan đến Linux kernel như sau

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

  • 'Cấu trúc và Nguyên lý của 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) tác giả

  • 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ị Khoa học Máy tính Tổng hợp Hàn Quốc (KCC2022) - Thuyết trình Tutorial
    [Chinh phục Linux Kernel bằng ftrace]


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


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

Tôi khuyến nghị cho những người như thế này

Sinh viên chuẩn bị việc làm và lập trình viên junior trong lĩnh vực phần mềm hệ thống bao gồm chíp bán dẫn hệ thống (fabless), lĩnh vực xe điện (tự lái, infotainment)

Nhà phát triển phần mềm hệ thống muốn biết cách debug trong thực tế bằng cách tận dụng các tính năng của kiến trúc Arm

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

Sau khi hoàn thành khóa học

  • Tìm hiểu nguyên lý hoạt động chi tiết của kiến trúc Arm

  • Tìm hiểu cách các Subsystem chính của Linux kernel đượ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 về cách thức triển khai context scheduling của Linux kernel

  • Hiểu chi tiết về cách thức hoạt động của system call và exception handler trong Linux kernel

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

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

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

Giải thích về process - thành phần cốt lõi của Linux kernel (không gian người dùng và không gian kernel, user process, kernel thread).

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 context switch và 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 context switching phụ thuộc vào kiến trúc Arm thông qua phân tích các lệnh assembly.

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

Luồng xử lý ngắt được giải thích dựa trên 2 kịch bản (ngắt xảy ra trong quá trình thực thi ứng dụng người dùng, ngắt xảy ra trong quá trình thực thi mã kernel). Tiếp theo sẽ review chi tiết mã exception handler (mã assembly).

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 gây ra system call từ không gian người dùng. Tiếp theo, mô tả chi tiết quy trình exception handler được thực thi trong không gian kernel trong quá trình system call được kích hoạt.

Sau khi system call được kích hoạt (thực thi lệnh SVC), quá trình gọi system call handler trong kernel space sẽ xử lý các API kernel cốt lõi. Ngoài ra, chúng ta cũng sẽ đề cập chi tiết đến thông tin symbol cốt lõi của system call handler.

Giới thiệu các chức năng chính tạo nên quản lý bộ nhớ trong nhân Linux và giải thích các tính năng liên quan đến quản lý bộ nhớ cần biết từ góc độ kiến trúc Arm.

Giới thiệu config thiết lập phạm vi địa chỉ ảo trong nhân Linux. Tiếp theo sẽ giải thích giao diện mà nhân Linux hỗ trợ cho bảng trang đa cấp.

Giải thích chi tiết về nguyên lý hoạt động của page lookup được xử lý bằng interface được hỗ trợ trong Linux kernel và cấu trúc của macro fixup.

Đánh giá khóa học chân thực từ học viên


Những điều cần lưu ý trước khi học

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

  • Chúng tôi khuyến nghị bạn nên nghe trước bài giảng trực tiếp của tác giả 'Cấu trúc và Nguyên lý của Kiến trúc Arm cho Phát triển Phần mềm Hệ thống' (phần 1/2).

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

  • Tốt nhất là bạn nên biết đại khái Linux hoạt động như thế nào.

  • Không cần có kiến thức sâu về nhân Linux 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?

  • Người tìm việc và lập trình viên junior ngành phần mềm hệ thống

  • Nhà phát triển SW hệ thống muốn biết cách gỡ lỗi dùng tính năng kiến trúc Arm.

  • 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

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

6,034

Học viên

204

Đánh giá

89

Trả lời

4.9

Xếp hạng

22

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ả

25 bài giảng ∙ (3giờ 51phút)

Ngày đăng: 
Cập nhật lần cuối: 

Đánh giá

Tất cả

6 đánh giá

4.5

6 đánh giá

  • aceoftop1975님의 프로필 이미지
    aceoftop1975

    Đánh giá 113

    Đá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

    • jangmh7595님의 프로필 이미지
      jangmh7595

      Đánh giá 4

      Đánh giá trung bình 5.0

      5

      32% đã tham gia

      • hanskim님의 프로필 이미지
        hanskim

        Đánh giá 2

        Đánh giá trung bình 4.0

        4

        100% đã tham gia

        • 16225864175님의 프로필 이미지
          16225864175

          Đánh giá 4

          Đánh giá trung bình 5.0

          5

          100% đã tham gia

          • yjjung9566님의 프로필 이미지
            yjjung9566

            Đánh giá 2

            Đánh giá trung bình 5.0

            5

            32% đã tham gia

            1.075.172 ₫

            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!