티스토리 뷰

공부한거/OS

ABI README - GPT 번역

tl;dr 2025. 2. 8. 19:40

*GPT 번역

📌 리눅스 커널의 ABI 안정성 수준

이 디렉터리에는 네 가지 수준의 ABI 안정성을 반영하는 서브디렉터리가 있습니다.
각 인터페이스는 아래의 규칙에 따라 안정성 수준이 변경될 수 있습니다.

1️⃣ stable/ (안정적인 인터페이스)

📌 설명

  • 개발자가 안정적(stable) 이라고 정의한 인터페이스들이 포함됩니다.
  • 사용자 공간 프로그램은 제한 없이 이 인터페이스를 사용할 수 있습니다.
  • 최소 2년간의 하위 호환성(backward compatibility)이 보장됩니다.
  • 대부분의 인터페이스(예: 시스템 호출(syscalls))는 변경되지 않으며 항상 유지됩니다.

2️⃣ testing/ (테스트 단계의 인터페이스)

📌 설명

  • 대부분 개발이 완료되어 안정적일 가능성이 높지만, 공식적으로 완전히 안정적인 것은 아님.
  • 새로운 기능이 추가될 수 있지만, 기존 기능은 보존됩니다.
  • 보안 취약점이나 심각한 오류가 발견되지 않는 한, 인터페이스가 갑자기 변경되지 않음.
  • 사용자 공간 프로그램은 사용할 수 있지만, 향후 변경 가능성에 대비해야 함.
  • 개발자들은 이 인터페이스를 사용하는 프로그램 목록을 문서에 추가할 것을 권장함.
    → 이를 통해 커널 개발자가 변경 사항을 알릴 수 있음.

3️⃣ obsolete/ (폐기 예정 인터페이스)

📌 설명

  • 현재 커널에 남아 있지만, 추후 제거될 예정인 인터페이스.
  • 문서에서 폐기된 이유 및 제거 예상 시기를 확인할 수 있음.
  • 가능하면 새로운 인터페이스로 대체할 것을 권장함.

4️⃣ removed/ (제거된 인터페이스)

📌 설명

  • 과거에 커널에 존재했지만, 현재는 완전히 제거된 인터페이스 목록.
  • 해당 인터페이스를 사용하는 프로그램은 더 이상 정상적으로 실행되지 않을 가능성이 높음.

📌 각 문서(파일)에 포함되는 정보

각 디렉터리 내부의 모든 문서는 다음 정보를 포함합니다.

  • What: 인터페이스에 대한 짧은 설명
  • Date: 인터페이스가 문서화된 날짜
  • KernelVersion: 해당 기능이 처음 등장한 커널 버전
  • Contact: 이 인터페이스에 대한 주요 연락처 (메일링 리스트일 수도 있음)
  • Description: 인터페이스의 상세 설명 및 사용 방법
  • Users: 해당 인터페이스를 사용하는 모든 사용자 목록

특히 testing 단계의 인터페이스
변경 시 커널 개발자가 사용자 공간 개발자에게 통보할 수 있도록
이 정보를 작성하는 것이 매우 중요함.


📌 ABI 안정성 수준 변경 규칙

  • stable 인터페이스obsolete 상태로 이동할 수 있음. (단, 적절한 사전 공지가 필요)
  • obsolete 인터페이스는 일정 시간이 지나면 커널에서 제거될 수 있음.
  • testing 인터페이스는 개발이 완료되면 stable 상태로 이동 가능.
  • testing 인터페이스는 반드시 obsolete 과정을 거친 후 제거해야 하며,
    바로 커널에서 삭제될 수 없음.
  • 새로운 인터페이스가 추가될 때 개발자가 초기 상태를 직접 결정함.

📌 ABI가 아닌 요소 (절대 안정성을 보장하지 않는 것)

다음 항목들은 ABI로 간주되지 않으며, 사용자 공간 프로그램이 절대 의존해서는 안 됩니다.

1️⃣ Kconfig (커널 설정 옵션, /proc/config.gz 파일 등)

  • 특정 Kconfig 심볼(예: CONFIG_SCHED_CORE)의 존재 여부에 의존하면 안 됨.
  • /proc/config.gz 또는 /boot/.config 같은 설정 파일을 사용해 커널 기능을 감지하는 것은 권장되지 않음.

2️⃣ 커널 내부 심볼 (Kernel-internal symbols)

  • 커널 바이너리 내부 심볼(System.map 파일, 심볼 테이블 등)에 의존하면 안 됨.
  • 예: 특정 커널 심볼(함수, 구조체 등)의 주소를 하드코딩하는 것
  • 이러한 방식은 커널 버전에 따라 변경될 가능성이 매우 높음.
  • 관련 문서: Documentation/stable_api_nonsense.txt

🚀 결론

  1. 리눅스 커널과 사용자 공간 간의 ABI(Application Binary Interface)를 설명하는 문서
  2. 인터페이스의 안정성 수준에 따라 4가지 디렉터리로 분류됨
    • stable/ (안정적, 최소 2년 보장)
    • testing/ (거의 안정적이지만 변경 가능성 있음)
    • obsolete/ (폐기 예정)
    • removed/ (완전히 제거됨)
  3. 사용자 공간 프로그램은 반드시 stable 또는 testing 인터페이스를 사용해야 함.
  4. Kconfig나 커널 내부 심볼에 의존하면 안 됨.

이 문서는 리눅스 커널과 사용자 공간 프로그램의 호환성을 유지하기 위한 규칙을 설명하는 중요한 문서입니다. 🚀

 

stable testing obsolete removed로 나눠져있음

 

'공부한거 > OS' 카테고리의 다른 글

커널빌드 오류들  (0) 2025.02.14
Linux Document - (1)  (0) 2025.02.08
Kernel Configuration 진입  (0) 2025.02.08
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함