|
|
|
How the User services
take control ?.
ManRiX Microkernel contains just few basic components
of an Operating System. Those components that are not required
inside the microkernel are implemented as user process. ManRiX
has its own set of Standard C library conforming to ANSI C and
POSIX. The system services and drivers can easily use the standard
C library but the Driver writers
should be cautious to see the chicken or egg problem does not
arise. The system services are based on Client Server architecture.
All the applications use message passing to communicate with the
servers. All servers are multithreaded. They implement a pool
of threads called worker threads which do the actual work on request
arrival. The listener thread listens for the request and passes
it to the worker threads.
A special technique is used reduce the number of
message passing for I/O managers. Using this technique, after an
open call, the applications can directly send read, write, ioctl
etc to I/O manager. For an example, if an application opens a file
“/dev/ttyS0” (serial port), it can directly call the
serial driver without going through File System. It is achieved
by using a multiplexed file descriptor where first 16 bit is the
file descriptor and the other 16 bit is the thread id of the thread
managing that I/O device.
For Non I/O managers, there is a separate namespace server that
resolve server name to its thread id.
|
|
File System Manager: |
|
|
|
File system manager
manages the various filesystem. Actually It implements VFS(virtual
files system) concept which gives the generic interface so that
different filesystem which reside beneth it can use same interface.
So the VFS is based on object oriented concept. Each file is represented
by VNODE.ManRiX is conforming to POSIX so the file system is based
on UNIX. File System manager uses VNODE/VFS architecture. It makes
possible to support multiple file systems (like fat, ext2/3, ufs,
ntfs etc.). |
|
Floppy Manager |
|
|
|
|
floppy manager manages the floppy controller |
|
Console Manager |
|
|
|
|
ManRiX has a POSIX
terminal support. It can support more than one terminal. The Console
manager manages the Keyboard Driver and the Text console driver.
So, when an application do printf( ), the message is sent to the
console manager which displays the output to the terminal associated
with that process. |
|
Bus Manager |
|
|
|
|
ManRiX manages almost
all devices in User Space. The Bus manager manages the various buses
like PCI, USB etc. So, if any other driver manager needs to read
Configuration space of its device (connected to PCI BUS), it requests
the BUS manager through IPC. Up to now there is no support of USB
Driver |
|
ATA Manager |
|
|
|
|
The ATA manager manages
ATA/ATAPI devices. They are popularly known as Integrated Device
Electronics (IDE). The file manager requests the ATA manager if
it needs to read/write a disk block. |
|
Miscellaneous Managers |
|
|
|
|
|
It manages the devices whom don't have their own servers. In
ManRiX the CPU Driver information is implemented in miscellaneous
manager.
|
|
|
|
|
|
|