하드웨어

/

임베디드 · IoT

리눅스 커널의 구조와 원리: 인터럽트 후반부 [저자 직강 1부-6]

시스템 소프트웨어에서 가장 많이 쓰이는, 최신 리눅스 커널(v6.1)의 '인터럽트 후반부'의 핵심 개념을 "디버깅을 통해 배우는 리눅스 커널의 구조와 원리"의 저자가 제대로 설명합니다.

(5.0) 수강평 1

수강생 55

Thumbnail

초급자를 위해 준비한
[임베디드 · IoT, linux-kernel] 강의입니다.

이런 걸
배워요!

  • 인터럽트의 후반부 기본 개념과 동작 방식

  • 디바이스 드라이버 관점으로 인터럽트 후반부의 처리 방식

  • threaded IRQ 피쳐로 인터럽트 후반부를 처리하는 방식

  • Softirq 처리 방식과 태스크릿

시스템 반도체, 자동차 분야 등 시스템 소프트웨어 개발자라면

꼭 알아야 할 리눅스 커널

모든 IT 기기에서 가장 많이 사용되는 운영체제는 무엇일까요? 바로 리눅스 운영체제입니다. 스마트 폰, 디지틀 TV, 항공 엔터테인먼트 시스템 및 서버에 사용되고 있습니다. 시스템 반도체 업체에서 리눅스(리눅스 디바이스 드라이버)를 활용해 자신이 설계한 하드웨어를 제어합니다. 또한 전기 자동차(Automotive)을 구성하는 다양한 부품(인포테인먼트, 자율주행, 텔레메틱스)에도 리눅스가 많이 활용되고 있습니다.

리눅스 운영체제의 핵심은 리눅스 커널입니다. Armv8-A 아키텍처와 더불어 현재 시스템 소프트웨어 업계에서 가장 많이 필요한 기반 지식이 요구되는 내용이 리눅스 커널이라고도 볼 수 있어요.

리눅스 시스템 소프트웨어 개발자, 리눅스 임베디드 시스템(BSP) 프로그래머 주목!

시스템 반도체, 전기 자동차 분야(자율주행, 인포테인먼트)를 포함한 리눅스 시스템 소프트웨어 분야에서 주니어 개발자   

시스템 반도체, 전기 자동차 분야와 같은 리눅스 시스템 소프트웨어 개발 분야에서 일하고 싶은 취업 준비생 

리눅스 시스템 소프트웨어 분야(메모리, 파일 시스템, 운영체제)의 대학원 진학 희망자

리눅스 시스템 소프트웨어 분야로 커리어를 전환하려는 다른 분야의 개발자 

그런데 리눅스 커널은 시스템 소프트웨어 분야의 입문자에 있어 거대한 장벽과 같은 존재입니다. 입문자들은 리눅스 커널을 배우다가 수 차례 포기한 경험이 있을 것입니다. 그 어려운 리눅스 커널 버전이 업그레이드되면서 점점 더 복잡하게 진화하고 있습니다. 2024년 이후에는 리눅스 커널 버전은 v6.6 이상으로 업그레이드되고 있는데, 진입 장벽이 더 높아지고 있습니다.

시스템 반도체, 전기 자동차 분야를 포함한 다양한 분야에 포진된 리눅스 시스템 소프트웨어 개발자 분들은 리눅스 커널을 잘 알아야 개발 역량을 키울 수 있다는 사실은 알고 있습니다. 하지만 리눅스 커널을 어떻게 배워야 하고 무엇보다 실무에서 어떤 내용을 잘 알아야 하는지 감을 잡기 어려운 상황입니다.

리눅스 디바이스 드라이버 개발의 핵심 중 핵심: 인터럽트 후반부

리눅스 시스템 소프트웨어 개발자로 입문하면 대부분 리눅스 디바이스 드라이버를 개발하는데, 이 과정에서 반드시 구현하고 최적화해야 할 요소 중 하나는 인터럽트입니다. 인터럽트 후반부는 인터럽트와 함께 반드시 알아야 할 내용입니다. 그 이유는 몇 가지 들자면;

  • 대부분 인터럽트 핸들러는 인터럽트 후반부 기법과 함께 사용된다.

  • 인터럽트를 통해 제어하는 페리퍼럴 디바이스의 주요 이슈는 인터럽트 후반부와 관련된 루틴에서 - 인터럽트 핸들러와 함께 - 확인된다.

그래서 제가 쓴 '리눅스 커널의 구조와 원리' 책의 6장에서 다음과 같은 '인터럽트 후반부 기법'을 설명합니다.

  • threaded IRQ(IRQ 스레드)

  • Softirq

  • 태스크릿

다양한 방식으로 독자 분들이 ftrace 디버깅 실습을 통해 인터럽트 후반부 기법을 배울 수 있게 구성했습니다.

강의의 차별화 포인트

이번 강의는 그 동안 한번도 유튜브나 어느 강의 플렛폼에서 다룬 적이 없는 콘텐츠로 구성되어 있습니다! 리눅스 커널의 인터럽트 후반부 기법과 관련된 자료 구조와, 리눅스 커널을 구성하는 다양한 자료 구조(task_struct, thread_info 구조체)를 리눅스 커널 메모리 덤프를 통해 디버깅합니다.이 강의를 수강하시는 분은 교육용 프로그램(TRACE32)을 내려 받아 직접 실습하실 수 있습니다.

1. TRACE32 시뮬레이터 프로그램(교육용)과 리눅스 커널 덤프 제공

리눅스 시스템 소프트웨어 개발 전반에 TRACE32 디버거와 관련 프로그램은 광범위하게 사용됩니다. TRACE32 프로그램은 라이선스가 있어야 실행할 수 있습니다. 이 강의를 수강하시면 교육용 TRACE32 시뮬레이터 프로그램을 '인프런 강의 자료'에서 내려 받아 직접 TRACE32 시뮬레이터 프로그램을 활용해 메모리 덤프를 디버깅할 수 있습니다. 또한 인터럽트 후반부 기법의 다양한 동작(threaded IRQ, Softirq)을 디버깅할 수 있는 6개 커널 메모리 덤프를 내려 받아 실습하실 수 있습니다.

2. 인터럽트 후반부 기법의 기본 개념을 쉽고 자세하게 설명

리눅스 커널을 배울 때 커널 소스를 분석합니다. 그런데 커널 소스를 분석하는 과정에서 많은 걸림돌을 만납니다. 해당 함수가 어떤 흐름으로 호출되는지, 분석하는 루틴의 자료 구조가 실제 어떤 값인지 확인하기 어렵습니다. 이번 강의는 이 모든 걸림돌을 해체합니다.

인터럽트 후반부 기법과 관련된 리눅스 커널 소스를 TRACE32 프로그램의 콜 스택과 상세한 자료 구조와 함께 분석합니다. 혼자서 리눅스 커널을 배울 때 보다 훨씬 더 효율적으로 인터럽트 후빈부 기법을 배울 수 있습니다. 또한 메모리 덤프에서 추출한 ftrace 메시지까지 분석하므로 입체적으로 인터럽트 후반부 기법의 동작 원리를 세세하게 파악할 수 있습니다.

3. 글로벌 시스템 반도체 업체의 리눅스 커널 BSP 개발자들이 하는 디버깅 방법 소개

최근 시스템 반도체 업계가 떠오르고 있습니다. 글로벌 시스템 반도체 업체 리눅스 커널 시스템 개발자는 어떤 방식으로 리눅스 커널 드라이버를 디버깅할까요?

이번 강의에서 이 내용을 다룹니다. 리눅스 커널 메모리 덤프를 TRACE32 시뮬레이터를 사용해 프로세스와 관련된 커널의 자료 구조를 디버깅하면서 crash-utility로 메모리 덤프를 로딩해 커널의 주요 동작을 분석합니다.

이런 내용을 배워요

인터럽트가 처리되는 전체 흐름을 설명하고 인터럽트 후반부 기법이 왜 필요한 지 설명합니다.

인터럽트 후반부 기법으로 많이 활용되는 threaded IRQ 방식을 소개하고 핵심 기능을 설명합니다.

threaded IRQ 기법의 실행 흐름을 큰 그림으로 설명하고 소스 코드를 상세히 설명합니다.

threaded IRQ 관련 패치를 소개하고 ftrace를 설정하는 방법을 소개합니다. Ftrace 메시지와 threaded IRQ 기법의 실행 흐름을 함께 세세하게 설명합니다.

TRACE32와 Crash Utility 프로그램을 사용해 threaded IRQ 방식과 관련된 자료 구조를 상세하게 분석합니다.

Softirq에 대해 소개하고 Softirq를 잘 알아야 하는 이유에 대해 설명합니다.

Softirq의 핵심인 Softirq 서비스의 종류와 단계별 실행 흐름에 대해 상세하게 설명합니다.

Softirq 서비스를 요청하고 실행하는 동작을 - 전체 실행 흐름과 소스 코드 분석으로 - 상세하게 설명합니다.

Softirq 서비스를 실행하는 데몬인 ksoftirqd/[n] 커널 스레드를 설명하고 태스크릿을 상세하게 분석합니다.

Softirq 관련 ftrace tracepoint를 설명하고 ftrace 메시지를 상세하게 분석합니다.

교육용 TRACE32(시뮬레이터) 프로그램과 6개 리눅스 커널 메모리 덤프 제공

이번 강의에서는 리눅스 시스템 소프트웨어 업계에서 가장 진보된(Advanced) 디버깅 방식인 리눅스 커널 메모리 덤프를 디버깅하면서 인터럽트 후반부 기법을 구성하는 자료 구조와 콜 스택을 설명합니다.

TRACE32와 Crash utility와 같은 디버깅 프로그램을 활용해 '리눅스 커널 메모리를 '디버깅할 수 있는 고급 디버깅 방법을 제공합니다.

교육용 TRACE32 프로그램(시뮬레이터 버전)을 강의 커리큐럼에서 내려받을 수 있습니다. 수강생은 TRACE32 프로그램으로 이번 강의에서 제공되는 커널 메모리 덤프를 로딩해 같이 따라하면서 디버깅할 수 있습니다.

오픈 소스 프로젝트로 운영되는 Crash Utility를 직접 내려 받아 커널 메모리 덤프를 로딩해 디버깅할 수 있습니다. Crash Utility에서 지원하는 다양한 기능을 활용해 커널의 자료구조나 콜 스택을 직접 디버깅할 수 있습니다.

책 집필/강의경력을 바탕으로
누구보다 깊고 상세하게!

국내 시스템 소프트웨어 분야에서 전무후무한! '리눅스 커널'책과 'Arm 아키텍처(Armv8-A, Armv7-A)' 책을 쓴 저자입니다. 또한 최신 시스템 소프트웨어 트렌드(전기자동차, 시스템 반도체- 시스템 소프트웨어)를 가장 잘 알고 있는 현업 개발자이자, 시스템 소프트웨어 분야에서 가장 지식 전파 활동을 활발하게 하는 교육자입니다. 

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

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

  • '프로그래머스 데브 코스: 리눅스 시스템 및 커널 전문가' 메인 강사 (1~2차수)

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

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


국내에서 어느 누구보다 리눅스 커널을 구성하는 주요 기능을 잘 설명할 수 있는 교육자라고 자신있게 말씀드릴 수 있습니다.

수강 전 참고 사항

TRACE32 프로그램을 사용하실 때 유의사항

  • TRACE32 교육용 프로그램은 윈도우 환경에서만 실습할 수 있습니다.

  • TRACE32 교육용 프로그램은 오로지 '교육용'으로만 활용될 수 있으며 상업적인 용도로 수정이나 배포하실 수 없습니다.

  • 이번 강의의 TRACE32 교육용 프로그램을 사용하다가 문의 사항이 있으면 반드시 교육자에게 질문해주세요.

실습 환경 및 제공되는 강의 자료

  • 운영 체제 및 버전(OS): 라즈베리 파이(라즈비안), 리눅스 커널 v6.1

  • TRACE32 교육용 프로그램 및 설치 가이드 문서(강의)

  • 6개 리눅스 커널 메모리 덤프(vmcore)

선수 지식 및 유의사항

  • 대략적으로 리눅스가 어떻게 동작하는지 아시면 좋습니다.

  • '리눅스 커널의 구조와 원리: 디버깅 - Basic [저자 직강 1부-2]' 강의를 되도록 먼저 듣고 오시면 좋습니다.

  • 운영체제나 컴퓨터 구조에 대해 알고 있으면 더 편하게 수업을 들을 수 있습니다.

  • 리눅스 커널에 대한 깊이 있는 선수 지식은 필요하지 않습니다.

이런 분들께
추천드려요!

학습 대상은
누구일까요?

  • 시스템 반도체, 전기 자동차 분야(자율주행, 인포테인먼트)를 포함한 시스템 소프트웨어 분야에서 역량을 키우고 싶은 주니어 개발자

  • 시스템 반도체, 전기 자동차 분야와 같은 시스템 소프트웨어 개발을 하고 싶은 취업 준비생

  • 시스템 소프트웨어 분야(메모리, 파일 시스템, 운영체제)의 대학원 진학을 목표로 하는 대학생

  • 시스템 소프트웨어 분야로 커리어를 전환하려는 다른 분야의 개발자

선수 지식,
필요할까요?

  • C언어

  • 컴퓨터구조

  • 운영체제

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

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

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

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

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

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

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

주요 로드맵 🎯

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

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

 

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

체계적으로 Arm 아키텍처(Armv8-A, Armv7-A)와 리눅스 커널을 배우시려는 분은 로드맵(전체 강의 30% 할인)을 활용하시면 좋습니다.

커리큘럼

전체

84 ∙ 10시간 12분

수업 자료

가 제공되는 강의입니다.

      강의 게시일: 2024년 06월 24일
      마지막 업데이트일: 2024년 06월 24일

      수강평

      아직 충분한 평가를 받지 못한 강의입니다.
      모두에게 도움이 되는 수강평의 주인공이 되어주세요!