The microkernel IPC was re-designed (and re-implemented) from scratch. It uses ports and channels (similar to ports and sockets) and a message can be shared or not, in the latter case the pages are copy-on-writed from sender to receiver (if the message is very short then is copied).
Other improvements and bug fixes was also introduced.
Support for threads was added to the kernel. The model is pretty clean: every thread belongs to the same process (same pid) and a fork duplicates the whole process (every thread).
The mynos-core taskswitch policy changed from hardware (jump to tssd) to software. In the meanwhile the fork implementation changed and the sched() function was added too.
Next steps will be threads, timers and a real scheduler.
Stay tuned!
Advanced IPC under specification phase; in the meanwhile we have developed and tested the serial driver (running as a daemon process as the keyboard one). Services can register dynamically with the kernel. A screenshot shows the daemon printing a message received from the serial port (using bochs and the serial port emulation). We have conducted a private test sending messages via the serial port from/to a sinclair spectrum old computer.
List of available daemons: keyboard, serial, simple readonly ramdisk, ocaml virtual machine.
Semaphores have been implemented. Now there is also a first implementation of process queues management.
The Inter Process Communication buffer check is now implemented.
After a long night's work, a preliminary version of IPC has been implemented. Currently, send, receive and receiveAll are implemented. Send and receive take a pid as the party's identification, and all communication primitives work in either synchronous or asynchronous (nonblocking) mode. Limitations: no control over buffer permissions, the trasmission involves 2 copies of the message.
To test the behavior of the communication syscalls, a simple readonly ramdisk service has been implemented. MyNOS is now a microkernel with its first service.... read more
We are eager and willing to switch from "planning" to "alpha" stage. Some of the things that are presently in the kernel are preliminar, but some are stable. Even if we want to improve all components, we know we will not until we get to a more complete system, using which the necessity to improve such components arises.
For this reason, efforts will take place in the near future to take the project to a point where we can claim alpha stage. To do so, we need to implement interprocess communication (IPC). A preliminary, simple-minded implementation will do, for now; either way, it'll call for synchronization mechanisms like mutexes, some sort of scheduler, etc.... read more
Kernel can load static ELF modules. Ocaml virtual machine has been successfully tested.
we have compiled and linked the ocaml virtual machine against the dietlibc and ran it as a process on mynos kernel, using as a input a simple program in ocaml bytecode. it works (see screenshot page)
Fork has been implemented (in a simple fashion) without copy-on-write. If you can provide us with info on how to implement copy-on-write for nested forks please contact us.
The allocate-on-fault feature was added in the past days to the MyNOS pages management.
the kernel memory management is under development. Paging is already enabled. We are coding the pages management and a malloc prototype.
Soon the code will be available on cvs.