El 실시간 시스템의 개념 최근 몇 년간 리눅스에서는 생각지도 못했던 일이다. 거의 20년 전, 정확히는 2005년에 시작되었습니다. Linux 커널용 PREEMPT_RT 모드 개발과 함께 "Realtime-Preempt"("-rt") 프로젝트의 일부로.
모르시는 분들을 위해 PREEMPT_RT, 그들은 알아야합니다 패치야 리눅스 커널의 경우운영 체제를 실시간 운영 체제로 변환합니다. (실시간). PREEMPT_RT의 주요 목표는 대기 시간을 줄이고 작업 실행의 예측 가능성을 보장하는 것입니다. 이는 빠른 응답이 필요한 애플리케이션에 매우 중요합니다.
더 쉽게 말하면 PREEMPT_RT 커널의 거의 모든 부분이 중단될 수 있도록 허용합니다. 대기 시간을 줄여줍니다. 표준 커널과 달리 모든 섹션을 중단할 수 없으므로 응답 시간이 지연될 수 있습니다.
2015년부터 이 프로젝트는 Linux Foundation의 감독을 받아왔습니다. 지금까지 PREEMPT_RT 모드의 구현은 외부 패치 형태로 제공되었습니다. 이러한 패치를 기반으로 다음과 같은 배포판이 제공됩니다. RHEL, SUSE 및 Ubuntu는 자사 제품의 실시간 버전을 만들었습니다. 금융 시스템, 오디오 및 비디오 처리 장치, 항공 시스템, 의학, 로봇 공학, 통신 및 산업 애플리케이션과 같은 분야에서 수요가 높으며 이벤트에 대한 예측 가능한 응답 시간을 보장하는 것이 필수적입니다.
En 2019 프로모션 프로세스가 시작되었습니다 PREEMPT_RT 프로젝트에서 개발된 패치 중 메인 리눅스 커널로. 커널 버전 5.3에서는 실시간 모드를 활성화하기 위해 PREEMPT_RT 옵션이 구성 파일에 포함되었습니다.
PREEMPT_RT에 필요한 printk 비트는 linux-next에 있습니다. 이것 PREEMPT_RT의 마지막으로 알려진 장애물이었습니다. RT 대기열에는 또한 아직 출시되지 않은 UART 8250용 "원자 콘솔"도 있습니다. 리눅스-다음. 이는 인쇄하지 않는 것과 같은 "레거시 콘솔" 동작을 의미합니다. 긴급 상황의 경우 원자 상황. 8250 UART 컨트롤러는 유일한 컨트롤러입니다. 오늘날 "원자 콘솔" 지원을 제공합니다.
모든 이 일은 곧 결실을 맺을 거야, 필요한 변경 사항을 완전히 통합하는 데 6.12년이 걸렸으며 거의 완료되고 있으므로 버전 XNUMX에서는 추가 패치를 적용할 필요 없이 PREEMPT_RT 모드에서 커널을 컴파일할 수 있을 것으로 예상됩니다.
마지막 장애물이라고 합니다. PREEMPT_RT가 활성화되지 못하게 하는 이유는 printk 함수를 사용하여 비차단 원자 출력을 지원합니다. 이 기능은 이미 linux-next 브랜치에서 채택되었습니다. 또한 8250 UART 컨트롤러에 대한 비차단 원자 콘솔 구현이 보류 중입니다. 이 콘솔이 없으면 현재 원자 컨텍스트에서 실행되는 코드에서 콘솔로 긴급 메시지가 출력되지 않습니다.
printk 비트를 병합하면 X86, ARM64에서 PREEMPT_RT를 활성화할 수 있습니다. 그리고 Risc-V. 이 세 가지 병합 아키텍처에는 수년에 걸쳐 변경이 필요했습니다.
몇 년 동안 나는 환경에 본질적인 변화가 없는 위치에 놓이게 되었습니다.
영향을 미칠 대기열. ARM과 POWERPC에는 몇 가지 필수 패치가 남아 있습니다…
Linux 커널 개발자 linux-nex 브랜치에 필요한 최신 변경 사항을 통합했다고 발표했습니다.t는 버전 6.12를 컴파일하는 데 사용됩니다. 이러한 변경을 통해 실시간 기능을 도입하는 PREEMPT_RT 옵션을 사용하여 커널을 컴파일할 수 있습니다.
이러한 변경 사항이 승인되면 메인 브랜치에서는 PREEMPT_RT 모드 X86, ARM64 및 RISC-V 아키텍처에서 사용할 수 있습니다. 필요한 패치가 아직 완전히 통합되지 않았으므로 ARM 및 POWERPC 아키텍처에 대한 지원은 나중에 추가될 예정입니다.
제안된 변경 사항이 아직 최종적이지 않으며 PREEMPT_RT가 6.12 브랜치에 도착하지 않으면 내년까지 버전 6.13에 통합될 가능성이 있다는 점을 언급할 가치가 있습니다.
마지막으로, 그것에 대해 더 많이 알고 싶다면에서 세부 정보를 확인할 수 있습니다. 다음 링크.