리눅스(Linux) 시스템의 핵심 구성 요소인 시스템 호출(syscall)에 대한 포괄적인 정보를 제공하는 웹사이트 'syscall.sh'가 최근 대규모 업데이트를 진행했습니다. 이 사이트는 리눅스 3.3부터 7.3까지의 커널 버전을 아우르며, 27개에 달하는 다양한 CPU 아키텍처(architecture)별 시스템 호출 번호, 인자(argument), 레지스터(register) 사용 정보 등을 한곳에 모아 보여줍니다. 특히 각 아키텍처의 커널 진입 명령어와 호출 규약(calling convention)까지 상세히 설명하여, 개발자들이 시스템 호출의 작동 방식을 깊이 이해하는 데 필수적인 자료를 제공합니다.
syscall.sh는 커널 소스 코드에서 직접 데이터를 추출하여 정보의 정확성을 높였습니다. 예를 들어, x64 아키텍처에서는 `syscall` 명령어를 사용하며 시스템 호출 번호와 반환값은 `rax` 레지스터에, 인자는 `rdi`, `rsi`, `rdx`, `r10`, `r8`, `r9` 레지스터에 저장되는 식입니다. 또한, 커널 버전 선택기를 통해 특정 릴리스(release)에서의 시스템 호출 테이블을 조회할 수 있으며, 제거된 시스템 호출과 그 시점까지 확인할 수 있습니다. 모든 아키텍처별 전체 이력은 JSON 파일로 다운로드 가능하며, API를 통해 특정 시스템 호출 조회나 릴리스 간 변경 사항 비교 등 프로그래밍 방식으로도 정보에 접근할 수 있습니다.
이러한 syscall.sh의 업데이트는 저수준(low-level) 시스템 프로그래밍, 운영체제(OS) 개발, 보안 연구 등 다양한 분야의 개발자들에게 매우 중요한 의미를 가집니다. C 표준 라이브러리나 POSIX API가 시스템 호출의 복잡성을 추상화하여 제공하지만, 실제 커널과의 상호작용 방식을 이해하는 것은 성능 최적화, 버그 진단, 그리고 새로운 시스템 기능 개발에 필수적입니다. 특히 아키텍처마다 다른 시스템 호출 ABI(Application Binary Interface)의 세부 사항을 명확히 제시함으로써, 개발자들이 특정 플랫폼에 최적화된 코드를 작성하거나 이식성 문제를 해결하는 데 큰 도움을 줄 것입니다. 이 사이트는 수동 업데이트의 한계를 극복하고 자동화된 데이터 갱신 시스템을 구축하여 최신 커널 정보까지 빠르게 반영할 수 있게 되었습니다.