리눅스 커널에서 i486 지원 제거: Molnar의 패치와 역사적 배경
리눅스 커널의 x86 아키텍처 유지보수자인 Ingo Molnar가 CONFIG_M486, CONFIG_M486SX, CONFIG_MELAN 옵션을 완전히 제거하는 패치를 준비했습니다. 이로 인해 현대적인 커널 빌드에서 486DX, 486SX, AMD ELAN 프로세서 지원이 제외됩니다.
지원 제거의 기술적 영향
i486 지원은 주요 명령어 에뮬레이션을 요구합니다: CX8 (64비트 원자 연산을 위한 cmpxchg8b)와 TSC (태스크 스케줄러를 위한 Time Stamp Counter). 이 코드는 커널 복잡성을 높이고, 디버깅을 어렵게 하며, 주기적으로 버그를 발생시킵니다.
이 레이어를 제거하면 코드베이스가 14,104줄 줄어듭니다. 특히:
- CX8와 TSC 에뮬레이터가 사라집니다.
- 486SX의 FPU를 위한 math-emu 라이브러리가 없어집니다.
이로 인해 스케줄러와 락킹 서브시스템이 최적화되어 개발자들의 부담이 줄어듭니다.
Note: 주요 배포판은 최근 커널에서 M486=y를 활성화한 것을 배포하지 않습니다. 32비트 i486 하드웨어에서의 현재 리눅스 브랜치는 거의 사용되지 않습니다.
Linus Torvalds의 입장
Linus Torvalds는 이 문제를 여러 차례 제기했습니다. 2022년에 그는 i486에서 cmpxchg8b를 에뮬레이션하는 것은 무의미하다고 지적했습니다: 이 명령어는 Pentium와 모든 x86-64 CPU에 존재하기 때문입니다. Torvalds는 레거시 시스템을 위해 LTS 브랜치를 사용하라고 제안했습니다.
이전인 2012년에는 i386 지원이 중단되었습니다. 13년 전, Torvalds는 math-emu 제거를 제안했으나, 486SX 클론이 여전히 생산 중이라는 이유로 커뮤니티가 보류했습니다. 그 이후 합의가 바뀌었습니다.
임베디드 시스템과의 호환성
Intel Quark (i486 기반) 같은 특수 칩은 CX8와 TSC를 네이티브로 지원하므로 패치의 영향을 받지 않습니다. 원래 i486은 구 배포판과 오래된 커널에서 동작합니다.
현대 32비트 배포판은 CX8를 요구하는 X86_PAE를 사용합니다. 순수 32비트 x86 지원은 최소화되었습니다.
- 제거의 이점:
1. 14k줄 이상의 코드 감소.
2. 스케줄러와 락 단순화.
3. 에뮬레이션 관련 버그 감소.
4. 관련 아키텍처에 집중.
주요 포인트
- Molnar의 패치는 CONFIG_M486*, CX8/TSC 에뮬레이터, math-emu를 제거합니다—코드 14,104줄 감소.
- i486은 현대 커널과 함께 사용되지 않습니다; 배포판은 PAE나 64비트로 이동했습니다.
- Torvalds 지지: cmpxchg8b 에뮬레이션은 구식—레거시용 LTS 사용.
- 임베디드 Quark은 영향 없음—네이티브 CX8/TSC 보유.
이 변경으로 x86 작업 중인 중고급 개발자들에게 커널이 더 깔끔해질 것입니다.
— Editorial Team
아직 댓글이 없습니다.