Linux 커널 부팅 프로세스 소스 코드 수준 분석
커널 부팅의 시작과 제어권 이전
ARM 아키텍처 기반 시스템에서, U-Boot 등의 부트로더는 하드웨어 초기화(메모리, 클럭, 시리얼 포트 등)를 수행한 후, 커널 이미지(zImage 또는 Image)를 지정된 물리 주소(예: 0x40000000)로 로딩하고 해당 위치로 실행을 전달한다. 이 순간부터 제어권은 커널로 넘어가며, 부트로더는 'Starting kernel...' 메시지를 출력한 후 종료된 ...
7월 3일 18:17에 게시됨
리눅스 커널의 가상 파일 시스템 (VFS) 이해
리눅스 가상 파일 시스템 (VFS)
리눅스 커널의 가상 파일 시스템(Virtual File System, VFS)은 다양한 저장 장치와 파일 시스템 유형을 사용자 애플리케이션에 일관된 방식으로 제공하기 위한 추상화 계층입니다. 이 계층 덕분에 애플리케이션은 실제 파일 시스템의 종류(예: ext4, NTFS, XFS 등)에 관계없이 동일한 시스템 호출 인터페이스를 사용하여 파일 및 디렉터리에 ...
7월 1일 21:00에 게시됨
Linux 커널 인터럽트 핸들링 C 코드 분석
ARM 아키텍처에서 예외가 발생하면 어셈블리 단계를 거쳐 최종적으로 asm_do_IRQ() 함수로 진입한다. 이 시점까지 어셈블리 코드는 인터럽트 번호(irq)를 계산하여 C 함수에 전달한다. 이 문서에서는 Linux 인터럽트 시스템의 핵심 자료구조와 C 언어 단계의 처리 흐름을 살펴본다.
핵심 자료구조
커널은 모든 인터럽트를 일관된 번호 체계로 관리하며, irq_desc[NR_IRQS ...
6월 29일 20:46에 게시됨
Linux 커널의 hungtask 감지 메커니즘 분석
기능 개요
Linux 커널 5.10.0 버전에서 hungtask 기능은 시스템 내 모든 프로세스 스레드를 주기적으로 점검하여, TASK_UNINTERRUPTIBLE 상태에 지속적으로 머무르는 비정상적인 작업을 탐지합니다. 이 상태가 설정된 시간(기본값: 120초) 이상 지속되면 경고를 출력하거나 시스템을 패닉시킵니다.
초기화 과정
hung_task_init() 함수는 커널 부팅 시 실행되며, khungtas ...
5월 27일 20:07에 게시됨
Linux 커널의 I2C 프로토콜 아키텍처 및 구현
I2C 프로토콜 사양 문서
THE I2C-BUS SPECIFICATION VERSION 2.1 JANUARY 2000: https://www.csd.uoc.gr/~hy428/reading/i2c_spec.pdf
I2C(Inter-IC)는 종종 IIC 또는 TWI(Two-Wire Interface)로도 불리며, 일부 표준에서는 SMBus와 유사한 하위 프로토콜로 분류된다.
전기적 기초
이더넷은 단순히 데이터선(SDA)과 클럭선(SCL) 두 개로 구성되며, 각각에 상향 저항(보상 ...
5월 23일 23:03에 게시됨