사용자 공간에서 일부 fds를 폴링 할 때 fds는 열려있는 장치 노드 (장치 파일)에 속합니다. 해당 장치 파일에 데이터가 어떻게 도착하고 커널 공간의 데이터가 사용자 공간으로 이동합니까?폴링 기능은 내부적으로 어떻게 작동합니까?
0
A
답변
0
일부 파일 설명자에 대해 poll()이 호출되면 파일 조작 구조로 등록 된 해당 장치 poll_xyx() 메소드가 커널 공간에서 호출됩니다. 이 방법은 데이터를 즉시 사용할 수 있는지 확인합니다.이 조건이 참이면 이벤트 마스크가 설정되고 폴링이 사용자 공간으로 돌아갑니다. 사용자 공간 응용 프로그램은 이벤트 마스크를 확인하고 처리 할 준비가되었음을 알게됩니다. 따라서 사용자 공간 응용 프로그램은 파일 설명자에서 read()를 호출하여 커널 공간의 파일 작업 구조에 등록 된 장치 read_xyz()를 호출합니다. 이 방법은 커널 공간의 데이터를 copy_to_user() 또는 put user()를 사용하여 사용자 응용 프로그램이 전달한 버퍼로 복사합니다.
그러나 데이터를 쉽게 사용할 수 없을 때 poll()을 호출하면 대기 대기열에서 대기 상태가됩니다. 데이터가 도착하면 드라이버는 poll_schedule_timeout() 함수 내에서 대기 대기열에서 대기중인 프로세스를 깨 웁니다. 응용 프로그램이 깨어 난 후에도 위에서 설명한 동일한 프로세스가 계속됩니다.
관련 문제
- 1. C에서 폴링 기능은 어떻게 작동합니까?
- 2. jquery 애니메이션 기능은 어떻게 내부적으로 작동합니까?
- 3. PHP의 암호화 기능은 어떻게 내부적으로 작동합니까?
- 4. stringstream은 어떻게 내부적으로 작동합니까?
- 5. typedef는 내부적으로 어떻게 작동합니까?
- 6. LINQ는 내부적으로 어떻게 작동합니까?
- 7. Calabash는 내부적으로 어떻게 작동합니까?
- 8. 데이터베이스가 내부적으로 어떻게 작동합니까?
- 9. 근검은 어떻게 내부적으로 작동합니까?
- 10. CGContextClipToMask는 내부적으로 어떻게 작동합니까?
- 11. printf는 내부적으로 어떻게 작동합니까?
- 12. DISTINCT는 어떻게 내부적으로 작동합니까?
- 13. Firebug는 내부적으로 어떻게 작동합니까?
- 14. Viewstate는 내부적으로 어떻게 작동합니까?
- 15. CreateMutex()는 내부적으로 어떻게 작동합니까?
- 16. LinkedList는 Java에서 내부적으로 어떻게 작동합니까?
- 17. canvas.width = canvas.width는 내부적으로 어떻게 작동합니까?
- 18. 배열이 Java에서 내부적으로 어떻게 작동합니까?
- 19. joomla breadcrumbs는 어떻게 내부적으로 작동합니까?
- 20. SQLite 커서는 내부적으로 어떻게 작동합니까?
- 21. "is"연산자는 내부적으로 어떻게 작동합니까?
- 22. ASP.NET 라우팅은 어떻게 내부적으로 작동합니까?
- 23. 람다 식은 어떻게 내부적으로 작동합니까?
- 24. Spring에서 내부적으로 packagesToScan을 어떻게 작동합니까?
- 25. BeanPropertyRowMapper가 봄에 내부적으로 어떻게 작동합니까?
- 26. Javascripts String.split - 내부적으로 어떻게 작동합니까?
- 27. 'range()'는 내부적으로 어떻게 작동합니까?
- 28. 변수 교환은 어떻게 내부적으로 작동합니까?
- 29. C# DynamicObject는 어떻게 내부적으로 작동합니까?
- 30. C# SortedList는 어떻게 내부적으로 작동합니까?
LDD3의 6 장을 읽으십시오. –
CL이 맞습니다. LDD3을 읽으십시오. 그러나 그것이 무엇을 의미하는지 모른다면, 리눅스 디바이스 드라이버 책을 읽어보십시오. 그리고 무엇보다도 무료로 바로 이용할 수 있습니다 : http://lwn.net/Kernel/LDD3/ – kaylum