Non-Disruptively Upgrading a Cloud-Based Storage System
US-2024241674-A1 · Jul 18, 2024 · US
US9229789B2 · US · B2
| Field | Value |
|---|---|
| Publication number | US-9229789-B2 |
| Application number | US-201313910936-A |
| Country | US |
| Kind code | B2 |
| Filing date | Jun 5, 2013 |
| Priority date | Sep 30, 2008 |
| Publication date | Jan 5, 2016 |
| Grant date | Jan 5, 2016 |
A practical reading order for non-experts. Skip the full description unless you need deep technical detail.
What the patent document calls the invention.
A short plain-language summary of the technical disclosure.
Who owns or filed the patent and who is credited as inventor.
Filing, priority, publication, and grant dates set the timeline.
The legal scope of protection — read this for what is actually claimed.
Technology tags used to group this patent with similar filings.
Prior art links and similar publications in this corpus.
Official abstract text for this publication.
Embodiments for performing cooperative user mode scheduling between user mode schedulable (UMS) threads and primary threads are disclosed. In accordance with one embodiment, an asynchronous procedure call (APC) is received on a kernel portion of a user mode schedulable (UMS) thread. The status of the UMS thread as it is being processed in a multi-processor environment is determined. Based on the determined status, the APC is processed on the UMS thread.
Opening claim text (preview).
We claim: 1. A computer readable storage memory storing computer-executable instructions that, when executed, cause one or more processors to perform acts comprising: creating a primary thread from a standard thread, the created primary thread including an original user thread descriptor that resides in an upper portion of a user virtual address (VA) space of the created primary thread; and creating a duplicate user thread descriptor in a lower portion of the user VA space of the created primary thread, wherein: the original user thread descriptor includes a self-pointer that points to a location of the original user thread descriptor; the duplicate user thread descriptor includes a duplicate pointer that is a copy of the self-pointer of the original user thread descriptor, the self-pointer of the original user thread descriptor and the duplicate pointer both leading to an identical address in a physical memory; and a data segment that is unable to directly access the original user thread descriptor indirectly accesses the original user thread descriptor via the duplicate pointer of the duplicate user thread descriptor. 2. The computer readable storage memory of claim 1 , further comprising: receiving an original asynchronous procedure call (APC) on a kernel portion of a user mode schedulable (UMS) thread; determining a status of the UMS thread that is being processed in a multi-processor environment, the status including the UMS thread executing via the primary thread in a user mode or the UMS thread engaging in a context migration with the primary thread; and processing the original APC on the UMS thread based on the determined status of the UMS thread. 3. The computer readable storage memory of claim 2 , further comprising inserting an identifier (ID) of the primary thread into a client identifier (CID) field of the UMS thread. 4. The computer readable storage memory of claim 2 , wherein the determining includes determining that the UMS thread is idle, and wherein the processing further comprises: placing a lock on a UMS thread user portion when the UMS thread is not being executed, the lock preventing the UMS thread from being executed in one of kernel mode or user mode; and executing the original APC on the UMS thread user portion to one of retrieve or modify context information of the UMS thread user portion. 5. The computer readable storage memory of claim 2 , wherein the determining includes determining that the UMS thread is executing via the primary thread in the user mode, and wherein the processing further comprises: firing a disassociate APC at the primary thread to cause the primary thread to abandon execution in the user mode and return to kernel mode; returning context information from a primary thread kernel portion to a UMS thread user portion; and executing the original APC on the UMS thread user portion to one of retrieve or modify the context information of the UMS thread user portion. 6. The computer readable storage memory of claim 2 , wherein the determining includes determining that the UMS thread is engaging in a context migration with the primary thread, and wherein the processing further comprises: pulling new context information from a primary thread kernel portion to a staging area in a UMS thread kernel portion via an original APC; and executing the original APC on the UMS thread user portion to one of retrieve or modify the new context information of the UMS thread kernel portion. 7. The computer readable storage memory of claim 2 , wherein the determining includes determining that the UMS thread is engaging in a context migration with the primary thread, and wherein the processing further comprises: providing an indicator to signal that the primary thread is ready to transfer new context information to the UMS thread in response to an disassociate APC that is generated based on an original APC; pulling new context information from a primary thread kernel portion to a staging area in a UMS thread kernel portion the an original APC; replacing old context information of the UMS thread kernel portion with the new context information in the staging area; and executing the original APC on the UMS thread user portion to one of retrieve or modify the new context information of the UMS thread kernel portion. 8. The computer readable storage memory of claim 2 , wherein the determining includes determining that the UMS thread is engaging in a context loading with the primary thread, and wherein the processing further comprises: completing a transfer of context information from a UMS thread user portion to a primary thread user portion that is in progress in response to a disassociate APC, the disassociate APC being generated based on an original APC; and executing the original APC on the UMS thread user portion to one of retrieve or modify the context information of the UMS thread user portion. 9. The computer readable storage memory of claim 2 , wherein the determining includes determining that the UMS thread is engaged in context saving with the primary thread, and wherein the processing further comprises: completing a replacement of first context information in a UMS thread user portion with second context information from a primary thread user portion in response to a disassociate APC, the disassociate APC being generated based on an original APC; executing the original APC on the UMS thread user portion to one of retrieve or modify the first context information of the UMS thread user portion; and repeating the replacement of the first context information in the UMS thread user portion with the second context information from the primary thread user portion. 10. The computer readable storage device of claim 2 , wherein the determining includes determining that the UMS thread is engaged in context saving with the primary thread as a result of a page fault, and wherein the processing further comprises: terminating a replacement of first context information in a UMS thread user portion with second context information from a primary thread user portion in response to a disassociate APC, the disassociate APC being generated based on an original APC; restoring the first context information of the UMS user portion to states prior to the replacement; executing the original APC on the UMS thread user portion to one of retrieve or modify the first context information of the UMS thread user portion; and processing a primary thread kernel portion in kernel mode instead of the primary thread user portion in the user mode as a result of the page fault. 11. The computer readable storage memory of claim 1 , wherein the creating includes creating the duplicate user thread descriptor when the original user thread descriptor is inaccessible via a 32-bit data segment. 12. The computer readable storage memory of claim 1 , wherein the upper portion includes an upper 4 gigabyte (GB) portion and the lower portion includes a lower 4 GB portion. 13. A computer-implemented method, comprising: creating a primary thread from a standard thread, the created primary thread including an original user thread descriptor that resides in an upper portion of a user virtual address (VA) space of the created primary thread; and creating a duplicate user thread descriptor in a lower portion of the user VA space of the created primary thread, wherein: the original user thread descriptor includes a self-pointer leading to an address of the original user thread descriptor; the duplicate user thread descriptor includes a duplicate pointer leading to the address of the original user thread descriptor, the self-pointer of the orig
where tasks reside in different layers, e.g. user- and kernel-space · CPC title
Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues · CPC title
by program, e.g. task dispatcher, supervisor, operating system · CPC title
by reordering requests · CPC title
Interprogram communication · CPC title
Related publications grouped by family.
Answers are generated from the same data shown on this page.