Linux 커널이 "공개 API"에 호환되지 않는 변경 사항을 도입했습니까?

Linux 커널이 "공개 API"에 호환되지 않는 변경 사항을 도입했습니까?

저는 호환되지 않는 "공개 API" 변경이 발생할 때 주요 버전 번호를 변경해야 한다는 의미 있는 버전 관리를 이해하려고 합니다. 내 사고 실험은 Linux 커널 번호가 무엇인지 이해하려고 노력하는 것이었습니다. 내가 아는 한 주요 버전 업그레이드는 임의적이기 때문입니다.

나는 Linux 내부에 익숙하지 않으므로 양해해 주시기 바랍니다. 내가 이해한 바로는 이 "공개 API" 는 다음 sys_write과 같은 C 시스템 호출 집합이 될 것입니다.sys_mmap바이너리 호환성을 결정하는 데 사용되는 ABI. ~에서시스템 호출_64.tbl여기에는 약 400개의 시스템 호출이 포함되며 그 중 일부는 더 이상 사용되지 않습니다. 아니면 여기에 나열된 모든 것이 API입니까?커널 API?

시스템 호출 정의를 가정하면 Linux가 시스템 호출 인터페이스에 이전 버전과 호환되지 않는 변경 사항을 도입한 적이 있습니까? 그렇다면 주요 버전 번호는 수백 또는 수천이 될까요?

답변1

명확성을 위해 커널은 의미론적 버전 관리를 따르지 않는다는 점을 언급할 가치가 있습니다. 주된 장애물은 임의적입니다.

시스템 호출과 관련하여 호환되지 않는 변경 사항, 즉 삭제가 발생했습니다.매뉴얼 syscalls페이지제거된 사용되지 않는 호출을 나열합니다. 이것만으로도 non-1을 요구하기에 충분합니다.엑스의미론적 버전 관리 규칙이 적용되는 경우 버전 번호입니다.

커널 API, 아니 오히려 커널에 남아 있어야 하는 것은 변경될 경우 프로그램을 손상시킬 수 있는 모든 것입니다. 여기에는 시스템 호출 정의뿐만 아니라 데이터 구조, /proc파일 이름 및 내용, ioctl호출, 심지어 시스템 동작까지 포함됩니다. 커널 API는 의도하지 않게 변경되는 경우가 많으며 이러한 변경 사항은 일반적으로 되돌려집니다(따라서 누락된 주요 변경 사항으로 처리된 다음 의미 체계 버전 관리에서 수정됩니다).

관련 정보