micro kernel - start up

Question about which tools to use, bugs, the best way to implement a function, etc should go here. Don't forget to see if your question is answered in the wiki first! When in doubt post here.
Post Reply
distantvoices
Member
Member
Posts: 1600
Joined: Wed Oct 18, 2006 11:59 am
Location: Vienna/Austria
Contact:

micro kernel - start up

Post by distantvoices »

"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...
... the osdever formerly known as beyond infinity ...
BlueillusionOS iso image
Therx

Re:micro kernel - start up

Post by Therx »

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
Post Reply