Re: implementing the process abstraction in movitz
Frode Vatvedt Fjeld <[email protected]> Sun, 21 Nov 2004 18:58:20 +0100
| Newsgroups | gmane.lisp.movitz.devel |
|---|---|
| Message-ID | <[email protected]> |
Muli Ben-Yehuda <[email protected]> writes: > First of all, I think movitz is very cool. I've been thinking for a > long time of writing a lisp OS, and was very happy to stumble up on > movitz. I am now considering implementing the process abstraction > (namely, fork(), wait(), some variant of exec(), and context > switching) in movitz, as an OS project, along the lines of the > attached proposal. [..] Hi (again), sounds like an interesting project to me. I think the first thing you need to make clear for yourself is the exact nature of the fork() etc. That is, the normal unix fork() sets up a new address-space etc and in principle shares nothing with anyone else (except perhaps by copy-on-write semantics) and communicates purely through system-calls (in various forms). Is this what you want to do? In theory you could quite literally implement unix fork() this way, in the sense that if you set up an address-space, exception handlers, an elf-loader etc and emulate e.g. the linux system-calls, then you should be able to run linux processes this way (although I suppose it'll be a substantial job, reimplementing the linux kernel..) Or something more lispy with a single-address-space system where you share e.g. the common-lisp package (with symbols, functions, etc) between the processes? Btw. I expect to implement some lightweight threading stuff in Movitz soon, I expect to need it for the thesis I'm working on. -- Frode Vatvedt Fjeld