리눅스커널 (27) 썸네일형 리스트형 [RISC-V][리눅스] 커널 크래시 발생 - 실행 흐름 - Part.1 (강의) RISC-V 프로세서 기반 위에서 리눅스 커널이 실행될 때, 리눅스 커널 크래시가 발생하는 과정을 상세히 설명하는 강의 컨텐츠입니다. 보드를 브링업하는 과정에서 가장 고생하는 이슈가 크래시입니다. 이 영상을 보시고 고생을 덜 하시길 바랍니다. 강의 링크: [리눅스커널] IRQ 스레드를 생성하는 시점 확인하기 이번 포스트에서는 IRQ 스레드를 생성하는 과정을 알아 봅시다.IRQ 스레드는 언제 생성할까?IRQ 스레드를 생성하기 위해서는 request_threaded_irq() 함수를 호출하면 됩니다. IRQ 스레드를 생성하는 흐름도는 다음과 같습니다. request_threaded_irq() 함수를 호출하면 다음 동작을 수행합니다. - 전달한 IRQ 스레드 정보를 인터럽트 컨택스트에 설정 - kthread_create() 함수를 호출해서 IRQ 스레드 생성 kthread_create() 함수는 kthread_create_on_node() 함수로 치환됩니다. 위 그림에서 이해를 돕기 위해 kthread_create() 함수를 호출하면 kthread_create_on_node() 함수를 호출하는 것처럼 표.. [인프런-로드맵] '리눅스 커널의 구조와 원리' - 저자 직강 강의 그 동안 제가 쓴 '디버깅을 통해 배우는 리눅스 커널의 구조와 원리' 책의 저자 직강 강의를 제작했는데요. 강의의 내용을 모아 로드맵으로 업로드했습니다. 현재 30% 할인 쿠폰이 적용되어 로드맵이 프로모션 중이니 참고하세요.로드맵 소개로드맵 이름과 관련 정보를 아래와 같습니다.시스템 소프트웨어 개발자를 위한 Linux kernel: basic course https://www.inflearn.com/roadmaps/1668 로드맵을 구성하고 있는 강의는 아래와 같습니다: 리눅스 소개와 리눅스 커널 Overview [저자직강 1부-1] 리눅스 커널의 구조와 원리: 디버깅 - Basic [저자 직강 1부-2] 리눅스 커널의 구조와 원리: 디버깅 - Advanced 실전 [저자 직강 1부-3] 리눅스 .. [리눅스커널] 시스템 콜의 특징 시스템 콜의 특징 이번 절에서는 시스템 콜의 특징을 알아보겠습니다. 앞서 알아봤듯이 시스템 콜은 유저 모드에서 커널 모드로 진입하는 관문입니다. 소프트웨어 구조 관점에서 보면 시스템 콜은 유저 공간과 커널 공간 사이의 가상 계층으로 볼 수도 있습니다. 이 계층은 다음과 같은 특징이 있습니다. 1. 시스템 콜 계층으로 시스템 안정성과 보안을 지킬 수 있습니다. 유저 모드에서 애플리케이션이 커널 공간에 아무런 제약 없이 접근한다고 가정해 봅시다. 실수로 애플리케이션이 커널 코드 영역의 메모리를 오염시키면 시스템이 오동작할 가능성이 높습니다. 그래서 유저 모드에서 시스템 콜로만 커널 모드에 진입해서 제한된 메모리 공간에 접근하는 것입니다. 2. 유저 애플리케이션에서 추상화된 하드웨어 인터페이스를 제공합니다. .. [리눅스커널] 시스템 콜의 전체 흐름과 계층 이전 절에서 시스템 콜을 구성하는 주요 개념을 알아봤습니다. 이번에는 시야를 넓혀 전체 리눅스 시스템에서의 시스템 콜 실행 흐름을 살펴보겠습니다. 시스템 콜의 전체 흐름 파악하기 다음 그림은 이번 장에서 다룰 시스템 콜의 전체 흐름입니다. 그림 11.2 시스템 콜의 전체 흐름 먼저 위 그림에서 유저 공간이라고 표시된 부분을 눈으로 따라가 봅시다. open(), write(),read() 함수는 파일을 열거나 읽고 쓰는 파일 입출력 동작이고, fork()와 exit() 함수는 프로세스 생성 및 종료와 연관된 동작을 실행합니다. 이를 리눅스 저수준 함수라고 부릅니다. 다른 관점에서 GNU C 라이브러리로 진입하는 함수이며, API(Application Programming Interface)라고도 합니다. .. ftrace와 커널 로그로 인터럽트 컨텍스트 확인해보기 ftrace와 커널 로그로 인터럽트 컨텍스트 확인해보기 이번 절에서는 ftrace 로그를 분석하면서 커널이 인터럽트를 어떻게 처리하는지 알아봅시다. 리눅스 커널에서 커널 동작을 가장 정밀하게 담고 있는 로그는 뭘까요? 아마 많은 리눅스 전문가들은 ftrace라고 대답할 겁니다. ftrace는 리눅스 커널에서 제공하는 가장 강력한 디버그 로그입니다. 리눅스 커널의 공식 트레이서이기도 합니다. 여러분도 ftrace 로그를 자주 활용해서 리눅스 커널을 익히기를 바랍니다. ftrace로 인터럽트를 처리하는 인터럽트 핸들러 함수에 필터를 걸고 콜 스택 로그를 받아 보겠습니다. 인터럽트 동작을 확인하기 위한 ftrace 설정 ftrace로 인터럽트의 동작 방식을 분석하기 전에 ftrace를 설정하는 방법을 소개합니.. [리눅스커널] 인터럽트를 잘 알아야 하는 이유 커널이 인터럽트를 처리하는 과정과 자료구조를 왜 잘 알아야 할까요? 인터럽트를 처리하는 방식이 시스템 전반에 큰 영향을 끼치기 때문입니다. 또한 리눅스 커널 시스템 전반을 잘 이해하기 위해서도 커널이 인터럽트를 어떻게 처리하는지 잘 알고 있어야 합니다. 또 다른 이유는 다음과 같습니다. 대부분의 리눅스 드라이버는 인터럽트를 통해 하드웨어 디바이스와 통신합니다. 그래서 디바이스 드라이버 코드를 처음 분석할 때 인터럽트를 처리하는 함수나 코드를 먼저 확인합니다. 인터럽트의 동작 방식을 잘 알고 있으면 디바이스 드라이버 코드를 빨리 이해할 수 있습니다. 인터럽트가 발생하면 프로세스는 이미 정해진 동작을 수행합니다. 인터럽트 처리 과정을 숙지하면 프로세스가 스택 메모리 공간에서 어떻게 실행되는지 알게 됩.. [리눅스커널] 인터럽트(Interrupt)의 주요 개념 앞에서 인터럽트에 대해 소개했으니 리눅스 커널에서 인터럽트를 처리하는 방식을 이해하기 위해 알아야 할 주요 개념을 소개합니다. 인터럽트 핸들러 인터럽트 벡터 인터럽트 디스크립터 인터럽트 컨텍스트 인터럽트 핸들러란? 인터럽트가 발생하면 이를 핸들링하기 위한 함수가 호출되는데 이를 인터럽트 핸들러라고 합니다. 예를 들어, 키보드를 타이핑해서 인터럽트가 발생하면 키보드 인터럽트를 처리하는 키보드 인터럽트 핸들러가 호출됩니다. 마찬가지로 휴대폰에서 화면을 손으로 만지면 터치 인터럽트가 발생하고 터치 인터럽트를 처리하는 터치 인터럽트 핸들러가 호출됩니다. 다음 그림을 보면서 각 디바이스별로 인터럽트 핸들러가 처리되는 과정을 알아보겠습니다. 그림 5.2 디바이스별로 실행되는 인터럽트 핸들러 그림 5... 이전 1 2 3 4 다음