Installed minix on a 'vmware' and is working with X11 but I have a
few questions.
1) I also installed the OS on VirtualBox and the X server is not
running. Any reason? I know nothing about 'vm' host software like
'vmware', 'virtual box'
2) Readup a little on the working of Minix3 and I have a few technical
questions:
- What is the support of paging in the Minix 3 kernel at present? I
see that when memory is allocated, it cannot be extended beyond a
certain level per process, until paging is activated( because it uses
a non paged, flat memory addressing mode, and it needs chmem to set
this per process before it starts). I am keen to look at the paging
code.
- Could enabling paging slow the OS( 'cos of all the GDT, IDT, LDT
level translation)
- Is the X11 server implemented as a process with full IO access or
does it call the different drivers using numerous process switches,
going back and forth through the kernel with different permission
levels for each device? Any more information on this would be really
useful for me.
3) Is the Gcc C++ compilers ported to minix 3 so drivers, etc can be
written for them?
Cheers
Mani
> Installed minix on a 'vmware' and is working with X11 but I have a
> few questions.
>
> 1) I also installed the OS on VirtualBox and the X server is not
> running. Any reason? I know nothing about 'vm' host software like
> 'vmware', 'virtual box'
I don't know specifically about X11, but VirtualBox generally has more
problems than others do. Vmware and Qemu/Kvm generally work pretty
well (although the latest Kvm, version 0.12.2, also has problems).
> 2) Readup a little on the working of Minix3 and I have a few technical
> questions:
> - What is the support of paging in the Minix 3 kernel at present? I
> see that when memory is allocated, it cannot be extended beyond a
> certain level per process, until paging is activated( because it uses
> a non paged, flat memory addressing mode, and it needs chmem to set
> this per process before it starts). I am keen to look at the paging
> code.
MINIX uses paging (but not swapping) since version 3.1.4. The code is
in part in the kernel (/usr/src/kernel) but mostly in the VM server (/
usr/src/servers/vm).
> - Could enabling paging slow the OS( 'cos of all the GDT, IDT, LDT
> level translation)
Yes, but this is not due to GDT, IDT and LDT. GDT and LDT are used for
segmentation, which has always been used in MINIX to protect processes
from each other. IDT is used for interrupt delivery and is not related
to virtual memory.
The most important register is CR3, which is a pointer to the page
table. Loading that register is indeed relatively slow, probably
because it flushes the TLBs.
> - Is the X11 server implemented as a process with full IO access or
> does it call the different drivers using numerous process switches,
> going back and forth through the kernel with different permission
> levels for each device? Any more information on this would be really
> useful for me.
I don't know exactly how this works, maybe someone else knows.
> 3) Is the Gcc C++ compilers ported to minix 3 so drivers, etc can be
> written for them?
Yes, but ACK is the default compiler and it is strongly recommended
that you use C code compatible with that (IIRC that is C89). Moreover,
C++ is a bit of a mess and I doubt we would ever allow that language
to be used in the MINIX source tree (although of course packages
written in C++ are not a problem).
With kind regards,
Erik
AFAIK, X11 calls all the respective drivers through regular system
calls in all implementations, not just Minix. Otherwise you would have
to package driver code /inside/ the X11 server and run it /alongside/
the regular drivers. This breaks about every rule on system
architecture and forces you to synchronize the X drivers with
'regular' drivers because both are driving the same hardware
component. I would be very surprised if this is not the case, but
please enlighten me if you know more :)
Regards,
Jens