Event Port Retrieval with Priority Queue for System Call Reduction
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Current computer operating systems lack efficient mechanisms for retrieving a specified number of events from an event port, leading to inefficiencies due to the inability to specify the number of events desired and the inability to share event queues across processes, resulting in significant overhead processing costs.
Innovation Solution
A method and apparatus that allow a computer software application to request a specified number of events from an event port, with available events being retrieved if sufficient, and requests for fewer events being placed in a priority-ordered request queue for later processing, enabling event queue sharing across processes and reducing system call frequency.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Ease of operation
If standard poll(2) function is used to retrieve events, then events can be identified, but the application cannot specify the number of events desired and must make multiple system calls
Solution Approach 1:
The patent applies preliminary action by allowing applications to pre-specify the number of events they wish to retrieve in a single system call. The system prepares and holds multiple events in the event queue, ready to be returned together, rather than requiring multiple sequential system calls to retrieve the same number of events.
Solution Approach 2:
The patent merges multiple event retrieval operations into a single system call. Instead of requiring separate system calls for each event or small batches, the system combines multiple events into one retrieval operation, reducing system call overhead and improving efficiency.
2Reliability
If separate event queues are created for each process, then event isolation is maintained, but significant overhead processing costs occur
Solution Approach 1:
The patent implements universality by creating a shared event queue that can be accessed by multiple processes simultaneously. This single event queue serves multiple processes, eliminating the need for separate queues for each process while maintaining event isolation through process-specific event ports and descriptors.
Solution Approach 2:
The patent uses event ports as intermediaries between processes and the shared event queue. Each process has its own event port that provides a controlled interface to the shared queue, acting as a mediator that maintains isolation while enabling shared access. This allows multiple processes to retrieve events from the same queue without direct interference.
3Speed
If applications make frequent system calls to retrieve events, then events are retrieved promptly, but processing overhead increases significantly
Solution Approach 1:
The patent enables continuity of useful action by allowing applications to retrieve multiple events in a single continuous operation. Instead of interrupting the application with frequent system calls, the system maintains a ready supply of events in the queue, allowing the application to continuously process events without repeated context switches or system call overhead.
Data Source
AI summary
Methods and apparatus, including computer program products, implementing and using techniques for retrieving events from an event port. A request to retrieve a specified number of events from an event port to which completed events are posted by one or more event sources is received from a computer software application. It is determined whether the specified number of events is available at the event port. If the specified number of events is available at the event port, the specified number of events is retrieved from the event port and the retrieved events are returned to the requesting computer software application. If fewer events than the specified number of events are available at the event port, the request is placed in a request queue with requests to be processed at a later time and the request queue is ordered based on priorities of the requests in the request queue.


