-rt(RT-Preempt) 커널 패치가 메인라인 커널에 기본적으로 포함되지 않는 이유는 무엇입니까?

-rt(RT-Preempt) 커널 패치가 메인라인 커널에 기본적으로 포함되지 않는 이유는 무엇입니까?

~에 따르면https://rt.wiki.kernel.org/index.php/RT_PREEMPT_HOWTO, RT-Preempt 패치는 Linux를 완전히 선점 가능한 커널로 변환합니다. 마법은 다음과 같이 수행됩니다.

  1. rtmutexe를 사용하여 커널 잠금 기본 요소(스핀록 사용)를 다시 구현하여 선점 가능하게 만듭니다.
  2. spinlock_t 및 rwlock_t로 보호되는 중요 섹션은 이제 선점 가능합니다. raw_spinlock_t(spinlock_t와 동일한 API)를 사용하여 (커널에서) 비선점형 부분을 생성하는 것이 여전히 가능합니다.
  3. 커널 뮤텍스, 스핀록 및 rw_semaphores에 대한 우선순위 상속을 구현합니다.
  4. 인터럽트 핸들러를 선점형 커널 스레드로 변환: RT-Preempt 패치는 일반적인 사용자 공간 프로세스와 마찬가지로 작업 구조로 표시되는 커널 스레드의 컨텍스트에서 소프트 인터럽트 핸들러를 처리합니다. 그러나 커널 컨텍스트에서 IRQ를 등록하는 것도 가능합니다.
  5. 이전 Linux 타이머 API를 고해상도 커널 타이머를 위한 별도의 인프라와 시간 초과를 위한 인프라로 변환하여 고해상도의 사용자 공간 POSIX 타이머를 만듭니다.

멀티태스킹 대신 실시간 처리에 단점이 있나요?

답변1

-rt(RT-Preempt) 커널 패치는 Linux 커널이 범용 커널 구현에 중점을 두고 있으며 Linus Torvalds가 구현을 시작할 때 멀티태스킹을 선택했기 때문에 커널 메인라인에 없습니다.

이상한 점은 커널이 왜 이러는지입니다. 대답은 바로 그것입니다. 왜냐하면 Linus가 그렇게 하기로 선택했기 때문입니다. 그리고 그는 왜 이 방법을 선택했을까? 그는 그것이 더 나은 방법이거나 달성 가능한 구현이라고 믿기 때문입니다.

어떤 사람들은 다른 사람의 디자인 컨셉이 현실보다 낫다고 생각합니다. 그러나 이것은 불가능하다. 사람마다 자신의 의견이 있고 때로는 복잡성과 가능성으로 인해 벤치마킹이 불가능할 때도 있습니다.

Linus Torvalds와 Andrew Tanenbaum 사이에는 모놀리식 커널과 마이크로커널에 대한 고전적인 토론이 있습니다. 각각이 더 나은 모델이라는 주장이 많이 있습니다.

마찬가지로 멀티태스킹과 실시간도 마찬가지입니다. 어느 것이 더 낫습니까? 각각에는 고유한 장점과 단점이 있습니다.

대체로 메인라인 커널은 실시간으로 패치되지 않습니다. 단순한! 이는 바로 개발자의 선택과 신념 때문입니다!

답변2

이것은 의견에 근거한 것이므로 그 가치를 존중하십시오.

모든 엔지니어링 결정은 균형을 맞추는 것입니다. -rt 패치는 처리 타이밍에 대해 결정적입니다. 이는 일이 적시에 실행되도록 하기 위한 것입니다. 옛말을 기억하세요:

실시간은 틀린 시간에 주어진 정답이 틀린 경우

그러나 일반적인 사용법은 실시간과 관련이 없습니다. 바닐라 리눅스는 이런 점에서 일반적인 사용에 충분하므로 -rt 패치가 필요하지 않습니다. -rt 패치를 사용하면 일반적인 사용 시 시스템 속도가 느려질 가능성이 높습니다.

-rt는 일반 사용자에게 유용한 것을 추가하지 않고 일반적인 작업 부하 성능을 저하시키므로 일반 커널 배포에는 포함되지 않습니다.

-rt 패치에는 확실히 목적이 있으므로 이를 커널 소스의 표준 부분으로 포함시키는 것이 좋을 것입니다. 이제 이는 커널을 빌드할 때 선택할 수 있는 선택 사항일 뿐입니다(커널을 빌드할 때 다양한 영역에서 사용할 수 있는 많은 옵션이 있습니다). -rt 패치로 작업 부하가 향상되면 패치를 활성화하는 커널을 선택하십시오(또는 상황에 따라 직접 빌드하십시오).

답변3

이제 Linus Torvald는 마침내 preempt-rt 잠금 코드를 메인라인 커널에 병합하기로 결정했습니다. http://lml.iu.edu/hypermail/linux/kernel/2108.3/05759.html

관련 정보