Glibc 패치가 getrandom() vDSO 지원을 위해 검토 중

전문: https://www.phoronix.com/news/Glibc-Review-getrandom-vDSO

원저자: Michael Larabel | 작성일: 2024-07-31 10:48
사이트 내 게시일: 2024-07-31 11:05
이 기사는 현재 검토 중인 glibc에 대한 새로운 패치에 대해 다룹니다. 이 패치는 리눅스 6.11에서 vDSO를 통한 getrandom() 호출을 지원합니다. 이 기능을 통해 mmap으로 할당된 스레드 로컬 불투명 상태와 vDSO에 지정된 플래그를 활용하여 매우 빠르고 안전한 난수 생성이 가능해집니다.

이 구현에서는 한 페이지에 들어갈 수 있는 만큼의 상태를 동시에 할당하고, 이 상태들을 배열에 저장하여 스레드에서 효율적으로 접근할 수 있습니다. 스레드가 처음 상태를 사용할 때 배열에서 하나를 할당받으며, 스레드 종료 시 상태가 다시 재사용됩니다. 사용 가능한 상태가 부족하면 시스템에서 추가로 할당하되, 불투명 상태 주소의 최하위 비트를 이용한 간단한 가드를 통해 비동기 신호 안전성을 보장합니다. 재진입 경합이 발생하면 시스템콜 방식으로 폴백됩니다.

현재 이 구현은 x86_64 아키텍처에서 사용 가능하며, 향후 arm64 등 다른 플랫폼으로 확장될 계획입니다. 이 패치는 기본적인 구현을 목표로 하고 있지만, 필요에 따라 추후 최적화가 이루어질 수 있습니다.

* 이 글은 phoronix.com의 기사를 요약한 것입니다. 전체 기사의 내용은 이곳에서 확인하실 수 있습니다.
카테고리: Software
태그: Linux (713) ARM64 (22) x86_64 (11) vDSO (7) random number generation (7) getrandom (6) glibc (5) thread-local storage (1) system calls (1)

댓글

댓글을 쓰기 위해서는 로그인을 해 주세요.