device plugging & device unplugging
"리눅스 커널의 이해<한빛 미디어>"라는 책을 보고 있는데 그 중에서 device
plugging과 device unpluggin이라는 용어가 이해가 안되서 질문을 드립니다.
제가 책을 보고 이해한 바로는 (책에 적혀 있는 바로는)
device plugging은 실제 장치의 요청 큐가 비어 있고, 장치가 아직 plug되지 않은 경우 block device driver descriptor의 current_request field를 dummy request descriptor addr.로 설정해서 plug_tq descriptor을 tq_disk task queue에 포함시켜 하반부로 돌린 후 작업을 미루는 것으로 알고 있고
device unplugging은 kernel이 tq_disk task queue가 plug_tq task queue 항목을 포함하는지 검사하는 과정에서, kernel은 queue에 있는 모든 항목을 제거하고 이에 대응하는 unplug_device()라는 함수를 호출해서 이 함수가 가리키는
strategy routine을 나중에 활성화하는 것으로 이해했습니다.
이렇게 plugging과 unplugging을 사용함으로써 strategy routine을 나중에
활성화할 수 있다고 책에서 말하고 있는 것 같습니다.
그런데 여기서 의문이 가는 점은
1. device_unplugging에서 tq_disk를 검사하는 과정에서 왜 kernel이 queue에 있는 모든 항목을 제거하는지
2. strategy routine이라는 것이 정확히 어떤 것인지 알고 싶습니다.
웹상을 이리저리 돌아다니면서 자료를 구해봤는데 딱히 제가 원하는 답변이
없더군요...
리눅스 고수님들의 많은 답변을 부탁 드립니다/
댓글 달기