:- Memory Manager
is “the memory”. Processes aren’t aware of different types of memory and how they
are managed. They simply exist in the memory.
It’s up to the system to determine where that memory is really located and how it
has to be loaded to be accessible to the requesting process. Since there is only
one memory, virtual memory and memory mapped filesystem I/O has to be provided,
since processes now expect anything to be accessible like RAM (that’s definetly the
end of file I/O operations – don’t worry =). This way, files stored on permanent
storing media like harddisks, are objects, that are instantiated by the
corresponding MPS (Memory Protocol Server) at the moment it starts up.
:- IPC
IPC is the key to modularity. The more flexible a system’s IPC mechanisms are,
the more modular can it be built. And modularity is definetly one of the main
goals to be achieved (think of code reusage, distribution, and simply
non-redundant updating).
The invokation of methods can be divided into two parts. First, the client needs
to have a reference to the object, that provides the method. Then it has to be
made directly accessible to the calling object in question.
External objects (objects that exist on different machines) are accessed using the
local IDPS (IPC Distribution Protocol Server). IDP is an application-level network
protocol for inter-kernel communication (more to come).
:- Process/Thread Manager
The Process Manager creates a structure for each process holding information, mainly used by the
scheduler. That structure contains:
1) CPU context
2) Process state (running, waiting, sleeping)
3) Priority
4) Quantum (size of time slice)
5) List of allocated memory blocks (segments)
:- Issues
Every process occupies a seperate task. So all API-calls (to the Server MI) implicitly
invoke a taskswitch. That’ll be heavy work, even for those x86 machines >450mhz.