|
|
Kernel | ||||||||||||||||||||||||||||||||||||||||||||||
|
|
The Active Object System Kernel (A2) is a lean multiprocessor kernel developed in the spirit of the ETH Oberon Project. It is the base of the Bluebottle system and provides a runtime environment for the Active Oberon language, which supports active objects directly, and enables the construction of efficient active object-based systems that run directly on the hardware. Above the kernel layer is a flexible collection of modules providing generic abstractions for devices and services, e.g., file systems, user interfaces and networking. The A2 kernel is currently implemented for Intel IA32 SMP multiprocessor and singleprocessor systems and severals StrongARM-based computers. An overview of the kernel is presented in:
Here follows a list of the modules currently contained in (a special case of) the boot image as needed to run A2 programs:
This is the absolute minimum set of modules you need to run A2 programs. If you use DEFINITIONS (interfaces) in your code, you also need
Most likely you want this modules, too:
With the modules above, the question is: how would your program get control? Answer: You would have to link it into the boot image as last module. The module body would then be the entry point. To be able to dynamically load modules, you would need at least access to some disk device...
as, for example, an ATA disk...
the module loader...
and access to a file system...
Using the boot console you can specify commands as config string (e.g. Boot1=...).
From now on, you can load modules dynamically from disk. To see what modules are included in a boot image, link it and have a look at Linker.Log. There is a section that shows you the layout of the boot image. Example: IDE.Bin BEGIN 109CC8H Trace
10CA28H Machine
114068H Heaps
11B2D8H Modules
117728H Objects
108F78H Kernel
127408H KernelLog
128638H Streams
1222C8H Traps
137078H Plugins
138658H Disks
13A4F8H PCI
12E9A8H ATADisks
13F438H Caches
145948H Commands
1409D8H Files
13D928H DiskVolumes
14F488H Clock
148848H DiskFS
154A58H Loader
151B18H BootConsole
END |
|
Copyright © 2007 ETH Zürich
|
Page last modified on September 19, 2008, at 03:28 PM
|