[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

re: Inferno scheduler

>I think for every limbo program I start a new Dis Virtual machine is
>started. Is this correct? 
>If so, does this mean that all different limbo programs are scheduled by 
>the Process scheduler that also schedules the device processes?

No this is incorrect. There is a kernel level scheduler in
proc.c which is equivalent to the windows or unix scheduler
in emu. There is a separate run queue for Dis threads maintained
by the virtual machine and a separate scheduler which maps
virtual threads onto physical threads. You will find that
if you start several hundred threads which participate in
channel communication that you will have only as many
processes as required to prevent the VM from blocking in the OS.

>Then does that mean that when I am running three multithreaded limbo
>programs, three instances of the "application scheduler" exist in three
>separate user-spaces?
The system is fundamentally a single address space for all threads.
the VM+compiler is its own MMU.

>Also I am not sure wheither both schedulers (in Native Inferno) are 
>using multiple priority run queues using a round-robin mechanism. 
>I think it's only the OS scheduler so in the emulator the priorities 
>must be supported by the host OS??
thats about right. We dont use a scheduler interface in EMU at the
moment and the first statement applies to the native kernel where
we do all our real time stuff like MPEG decoding.