Mini Status February 2017

Just a quick note since I haven’t put any commits up in a while. After my previous post about abandoning the JIT case in favor of a quick static compiler with a distributed type system, I spent some time in December adapting the TCC codebase to run on Viridis infrastructure. I was finishing up with […]

Thoughts on JIT

A week ago I detailed Vua, a memory safe language that unprivileged Viridis programs have to use in order to exist within a single memory context. I also mentioned I have a decent amount of preliminary work done generating a bytecode for this language, and it seems like the next logical step is to interpret […]

Status September 2016

This started as a July status, but I kept wanting to dig just a little deeper to give a more detailed update. As I mentioned in the June status, the core idea of Viridis is to create a zero copy operating system with a finer grain unit of execution than the process or thread. The […]

Status June 2016

In a break from the in-depth technical format of the previous posts, in this post I’ve elected to give a brief snapshot on development and just intersperse links to interesting bits and pieces and let the code speak for itself. My reasoning for this shift is that it’s just too time consuming to write in-depth […]

Page Allocation and Basic VGA

In this article, we’ll build on our previous work to tackle one of the core duties of a kernel: memory management. Concepts Page Allocation In our last article, we jumped through all of the hoops to get our kernel into a 64 bit C environment. Now we can start looking toward writing drivers, and the […]

Long Mode

In this article, we’ll expand on our previous work of getting a trivial chunk of C to get loaded and run by GRUB2. We’re going to complete the basic boot process and get in to a 64-bit C environment. Concepts Long Mode Long Mode is 64-bit mode. The AMD64 spec changes a lot of the […]

The NULL kernel

In this article, we’ll take our previous work getting GRUB2 on a QEMU disk and actually use it to boot code that we’ve written. Don’t get too excited. Mostly we’re going to focus on getting a working Makefile and coaxing GCC into creating an ELF binary without being Linux specific. The Code The kernel we’re […]

Preliminary Work: Getting GRUB2 on a qemu disk

In this article, we’ll cover the very first step in writing a toy operating system: preparing a disk to boot your kernel from. We’ll be using GRUB (GRand Unified Bootloader) version 2, which has plenty of nice features, is modern, and is what Linux uses so it’s very well tested. Assumptions This is not a […]