Techniques for an interrupt free operating system
First Claim
1. A method in a multithreaded processor for processing events without interrupt notifications, the method comprising:
- creating a thread to execute on a stream of the processor; and
during execution of the thread, executing a loop that determines whether an event has occurred; and
in response to determining whether an event has occurred, assigns a different thread to process the event so that multiple events can be processed in parallel.
4 Assignments
0 Petitions
Accused Products
Abstract
A method and system in a multithreaded processor for processing events without interrupt notifications. In one aspect of the present invention, an operating system creates a thread to execute on a stream of the processor. During execution of the thread, the thread executes a loop that determines whether an event has occurred and, in response to determining whether an event has occurred, assigns a different thread to process the event so that multiple events can be processed in parallel and so that interrupts are not needed to signal that the event has occurred. Another aspect of the present invention provides a method and system for processing asynchronously occurring events without interrupt notifications. To achieve this processing, a first thread is executed to generate a notification that the event has occurred upon receipt of the asynchronously occurring event. A second thread is also executed that loops determining whether a notification has been generated and, in response to determining that a notification has been generated, performing the processing necessary for the event.
-
Citations
70 Claims
-
1. A method in a multithreaded processor for processing events without interrupt notifications, the method comprising:
-
creating a thread to execute on a stream of the processor; and
during execution of the thread, executing a loop that determines whether an event has occurred; and
in response to determining whether an event has occurred, assigns a different thread to process the event so that multiple events can be processed in parallel. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
-
-
10. A method in a multithreaded processor for processing asynchronously occurring events without interrupt notifications, the method comprising:
-
upon receipt of the asynchronously occurring event, executing a first thread to generate a notification that the event has occurred; and
executing a second thread with a loop that determines whether a notification has been generated;
in response to determining that a notification has been generated, performs the processing necessary for the event. - View Dependent Claims (11, 12, 13, 14, 15)
-
-
16. A computer system for processing events without interrupt notifications, the computer system having a multithreaded architecture with streams, comprising:
-
a team structure that references unblocked threads for each team associated with the computer system;
a daemon data structure that references unblocked operating system daemons associated with the computer system; and
a listener daemon that loops checking the data structures for unblocked threads of the teams and unblocked operating system daemons and starting the execution of the unblocked threads of the teams and the unblocked operating system daemons in streams. - View Dependent Claims (17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32)
a continuation data structure that references unblocked continuations associated with the computer system, each continuation representing work to be performed by an operating system; and
virtual processor daemons that loop checking the continuation data structure and starting execution of any unblocked continuation.
-
-
26. The computer system of claim 25 wherein the continuation data structure also references continuations that have not yet been started and the virtual processor daemons start execution of the continuations that have not yet been started.
-
27. The computer system of claim 26 wherein the virtual processor daemons give preference to starting execution of unblocked continuations.
-
28. The computer system of claim 25 wherein the number of virtual processor daemons is modified dynamically.
-
29. The computer system of claim 25 wherein a continuation represents a request by a user program to perform work.
-
30. The computer system of claim 25 wherein a continuation represents a request by an operating system daemon to perform work.
-
31. The computer system of claim 25 wherein a continuation represents a request by a device driver to perform work.
-
32. The computer system of claim 31 wherein device drivers execute in supervisor daemons that block waiting for input or output.
-
33. A computer system for processing events without interrupt notifications, the computer system having a multithreaded architecture with streams, comprising:
-
a continuation data structure that references unblocked continuations associated with the computer system, each continuation representing work to be performed by an operating system; and
virtual processor daemons that loop checking the continuation data structure and starting execution of any unblocked continuation in a stream. - View Dependent Claims (34, 35, 36, 37, 38, 39, 40, 41)
-
-
42. A method in a computer system for processing events without interrupts, the computer system having streams for execution of threads, the method comprising repeatedly:
-
determining whether there are any unblocked threads of execution for user programs that are currently not executing; and
when it is determined that there is an unblocked thread of execution for a user program that is not currently executing, staring execution of that unblocked thread of execution in a stream of the computer system. - View Dependent Claims (43, 44, 45, 46, 47, 48)
determining whether there are any unblocked operating system daemons that are currently not executing; and
when it is determined that there is an operating system daemon that is not currently executing, starting execution of the unblocked operating system daemon in a stream of the computer system.
-
-
45. The method of claim 44 wherein an unblocked operating system daemon represents processing for a device driver.
-
46. The method of claim 42 wherein virtual processors loop determining whether there are any unblocked continuations and when it is determined that there is an unblocked continuation, starting execution of the unblocked continuation in a stream of the computer system.
-
47. The method of claim 46 wherein the virtual processors also determine whether there are any not-yet-started continuations and when it is determined that there is a not-yet-started continuation, starting execution of the not-yet-started continuation.
-
48. The method of claim 47 wherein starting execution of unblocked continuations has priority over starting execution of not-yet-started continuations.
-
49. A method in a computer system for processing events without interrupts, the computer system having streams for execution of threads, the method comprising:
-
for each of a plurality of virtual processors, repeatedly determining whether there are any unblocked continuations; and
when it is determined that there is an unblocked continuation, starting execution of the unblocked continuation in a stream of the computer system. - View Dependent Claims (50, 51, 52, 53)
-
-
54. A computer system for processing events without interrupt notifications in a multithreaded processor, comprising:
-
means for creating a thread to execute on a stream of the processor; and
means for executing a loop that, during execution of the thread, determines whether an event has occurred and, in response to determining whether an event has occurred, assigns a different thread to process the event so that multiple events can be processed in parallel. - View Dependent Claims (55, 56, 57, 58, 59, 60, 61, 62)
-
-
63. A computer-readable medium containing instructions for controlling in a multithreaded processor to process asynchronously occurring events without interrupt notifications, by a method comprising:
-
upon receipt of the asynchronously occurring event, executing a first thread to generate a notification that the event has occurred; and
executing a second thread with a loop that determines whether a notification has been generated and, in response to determining that a notification has been generated, performs the processing necessary for the event. - View Dependent Claims (64, 65, 66, 67, 68)
-
-
69. A computer-readable medium containing instructions for controlling a computer system to process events without interrupts, the computer system having streams for execution of threads, by a method comprising repeatedly:
-
determining whether there are any unblocked threads of execution for user programs that are currently not executing; and
when it is determined that there is an unblocked thread of execution for a user program that is not currently executing, starting execution of that unblocked thread of execution in a stream of the computer system.
-
-
70. A computer-readable medium containing instructions for controlling a computer system to process events without interrupts, the computer system having streams for execution of threads, by a method comprising:
-
for each of a plurality of virtual processors, repeatedly determining whether there are any unblocked continuations; and
when it is determined that there is an unblocked continuation, starting execution of the unblocked continuation in a stream of the computer system.
-
Specification