On Tue, Jun 20, 2000 at 11:45:31PM +0100, Nic Ferrier wrote:
> >>> Olivier Galibert <[EMAIL PROTECTED]> 20-Jun-00 11:27:41 PM >>>
>
> >Bzzt wrong. Going userspace->kernel and back does
> >not involve any context switch. It's going userspace->
> >another userspace that does.
>
> Bzzt. Not quite right.
>
> userspace -> userspace doesn't happen does it?
>
> it goes userspace -> kernel -> userspace
>
> with the last userspace being the driver. The kernel has to get
> involved to work out which driver is required.
Of course. Only the kernel can do a VM switch no matter what happens.
I was just pointing out the flaw in the "direct userpsace
communication" idea to remove context switches.
> But the context switching argument is not at the heart of the
> microkernel problem because calls can be optimized out... some people
> also suggest that the better modularity reduces the need for context
> switches and therefore saves over time.
I'm quite curious then as why performance of microkernels has always
measured as "only xx% slower than an equivalent monolithic kernel".
> AFAIK the context switching argument (generally) is a pretty
> subjective one. However, I'm no HURD expert. How it works in practice
> on the HURD might mean that context switches are a pain... but I'm not
> sure what you compare it to since the HURD is so immature.
Whatever. Anyway, the main performance problems I currently see with
mach/hurd are:
- Inefficient VM
- Inefficient mach_msg_trap (see it and puke)
- Mig overhead
- fd overhead
- C threads
Most of these are fixable, though. Only the "inefficient VM" part is
really difficult, especially if you want >1.5Gb partitions.
OG.