Ghost Kernel

Forking and copy-on-write 2014/11/14, 20:28:15

To (get the possibility to) port some Unix programs to Ghost, the kernel now supports fork(). This also led to extending the physical memory management a little to keep reference counts for pages that are shared between processes. There is now also copy-on-write for physical pages within the image and heap area of a process.


UI work & website update 2014/11/07, 20:27:02

I've made some major changes to make updating this page a little easier, and also make it a little more beautiful. :)

Single-lined textfields do now work with full mouse-support, also there are checkboxes, labels and some other components. I added layout managers, which are similar to the ones of Java's Swing. Currently I work on shape painting and vectors to get some fast and scalable graphics for checkbox and stuff.


Multiprocessing works! 2014/10/13, 20:25:59

The kernel now supports multiple cores. This required some changes in the scheduling model and the use of locks for critical kernel sections; next will be some optimizations regarding these locking mechanisms to improve overall performance. Then I guess shared libraries will be the next major ToDo.


ACPI, APIC & I/O APIC 2014/10/13, 20:00:00

Today I started implementing multiprocessor support for Ghost. I'm switching from the older 8259 PIC to the new APIC and its counterpart, the I/O APIC. This included writing some logic to read the ACPI tables and get the necessary information from there - bad luck by now if you don't have a computer with ACPI tables or an APIC. I'll have to check if a PIC fallback makes sense.

The BSP's APIC and its timer are already working fine and the I/O APIC setup information is stored. Next I'll configure the I/O APIC so that it lets keyboard/mouse interrupts through, once this is done theres only the wonderful step of making the entire kernel reentrancy-safe left to actually get multiprocessor support. That's gonna be interesting!


Capri & some eye candy 2014/09/29, 20:00:00

Quite some stuff happened in the last month. My development mostly focused on Capri, the build tool used for Ghost (will soon create a subpage here to allow everyone to use it). As it basically has all the features that you would want from a simple script language, the decision was made to publish it as a multi-purpose scripting language, not only as a build tool. More info comes soon.

I rewrote some parts of the window manager, that gives much better performance now. Each windows has its own buffer now, and may request when it needs to be repainted. The log output was reduced and seperated in debug, info and error levels. This makes booting even faster and less verbose, except you need the information. The text rendering was also cleant up a little, and I wrote the first usable text component:

Once the basic components like buttons, combo-boxes, scrollbars and more are implemented, I'll write a UI programming interface to allow programs to create their own interaces. Stay tuned!