3 Repos
Context switching mechanisms that save and restore CPU registers by copying coroutine stacks for high-density concurrency.
Distinct from Post-Copy Memory Restoration: None of the candidates cover the specific mechanism of copying stacks for user-space context switching in coroutines.
Explore 3 awesome GitHub repositories matching operating systems & systems programming · Stack-Copying Context Switches. Refine with filters or upvote what's useful.
libco is a C++ coroutine library and user-space task orchestrator designed for cooperative multitasking and high-concurrency execution. It functions as a high-concurrency network framework and a synchronous-to-asynchronous wrapper that allows blocking system calls and socket functions to run asynchronously without modifying existing business logic. The project utilizes a specialized stack-copying context switching model to support millions of simultaneous TCP connections on a single machine. It includes a high-performance time wheel scheduler for managing asynchronous background jobs and dela
Saves and restores CPU registers and memory segments by copying the coroutine stack to enable high-density concurrency.
Gevent is a Python coroutine concurrency library and asynchronous task manager designed for high-concurrency I/O tasks. It provides a cooperative networking framework for building asynchronous TCP, UDP, and HTTP servers, as well as a WSGI web server implementation for hosting web applications. The project is distinguished by its standard library monkey-patching tool, which replaces blocking synchronous functions with cooperative versions to enable asynchronous behavior in third-party code. This allows for a cooperative multitasking workflow where the system yields execution during I/O waits t
Performs low-level stack switching in user space to yield execution between concurrent coroutines.
libaco is a low-level C library for cooperative multitasking that provides a runtime for managing asymmetric coroutines. It functions as an execution context manager and stack memory allocator, allowing a single process to initialize independent execution units with private stacks and perform manual context switching via yield operations. The library distinguishes itself through its memory management and stability features, utilizing read-only guard pages at stack boundaries to trigger hardware faults upon stack overflow. It supports both private stack allocation and shared stack pooling to r
Manages unit transitions by saving and restoring CPU registers during coroutine context switches.