There is a new stable version in the cvs.
This new stable version brings:
* a new module called HandleManager which takes care of all handles used by a task;
* remake of FSManager, FileSystem and BlockBuffer interfaces;
* bug fix in the fdcontroller module to work with bochs 2.2.5
I did not release .tgz files this time. You can get the source from the cvs if you want.
I will be working in the MemManager and TaskManager interface so they can use Set/GetLastErrors functions too.
After a long pause I'm back with a new ModulOS release.
In all this time ModulOS evolved slowly, but did not stop! A lot of changes were done.
Some of these changes are: a new error reporting architecture using Get/SetLastError functions from TaskManager interface, better synchronizers in TaskManager, some interfaces changes to fix type-punned warning using gcc, IDE disk support, partition support, etc.... read more
A new year is starting and I want to resume the development of ModulOS.
I will try to write more docs/specification before implementing something.
Next steps are: plan a new error code checking and IDE support.
Finally it is possible to execute simple Linux binaries, for instance /lib/ld-2.2.5.so.
The boot disk has this program and also a simple "Hello world" program that does not work because the syscalls used by it are not implemented.
Very few syscalls were implemented, just the ones needed to execute ld-2.2.5.so.
Another interesting change it is the possibility of functions that return pointers to returns error codes too using a new scheme of the ErrorManager interface.... read more
After a lot of changes, it is now possible to load Linux programs. Only load because any system call will kill the program.
To be possible to load Linux programs, a new interface was created. The UserSpaceManager, which is responsable for user memory space management and program execution.
Some functions that were in the UserModManager interface have moved to the UserSpaceManager.
Besides this new interface, ModulOS now has the ExecLoader which is responsable for loading an executable.... read more
In the last months I've made some changes that are visible to user modules (programs).
I've changed the way libs used by an executable module are started. Now the loading of lib modules is done by UserModManager, but starting and stoping of libs must be done by executable modules.
Besides that, libs don't need to start their own used libs. Only the executable module need to do it.
Another big change was made on the way programs use the input/output interface. Now the InterManager interface doesn't has functions specific to input or output devices. A program must get them direct from the input/output module.... read more
After too long without a release, finally I've finished the new boot process of ModulOS.
This new boot process is much better. It's easier to install and update modules. But it's a little bit slower.
All that horrible stuff of generating the startfile, copy it to disk, know the inode number, etc, is gone. Now one just needs some simple steps to create a boot disk.
Was hard work, but it worth the job. As I said before, the development is slower, but it won't stop!... read more
A lot of bug fixed, mainly one that caused a reset on some machines. On some computers the code that enabled memory line A20 caused the computer to reset. Now ModulOS uses Linux code to do that and I hope I've solved the problem.
Beside bug fix, new features were implemented like not implemented functions in an interface, stack size of an executable module defined in the executable module file, support for Alt Gr key translations, and more.... read more
A new memory manager was done. I've merged somethings that were in the UserModManager and now we have everything related to memory management in the same place. Much better!
Besides merging the memory manager, new functions were added. Now ModulOS has support for shared memory and the module that implements UserModManager interface already uses this to execute modules. Much simpler!
Another thing that changed was the InterManager interface. The event scheme now can send system events to programs too. The UserModManager interface, for instance, sends an event to the father of a destroyed task. Very similar to Unix signals.... read more
Some bugs of the last release were fixed and now I'm publishing a floppy bootdisk image that one can use to boot ModulOS. You can use this bootdisk with Bochs (bochs.sourceforge.net). I use it for my tests.
This bootdisk has a VERY simple shell that only supports cd and ls, but it's a beginning!
Besides that, some docs were updated and enhanced.
I'll be working on the InterManager interface now. I've some ideas to implement.
More user libs are ready. With these libs a simple shell is closer.
Important changes were made in UserModManager interface to support allocation of memory pages and to implement a memory manager lib for user modules.
Besides that, now system interfaces have a different name space than user ones. This way there's no problem with a user interface having the same name of a system interface and vice versa.... read more
The first user library is done! It's the Exception, which makes exception handling simple.
It's a simple library, but necessary. Cause, with this library, executable modules (programs) don't need to use assembly to setup the stack, etc.
I'll be working on the next user library: UMemManager.
Keyboard module was improved and now it supports different keyboard layouts! To support keyboards layouts interface KbdLayout was created.
Another module that has changed was the video. Interface VideoController doesn't exist anymore. It was replaced by interface TextVideo and GraphicVideo. One for text mode and the other for graphic.
To support these new interfaces, module InterManager has changed too. But it isn't very good. It needs improvements.... read more
After 2 months of hard work, I've finished the new design of the file system layer. Now we have something much better.
This new file system layer comes with a lot of new things. Such as: directory entry's name cache, block cache, inode cache, new functions - including for user modules, etc
Besides that, SysModManager, UserModManager and TaskManager interfaces changed. New functions were added and some of them have new syntax.... read more
Exception handling has been greatly improved. And now user modules can handle their exceptions.
With this new interface was easy to implement dynamic user stack growth.
Another big change was in arguments passing from user modules to system modules. Now ModulOS uses something like FreeBSD and Windows NT arguments passing scheme. Each function that can be called by user modules has an attribute with the number of arguments to copy from user stack into system stack.... read more
In the last days I've improved task manager, implementing a new schecule algorithm. It's a simple round-robin where priority defines quantum size.
I've improved usermodmanager too, including new functions to copy data from/to user memory space and finish a program. Now usermodmanager frees an executable module's memory when it exits.
Now I'll work a little bit with argv and envv and dinamic grow of program stack.
It's now possible to run programs in ModulOS, although there's no system module doing that.
Although it's possible to run modules, including using shared libraries, a lot must be done in UserModManager. Such as adding more features, stability and security. But I hope this will be done soon.
The system module that will run the first program is the InterManager, which on a multiuser system will do the login and on a single user system will run a shell.... read more
Finally ModulOS supports dynamic start and load of modules, allowing read of modules from disk without the need of a new startfile.
To make this possible a new approach to modules load was developed. In previous version, modules were loaded only when a page fault exception occured.
Now, each module must start all its used modules through StartModule function from SysModManager interface.
Next step is to run programs.
Now ModulOS has support for file systems, floppy controller and ext2 file system used on Linux.
They're simple implementations that don't handle all errors, but they work.
I'm making available mkext2boot program too, that makes a file with ext2 file system boot ModulOS. Now it's possible to create a floppy disk to boot ModulOS or, what I do, create a file that Bochs (http://bochs.sourceforge.net) uses as floppy disk. ... read more
A paper explaining how to develop a system module is available now.
It briefly presents the development process of a system module.
FSManager, FileSystem and BlockDev interfaces are available.
These interfaces are necessary to have access to file systems and block devices such as: floppy disks, HD.
I already have a FSManager interface implementation, a FileSystem implementation for Ext2fs and a BlockDev implementation for floppy disk controller.
Soon I will make them available.
Now I'm doing an article explaining how to develop modules for ModulOS.
The first public version of ModulOS is out.
There isn't much in this version, but it shows how ModulOS is made and it makes possible to other people help develop ModulOS.
There's a lot of things to do such as: file systems, make it possible to execute user programs, user interface, drivers, etc.
But I believe that with ModulOS model (an extremely modular one) the development of new modules will be easier. ... read more
I'm making the ModulOS project public.
I hope that in a few weeks I'll put in the site everything I already have.
I already have +- 15 classes specifications and +- 12 implemented modules. Actually, I've already boot ModulOS!
Wait and you'll see.