Booil Jung

라즈베리 파이를 위한 실시간 리눅스 구현 및 최적화에 대한 고찰

과거 산업 제어, 로보틱스, 고속 데이터 수집 시스템은 고가의 전용 하드웨어와 실시간 운영체제(RTOS)에 의존하는 것이 일반적이었다. 그러나 라즈베리 파이와 같은 저비용 고성능 단일 보드 컴퓨터(SBC)의 등장은 임베디드 시스템 개발의 패러다임을 근본적으로 바꾸어 놓았다.1 이러한 SBC는 단순한 데이터 처리를 넘어 물리적 세계와 직접 상호작용하며, 정해진 시간 내에 예측 가능한 반응을 보장해야 하는 실시간(Real-Time) 요구사항을 동반하는 경우가 많다.3

라즈베리 파이는 본래 교육 및 취미용으로 개발되었으며, 기본적으로 탑재되는 라즈베리 파이 OS는 리눅스 커널에 기반한 범용 운영체제(GPOS)이다. GPOS의 설계 목표는 시스템의 평균 처리량(Throughput)을 극대화하는 데 초점이 맞춰져 있다. 이는 최악의 경우 응답 시간(Worst-Case Response Time) 보장을 최우선으로 하는 실시간 시스템의 목표와 본질적으로 상충된다.5 범용 리눅스 커널은 평균 성능을 위해 스케줄링, 인터럽트 처리, 메모리 관리 등에서 비결정적(Non-deterministic) 지연 요소를 내포하고 있기 때문이다.

본 보고서는 라즈베리 파이라는 범용 하드웨어 플랫폼에서, 범용 운영체제인 리눅스의 커널을 수정하고 시스템 전반을 최적화하여 신뢰성 있는 실시간 시스템을 구축하는 전 과정을 이론적, 실증적으로 고찰하는 것을 목적으로 한다. 이를 위해 실시간 시스템의 핵심 개념 정의부터 시작하여, 리눅스를 실시간 운영체제로 변환하는 핵심 기술인 PREEMPT_RT 커널의 아키텍처와 구현 방법, 하드웨어부터 애플리케이션에 이르는 다계층적 최적화 전략, 그리고 구축된 시스템의 성능을 객관적으로 검증하는 방법론을 심도 있게 다룬다. 최종적으로는 실제 산업 현장에서의 적용 사례를 통해 라즈베리 파이 기반 실시간 시스템의 가능성과 한계를 종합적으로 조망한다.

실시간 시스템을 성공적으로 구현하기 위해서는 그 기반이 되는 핵심 개념들에 대한 명확한 이해가 선행되어야 한다. 이는 단순히 시스템을 ‘빠르게’ 만드는 것을 넘어, ‘예측 가능하게’ 만드는 과정이며, 결정성, 지연시간, 지터라는 세 가지 핵심 지표를 통해 평가된다.

실시간 시스템의 성능은 평균적인 속도가 아닌, 최악의 경우에도 주어진 시간 제약을 만족시킬 수 있는지의 여부로 판단된다. 이러한 특성은 결정성, 지연시간, 지터라는 세 가지 밀접하게 연관된 개념으로 설명된다.

실시간 시스템은 마감 시간을 준수하지 못했을 때 발생하는 결과의 심각성에 따라 경성 실시간과 연성 실시간으로 분류된다.

라즈베리 파이에 실시간 리눅스를 구현하는 것은 이러한 경성 또는 연성 실시간 요구사항을 저비용 플랫폼에서 달성하려는 시도이며, 적용 분야에 따라 요구되는 결정성의 수준이 달라진다.

표준 리눅스 커널을 실시간 시스템에 적용하기 어려운 근본적인 이유는 커널 내부에 존재하는 예측 불가능한 지연 요소 때문이다. 이를 해결하기 위해 커널의 구조를 변경하는 다양한 접근법이 시도되어 왔으며, 대표적으로 단일 커널을 수정하는 PREEMPT_RT와 이중 커널 구조를 채택하는 Xenomai가 있다.

표준 리눅스 커널은 시스템의 전반적인 처리량을 높이는 데 최적화되어 있다. 이를 위해 커널 코드의 특정 임계 영역(Critical Section)을 실행하는 동안에는 다른 태스크가 끼어드는 선점(Preemption)을 허용하지 않는다. 대표적인 비선점 구간으로는 인터럽트 핸들러(Interrupt Handler)와 스핀락(Spinlock)으로 보호되는 영역이 있다.17

이러한 구조는 심각한 문제를 야기한다. 예를 들어, 우선순위가 매우 높은 실시간 태스크가 실행될 준비가 되더라도, 우선순위가 낮은 태스크가 커널 모드에서 스핀락을 잡고 있다면, 낮은 우선순위의 태스크가 락을 해제할 때까지 무기한 대기해야 할 수 있다. 이러한 예측 불가능한 대기 시간이 바로 스케줄링 지연시간(Scheduling Latency)을 증가시키고 결정성을 해치는 주된 원인이다.

PREEMPT_RT(Real-Time Preemption)는 기존 리눅스 커널의 소스 코드를 직접 수정하여 커널의 거의 모든 영역을 선점 가능하게 만드는 패치셋(Patch Set)이다.5 이 접근법은 리눅스의 단일 커널 구조와 풍부한 생태계를 그대로 유지하면서 경성 실시간 운영체제로 변환하는 것을 목표로 한다.18 PREEMPT_RT의 핵심적인 구조 변경 사항은 다음과 같다.

Xenomai는 PREEMPT_RT와는 근본적으로 다른 이중 커널(Dual-kernel) 아키텍처를 사용한다.13

이 두 접근법의 선택은 단순한 성능 지표 비교를 넘어선 아키텍처적 트레이드오프(Trade-off) 결정이다. PREEMPT_RT는 ‘통합’과 ‘개발 용이성’을 우선시하는 반면, Xenomai는 ‘격리’를 통한 ‘극한의 결정성’을 추구한다. 최근 PREEMPT_RT의 상당 부분이 리눅스 메인라인 커널에 통합되고 지속적으로 개선되면서, 잘 튜닝된 PREEMPT_RT 시스템은 많은 실제 애플리케이션 환경에서 Xenomai와 필적하는 성능을 보이기도 한다.19 따라서 풍부한 리눅스 생태계(드라이버, 네트워크 스택, 파일 시스템 등)를 적극적으로 활용하면서 수십~수백 마이크로초 수준의 실시간성을 요구하는 애플리케이션에는 PREEMPT_RT가, 리눅스 기능 의존도가 낮고 수 마이크로초 수준의 정밀도가 최우선인 애플리케이션에는 Xenomai가 더 적합한 선택이 될 수 있다.

구분 PREEMPT_RT (단일 커널) Xenomai (이중 커널)
아키텍처 표준 리눅스 커널 직접 수정 (통합형) 실시간 마이크로커널 + 비실시간 리눅스 (격리형)
인터럽트 처리 스레드화된 IRQ, 우선순위 기반 스케줄링 I-pipe가 인터럽트 선점 후 실시간 커널 우선 처리
최소 지연시간 수십 µs ~ 수백 µs 수 µs ~ 수십 µs (일반적으로 더 우수)
지터 Xenomai에 비해 상대적으로 클 수 있음 매우 낮음 (높은 결정성)
API 표준 POSIX API (pthread 등) 고유 API (Alchemy, psos+, etc.) 또는 POSIX 에뮬레이션(‘skin’)
개발 편의성 높음 (기존 리눅스 개발 경험 활용 가능) 상대적으로 낮음 (별도 학습 및 커널 관리 필요)
커뮤니티/지원 리눅스 커널 메인라인에 통합 중, 거대 커뮤니티 별도 커뮤니티, 상대적으로 규모 작음
적합 애플리케이션 로보틱스, 산업 자동화, 실시간 오디오 등 고속 데이터 수집(DAQ), 하드웨어-인더-루프(HIL) 시뮬레이션

라즈베리 파이에서 PREEMPT_RT 커널을 사용하기 위해서는 커널 소스를 직접 컴파일하고 설치하는 과정이 필요하다. 이 장에서는 교차 컴파일 환경을 구축하고, 커널을 설정, 빌드, 배포하는 전체 과정을 단계별로 상세히 설명한다.

라즈베리 파이와 같은 저사양 SBC에서 직접 커널을 컴파일하는 것은 매우 오랜 시간이 소요되므로 비효율적이다. 따라서 일반적으로 더 강력한 성능의 x86 기반 PC에서 라즈베리 파이용(ARM 아키텍처) 코드를 컴파일하는 교차 컴파일(Cross-compile) 방식을 사용한다.23

개발 환경의 복잡성과 의존성 문제를 해결하기 위해 Docker를 활용하는 것이 효과적이다. Docker는 빌드에 필요한 모든 도구(컴파일러, 라이브러리 등)를 컨테이너 이미지 하나에 패키징하여, 어떤 환경에서든 동일한 빌드 결과를 재현할 수 있게 해준다. jonhpark7966/rpi-rt-kernel과 같은 공개된 저장소는 이러한 Docker 기반 교차 컴파일 환경을 쉽게 구축할 수 있는 스크립트와 Dockerfile을 제공한다.23

커널 빌드의 첫 단계는 대상 하드웨어와 운영체제 버전에 맞는 커널 소스 코드와 PREEMPT_RT 패치를 준비하는 것이다.

  1. 커널 소스 다운로드: 라즈베리 파이 재단이 유지보수하는 공식 리눅스 커널 소스 저장소에서 원하는 버전의 소스 코드를 git clone 명령으로 내려받는다.

  2. PREEMPT_RT 패치 다운로드: 리눅스 커널 공식 아카이브의 RT 프로젝트 페이지에서 커널 소스 버전과 정확히 일치하는 버전의 PREEMPT_RT 패치 파일을 다운로드한다.23

  3. 패치 적용: 다운로드한 커널 소스 디렉터리 내에서 patch 명령어를 사용하여 RT 패치를 적용한다. 예를 들어, 압축된 패치 파일을 파이프로 연결하여 적용할 수 있다.

    xzcat../patch-5.15.60-rt49.patch.xz | patch -p1
    

    rpi-rt-kernel과 같은 자동화 스크립트는 이 과정을 내부적으로 수행해준다.23

패치가 성공적으로 적용되었다면, make menuconfig 명령어를 실행하여 텍스트 기반의 커널 설정 인터페이스에 진입한다. 여기서 실시간 성능에 최적화된 커널을 만들기 위해 몇 가지 중요한 옵션을 설정해야 한다.

이 외에도 시스템 디버깅 관련 옵션(Kernel hacking 메뉴 등)이나 불필요한 전력 관리 기능들은 비활성화하여 시스템 노이즈를 최소화하는 것이 좋다.

커널 설정이 완료되면, 교차 컴파일러를 지정하여 실제 빌드를 진행하고 결과물을 라즈베리 파이에 설치한다.

  1. 커널 빌드: 다음 명령어를 사용하여 커널 이미지(Image), 커널 모듈(modules), 그리고 디바이스 트리 바이너리(dtbs)를 컴파일한다. ARCH는 타겟 아키텍처를, CROSS_COMPILE은 교차 컴파일러의 접두사를 지정한다.23

    make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- Image modules dtbs
    
  2. 결과물 전송: 빌드가 완료되면 생성된 파일들을 라즈베리 파이로 전송해야 한다. scprsync와 같은 네트워크 파일 전송 도구를 사용하여 빌드된 커널 소스 디렉터리 전체를 라즈베리 파이로 복사한다.

  3. 라즈베리 파이에서 설치: 라즈베리 파이에 접속하여 전송된 디렉터리로 이동한 후, 다음 명령어들을 순서대로 실행하여 커널 모듈과 디바이스 트리를 시스템에 설치한다.23

    sudo make modules_install
    sudo make dtbs_install
    
  4. 부트 파티션 업데이트: 마지막으로, 새로 빌드된 커널 이미지와 디바이스 트리 파일들을 부트 파티션(/boot 또는 /boot/firmware)에 복사하여 시스템이 새로운 커널로 부팅되도록 설정한다. 기존 커널과 구별하기 위해 새로운 이름(예: kernel_rt.img)으로 저장하는 것이 안전하다.23

    sudo cp arch/arm64/boot/Image /boot/firmware/kernel_rt.img
    sudo cp arch/arm64/boot/dts/broadcom/*.dtb /boot/firmware/
    sudo cp -r arch/arm64/boot/dts/overlays/*.dtb* /boot/firmware/overlays/
    

    이후 /boot/firmware/config.txt 파일에 kernel=kernel_rt.img와 같은 라인을 추가하여 부팅할 커널을 지정한다.

  5. 검증: 라즈베리 파이를 재부팅한 후, 터미널에서 uname -a 명령어를 실행한다. 출력된 커널 버전 정보에 PREEMPT_RT라는 문자열이 포함되어 있다면 성공적으로 실시간 커널이 설치된 것이다.23

PREEMPT_RT 커널을 설치하는 것은 실시간 시스템 구축의 첫걸음일 뿐이다. 진정한 결정성을 확보하기 위해서는 커널뿐만 아니라 하드웨어, 펌웨어, 시스템 설정 등 다계층에 걸친 종합적인 최적화가 필수적이다. 이러한 최적화의 핵심 원리는 ‘격리(Isolation)’로 요약될 수 있다. 즉, 실시간 태스크의 실행을 방해할 수 있는 모든 비실시간적 요소를 최대한 분리하고 차단하는 것이다.

4.1. 하드웨어 및 펌웨어(BIOS) 설정 튜닝

실시간 성능은 소프트웨어뿐만 아니라 하드웨어 및 펌웨어 수준의 동작 방식에 크게 좌우된다. CPU의 동적인 전력 관리 기능(C-states, P-states), 메모리 오류 감지 및 수정(ECC) 기능, 그리고 운영체제가 제어할 수 없는 시스템 관리 인터럽트(SMI) 등은 예측 불가능한 지연시간을 유발하는 주요 원인이다.24 따라서 고성능 서버급 시스템에서는 BIOS/UEFI 설정에 진입하여 이러한 기능들을 비활성화하거나 최소화하는 것이 일반적인 튜닝의 시작이다. 라즈베리 파이는 전통적인 BIOS가 없지만, /boot/firmware/config.txt 파일을 통해 CPU 클럭 고정, 특정 하드웨어 기능 비활성화 등 유사한 수준의 제어가 가능하다.

리눅스 커널은 부팅 시 특정 파라미터를 전달받아 동작 방식을 변경할 수 있다. 실시간 시스템에서는 다음 파라미터들을 조합하여 실시간 태스크를 위한 전용 실행 환경을 구축한다. 이 파라미터들은 라즈베리 파이의 /boot/firmware/cmdline.txt 파일에 추가하여 적용한다.

이러한 파라미터들을 통해 실시간 태스크를 다른 프로세스로부터(CPU 격리), 커널 내부 활동으로부터(시간적 격리), 그리고 하드웨어 인터럽트로부터(이벤트 격리) 다층적으로 보호하는 것이 가능하다.

파라미터 목표 동작 원리 사용 예시 (cmdline.txt) 상호작용 및 주의사항
isolcpus CPU 격리 특정 CPU를 일반 스케줄러의 로드 밸런싱에서 제외. isolcpus=2,3 격리된 CPU에 실시간 태스크를 taskset 등으로 명시적으로 할당해야 함.
nohz_full 타이머 틱 제거 격리된 CPU에 실행 가능한 태스크가 1개일 때 주기적인 타이머 인터럽트를 중단하여 OS 지터 감소. nohz_full=2,3 isolcpus와 동일한 CPU 목록을 지정하는 것이 일반적. 완벽한 tickless를 위해선 애플리케이션 조건(posix timer 미사용 등)이 충족되어야 함.
rcu_nocbs RCU 콜백 오프로드 RCU 콜백 처리 작업을 격리된 CPU가 아닌 다른 CPU의 rcuo 커널 스레드로 이전. rcu_nocbs=2,3 nohz_full 사용 시 자동으로 해당 CPU에 대해 활성화되므로 명시적으로 지정할 필요가 없는 경우가 많음.
irqaffinity IRQ 처리 CPU 지정 부팅 시 기본 IRQ 처리 CPU를 지정. 특정 CPU를 IRQ 처리에서 제외하는 데 사용. irqaffinity=0-1 isolcpus로 지정된 CPU는 이 목록에서 제외하여 IRQ 간섭을 최소화.

커널과 시스템 수준의 최적화가 완료되었다면, 다음 단계는 실시간 애플리케이션 자체를 최적화하여 시스템의 잠재력을 최대한 활용하는 것이다. 이는 올바른 스케줄링 정책을 선택하고 메모리 관리로 인한 지연을 방지하는 두 가지 핵심 기법으로 이루어진다.

리눅스는 실시간 태스크를 위해 두 가지 주요 스케줄링 정책을 제공한다. 이 정책들은 일반 정책인 SCHED_OTHER(CFS 스케줄러가 사용)보다 항상 높은 우선순위를 가지며, 1(가장 낮음)부터 99(가장 높음)까지의 정적 우선순위 값을 사용한다.39

애플리케이션의 특성을 정확히 파악하고, 태스크 간의 관계를 고려하여 SCHED_FIFOSCHED_RR을 적절히 조합하는 것이 중요하다. chrt 유틸리티나 sched_setscheduler() 시스템 콜을 사용하여 프로세스나 스레드의 스케줄링 정책과 우선순위를 동적으로 변경할 수 있다.39

실시간 애플리케이션에서 mlockall(MCL_CURRENT | MCL_FUTURE)를 사용하는 것은 페이지 폴트로 인한 예측 불가능한 지연을 제거하여 시스템의 결정성을 확보하기 위한 필수적인 프로그래밍 기법이다.45

실시간 시스템을 구축하고 최적화하는 과정은 지속적인 측정과 분석을 통해 검증되어야 한다. 하드웨어 자체의 한계를 파악하는 것부터 시작하여, 다양한 부하 조건에서 시스템의 스케줄링 지연시간을 정량적으로 평가하는 것이 중요하다.

항목 레이블 설명 실시간 성능 해석 가이드라인
스레드 정보 T 측정 스레드의 인덱스 및 ID. SMP 테스트 시 각 코어의 성능을 개별적으로 확인하는 데 사용.
우선순위 P 측정 스레드의 실시간 우선순위. 실제 애플리케이션의 우선순위와 동일하게 설정하여 테스트.
측정 횟수 C 총 측정된 샘플의 수. 신뢰도 있는 Max 값을 얻으려면 충분히 긴 시간(수 시간~수 일) 동안 실행하여 C 값을 높여야 함.
최소 지연시간 Min 측정된 가장 짧은 지연시간. 시스템이 이상적으로 동작할 때의 응답 시간. 일반적으로 10µs 미만.
평균 지연시간 Avg 모든 측정값의 산술 평균. 시스템의 전반적인 응답성을 나타내지만, 최악의 경우를 보장하지 않으므로 실시간 평가에서는 참고용.
최대 지연시간 Max 측정된 가장 긴 지연시간. 가장 중요한 지표. 이 값이 시스템의 결정성을 좌우하며, 애플리케이션의 마감 시간 요구사항을 충족해야 함. 수십 µs 수준을 목표로 튜닝.
히스토그램 (별도 출력) 지연시간 값의 빈도 분포. 분포가 좁고 왼쪽으로 치우칠수록 좋음. 오른쪽으로 긴 꼬리가 있다면 간헐적인 지연 유발 요인이 있음을 시사.

라즈베리 파이에 PREEMPT_RT 커널을 적용하고 시스템을 최적화하는 기술은 이론에만 머무르지 않고, 이미 다양한 산업 및 연구 분야에서 실질적인 가치를 창출하고 있다. 저비용, 고성능, 높은 접근성을 바탕으로 과거에는 상상하기 어려웠던 영역까지 그 활용 범위를 넓혀가고 있다.

결론적으로, 라즈베리 파이는 더 이상 교육용 및 취미용 플랫폼에 머무르지 않는다. 실시간 리눅스와의 결합을 통해, 라즈베리 파이는 산업 자동화, 로보틱스, 그리고 차세대 임베디드 시스템 개발을 위한 신뢰성 있고 경제적인 핵심 플랫폼으로 자리매김하고 있으며, 그 잠재력은 앞으로 더욱 커질 것으로 전망된다.

  1. ‘빈국의 컴퓨터’ 라즈베리파이, 로봇산업의 핵심으로 [테크토크] - 아시아경제, 8월 17, 2025에 액세스, https://cm.asiae.co.kr/article/2023101308574708047
  2. 로봇공학: Raspberry Pi로 지능형 기계 만들기 - FasterCapital, 8월 17, 2025에 액세스, https://fastercapital.com/ko/content/%EB%A1%9C%EB%B4%87%EA%B3%B5%ED%95%99–Raspberry-Pi%EB%A1%9C-%EC%A7%80%EB%8A%A5%ED%98%95-%EA%B8%B0%EA%B3%84-%EB%A7%8C%EB%93%A4%EA%B8%B0.html
  3. RTiK-Linux: 리눅스용 실시간 이식 커널의 설계 - Korea Science, 8월 17, 2025에 액세스, https://koreascience.kr/article/JAKO201129349655908.pdf
  4. Real-Time Performance in Linux: Harnessing PREEMPT_RT for Embedded Systems - RunTime Recruitment, 8월 17, 2025에 액세스, https://runtimerec.com/wp-content/uploads/2024/10/real-time-performance-in-linux-harnessing-preempt-rt-for-embedded-systems_67219ae1.pdf
  5. The Real-Time Linux Kernel: A Survey on PREEMPT_RT, 8월 17, 2025에 액세스, https://re.public.polimi.it/retrieve/e0c31c12-9844-4599-e053-1705fe0aef77/11311-1076057_Reghenzani.pdf
  6. Raspberry Pi Performance Analysis in Real-Time Applications with the RT-Preempt Patch, 8월 17, 2025에 액세스, https://www.researchgate.net/publication/339653462_Raspberry_Pi_Performance_Analysis_in_Real-Time_Applications_with_the_RT-Preempt_Patch
  7. Real time operating system determinism - IntervalZero, 8월 17, 2025에 액세스, https://www.intervalzero.com/real-time-operating-system-determinism/
  8. How to Achieve Deterministic Behavior in Real-Time Embedded Systems - Lance Harvie, 8월 17, 2025에 액세스, https://www.embeddedrelated.com/showarticle/1742.php
  9. Latency and Determinism - Curtiss-Wright Defense Solutions, 8월 17, 2025에 액세스, https://www.curtisswrightds.com/media-center/blog/latency-determinism-which-more-important-application
  10. Deterministic, real-time control: What does it really mean in motion control applications?, 8월 17, 2025에 액세스, https://www.motioncontroltips.com/deterministic-real-time-control-what-does-it-really-mean-in-motion-control-applications/
  11. 네트워크 지연 시간이란 무엇인가요? - AWS, 8월 17, 2025에 액세스, https://aws.amazon.com/ko/what-is/latency/
  12. Latency vs. Jitter: Understanding Network Metrics - Obkio, 8월 17, 2025에 액세스, https://obkio.com/blog/latency-vs-jitter/
  13. Performance Evaluation of GNU/Linux for Real-Time Applications - DiVA portal, 8월 17, 2025에 액세스, https://www.diva-portal.org/smash/get/diva2:158978/FULLTEXT01.pdfGoPro
  14. Determinism and Jitter in a Real-Time System - NI - National Instruments, 8월 17, 2025에 액세스, https://www.ni.com/docs/en-US/bundle/labview-nxg-rt-module-programming-with-rt-target/page/determinism-real-time.html
  15. Real-Time Performance and Response Latency Measurements of Linux Kernels on Single-Board Computers - MDPI, 8월 17, 2025에 액세스, https://www.mdpi.com/2073-431X/10/5/64
  16. Chapter 2 : Process Management and Scheduling - The SEAN’s …, 8월 17, 2025에 액세스, https://linuxpro.readthedocs.io/ko/latest/linuxpro/chapter2.html
  17. How fast is fast enough? Choosing between Xenomai and Linux for real-time applications, 8월 17, 2025에 액세스, https://picture.iczhiku.com/resource/paper/WyIEpzspsLtjRXnc.pdf
  18. (PDF) A Comparison of Real-Time Linux-Based Architectures for …, 8월 17, 2025에 액세스, https://www.researchgate.net/publication/358135895_A_Comparison_of_Real-Time_Linux-Based_Architectures_for_Embedded_Musical_Applications
  19. Realtime Linux가 오랜 논쟁 끝에 리눅스 커널에 공식 포함 - GeekNews, 8월 17, 2025에 액세스, https://news.hada.io/topic?id=16860
  20. Real-time Linux explained, and contrasted with Xenomai and RTAI - LinuxGizmos.com, 8월 17, 2025에 액세스, https://linuxgizmos.com/real-time-linux-explained/
  21. Technical details of the real-time preemption - Wiki, 8월 17, 2025에 액세스, https://wiki.linuxfoundation.org/realtime/documentation/technical_details/start
  22. Lock types and their rules - The Linux Kernel documentation, 8월 17, 2025에 액세스, https://docs.kernel.org/locking/locktypes.html
  23. 라즈베리파이에 Real Time kernel 올리기 - sudormrf, 8월 17, 2025에 액세스, https://sudormrf.run/2022/06/18/raspberrypi-realtime-linux/
  24. 20.2. irqbalance 데몬 비활성화 짧은 대기 시간 작업을 위해 RHEL 9 …, 8월 17, 2025에 액세스, https://docs.redhat.com/ko/documentation/red_hat_enterprise_linux_for_real_time/9/html/optimizing_rhel_9_for_real_time_for_low_latency_operation/proc_disabling-the-irqbalance-daemon_assembly_binding-interrupts-and-processes
  25. 짧은 대기 시간 작업을 위해 RHEL 9 for Real Time 최적화 Red Hat …, 8월 17, 2025에 액세스, https://docs.redhat.com/ko/documentation/red_hat_enterprise_linux_for_real_time/9/html-single/optimizing_rhel_9_for_real_time_for_low_latency_operation/index
  26. 3.13. Isolating CPUs Using tuned-profiles-realtime - Red Hat Documentation, 8월 17, 2025에 액세스, https://docs.redhat.com/en/documentation/red_hat_enterprise_linux_for_real_time/7/html/tuning_guide/isolating_cpus_using_tuned-profiles-realtime
  27. How to configure CPUs for real-time processing - Ubuntu documentation, 8월 17, 2025에 액세스, https://documentation.ubuntu.com/real-time/latest/how-to/cpu-boot-configs/
  28. CPU Isolation – Nohz_full – by SUSE Labs (part 3) SUSE …, 8월 17, 2025에 액세스, https://www.suse.com/c/cpu-isolation-nohz_full-part-3/
  29. Kernel configuration parameters for RCU - LWN.net, 8월 17, 2025에 액세스, https://lwn.net/Articles/777214/
  30. How to Perform Real-Time Processing on the Raspberry Pi, 8월 17, 2025에 액세스, https://www.socallinuxexpo.org/sites/default/files/presentations/Steven_Doran_SCALE_13x.pdf
  31. Raspberry Pi 3B+ USB, WiFi, Eth shared/common bus, 8월 17, 2025에 액세스, https://forums.raspberrypi.com/viewtopic.php?t=207940
  32. Getting Gigabit Networking on a Raspberry Pi 2, 3 and B+ Jeff Geerling, 8월 17, 2025에 액세스, https://www.jeffgeerling.com/blogs/jeff-geerling/getting-gigabit-networking
  33. Is it really true, that the RPi runs faster when booting from a good USB Stick?, 8월 17, 2025에 액세스, https://forums.raspberrypi.com/viewtopic.php?t=221160
  34. Raspberry Pi - Wikipedia, 8월 17, 2025에 액세스, https://en.wikipedia.org/wiki/Raspberry_Pi
  35. (PDF) Raspberry Pi 5 : The new Raspberry Pi family with more computation power and AI integration - ResearchGate, 8월 17, 2025에 액세스, https://www.researchgate.net/publication/375552555_Raspberry_Pi_5_The_new_Raspberry_Pi_family_with_more_computation_power_and_AI_integration
  36. Testing PCIe on the Raspberry Pi 5 Jeff Geerling, 8월 17, 2025에 액세스, https://www.jeffgeerling.com/blog/2023/testing-pcie-on-raspberry-pi-5
  37. Raspberry Pi 5 - Raspberry Pi Datasheets, 8월 17, 2025에 액세스, https://datasheets.raspberrypi.com/rpi5/raspberry-pi-5-product-brief.pdf
  38. PCIe Performance on Raspberry Pi 5 - I am Bill Meyer, 8월 17, 2025에 액세스, https://iambillmeyer.com/posts/2025-01-02-raspberrypi5-pcie-performance/
  39. 리눅스 커널 실시간 스케줄링 우선순위 - 대체로 무해함, 8월 17, 2025에 액세스, https://lethean.github.io/2010/09/30/linux-kernel-realtime-scheduling-priority/
  40. 리눅스 커널 스케줄러(Scheduler) - Rain.i, 8월 17, 2025에 액세스, http://cloudrain21.com/linux-kernel-scheduler
  41. sched(7) - Linux manual page - Michael Kerrisk, 8월 17, 2025에 액세스, https://man7.org/linux/man-pages/man7/sched.7.html
  42. Process Scheduling, 8월 17, 2025에 액세스, https://courses.grainger.illinois.edu/cs241/sp2013/lecture/17-Sched_II_sol.pdf
  43. Scheduling threads - IBM, 8월 17, 2025에 액세스, https://www.ibm.com/docs/en/aix/7.2.0?topic=programming-scheduling-threads
  44. Linux kernel schedulers - Real-time Ubuntu documentation, 8월 17, 2025에 액세스, https://documentation.ubuntu.com/real-time/latest/explanation/schedulers/
  45. mlock(2) - Linux manual page - Michael Kerrisk, 8월 17, 2025에 액세스, https://man7.org/linux/man-pages/man2/mlock.2.html
  46. mlock System Call in Unix - Tutorialspoint, 8월 17, 2025에 액세스, https://www.tutorialspoint.com/unix_system_calls/mlock.htm
  47. 2.2. Using mlock to Avoid Page I/O Reference Guide Red Hat Enterprise Linux for Real Time, 8월 17, 2025에 액세스, https://docs.redhat.com/en/documentation/red_hat_enterprise_linux_for_real_time/7/html/reference_guide/using_mlock_to_avoid_page_io
  48. SUSE Linux Enterprise RT 15 SP7 SLE RT Hardware Testing, 8월 17, 2025에 액세스, https://documentation.suse.com/en-us/sle-rt/15-SP7/html/SLE-RT-all/article-hardware-testing.html
  49. realtime:documentation:howto:tools:cyclictest:start [Wiki], 8월 17, 2025에 액세스, https://wiki.linuxfoundation.org/realtime/documentation/howto/tools/cyclictest/start
  50. Latency Measurement - RVspace Doc Center, 8월 17, 2025에 액세스, https://doc-en.rvspace.org/VisionFive2/RTLinux/VF2_RT_Linux/2_3_latency_measurement.html
  51. Tools for measuring real-time metrics - Ubuntu documentation, 8월 17, 2025에 액세스, https://documentation.ubuntu.com/real-time/latest/reference/real-time-metrics-tools/
  52. Using and Understanding the Real-Time Cyclictest Benchmark, 8월 17, 2025에 액세스, https://events.static.linuxfound.org/sites/events/files/slides/cyclictest.pdf
  53. CONFIG_PREEMPT_RT on Raspberry Pi - Page 3, 8월 17, 2025에 액세스, https://forums.raspberrypi.com/viewtopic.php?t=39951&start=50
  54. [논문]라즈베리파이를 이용한 스마트 홈 프로토타입 구현, 8월 17, 2025에 액세스, https://scienceon.kisti.re.kr/srch/selectPORSrchArticle.do?cn=JAKO201532742223692
  55. Raspberry Pi를 이용한 원격 제어 및 모니터링 시스템 개발과 HILS를 통한 시스템 검증 - 인하대학교, 8월 17, 2025에 액세스, http://ecsl.inha.ac.kr/publication/ICROS2017_f.pdf
  56. (PDF) Real-Time Motor Control Using a Raspberry Pi, ROS, and CANopen over EtherCAT, with Application to a Semi-Active Prosthetic Ankle - ResearchGate, 8월 17, 2025에 액세스, https://www.researchgate.net/publication/388947362_Real-Time_Motor_Control_Using_a_Raspberry_Pi_ROS_and_CANopen_over_EtherCAT_with_Application_to_a_Semi-Active_Prosthetic_Ankle
  57. Raspberry Pi 5 review: Just delightful - Pocket-lint, 8월 17, 2025에 액세스, https://www.pocket-lint.com/raspberry-pi-5-review/