1 Step)
Loader Load Kernel Template (Kernel.bin) From (HD, Floppy, ETC)
Loader Load Basic Filesystem, Basic Memory Manager, Basic Network Driver From (HD, Floppy, ETC)
2 Step)
Kernel -> Gather system information. (Arch, Policies, Etc)
Kernel -> Connect To The Main Site(Internet) -> Download Each Kernel Module for the system.
Kernel -> Load each Module(Driver) from the Main Site.
Kernel Optional -> we cache the modules in the HD.
Kernel -> Start the kernel.
-----------------------------------------
Kernel.bin is coded in C++ with interfaces for the modules.
Example of a Module.
Code: Select all
class MemoryManager : public Module
{
bool isVirtualPresent() = 0;
bool allocatePhysical( void* buffer, unsigned long length ) = 0;
....
};
Code: Select all
main()
{
MemoryManager* SystemMM; // This pointer will be valid after the Module is loaded
SystemMM->allocatePhysical(...);
}