System for performing asynchronous file operations requested by runnable threads by processing completion messages with different queue thread and checking for completion by runnable threads
First Claim
1. In a computer system that includes a processor, an operating system and one or more application programs running on said computer system, the operating system being a multi-tasking operating system that supports execution of a plurality of processes with a plurality of runnable threads, where one or more of the runnable threads is used to execute an individual application program, the system further including a memory device coupled to the processor and accessible by said operating system, a method for performing asynchronous file operations comprising:
- requesting one or more file operations from one or more of the runnable threads;
on completion of the requested file operation, adding a completion message to a queue object stored in said memory without notifying the runnable thread that requested the file operation, the queue object implementing a multi-tasking concurrency control with a fixed number of queue threads;
processing completion messages in the queue object with a queue thread that is different from the runnable thread which requested the file operation; and
from time to time checking the queue object from the runnable threads for information on completed file operations requested by the runnable threads.
3 Assignments
0 Petitions
Accused Products
Abstract
A technique for performing multiple simultaneous asynchronous input/output operations in a computer operating system. An input/output completion port object is created and associated with a file descriptor. When I/O services are requested on the file descriptor, completion is indicated by a message queued to the I/O completion port. A process requesting I/O services is not notified of completion of the I/O services, but instead checks the I/O completion port'"'"'s queue to determine the status of its I/O requests. The I/O completion port manages multiple threads and their concurrency.
-
Citations
23 Claims
-
1. In a computer system that includes a processor, an operating system and one or more application programs running on said computer system, the operating system being a multi-tasking operating system that supports execution of a plurality of processes with a plurality of runnable threads, where one or more of the runnable threads is used to execute an individual application program, the system further including a memory device coupled to the processor and accessible by said operating system, a method for performing asynchronous file operations comprising:
-
requesting one or more file operations from one or more of the runnable threads; on completion of the requested file operation, adding a completion message to a queue object stored in said memory without notifying the runnable thread that requested the file operation, the queue object implementing a multi-tasking concurrency control with a fixed number of queue threads; processing completion messages in the queue object with a queue thread that is different from the runnable thread which requested the file operation; and from time to time checking the queue object from the runnable threads for information on completed file operations requested by the runnable threads. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16)
-
-
17. In a computer system that includes a processor, an operating system and a plurality of application programs, the operating system being a multi-tasking operating system that supports execution of a plurality of processes with runnable threads which are used to execute the plurality of application programs, a method of performing asynchronous file operations comprising:
-
creating an input/output completion queue; creating a plurality of file handles for a plurality of runnable threads desiring to use the services of the input/output completion queue, where the file handle is an index into a process-specific table and incorporates a set of access rights granted to processes that own the handles created for selected ones of the runnable threads; and associating the plurality of file handles with the input/output completion queue, thereby providing access to input/output services for each of the plurality of runnable threads. - View Dependent Claims (18)
-
-
19. In a computer system that includes a processor, an operating system and a plurality of application programs, the operating system being a multi-tasking operating system that supports execution of a plurality of processes with a plurality of runnable threads which are used to execute the plurality of application programs, a method of providing concurrency control in a queue object, comprising:
-
allocating a queue object having a blocked thread queue and a multi-tasking concurrency control, the multi-tasking concurrency control including a fixed number of queue threads; requesting a service from the queue object from a runnable thread; and determining whether a first queue thread is available at a first time to process the service request by checking the multi-tasking concurrency control, and if so, providing the requested service with the first queue thread, and if not, blocking the runnable thread by placing the runnable thread in the blocked thread queue until a second queue thread is available at a second time, and then providing the requested service with the second queue thread, and removing the runnable thread from the blocked thread queue. - View Dependent Claims (20, 21, 22, 23)
-
Specification