리눅스에서. 하드디스크로의 전송단위가 궁금합니다!
안녕하세요.
블록 디바이스 계층을 공부중에 궁금한게 있어서 글을 올립니다.
리눅스는 블록 디바이스 드라이버와 효율적인 데이터 전달을 위해서
bio단위로 block io 를 수행하는걸로 알고있습니다.
각 bio구조체는 여러개의 세그먼트(bio_vec)로 이루어져 있구요.
이것이. 각 디바이스의 큐에 연결이 되는걸로 알고있습니다.
gendisk에 연결되어있는 각 물리적 장치의 request_queue에
request구조체의 형태로 들어가게되서 i/o scheduler에 의해, 초기에 하나의 bio로 구성되어있던 request구조체가
물리적으로 근접한 bio들이 점점 추가되서 , i/o 성능을 올리는 역할을 하겠지요.
음. 서론이 너무길었는데
제가 궁금한것은. 이렇게 블락 디바이스 레이어 에서 request_queue에 있는 request들이
실제 디바이스 드라이버에 전송되는 "단위(구조체나,,데이터 크기)"가 궁금하구요.
가장 궁금한건.. 이렇게 물리적으로 연속적인 request들이. 디바이스 드라이버에의해서 실제 하드디스크에 씌여질때
어떤 단위로 전송되는지 궁금합니다.
LBA와 size값으로 parameter가 주어지는걸로 알고있는데.
그 size라는게..하나의 request 구조체의 모든 bio들이 크기인지...
그중 하나의 bio의 크기인지..
그중 하나의 segment(bio_vec)의 크기인지...
궁금합니다^-^
p.s. 제가 궁금해하는 부분 참고할만한 자료가 있을까용?
댓글 달기