"was war zu erst da: Das Huhn oder das Ei?"
This is the question struggling me for now, in english: what's been here first: the chicken or the egg?
Although I wanna have my device drivers be loadable at runtime by just some small command like insmod, I 'am in need of having some of them available at run time: system task (for non-driver communication), paging-task (the so called memory driver ), and at least a Disk Driver for that the system can load all the other modules/drivers later - and then it comes: I have now two processes: the vm86 process, and the memory process.
what thrills me is how to get the memory process to run? Shall I have it compute it's own length via linker variables and then fill in the private structures? ... anyway, for mm at least i canna go with a normal fork/exec - those system calls require a functional mm process which talks in turns to the memory driver to request several things... or shall i pass it a message to by kernel initialization routine (the physical location of mm module is known for grub is very nice here...)
the mm would then be the very first process in the system ... oi ... shouldn't init be the first process in a unix-like system? I'd have to LIE to some other processes in order to have init be the first one (in case of the enumeration... )
hm... at least the file system service process will be forked by mm with some tricks. lezz hack a little bit.
oh geez what for a sweet fragrance the sweat of thrill has...
micro kernel - start up
-
- Member
- Posts: 1600
- Joined: Wed Oct 18, 2006 11:59 am
- Location: Vienna/Austria
- Contact:
micro kernel - start up
... the osdever formerly known as beyond infinity ...
BlueillusionOS iso image
BlueillusionOS iso image
Re:micro kernel - start up
Don't you need the MM to add a task (ie allocate stack) In my OS the process is/will be:-
PRE MULTITASKING
init_mm()
init_tasks()
add_task(&init)
enable_ints
NOW MULTITASKING
void init()
{
init driver_x
init driver_y
kill_me()
}
Pete
PRE MULTITASKING
init_mm()
init_tasks()
add_task(&init)
enable_ints
NOW MULTITASKING
void init()
{
init driver_x
init driver_y
kill_me()
}
Pete