Changes between Version 22 and Version 23 of io_operations
- Timestamp:
- Nov 3, 2016, 4:38:07 PM (8 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
io_operations
v22 v23 36 36 == C) Devices Descriptors Placement == 37 37 38 '''Internal peripherals''' are replicated in all clusters. In each cluster, the device descriptor is evidently stored in the same cluster as the hardware device itself. These device descriptors are mostly accessed by the local kernel instance, but can also be accessed by threads running in another cluster ( for ICU, or MMC).38 '''Internal peripherals''' are replicated in all clusters. In each cluster, the device descriptor is evidently stored in the same cluster as the hardware device itself. These device descriptors are mostly accessed by the local kernel instance, but can also be accessed by threads running in another cluster (it is the case for both the ICU and MMC devices). 39 39 40 40 '''External peripherals''' are shared resources, located in the I/O cluster. To minimize contention, the corresponding device descriptors are distributed on all clusters, as uniformly as possible. Therefore, an I/O operation involve generally three clusters: the client cluster, the I/O cluster containing the external peripheral, and the server cluster containing the device descriptor. … … 43 43 This structure is organized as a set of arrays: 44 44 * There is one entry per channel for each '''external peripheral''', and the corresponding array is indexed by the channel index. 45 * There is one entry per cluster for each '''internal device''', and the corresponding array is indexed by the cluster index (it is not indexed by the cluster identifier cxy, because cxy is not a continuous index).45 * There is one entry per cluster for each '''internal peripheral''', and the corresponding array is indexed by the cluster index (it is not indexed by the cluster identifier cxy, because cxy is not a continuous index). 46 46 47 47 This device directory being implemented as a global variable, is replicated in all clusters, and is initialized in the kernel initialization phase.