io_uring_0207
IO_URING Fixed buffers
고정 버퍼
고정 버퍼를 사용하는 아이디어는 다음과 같습니다.
'iovec' 구조 배열로 설명하는 버퍼 세트를 제공하고 io_uring_register_buffers()를 사용하여 커널에 등록합니다.
이로 인해 커널은 이러한 버퍼를 매핑하여 향후 사용자 공간과의 복사본을 방지합니다.
그런 다음 사용하려는 버퍼의 인덱스를 지정하는 io_uring_prep_write_fixed() 및 io_uring_prep_read_fixed()와 같은 "고정 버퍼" 함수를 사용할 수 있습니다.
📦 How it works - 작동 원리
우리는 malloc(3)을 통해 4개의 버퍼를 할당한 다음 io_uring_register_buffers() 함수를 사용하여 커널에 등록합니다.
'iovec' 구조는 기본 주소와 할당된 버퍼의 크기를 보유하여 각 배열을 설명합니다.
우리는 필요한 4개 배열에 대한 세부 정보를 보유하기 위해 4개 요소 길이의 'iovec' 구조 배열을 사용합니다.
이 프로그램은 고정 버퍼를 사용하는 방법에 대한 간단한 데모일 뿐이므로 그 이상으로 유용한 것은 없습니다.
하지만 그것은 W.H 데이비스(W.H Davies)의 시 레저(Leisure)를 상기시켜주는 역할을 합니다.
인덱스 0과 1의 버퍼를 사용하여 두 개의 고정 쓰기 작업(io_uring_prep_write_fixed())을 사용하여 두 문자열이 파일에 기록됩니다.
나중에, 이번에는 버퍼 인덱스 2와 3을 사용하여 두 개의 고정 읽기 작업(io_uring_prep_read_fixed())을 사용하여 파일을 읽습니다.
그런 다음 이러한 읽기 결과를 인쇄합니다.
이 프로그램의 출력이 아래와 같이 표시되는 것을 볼 수 있습니다.
