리눅스 커널의 구조와 원리: 프로세스 [저자 직강 1부-4]

63

이 수강하고 있어요.

Thumbnail

초급자를 위해 준비한
[시스템, Linux] 강의입니다.

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

이런 걸
배워요!

  • 리눅스 커널에서 프로세스의 역할

  • 프로세스의 기본 동작 방식

  • 프로세스의 스택의 구조

  • TRACE32로 프로세스의 다양한 실행 흐름을 디버깅하는 방법

  • 멀티 코어 시스템 구조에서 프로세스의 동작 방식

<공지>

1. 500명 돌파 30% 할인 쿠폰 발행 🙏

리눅스 커널 강의 수강 500명 돌파를 기념하여 30% 할인 쿠폰을 발행합니다. 감사합니다. 선착순 100명입니다. 쿠폰 : 16249-51d014f09d94 

2.로드맵 안내 🎯

이번 강의 <리눅스 커널의 구조와 원리: 프로세스 [저자 직강 1부-4]>는 로드맵 '시스템 소프트웨어 개발자를 위한 Linux kernel - basic course' 에 포함된 강의입니다.

체계적으로 리눅스 커널을 구성하는 주요 기능을 배우시려는 분은 로드맵(전체 강의 30% 할인)을 활용하시면 좋습니다.

시스템 반도체, 자동차 분야 등

시스템 소프트웨어 개발자라면 꼭 알아야 할 리눅스 커널


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

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

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

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

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

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

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

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

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

입문자들이 리눅스 커널에서 가장 먼저 배우는 프로세스

입문자들은 리눅스 커널을 배울 때 어느 주제부터 배울까요? 대부분 프로세스를 배웁니다. '리눅스 커널' 책은 프로세스와 함께 시작됩니다. 또한 프로세스는 파일 시스템 및 메모리 시스템과 더불더 꼭 알아야 하는 주제라고도 합니다.

입문자들이 프로세스를 배우기 시작하면 어떤 느낌일까요? 프로세스는 꼭 알아야 하는 내용이라고 생각되지만 쉽게 지루해집니다. 그 이유는 무엇일까요? 실전 프로젝트에서 바로 적용할 만한 내용이 없다고 생각합니다. 또한 프로세스는 막연한 내용이 많아 지루해집니다. 결국 열심히 공부해도 배운 내용이 오랫 동안 남지도 않습니다.

그래서 제가 쓴 '리눅스 커널의 구조와 원리' 책에서는 다양한 방식으로 독자 분들이 ftrace 디버깅 실습을 통해 프로세스를 배울 수 있게 구성했습니다.

강의의 차별화 포인트

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

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

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

2. 프로세스의 기본 개념을 쉽고 자세하게 설명

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

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

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

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

이번 강의에서 이 내용을 다룹니다. 리눅스 커널 메모리 덤프를 TRACE32 시뮬레이터를 사용해 프로세스와 관련된 커널의 자료 구조를 디버깅하면서 crash-utility로 메모리 덤프를 로딩해 커널의 주요 동작을 분석합니다. 특히 프로세스의 스택이 깨지거나 스택 오버플로우가 발생할 때 디버깅 방법은 정상급 펩리스 업체 개발자들도 잘 모르는 내용입니다.

이런 내용을 배워요

리눅스 시스템의 3대 리소스 중 하나인 프로세스에 대해 설명하고 프로세스를 왜 배워야 하는지 설명합니다. 프로세스의 기본 개념에 대해 쉽게 소개합니다.

프로세스의 실행 공간을 설명하고 프로세스를 알아야 하는 이유를 설명합니다.

프로세스의 기본 동작을 Crash-Utility와 TRACE32 디버깅 프로그램을 사용해 분석합니다.

프로세스의 속성 정보를 저장하고 관리하는 task_struct 구조체를 TRACE32와 Crash-Utility 디버깅 프로그램을 사용해 분석합니다.

리눅스 커널의 여러 기능과 서브 시스템에서 많이 활용되는 current 매크로를 설명합니다. 커널 소스 코드를

어셈블리 코드 레벨까지 상세히 분석합니다.

멀티 코어 시스템 구조에서 프로세스가 실행되는 흐름을 설명합니다. 이와 관련된 자료 구조도 설명합니다.

TRACE32 프로그램을 사용해 프로세스가 생성되거나 종료되는 동작을 상세히 디버깅합니다. 프로세스의 자료구조와 함수 호출 흐름을 상세히 설명합니다. (수강생 분들은 본 강의에 업로드된 TRACE32 프로그램과 커널 메모리 덤프를 내려 받아 따라하면서 실습할 수 있습니다.)

TRACE32 프로그램을 사용해 인터럽트 핸들러가 실행되는 프로세스의 인터럽트 컨텍스트 정보에 대해 상세히 분석합니다. Crash-utility 프로그램에서 추출한 ftrace 메시지를 분석하면서 인터럽트 컨텍스트에 대해 설명합니다.

덤프의 자료구조와 콜 스택을 리눅스 커널 소스 코드와 함께 분석합니다.


교육용 TRACE32 프로그램과 8개 리눅스 커널 메모리 덤프 제공

이번 강의에서는 리눅스 시스템 소프트웨어 업계에서 가장 진보된(Advanced) 디버깅 방식인 - 글로벌 최고 수준 시스템 반도체 업체인, 퀄컴 리눅스 커널 개발자들이 디버깅하는 - 리눅스 커널 메모리 덤프를 디버깅하는 방법을 소개합니다. TRACE32와 Crash utility와 같은 디버깅 프로그램을 활용해 '리눅스 커널 메모리를 '디버깅할 수 있는 고급 디버깅 방법을 제공합니다.

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

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

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

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

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

  • '시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리'(2023년) 저자

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

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

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


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

수강 전 참고 사항

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

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

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

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

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

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

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

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

선수 지식 및 유의사항

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

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

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

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

이런 분들께
추천드려요!

학습 대상은
누구일까요?

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

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

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

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

선수 지식,
필요할까요?

  • 운영체제

  • 컴퓨터구조

  • C언어

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

  • '시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리'(2023년) 저자

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

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

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

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

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

주요 로드맵 🎯

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

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

로드맵_이미지_스킨.png

 

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

image

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

커리큘럼

전체

70 ∙ 9시간 31분

  • 강의 및 교육자 소개

    06:23

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

수강평

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