2016-05-22

2016-05-22 Recent Progress Update

I haven't posted an update in a while because I haven't had a lot of time to dedicate to my OS unfortunately.

Instead, most of my free time in the last year or so has been spent learning about and investigating newer .NET web technologies and how the Microsoft web development stack is changing.  That said, I have spent some time working on Atomicity and have advanced the plot on a few angles.  I'll write these up in full in future, but here are the headlines.

Trello


I have started managing my ideas and goals for this project using Trello.  The task board style is not the best fit for the project at present, but it has allowed my to record a good number of my own long-term goals and serves as a repository of ideas that are forming or research that has been performed.


Virtual Memory


Following on from getting the kernel working with paging enabled, I have extended the capabilities of the memory controlling section of code and gotten the system back to a booting state.  One of the most significant things here is that kernel now supports the sbrk() function call which is used by the C library to request another chunk of the address space to use when the previous chunk has all been allocated.  The user-land version of sbrk() isn't complete yet as it relies on the rest of the Process architecture to be in place.


Audio


I have completed the first iteration of the implementation of a PCM sound output subsystem.  This allows (or will allow) programs to open a "PCM:" device using the open() system call, then write sound data to the stream to be played out of various sound output devices (similar to Linux OSS).  While the implementation is complete and should work beautifully, it appears that the Bochs emulator is too slow to actually perform the sound multiplexing and real-time compression that I'm using to software mix different streams.  I will need to heavily optimise the code to get it to work, although at present I can't rule out that it just isn't working correctly.

I have a working HD Audio driver for my netbook test system, and at some point I'll marry the two together and see if they can literally make sweet music.


Directory Entry Enumeration


One of the last features I need to complete in the kernel API in order to have a fully working text console is to implement the directory entry enumeration functions.  While this may seem simple, it's the first API which requires a complex object return and isn't covered by the C library specification.  Windows and the Unix world have completely different structures for the returned data and the programmes written on those platforms have to be specifically tailored to interpret the correct one.

This seems like the perfect problem to solve with the Classes system.  I've only mentioned it in passing before in a couple of places, but this part of my OS is really going to be awesome and is likely to mean re-implementing lots of what I have done already (probably a new kernel codename and a lot of refactoring).  However, for now I'm likely to just pick one of the existing structures to emulate because I think getting the console working is a higher priority.


Hopefully this gives you some idea of where I am at present and where I'm going next with this project.  I'll write up the Virtual Memory and Audio topic up in full in future.

No comments:

Post a Comment