-
Notifications
You must be signed in to change notification settings - Fork 29
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Zero-Copy IPC #19
Comments
Requirements
Ideas
|
Hey @nuta, I am classmate of @yashrajkakkad and have looked into the issue, I believe this is the procedure for implementing Zero-Copy IPC
However, I am unsure on how locking and unlocking can be performed. Also, How will |
Hi @arpitvaghela. Here's my comments and suggestions: First, you don't need to consider the compatibility with the existing IPC APIs. It is hard to use zero-copy IPC transparently from the current IPC APIs (e.g. The kernel cannot map a page by itself because it does not know which physical memory pages are available for a page table structures. In other words, the kernel does not have a memory allocator by design. Mapping a page every time a message is sent would degrade the performance. I suggest mapping pages between tasks only once at the initialization (i.e. create a shared memory) and utilize lock-free algorithms and the Because I'm not familiar with such algorithms, your suggestions are very welcome :) JFYI, memory page mapping is done in |
@nuta, can we implement POSIX shared memory ( similar to shm in linux ) ? However, it will require few more support from the kernel. |
Yes, we can implement such a feature in vm server. |
Currently, Resea requires at least two message copies even in the IPC fast path and what's worse, out-of-line payloads (analogous to the pair of
buf
andlen
in UNIX'sread(2)
) involves additional IPC with the pager task and the buffer copy. (Please note that this design decision is for making the microkernel simple as much as possible).As the kernel allows the pager task to map memory pages, I'm wondering if we could implement a zero-copy IPC using the
map
system call and the notifications, a asynchronous IPC mechanism like UNIX's signals.This issue tracks ideas and the progress of this feature.
The text was updated successfully, but these errors were encountered: