Ghost Kernel

Threaded system calls and ring 0 thread support added 2019/03/04, 21:38:10

The redux branch has now support for kernel-level threads and threaded system calls. The previous implementation only supported userspace-threads which had some advantages but also made specific call implementations more complicated. This approach will improve efficiency and allows a better scheduling implementation in the long run.

There were some interesting problems to solve; due to the fact that a kernel thread might get interrupt while holding a kernel lock, the g_mutex implementation must now keep track of the number of locks held per processor. As long as a task holds kernel locks, no other task will be scheduled until the task is finished with its work.

System calls can now be registered as threaded or direct calls. When a threaded call is executed, the respective handler is called within a kernel-level thread. These processing tasks are reused for successive system calls by the same task. This allows preemption during call processing and avoids blocking the scheduler for long-running requests.

0 comments

Documentation available 2019/02/24, 16:00:18

The documentation can now be found here. It will be regularly updated from the GitHub repository.

Some parts where already updated to match the redux branch, but some parts are also mostly relevant for the existing code.

If you are interested in building Ghost by yourself, there are now instructions available.

0 comments

Started redux 2019/02/23, 18:18:34

Updated to binutils 2.31 and gcc 8.2.0. With this branch I've finally started what I planned for a longer time - doing a bigger refactoring of the codebase.

The main focus will be rewriting the taskign implementation. In my initial plan I thought it would be feasible to implement syscall-logic that takes some time within waiter structures. These waiters got pretty complex by now and I feel it makes more sense to use actual kernel threads for some tasks.

You can follow the progress on the redux branch on GitHub.

I've also updated the documentation on how to build Ghost on your local machine - I'm working on getting it on this website soon.

12 comments

Planning something new 2018/04/17, 10:14:39

As you maybe noticed, I've not been very active in the project within the last months. The main cause for this is that I've moved to a different city I was really quite busy.

Currently thinking about rewriting some parts, I want to clean up some things that are not quite as I want them to be. There are some smaller issues but there are also a few design flaws that might require reworking some parts of the codebase.

Nothing sure yet, but I will post updates here. If you have any suggestions, feel free to leave some comments!

Btw: check out MeetixOS, an OS based on Ghost Kernel and actively developed by Marco. Check his page for updates meanwhile!

0 comments

Meet MeetixOS, the first Ghost-derived OS project 2017/05/01, 18:22:49

Few days ago, a fellow programmer contacted me and revealed a project he has started:

MeetixOS - an operating system derived from the Ghost OS. It extends the kernel with some features and adds various applications.

https://github.com/MarcoCicognani/MeetiX-OS-Project

It is nice to see what's possible with the kernel already and what the Marco was able to build on top of it. Great work!

I'm very interested to see which way this project will go and how we can collaborate together.

Keep it up!

0 comments