EROS retrospective -- scatter/gather
shapj@us.ibm.com
shapj@us.ibm.com
Sat, 25 Dec 1999 17:41:21 -0500
I have at various times proposed introducing scatter/gather into the EROS
IPC. In a recent discussion about L4, a compelling reason emerged *not* to
do so.
The problem lies in the fact that a scatter/gather operation requires some
form of "dope vector", and that this dope vector is necessarily too big to
fit in registers. In turn, this raises the possibility of page faults
and/or invalid pages in the dope vector. Those are painful, but manageable.
More problematic is the possibility of one process or the other overwriting
the dope vector while the IPC is underway.
It is not clear that this presents any danger to the kernel, but it *does*
create a situation in which the unit of operation may be redefined while
the transfer is underway. This is an issue if the IPC atomicity rule is to
be relaxed as Charlie has hinted he would like to do. While the current
EROS IPC does use a short in-memory vector, all of it's values are copied
into pseudo-registers before the IPC actually gets underway, which
eliminates the problem.
In the absence of scatter/gather, some efficient means for shared memory
interfacing becomes essential, and a non-blocking notification mechanism
becomes highly desirable. I have previously described such a mechanism
(the "post" operation).
Jonathan S. Shapiro, Ph. D.
Research Staff Member
IBM T.J. Watson Research Center
Email: shapj@us.ibm.com
Phone: +1 914 784 7085 (Tieline: 863)
Fax: +1 914 784 6576