摘要:
Systems and methods for providing a framework within which device drivers may run at a user-mode level. A platform (e.g., APIC) or bus (PCI bus) generic feature is used to take the CPU out of interrupt mode without having to wait for a user-level driver to clear the device interrupt. This allows writing the complete device driver in user space. The device driver still get notifications on interrupts but not at interrupt priority. The same scheme can be extended to shared interrupts, where multiple devices share a single interrupt line.
摘要:
A first computer sends a sequence of messages to a second computer using remote write operations to directly store each message in a corresponding memory location in the second computer, without performing remote read operations to confirm storage of each message in the second computer's memory. The first computer detects message transmission errors, if any, during the transmission of each message to the second computer and when a message transmission error is detected, resends the message to the second computer. The first computer also sends trigger messages to the second computer to prompt the second computer to process messages stored in the second computer's memory. The second computer processes each received message and uses a remote write operation to store an acknowledgment message in a corresponding memory location in the first computer. The first computer, upon detecting a failure to receive the acknowledgment message corresponding to any of the previously sent messages, undertakes remedial actions to determine whether the second computer has processed each of the unacknowledged previously sent messages. When the remedial actions determine that the second computer has not processed the unacknowledged previously sent message, the first computer prompts the second computer to process the unacknowledged previously sent message. When the remedial actions determine that the second computer has already processed the unacknowledged previously sent message, the first computer stores the acknowledgment message in a corresponding location in the first computer's memory.
摘要:
In a distributed computer system, a sending node prompts a receiving node to allocate and export to the sending node one or more memory "segments". Each allocated segment is sufficiently large to hold multiple receive buffers whose size fall within a predefined range of receive buffer sizes. Once a segment has been allocated and exported, the sending node allocates receive buffers within the segment, using sequentially contiguous portions for successive receive buffers, without any interaction with the receiving node. Messages are transmitted to the receiving node by remotely writing the data portion of each message to an allocated receive buffer and writing a control message with a pointer to the corresponding receive buffer to a message queue in the receiving node. The receiving node processes messages within the portions of the allocated segments specified by each control message and does not keep track of the used and/or unused portions of each segment. Only the sending node keeps track of the unused portions of each allocated segment. As a result, the computational and communication resource overhead associated with allocating receive buffers is substantially reduced. Once the sending node has exhausted a segment, it sends either a segment release message or segment recycle message to the receiving node. Recycling the segment causes the receiving node to re-enable the sending node to use the segment once the receiving node has processed all the messages previously written to receive buffers in the segment.
摘要:
A devtmp device driver provides the functionality of temporary files by representing a virtual device and including the virtual device among several devices within which a file system can store files. Rather than storing data in and retrieving data from a physical device, the devtmp device driver stores data in and retrieves data from anonymous storage through a swap file system which manages anonymous storage for a virtual memory system. A file system uses the devtmp device driver in the same manner the file system uses conventional device drivers which store data in and retrieve data from secondary storage devices. Since the devtmp device driver represents a virtual device whose data are stored in anonymous storage managed by the swap file system, the total amount of storage available for storing data of temporary files is shared among the various components of a computer process to successfully satisfy various needs of various computer processes. Temporary files can be accessed through a main file system, e.g., the UNIX file system, using a delayed-write-mode. In the delayed-write mode, the file system does not write metadata of a device to secondary storage and writes substantive data of files stored on the device only when insufficient primary storage is available to store the substantive data. Accordingly, temporary files are stored in primary storage so long as primary storage is available for such temporary files and are stored in, or moved to, secondary storage when primary storage is unavailable.