Академический Документы
Профессиональный Документы
Культура Документы
bus) drivers
Melekam Tsegaye g98t4414@campus.ru.ac.za Supervisors Prof. Richard Foss, Bradley Klinkradt
Overview
The Linux and Windows driver architectures The Linux and Windows IEEE 1394 driver stacks Driver development on the two platforms Results of the study
Two of the most popular operating systems No previous comparisons of their driver architectures done by other researchers
Popular bus offering high data transfer rates Active research area for the CS departments Audio Engineering Group
IEEE 1394
Data Transfer rates of 100, 200 and 400 Mbps Isochronous mode of transfer
Device Drivers
A driver is a piece of software that extends a kernels functionality Drivers enable applications (through the kernel)
to transfer data to and from a device to control the a device to allow modification of its attributes
Composed of a set of routines that a kernel calls at appropriate times e.g. read/write
Drivers are modules No PnP & Power management message dispatching Communication through direct function calls
Read Write Lock Listen Register Asynchronous Listening Deregister Asynchronous Listening
Listen Talk Asynchronous streaming
Isochronous operations
Obtain Bus Information (e.g. node count) Local configuration ROM manipulation Network troubleshooting
Pinging of nodes
The kernel provides memory allocation/deallocation routines Has two pools of memory (swappable, nonswappable)
The kernel provides implementations for queues, lists, stacks Synchronisation with spin locks, mutexes, semaphores, signal objects
Data structures
must be re-entrant i.e. should be executable by multiple threads with no problems avoid recursion
use HAL routines provided by the kernel to access hardware
Linux Ieee1394diag
Driver Tests
Tests were run to determine
highest data transfer rates that can be achieved by each of the IEEE 1394 drivers how close these came to the theoretical maximum of 50MB/s
the duration of data transfers the amount of data transferred the data transfer rate in MB/s
Calculated
Test results
Isochronous mode
Windows raw1394
8.9 MB/s packet size 1024 bytes
Linux raw1394
4.5 MB/s packet size 512 bytes
Linux raw1394-2
8.9 MB/s packet size 1024 bytes
Windows raw1394
17.7 MB/s packet size 2048 bytes
In practice have that available shared by all I/O devices attached to the PCI bus The PCI bus has latency problems
Conclusion
A comparison of the Windows and Linux driver architectures has shown that
Windows has a formally defined driver model, Linux does not. PnP and power management support integrated in the Windows architecture, not so in Linux
Conclusion (continued)
A comparison of the Windows and Linux IEEE 1394 stacks has shown that
Their IEEE 1394 driver stacks are broken up into similar layers
host controller, bus and client driver layers
Each stack provides the standard IEEE 1394 operations (both asynchronous and isochronous)
The Linux IEEE 1394 stack is open source while the Windows stack is proprietary
Easier to create IEEE 1394 drivers for Linux than Windows since all source code is available
Future work
IEEE 1394.1 bridge awareness IEEE 1394.1
allows extending the no. of nodes to 64K instead of the current 63 still in draft phase
The Windows and Linux IEEE 1394 driver developers did not take into account IEEE1394.1 bridging in their design This study identified bridge awareness requirements
implementation possible for the Linux 1394 stack not for the Windows 1394 stack (closed source)
Full IEEE 1394.1 implementation and testing not done during this study
Questions ?