<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2943756546216380316</id><updated>2024-09-04T13:09:16.810+02:00</updated><title type='text'>Orion</title><subtitle type='html'>An operating system written for educational purposes.&lt;br&gt;&#xa;&lt;a href=&quot;http://orion-os.eu&quot;&gt;The official site&lt;/a&gt;&lt;br&gt;&#xa;&lt;a href=&quot;http://bit.ly/pmv2nT&quot;&gt; The repository &lt;/a&gt;&lt;br&gt;&#xa;&lt;a href=&quot;http://bit.ly/gnsUEo&quot;&gt;@bemk92 on twitter.&lt;/a&gt;</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://bemkorion.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2943756546216380316/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://bemkorion.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/2943756546216380316/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>35</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2943756546216380316.post-5948499971338373927</id><published>2012-05-20T13:04:00.003+02:00</published><updated>2012-05-20T13:04:10.784+02:00</updated><title type='text'>Compiling Andromeda</title><content type='html'>&lt;br /&gt;
&lt;div data-mce-style=&quot;text-align: justify;&quot; style=&quot;color: #333333; font-family: &#39;Helvetica Neue&#39;, Helvetica, Arial, sans-serif; font-size: 15px; line-height: 24px; margin-bottom: 1.625em; text-align: justify;&quot;&gt;
Andromeda is an interesting project, but in order to see what we&#39;re up to, you might just want to look beyond the code and into the binary.&lt;/div&gt;
&lt;div data-mce-style=&quot;text-align: justify;&quot; style=&quot;color: #333333; font-family: &#39;Helvetica Neue&#39;, Helvetica, Arial, sans-serif; font-size: 15px; line-height: 24px; margin-bottom: 1.625em; text-align: justify;&quot;&gt;
As of yet, there&#39;s not that much going on, but the mere fact that we&#39;ve got the possibility to boot, handle key-presses and actually have scrolling text on our screens is already quite a feat, for first time kernel programmers like us. Just imagine that the stuff going on in the background is a thousand times more epic than what you can see on screen.&lt;/div&gt;
&lt;div data-mce-style=&quot;text-align: justify;&quot; style=&quot;color: #333333; font-family: &#39;Helvetica Neue&#39;, Helvetica, Arial, sans-serif; font-size: 15px; line-height: 24px; margin-bottom: 1.625em; text-align: justify;&quot;&gt;
This article will guide you through the building sequence for the Andromeda kernel project. We will start of by getting our tool chain in place. We won&#39;t go into detail on how the tools work by them selves. That&#39;s what Google is for.&lt;/div&gt;
&lt;div data-mce-style=&quot;text-align: justify;&quot; style=&quot;color: #333333; font-family: &#39;Helvetica Neue&#39;, Helvetica, Arial, sans-serif; font-size: 15px; line-height: 24px; margin-bottom: 1.625em; text-align: justify;&quot;&gt;
Once we&#39;ve got our tool chain in place, we&#39;ll go into basic compiling. With that behind us, we&#39;ll look at the option for providing flags, and last but certainly not least, we&#39;ll go into booting the kernel.&lt;/div&gt;
&lt;h1 data-mce-style=&quot;text-align: justify;&quot; style=&quot;clear: both; font-family: &#39;Helvetica Neue&#39;, Helvetica, Arial, sans-serif; font-size: 15px; line-height: 24px; margin-bottom: 0.8125em; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;&quot;&gt;
Tool chain&lt;/h1&gt;
&lt;div data-mce-style=&quot;text-align: justify;&quot; style=&quot;color: #333333; font-family: &#39;Helvetica Neue&#39;, Helvetica, Arial, sans-serif; font-size: 15px; line-height: 24px; margin-bottom: 1.625em; text-align: justify;&quot;&gt;
To compile Andromeda, we will need the following:&lt;/div&gt;
&lt;ul data-mce-style=&quot;text-align: justify;&quot; style=&quot;color: #333333; font-family: &#39;Helvetica Neue&#39;, Helvetica, Arial, sans-serif; font-size: 15px; line-height: 24px; list-style-image: initial; list-style-position: initial; list-style-type: square; margin-bottom: 1.625em; margin-left: 2.5em; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify;&quot;&gt;
&lt;li style=&quot;color: inherit; font-style: inherit; line-height: 1.625;&quot;&gt;gcc&lt;/li&gt;
&lt;li style=&quot;color: inherit; font-style: inherit; line-height: 1.625;&quot;&gt;nasm&lt;/li&gt;
&lt;li style=&quot;color: inherit; font-style: inherit; line-height: 1.625;&quot;&gt;GNU-Make&lt;/li&gt;
&lt;li style=&quot;color: inherit; font-style: inherit; line-height: 1.625;&quot;&gt;ld&lt;/li&gt;
&lt;li style=&quot;color: inherit; font-style: inherit; line-height: 1.625;&quot;&gt;git&lt;/li&gt;
&lt;/ul&gt;
&lt;div data-mce-style=&quot;text-align: justify;&quot; style=&quot;color: #333333; font-family: &#39;Helvetica Neue&#39;, Helvetica, Arial, sans-serif; font-size: 15px; line-height: 24px; text-align: justify;&quot;&gt;
The compiler, assembler, make and linker respectively. For the ones that don&#39;t know what the different tasks of those tools are, here&#39;s a brief summary:&lt;/div&gt;
&lt;h2 data-mce-style=&quot;text-align: justify;&quot; style=&quot;clear: both; font-family: &#39;Helvetica Neue&#39;, Helvetica, Arial, sans-serif; font-size: 15px; line-height: 24px; margin-bottom: 0.8125em; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;&quot;&gt;
GCC&lt;/h2&gt;
&lt;div data-mce-style=&quot;text-align: justify;&quot; style=&quot;color: #333333; font-family: &#39;Helvetica Neue&#39;, Helvetica, Arial, sans-serif; font-size: 15px; line-height: 24px; text-align: justify;&quot;&gt;
The compiler compiles C code, and translates it into binary object files. The C compiler doesn&#39;t know about the layout of the final layout of the binary image. All it knows how to do is translate C statements into machine instructions.&lt;/div&gt;
&lt;h2 data-mce-style=&quot;text-align: justify;&quot; style=&quot;clear: both; font-family: &#39;Helvetica Neue&#39;, Helvetica, Arial, sans-serif; font-size: 15px; line-height: 24px; margin-bottom: 0.8125em; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;&quot;&gt;
NASM&lt;/h2&gt;
&lt;div data-mce-style=&quot;text-align: justify;&quot; style=&quot;color: #333333; font-family: &#39;Helvetica Neue&#39;, Helvetica, Arial, sans-serif; font-size: 15px; line-height: 24px; text-align: justify;&quot;&gt;
The assembler takes loose human-readable machine instructions and translates them into machine-readable machine instructions. The output is surprisingly similar to that of a compiler.&lt;/div&gt;
&lt;h2 data-mce-style=&quot;text-align: justify;&quot; style=&quot;clear: both; font-family: &#39;Helvetica Neue&#39;, Helvetica, Arial, sans-serif; font-size: 15px; line-height: 24px; margin-bottom: 0.8125em; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;&quot;&gt;
Make&lt;/h2&gt;
&lt;div data-mce-style=&quot;text-align: justify;&quot; style=&quot;color: #333333; font-family: &#39;Helvetica Neue&#39;, Helvetica, Arial, sans-serif; font-size: 15px; line-height: 24px; text-align: justify;&quot;&gt;
Make is the tool that is the conductor of this small orchestra. It tells the compiler or assembler to translate their code into binary instructions. Once this is done it tells the linker to put it all together.&lt;/div&gt;
&lt;h2 data-mce-style=&quot;text-align: justify;&quot; style=&quot;clear: both; font-family: &#39;Helvetica Neue&#39;, Helvetica, Arial, sans-serif; font-size: 15px; line-height: 24px; margin-bottom: 0.8125em; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;&quot;&gt;
LD&lt;/h2&gt;
&lt;div data-mce-style=&quot;text-align: justify;&quot; style=&quot;color: #333333; font-family: &#39;Helvetica Neue&#39;, Helvetica, Arial, sans-serif; font-size: 15px; line-height: 24px; text-align: justify;&quot;&gt;
The linker is the pasting tool. Until this point our sources have been translated into several binary images, but none of them are executable, because they have references to other files, which need to be linked together first.&lt;/div&gt;
&lt;h2 data-mce-style=&quot;text-align: justify;&quot; style=&quot;clear: both; font-family: &#39;Helvetica Neue&#39;, Helvetica, Arial, sans-serif; font-size: 15px; line-height: 24px; margin-bottom: 0.8125em; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;&quot;&gt;
Git&lt;/h2&gt;
&lt;div style=&quot;color: #333333; font-family: &#39;Helvetica Neue&#39;, Helvetica, Arial, sans-serif; font-size: 15px; line-height: 24px; margin-bottom: 1.625em;&quot;&gt;
&lt;a data-mce-href=&quot;http://git-scm.com/&quot; href=&quot;http://git-scm.com/&quot; style=&quot;color: #1b8be0; font-style: inherit; line-height: 1.625; text-decoration: none;&quot;&gt;Git, the stupid content tracker&lt;/a&gt;, is a quick and easy to use version keeping system, that&#39;s used by projects such as the Linux kernel and Android. This will be used to get our code, and maybe even do some work on it. Who knows?!&lt;/div&gt;
&lt;h1 data-mce-style=&quot;text-align: justify;&quot; style=&quot;clear: both; font-family: &#39;Helvetica Neue&#39;, Helvetica, Arial, sans-serif; font-size: 15px; line-height: 24px; margin-bottom: 0.8125em; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;&quot;&gt;
Compiling&lt;/h1&gt;
&lt;div data-mce-style=&quot;text-align: justify;&quot; style=&quot;color: #333333; font-family: &#39;Helvetica Neue&#39;, Helvetica, Arial, sans-serif; font-size: 15px; line-height: 24px; margin-bottom: 1.625em; text-align: justify;&quot;&gt;
In order to build the kernel, we&#39;ll be issuing the make command in the src directory of the repository. This command will read the Makefile and based on what we&#39;ve got there it will determine how to compile which source file.&lt;/div&gt;
&lt;div data-mce-style=&quot;text-align: justify;&quot; style=&quot;color: #333333; font-family: &#39;Helvetica Neue&#39;, Helvetica, Arial, sans-serif; font-size: 15px; line-height: 24px; margin-bottom: 1.625em; text-align: justify;&quot;&gt;
Make takes some arguments. One of them is &quot;-s&quot;. This silences make, and keeps the terminal relatively clean, and easy to read. Only warnings, errors and verbose messages will show up in the terminal, keeping it easy to follow what&#39;s happening.&lt;/div&gt;
&lt;div data-mce-style=&quot;text-align: justify;&quot; style=&quot;color: #333333; font-family: &#39;Helvetica Neue&#39;, Helvetica, Arial, sans-serif; font-size: 15px; line-height: 24px; margin-bottom: 1.625em; text-align: justify;&quot;&gt;
Another argument is the &quot;-j n&quot; option, in which n is the number of jobs with which you want to compile the kernel. Generally to optimize the compilation for your system, it is best practice to take the number of cores (if you have hyperthreading, you can use that) and double it.&lt;/div&gt;
&lt;div data-mce-style=&quot;text-align: justify;&quot; style=&quot;color: #333333; font-family: &#39;Helvetica Neue&#39;, Helvetica, Arial, sans-serif; font-size: 15px; line-height: 24px; margin-bottom: 1.625em; text-align: justify;&quot;&gt;
For example I have a core 2 dual, with 2 cores, so my most optimized command is:&lt;/div&gt;
&lt;pre data-mce-style=&quot;text-align: justify;&quot; style=&quot;background-attachment: initial; background-clip: initial; background-color: #f4f4f4; background-image: initial; background-origin: initial; color: #333333; font-family: &#39;Courier 10 Pitch&#39;, Courier, monospace; font-size: 13px; line-height: 1.5; margin-bottom: 1.625em; padding-bottom: 0.75em; padding-left: 1.625em; padding-right: 1.625em; padding-top: 0.75em; text-align: justify;&quot;&gt;make -sj 4&lt;/pre&gt;
&lt;h1 data-mce-style=&quot;text-align: justify;&quot; style=&quot;clear: both; font-family: &#39;Helvetica Neue&#39;, Helvetica, Arial, sans-serif; font-size: 15px; line-height: 24px; margin-bottom: 0.8125em; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;&quot;&gt;
Compiler flags&lt;/h1&gt;
&lt;address data-mce-style=&quot;text-align: justify;&quot; style=&quot;color: #333333; font-family: &#39;Helvetica Neue&#39;, Helvetica, Arial, sans-serif; font-size: 15px; font-style: inherit; line-height: 24px; margin-bottom: 1.625em; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;&quot;&gt;
To activate or disable some functionality in the kernel, there is a possibility to add some flags to the compilation. The easiest way to do this is to put the flags into the flags variable you hand to make. To enable a feature, the -D flag can be used. To disable, the -U flag is to be used. So for example to compile the slab allocator into the kernel the following command can be used:&lt;/address&gt;
&lt;pre data-mce-style=&quot;text-align: justify;&quot; style=&quot;background-attachment: initial; background-clip: initial; background-color: #f4f4f4; background-image: initial; background-origin: initial; color: #333333; font-family: &#39;Courier 10 Pitch&#39;, Courier, monospace; font-size: 13px; line-height: 1.5; margin-bottom: 1.625em; padding-bottom: 0.75em; padding-left: 1.625em; padding-right: 1.625em; padding-top: 0.75em; text-align: justify;&quot;&gt;make FLAGS=-D\ SLAB&lt;/pre&gt;
&lt;div data-mce-style=&quot;text-align: justify;&quot; style=&quot;color: #333333; font-family: &#39;Helvetica Neue&#39;, Helvetica, Arial, sans-serif; font-size: 15px; line-height: 24px; margin-bottom: 1.625em; text-align: justify;&quot;&gt;
or&lt;/div&gt;
&lt;pre data-mce-style=&quot;text-align: justify;&quot; style=&quot;background-attachment: initial; background-clip: initial; background-color: #f4f4f4; background-image: initial; background-origin: initial; color: #333333; font-family: &#39;Courier 10 Pitch&#39;, Courier, monospace; font-size: 13px; line-height: 1.5; margin-bottom: 1.625em; padding-bottom: 0.75em; padding-left: 1.625em; padding-right: 1.625em; padding-top: 0.75em; text-align: justify;&quot;&gt;make FLAGS=&quot;-D SLAB&quot;&lt;/pre&gt;
&lt;div data-mce-style=&quot;text-align: justify;&quot; style=&quot;color: #333333; font-family: &#39;Helvetica Neue&#39;, Helvetica, Arial, sans-serif; font-size: 15px; line-height: 24px; margin-bottom: 1.625em; text-align: justify;&quot;&gt;
Work is under way to building a kernel configuration editor, so not all flags will have to either be looked up or be remembered. For now, to find out which flags are available, key in make usage.&lt;/div&gt;
&lt;h1 data-mce-style=&quot;text-align: justify;&quot; style=&quot;clear: both; font-family: &#39;Helvetica Neue&#39;, Helvetica, Arial, sans-serif; font-size: 15px; line-height: 24px; margin-bottom: 0.8125em; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: justify;&quot;&gt;
Booting&lt;/h1&gt;
&lt;div data-mce-style=&quot;text-align: justify;&quot; style=&quot;color: #333333; font-family: &#39;Helvetica Neue&#39;, Helvetica, Arial, sans-serif; font-size: 15px; line-height: 24px; margin-bottom: 1.625em; text-align: justify;&quot;&gt;
There&#39;s a couple of different ways to boot Andromeda. The first and easiest is through the make test command.&lt;/div&gt;
&lt;div data-mce-style=&quot;text-align: justify;&quot; style=&quot;color: #333333; font-family: &#39;Helvetica Neue&#39;, Helvetica, Arial, sans-serif; font-size: 15px; line-height: 24px; margin-bottom: 1.625em; text-align: justify;&quot;&gt;
Make test builds the source tree (FLAGS variable works with this target as well) and then tries to run it in an Qemu/KVM environment. Qemu has a pretty convenient option to emulate grub, which we take advantage of here. For those that don&#39;t know what Qemu is, it is a virtual machine manager, and KVM means kernel-based virtual machine (the commands can pretty much be used interchangably).&lt;/div&gt;
&lt;div data-mce-style=&quot;text-align: justify;&quot; style=&quot;color: #333333; font-family: &#39;Helvetica Neue&#39;, Helvetica, Arial, sans-serif; font-size: 15px; line-height: 24px; margin-bottom: 1.625em; text-align: justify;&quot;&gt;
Another way is to create a director at /media/loop and download a floppy image from github. First you build the kernel, according to the instructions above, and then the image is put into the src/scripts directory. Next we issue the ./updatefloppy.sh command, which will ask you for your sudo password (please install sudo for this, if you haven&#39;t already).&lt;/div&gt;
&lt;div data-mce-style=&quot;text-align: justify;&quot; style=&quot;color: #333333; font-family: &#39;Helvetica Neue&#39;, Helvetica, Arial, sans-serif; font-size: 15px; line-height: 24px; margin-bottom: 1.625em; text-align: justify;&quot;&gt;
To recap, the options are:&lt;/div&gt;
&lt;pre style=&quot;background-attachment: initial; background-clip: initial; background-color: #f4f4f4; background-image: initial; background-origin: initial; color: #333333; font-family: &#39;Courier 10 Pitch&#39;, Courier, monospace; font-size: 13px; line-height: 1.5; margin-bottom: 1.625em; padding-bottom: 0.75em; padding-left: 1.625em; padding-right: 1.625em; padding-top: 0.75em;&quot;&gt;make test&lt;/pre&gt;
&lt;div style=&quot;color: #333333; font-family: &#39;Helvetica Neue&#39;, Helvetica, Arial, sans-serif; font-size: 15px; line-height: 24px; margin-bottom: 1.625em;&quot;&gt;
or&lt;/div&gt;
&lt;pre style=&quot;background-attachment: initial; background-clip: initial; background-color: #f4f4f4; background-image: initial; background-origin: initial; color: #333333; font-family: &#39;Courier 10 Pitch&#39;, Courier, monospace; font-size: 13px; line-height: 1.5; margin-bottom: 1.625em; padding-bottom: 0.75em; padding-left: 1.625em; padding-right: 1.625em; padding-top: 0.75em;&quot;&gt;make
cd scripts
wget https://github.com/downloads/Andromeda-Kernel/andromeda/floppy.img
./updatefloppy.sh; kvm -fda floppy.img -m 16M&lt;/pre&gt;</content><link rel='replies' type='application/atom+xml' href='http://bemkorion.blogspot.com/feeds/5948499971338373927/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bemkorion.blogspot.com/2012/05/compiling-andromeda.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2943756546216380316/posts/default/5948499971338373927'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2943756546216380316/posts/default/5948499971338373927'/><link rel='alternate' type='text/html' href='http://bemkorion.blogspot.com/2012/05/compiling-andromeda.html' title='Compiling Andromeda'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2943756546216380316.post-7826255726096044477</id><published>2012-05-03T16:21:00.000+02:00</published><updated>2012-05-03T16:21:17.920+02:00</updated><title type='text'>What is virtual memory?</title><content type='html'>&lt;br /&gt;
&lt;div style=&quot;background-color: white; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #373737; font-family: &#39;Helvetica Neue&#39;, Helvetica, Arial, sans-serif; font-size: 15px; line-height: 24px; margin-bottom: 1.625em; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; vertical-align: baseline;&quot;&gt;
Lately I have been working on the virtual memory system. Now most of you out there won’t know what virtual memory is, so here is a brief explanation.&lt;/div&gt;
&lt;div style=&quot;background-color: white; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #373737; font-family: &#39;Helvetica Neue&#39;, Helvetica, Arial, sans-serif; font-size: 15px; line-height: 24px; margin-bottom: 1.625em; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: center; vertical-align: baseline;&quot;&gt;
&lt;em style=&quot;border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;&quot;&gt;Virtual memory is the mechanism used to make all tasks think they’re the only task running on that system at any given time, unless communication through memory is desired, in which the operating system makes that possible through a mechanism called shared memory.&lt;/em&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #373737; font-family: &#39;Helvetica Neue&#39;, Helvetica, Arial, sans-serif; font-size: 15px; line-height: 24px; margin-bottom: 1.625em; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; vertical-align: baseline;&quot;&gt;
That’s virtual memory in one full sentence. If you still don’t get it, that’s perfectly understandable. So here is an explanation which is a tiny bit longer. It explains the goals of virtual memory and explains different approaches to solving the very same problem.&lt;/div&gt;
&lt;div style=&quot;background-color: white; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #373737; font-family: &#39;Helvetica Neue&#39;, Helvetica, Arial, sans-serif; font-size: 15px; line-height: 24px; margin-bottom: 1.625em; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; vertical-align: baseline;&quot;&gt;
When writing the code for any particular task on any system it’s a&amp;nbsp;nuisance,&amp;nbsp;to say the least, to have to keep the possible existence of other tasks on that system into account. The sole role of the operating system is to help other tasks run, and so what it does, is try to give the entire memory space, to each and every task.&lt;/div&gt;
&lt;div style=&quot;background-color: white; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #373737; font-family: &#39;Helvetica Neue&#39;, Helvetica, Arial, sans-serif; font-size: 15px; line-height: 24px; margin-bottom: 1.625em; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; vertical-align: baseline;&quot;&gt;
While the whole memory space won’t be possible due to technical restrictions (the kernel itself must be somewhere in memory as well), quite a lot can be made available to user space (that’s where user tasks run).&lt;/div&gt;
&lt;div style=&quot;background-color: white; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #373737; font-family: &#39;Helvetica Neue&#39;, Helvetica, Arial, sans-serif; font-size: 15px; line-height: 24px; margin-bottom: 1.625em; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; vertical-align: baseline;&quot;&gt;
One of the ways to get this all to work is to have each task ask the kernel for more memory each time they need it, while keeping all the data available to all the other processes. Sometimes, on architectures which don’t support memory protection, this is the only way to go forward.&lt;/div&gt;
&lt;div style=&quot;background-color: white; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #373737; font-family: &#39;Helvetica Neue&#39;, Helvetica, Arial, sans-serif; font-size: 15px; line-height: 24px; margin-bottom: 1.625em; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; vertical-align: baseline;&quot;&gt;
Another way is to have the processor translate the virtual addresses into physical ones while the kernel concerns itself with the allocation of physical pages (a page is a chunk of memory of a predefined size). When a process isn’t allowed to access a particular physical page, it is simply not mapped to any virtual address at the moment that task is running (again, besides the kernel, but this region of memory has other ways to protect itself).&lt;/div&gt;
&lt;div style=&quot;background-color: white; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #373737; font-family: &#39;Helvetica Neue&#39;, Helvetica, Arial, sans-serif; font-size: 15px; line-height: 24px; margin-bottom: 1.625em; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; vertical-align: baseline;&quot;&gt;
The advantage of the latter approach is that in this model it isn’t possible for one task to modify critical data or code in the other task. When it is desired to have two tasks sharing a region of space, that can be accomplished by mapping virtual pages in both tasks to the very same physical pages.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bemkorion.blogspot.com/feeds/7826255726096044477/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bemkorion.blogspot.com/2012/05/what-is-virtual-memory.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2943756546216380316/posts/default/7826255726096044477'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2943756546216380316/posts/default/7826255726096044477'/><link rel='alternate' type='text/html' href='http://bemkorion.blogspot.com/2012/05/what-is-virtual-memory.html' title='What is virtual memory?'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2943756546216380316.post-2121571597471059765</id><published>2012-04-19T14:27:00.001+02:00</published><updated>2012-05-21T20:41:27.229+02:00</updated><title type='text'>Printf flavours</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #373737; font-family: &#39;Helvetica Neue&#39;, Helvetica, Arial, sans-serif; font-size: 15px; line-height: 24px; margin-bottom: 1.625em; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;&quot;&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
I’ve been working on several things in the kernel lately. Among them are the slab allocator and the different flavours of the printf function (some of them).&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: white; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #373737; font-family: &#39;Helvetica Neue&#39;, Helvetica, Arial, sans-serif; font-size: 15px; line-height: 24px; margin-bottom: 1.625em; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;&quot;&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
I’ve now finished work (mostly) on these printf functions and I’m happy to present:&lt;/div&gt;
&lt;/div&gt;
&lt;ol style=&quot;background-color: white; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #373737; font-family: &#39;Helvetica Neue&#39;, Helvetica, Arial, sans-serif; font-size: 15px; line-height: 24px; list-style-image: initial; list-style-position: initial; margin-bottom: 1.625em; margin-left: 2.5em; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;&quot;&gt;
&lt;li style=&quot;border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; vertical-align: baseline;&quot;&gt;sprintf,&lt;/li&gt;
&lt;li style=&quot;border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; vertical-align: baseline;&quot;&gt;vsprintf,&lt;/li&gt;
&lt;li style=&quot;border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; vertical-align: baseline;&quot;&gt;fprintf and&lt;/li&gt;
&lt;li style=&quot;border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; font-family: inherit; font-style: inherit; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: justify; vertical-align: baseline;&quot;&gt;vfprintf.&lt;/li&gt;
&lt;/ol&gt;
&lt;div style=&quot;background-color: white; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #373737; font-family: &#39;Helvetica Neue&#39;, Helvetica, Arial, sans-serif; font-size: 15px; line-height: 24px; margin-bottom: 1.625em; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;&quot;&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
These functions have better formatting support than the current printf function. So in order to use these new formatting features one will have to make a string, format it using sprintf and then print it using printf.&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: white; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #373737; font-family: &#39;Helvetica Neue&#39;, Helvetica, Arial, sans-serif; font-size: 15px; line-height: 24px; margin-bottom: 1.625em; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;&quot;&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
As soon as we have a better self cleaning buffer in the kernel, we’ll implement it in the vga-text driver and make a new printf function that uses fprintf to write to stdout (which is connected to the driver).&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: white; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #373737; font-family: &#39;Helvetica Neue&#39;, Helvetica, Arial, sans-serif; font-size: 15px; line-height: 24px; margin-bottom: 1.625em; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;&quot;&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Also work on the slab allocator is progressing, albeit slowly. There’s a lot of thinking involved in building a slab allocator, and I’m hoping to do it well the first time. This means there’s even more thinking involved.&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: white; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #373737; font-family: &#39;Helvetica Neue&#39;, Helvetica, Arial, sans-serif; font-size: 15px; line-height: 24px; margin-bottom: 1.625em; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;&quot;&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Also this slab allocator will have to be used for page allocation, which makes the slab allocator come with a couple of restrictions (we can’t just assume we’ve got space everywhere outside of the text segment and&amp;nbsp;annoying&amp;nbsp;details like that). So for now we’re still using the slob (single list of blocks) allocator to do all the memory allocation for us, but we’re looking forward to a functional slab allocator (probably done in a couple of weeks).&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: white; border-bottom-width: 0px; border-color: initial; border-image: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; color: #373737; font-family: &#39;Helvetica Neue&#39;, Helvetica, Arial, sans-serif; font-size: 15px; line-height: 24px; margin-bottom: 1.625em; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;&quot;&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
That’s it for now!&lt;/div&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bemkorion.blogspot.com/feeds/2121571597471059765/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bemkorion.blogspot.com/2012/04/printf-flavours.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2943756546216380316/posts/default/2121571597471059765'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2943756546216380316/posts/default/2121571597471059765'/><link rel='alternate' type='text/html' href='http://bemkorion.blogspot.com/2012/04/printf-flavours.html' title='Printf flavours'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2943756546216380316.post-6317030507224024547</id><published>2012-02-11T12:01:00.000+01:00</published><updated>2012-02-11T12:01:15.876+01:00</updated><title type='text'>OSdev resources</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;
I know a couple of people interested in OS development but no clue on where to start, and even though I occasionally show them one or two of the sites I get my information from this blog post is supposed to give them a better set of pointers to documentation.&lt;/div&gt;
&lt;div class=&quot;western&quot;&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
I started programming in C using a good tutorial on
&lt;a href=&quot;http://www.cprogramming.com/tutorial/c-tutorial.html&quot;&gt;cprogramming.com&lt;/a&gt;.
Now I understand if this isn&#39;t enough for you and one book I highly
recommend is the C programming language by Kernighan and Ritchie.
Those are the two men behind the language and they&#39;ve found a way to
describe the language in a simple and brief way.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;western&quot;&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Also something worth learning, although not
absolutely necessary when joining an existing project is a form of
assembly language. I personally got started with &lt;a href=&quot;http://www.arl.wustl.edu/~lockwood/class/cs306/books/artofasm/toc.html&quot;&gt;the
art of assembly&lt;/a&gt;, and honestly haven&#39;t found a better resource
yet.&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;western&quot;&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;western&quot;&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Now we have some grasp of what it means to be a
programmer, we can start thinking about a simple kernel. For that
we&#39;ll go to a man called &lt;a href=&quot;http://jamesmolloy.co.uk/tutorial_html/index.html&quot;&gt;James
Molloy&lt;/a&gt;. He&#39;s written a tutorial which is very easy to understand.
It might not be the most powerful and flexible kernel out there, but
it&#39;ll get the job done for a first kernel. Also there&#39;s this
&lt;a href=&quot;http://wiki.osdev.org/Main_Page&quot;&gt;beautiful wiki&lt;/a&gt; on how
to do some things not covered in the tutorial.&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;western&quot;&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;western&quot;&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Another tutorial that may interest you is one that
follows the Windows path a little bit more as opposed to the Unix
route used by James Molloy. I&#39;m now talking about the &lt;a href=&quot;http://www.brokenthorn.com/Resources/OSDevIndex.html&quot;&gt;brokenthorn&lt;/a&gt;
web book. This is one of the first tutorials I&#39;ve found on the
subject and although I didn&#39;t take it&#39;s path it has taught me quite a
lot.&lt;/div&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bemkorion.blogspot.com/feeds/6317030507224024547/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bemkorion.blogspot.com/2012/02/i-know-couple-of-people-interested-in.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2943756546216380316/posts/default/6317030507224024547'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2943756546216380316/posts/default/6317030507224024547'/><link rel='alternate' type='text/html' href='http://bemkorion.blogspot.com/2012/02/i-know-couple-of-people-interested-in.html' title='OSdev resources'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2943756546216380316.post-5839449118898441981</id><published>2012-02-04T21:47:00.002+01:00</published><updated>2012-05-21T20:41:39.765+02:00</updated><title type='text'>The VFS</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;western&quot;&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
The virtual file system(VFS) is one of the most
important parts of the operating system. It handles communication
with permanent storage. In our case the VFS doesn&#39;t handle the file
operation them selves but requires the file system to give us
function pointers to work with.&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;western&quot;&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;western&quot;&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
A file in our VFS is nothing more than a data
structure with a pointer to the file system driver file, which itself
is attached to one of the permanent storage devices. This might seem
complex but it does provide us with a whole lot of possibilities,
which are provided not only by our system but also by others like
Linux and BSD.&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;western&quot;&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;western&quot;&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
The file system mounts still have to be written
though so I still can&#39;t go too deep into the implementation details
of those.&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;western&quot;&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;western&quot;&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
One thing we already have working though is a
special kind of file we call a buffer. When we open a file with the
initialiser function of the buffer it loads all of its functions into
the function pointers of the buffer and now allows us to read from,
write to, seek in and close the buffer like it&#39;s a normal file
somewhere on a disk. Internally it keeps all the data in the form of
a tree and when it&#39;s time to close the buffer, while no other part of
the application has opened it, it will remove all of it, which is
quite unlike a normal file.&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;western&quot;&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;western&quot;&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Because of the index variable, which is 64 bits,
the buffer supports files of up to 16.000 PiB. If you don&#39;t know what
that means. Well, lets just say that it&#39;s plenty for the coming
decade if not more (I personally have trouble filling my 320 GiB, and
that&#39;s roughly 0.002% of the buffer …).&lt;/div&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bemkorion.blogspot.com/feeds/5839449118898441981/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bemkorion.blogspot.com/2012/02/vfs.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2943756546216380316/posts/default/5839449118898441981'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2943756546216380316/posts/default/5839449118898441981'/><link rel='alternate' type='text/html' href='http://bemkorion.blogspot.com/2012/02/vfs.html' title='The VFS'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2943756546216380316.post-3711799422646171252</id><published>2012-02-04T21:47:00.000+01:00</published><updated>2012-05-21T20:41:48.782+02:00</updated><title type='text'>The driver model</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;western&quot;&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Since the beginning of this year we&#39;ve been busy
in the Andromeda team. One of the things we&#39;ve been working at is the
driver model. Our design is fairly simple, and I think I can explain
it, so here we go.&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;western&quot;&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
The device model consists of a tree of devices.
Starting with the root device. This is a virtual device to which
everything is attached in some form. Attached to this device are for
example the CPU&#39;s, memory, the PCI bus and some virtual buses.&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;western&quot;&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;western&quot;&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
The reason for choosing a tree instead of a plain
list of devices is simple. When the system is to shut down or to
suspend, we want to disable the devices first, then the buses and
last the power supply (if necessary). If we&#39;re to walk a plain list
things are to shut down in random order which might get interesting
since for example the PCI bus has been shut down before the graphics
card is so it never receives the shut down signal.&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;western&quot;&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;western&quot;&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
The reason why the CPU&#39;s, Memory and PCI are
attached to the root device are simply the fact that they are at the
head of the system. The reason for the virtual buses might not be so
obvious yet.&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;western&quot;&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
There are 2 virtual buses. One for virtual devices
which reside in memory and don&#39;t really have to be suspended, and
can&#39;t have physical hardware attached to them, and then there&#39;s the
legacy devices. These can be the VGA and PS/2 controller to name a
few.&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;western&quot;&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;western&quot;&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Devices in the model are nothing more than data
structures with a file pointer, open function, name/unique
identifier, driver pointer and a void pointer for special data
structures. When interaction with the devices is needed, the device
file can be opened and written to. The device might respond and by
reading from the device file the answer can be retrieved.&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;western&quot;&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;western&quot;&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
In the case of a permanent storage device this
file can hold pointers to partitions which can in turn hold files
which can then be mounted to the VFS.&lt;/div&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bemkorion.blogspot.com/feeds/3711799422646171252/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bemkorion.blogspot.com/2012/02/driver-model.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2943756546216380316/posts/default/3711799422646171252'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2943756546216380316/posts/default/3711799422646171252'/><link rel='alternate' type='text/html' href='http://bemkorion.blogspot.com/2012/02/driver-model.html' title='The driver model'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2943756546216380316.post-2961248972865973109</id><published>2012-02-04T21:46:00.000+01:00</published><updated>2012-05-21T20:41:59.972+02:00</updated><title type='text'>What we&#39;ve been up to</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;
I know, it&#39;s been a long while, and quite a bit has happened since.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
A summary of what&#39;s been done:&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;ol&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;A driver model has been designed and implemented and is nearing completion (aside from the actual implementation of drivers).&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;A virtual file system has been designed and implementations are on the way.&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;Network stack development is currently being done by Michel.&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;Ideas have formed on a new memory allocation algorithm.&lt;/li&gt;
&lt;/ol&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Now this doesn&#39;t sound like much but for two people it&#39;s quite a bit of work, considering the fact that in the design of core features in the kernel we prefer to guarantee quality.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
In following posts we&#39;ll go deeper into the separate items.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;ul&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;a href=&quot;http://bemkorion.blogspot.com/2012/02/driver-model.html&quot; target=&quot;_blank&quot;&gt;The driver model&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;a href=&quot;http://bemkorion.blogspot.com/2012/02/vfs.html&quot; target=&quot;_blank&quot;&gt;The virtual file system&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bemkorion.blogspot.com/feeds/2961248972865973109/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bemkorion.blogspot.com/2012/02/what-weve-been-up-to.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2943756546216380316/posts/default/2961248972865973109'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2943756546216380316/posts/default/2961248972865973109'/><link rel='alternate' type='text/html' href='http://bemkorion.blogspot.com/2012/02/what-weve-been-up-to.html' title='What we&#39;ve been up to'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2943756546216380316.post-3336826177012310876</id><published>2011-12-21T16:34:00.000+01:00</published><updated>2012-05-21T20:42:09.267+02:00</updated><title type='text'>Cleaning up</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;
Currently a lot of work is going into getting the repository clean again.&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
A lot of files have been placed in directories where they shouldn&#39;t be. For example, the directory src/sys shoudn&#39;t have existed.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
We&#39;ve been moving most files out to where they ought to be. For example, the error directory, which contained the panic function, has been moved to the kern directory, which by the way has been renamed to andromeda.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
This generated a file name conflict with the output binary, and as such we renamed that to andromeda.bin.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
In the mean time I&#39;ve been working on support for multitasking. We&#39;ve covered quite a lot of ground there, but as we speak a lot of code still has to be written. For example, we still don&#39;t have the possibility of switching contexts. Something I think is mandatory for multitasking. Now of course it can be done through some weird function pointer using scheduler, but I personally prefer to go with a traditional task switch.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
What does that mean?&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Well, basically it means that when an interrupt comes along, before we do anything else, we push all our registers to stack. When the interrupt is handled a couple more functions are called, probably pushing more onto the stack.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
When the time comes to switch tasks, what we do is we only store the stack pointer, just before the moment we swap the memory context, by loading another page directory pointer.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
When we have to load the old task again, all we have to do is first restore the directory pointer, and then use a link in kernel space (which is always present) to restore the stack pointer.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
When we then return to the interrupt handler, the registers will be restored to the state when the process was interrupted and the interrupt will be finished.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Basically that&#39;s the normal task switch. Does it sound complex? A little. Does it have to be this way? No, but it sure is the most extensible way of doing things. When a new register is added, all we have to do is remember to push in onto the stack in the interrupt handler and the rest can be dealt with in a more generic location.&lt;/div&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bemkorion.blogspot.com/feeds/3336826177012310876/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bemkorion.blogspot.com/2011/12/cleaning-up.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2943756546216380316/posts/default/3336826177012310876'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2943756546216380316/posts/default/3336826177012310876'/><link rel='alternate' type='text/html' href='http://bemkorion.blogspot.com/2011/12/cleaning-up.html' title='Cleaning up'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2943756546216380316.post-3734238149987137150</id><published>2011-12-07T00:15:00.001+01:00</published><updated>2012-05-21T20:42:17.013+02:00</updated><title type='text'>Out with the ugly hacks</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;
Considering the present time (0:14, at UTC+1) I&#39;m going to keep this one short.&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
I&#39;ve been working on getting scheduling working, and I found the GDT trick to be a little bit of a nuisance. As it turns out, I had a design in mind as a replacement for this trick.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
What does it do?&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Basically what we want is to have the kernel start at somewhere very high in memory, both tricks allow us to migrate the kernel code without endangering our more volatile code.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
The GDT trick requires us to exploit some feature in the CPU which isn&#39;t guaranteed (as far as I could find). Now this doesn&#39;t sound very nice, and isn&#39;t really portable too.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Now what I did was remove this trick and enabled paging very early on. This means that paging will actually replace the function of the GDT trick. Now this was kinda tricky since booting with the GDT trick might require one to do some very nasty stuff later on.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
This code still exists, so I had to enable that in the paging trick. Basically what we have now works.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
More info on this can be expected later.&lt;/div&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bemkorion.blogspot.com/feeds/3734238149987137150/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bemkorion.blogspot.com/2011/12/out-with-ugly-hacks.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2943756546216380316/posts/default/3734238149987137150'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2943756546216380316/posts/default/3734238149987137150'/><link rel='alternate' type='text/html' href='http://bemkorion.blogspot.com/2011/12/out-with-ugly-hacks.html' title='Out with the ugly hacks'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2943756546216380316.post-8196757433798259405</id><published>2011-11-23T20:17:00.001+01:00</published><updated>2012-05-21T20:43:20.927+02:00</updated><title type='text'>Still waiting</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;
So we didn&#39;t quite reach our deadline for November 4th.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
I think it has been a little too ambitious, considering the situations all developers are in now.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
So we&#39;re&amp;nbsp;definitely&amp;nbsp;working towards the 0.1.1 release, and among the things we already mentioned would be in there, we&#39;ll also feature file buffer support.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Now that doesn&#39;t say a lot though. Basically all it says is that we have something that resembles a file, which you can write to, and read from. Seeks are also supported, but unfortunately, we can&#39;t sync with disk, or even clean up read items in a one way stream/pipe ...&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Michel still is working on his PCI and APIC support and is thinking of including C++ code into the project (I wish him luck implementing the special operators, I&#39;ll continue doing C).&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Doubted is whether or not we will be able to put PCI and APIC into the next release. There&#39;ll be a small discussion on that and we&#39;ll get back to you when we&#39;ve got more news about the next release.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Until that time, the developers will be working on both school and the kernel.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Also, I&#39;ve managed to set up gitweb on my own server, so if you like you can subscribe to the rss/atom feeds on there: &lt;a href=&quot;http://orion-os.eu/gitweb/&quot; target=&quot;_blank&quot;&gt;http://orion-os.eu/gitweb/&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
I hope to have more news soon.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bemkorion.blogspot.com/feeds/8196757433798259405/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bemkorion.blogspot.com/2011/11/still-waiting.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2943756546216380316/posts/default/8196757433798259405'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2943756546216380316/posts/default/8196757433798259405'/><link rel='alternate' type='text/html' href='http://bemkorion.blogspot.com/2011/11/still-waiting.html' title='Still waiting'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2943756546216380316.post-1922062228200027991</id><published>2011-11-01T20:55:00.001+01:00</published><updated>2012-05-21T20:43:38.660+02:00</updated><title type='text'>A new release already?</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;
A new release is coming up on the horizon. We now have the date of Friday 4th of November 2011 planned for the release of Andromeda-0.1.1.&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
This will feature a brand new paging system, a new memory mapping system, minimal ACPI support and basic support for the Advanced Programmable Interrupt Controllers (APIC).&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
The paging system has been made in such a fashion that the memory requirement scales to the pages requested, instead of permanently occupying 4 Megs of RAM.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
The same goes for the new memory map, and did I already mention it is based on the size of the actual physical memory!&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
This means that we always occupy 0.2% of physical memory available for the memory map, and depending of the amount of virtual memory usage a little bit more for the page tables.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Also we&#39;ve conjured up a way to put the kernel at 3 GiB. It&#39;s called the overflow trick. The principle behind it is pretty simple. All you do is set up a segment which maps memory address 0 &amp;nbsp;to the 3GiB location and make it 4 GiB long or so. Then you jump into the higher half code.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Simple as that. All you need to do is page the code to both low and high memory, disable the overflow trick and unmap the low memory code, leaving only high memory in place.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Whenever some low address is required, all you need to do is add 1 GiB to the address and the 32-bits integer flows over when the segment is applied, and the correct pointer is used.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Simple, stable and effective (do watch out with virtual machines that don&#39;t properly emulate the 32-bits overflow, they can be a real pain sometimes).&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
The ACPI support is created by Michel Megens, so not much for me to mention on that part. The same pretty much goes for APIC support.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
And speaking of dates! My birthday was last Sunday (October 30th) at which I turned 19!&lt;/div&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bemkorion.blogspot.com/feeds/1922062228200027991/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bemkorion.blogspot.com/2011/11/new-release-already.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2943756546216380316/posts/default/1922062228200027991'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2943756546216380316/posts/default/1922062228200027991'/><link rel='alternate' type='text/html' href='http://bemkorion.blogspot.com/2011/11/new-release-already.html' title='A new release already?'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2943756546216380316.post-4704084408251992234</id><published>2011-10-16T23:28:00.000+02:00</published><updated>2012-05-21T20:44:22.075+02:00</updated><title type='text'>Continuing to move</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;
So I found this bug I was telling you about last blog post. It basically boils down to me having forgotten to map the entire lowest 15 MiB.&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
That means page faults, which cause a double fault (because the page fault isn&#39;t mapped), which causes a triple fault (reboot, because the double fault isn&#39;t mapped).&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
That&#39;s nice, I think, but now I have that settled, I need to remove it again after I disabled segmentation, otherwise we&#39;ve got a security leak on our hands, greater than the great wall of china.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
In the mean time I am trying to build a way to keep track of the memory that is mapped, and the memory that isn&#39;t. At the moment I&#39;ve got a system in place that produces&amp;nbsp;0.29296875% overhead on the entire memory system, at MOST versus a huge 6.6666....% using the old system (and yes I used a calculator for that! I&#39;m not that smart).&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
This is without counting the heap overhead, which go through the roof on very small allocations, but because that&#39;s too&amp;nbsp;unpredictable&amp;nbsp;I&#39;ve chosen to only count the paging system in.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
What needs to be done now?&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
First of all, the page fault system is to be written. This will in the future include swapping, but since file systems aren&#39;t supported yet, a swap file would be pretty useless. So if we run out of memory now, we just panic!&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Second the lowest 15 MiB must be released again. Once that&#39;s done, we can start doing work on getting all the features we broke by this, to get to work again.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
I see a&amp;nbsp;mammoth&amp;nbsp;task in the future, which means I&#39;m happy it&#39;s nearly autumn brake.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
In the mean time Michel is working on the ACPI tables and stuff like that. I hope he&#39;ll get to explain it to me in the near future. I sure wish to know this.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Also I&#39;m getting an Arduino board. Just for playing around. Maybe I&#39;ll attempt to port Andromeda, if the chip is even capable of the tricks we require.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
And there is a new server coming up. It&#39;s made with absolutely NO moving parts so that I can keep it running longer.&lt;/div&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bemkorion.blogspot.com/feeds/4704084408251992234/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bemkorion.blogspot.com/2011/10/continuing-to-move.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2943756546216380316/posts/default/4704084408251992234'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2943756546216380316/posts/default/4704084408251992234'/><link rel='alternate' type='text/html' href='http://bemkorion.blogspot.com/2011/10/continuing-to-move.html' title='Continuing to move'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2943756546216380316.post-8323221386549351263</id><published>2011-10-08T00:28:00.001+02:00</published><updated>2012-05-21T20:44:34.169+02:00</updated><title type='text'>Up, up and, well, you know the story</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;
Basically what I&#39;ve been working on is getting back to the higher half mode.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
The trick I&#39;ve chosen this time is the GDT trick, designed by Tim Robinson.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
What this means is that the image is linked to be at 3GiB and then we use paging to trick the CPU into thinking the code is where it should be.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
This is nice and all, but it does make things with physical memory addresses a little harder, and since that&#39;s the case I still haven&#39;t been able to get paging to work.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
The weirdest thing is that the debugging values seem to be correct, while the virtual machine still triple-faults (for non OS-developers, that&#39;s basically the PC throwing it&#39;s hands up in the air, saying: &quot;I can&#39;t fix this, do it your self!&quot;).&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
In the mean time Michel has been continuing work on the ACPI tables.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Besides that there is lack of a clearly defined website to go to for the kernel.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
We&#39;re working on that, but do keep in mind that we have higher priorities at the moment (such as school).&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bemkorion.blogspot.com/feeds/8323221386549351263/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bemkorion.blogspot.com/2011/10/up-up-and-well-you-know-story.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2943756546216380316/posts/default/8323221386549351263'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2943756546216380316/posts/default/8323221386549351263'/><link rel='alternate' type='text/html' href='http://bemkorion.blogspot.com/2011/10/up-up-and-well-you-know-story.html' title='Up, up and, well, you know the story'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2943756546216380316.post-2383979312830388826</id><published>2011-09-29T12:02:00.000+02:00</published><updated>2012-05-21T20:44:44.330+02:00</updated><title type='text'>A new release!</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;
The 0.1.0 release is here! Time to celebrate!&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
But exactly what are we celebrating?&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Well, in the 0.1.0 release we&#39;ve successfully merged Andromeda and OpenLoader under the name of Andromeda.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
If you were to look at the code, there still is a lot with of code with ol_ prefixes. This is legacy, and although&amp;nbsp;re-factoring&amp;nbsp;is a possibility, we&#39;re not actively going to search for this.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Also I want to give credit for at least half of the functions implemented in the 0.1.0 release to our new co-project-leader: Michel Megens.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Below is a list of what has changed since the 0.0.4 release in what we call Andromeda.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;Better heap allocator&lt;/li&gt;
&lt;ul&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;Heaps of bugs have been fixed&lt;/li&gt;
&lt;/ul&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;New paging system&lt;/li&gt;
&lt;ul&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;A complete rewrite&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;A new page frame allocation scheme&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;A page mapping scheme&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;Work is to be done on integrating the frame allocation and mapping&lt;/li&gt;
&lt;/ul&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;A start on a virtual file system&lt;/li&gt;
&lt;ul&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;Files are implemented minimally&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;Directories have been implemented&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;File references need to be created&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;Mount points aren&#39;t done yet&lt;/li&gt;
&lt;/ul&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;A possibility for very very low resolution graphics&lt;/li&gt;
&lt;ul&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;VGA at 320*240 like resolutions&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;Work is being done on 800*600&lt;/li&gt;
&lt;/ul&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;Better keyboard support&lt;/li&gt;
&lt;ul&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;Capitals and backspace working&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;PS2 controller now supported!&lt;/li&gt;
&lt;/ul&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;A start on disk drivers&lt;/li&gt;
&lt;ul&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;ATA support now has a stub&lt;/li&gt;
&lt;/ul&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;Error code centralisation&lt;/li&gt;
&lt;ul&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;Error codes can now be found in a single file.&lt;/li&gt;
&lt;/ul&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;The removal of floppy.img&lt;/li&gt;
&lt;ul&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;Make test works again.&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;floppy.img no longer required to test&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;Repository is cleaner&lt;/li&gt;
&lt;/ul&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;A start on the ACPI&lt;/li&gt;
&lt;ul&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;Added ACPI data structures&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;Implemented ACPI table search schemes&lt;/li&gt;
&lt;/ul&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;A start on the APIC&lt;/li&gt;
&lt;ul&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;Detection implemented but we&#39;re still using the legacy chip.&lt;/li&gt;
&lt;/ul&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;A better CPU interface&lt;/li&gt;
&lt;ul&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;The CPUID instruction now has a better implementation.&lt;/li&gt;
&lt;/ul&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;PCI support added&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;Multi processor support now has a stub.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bemkorion.blogspot.com/feeds/2383979312830388826/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bemkorion.blogspot.com/2011/09/new-release.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2943756546216380316/posts/default/2383979312830388826'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2943756546216380316/posts/default/2383979312830388826'/><link rel='alternate' type='text/html' href='http://bemkorion.blogspot.com/2011/09/new-release.html' title='A new release!'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2943756546216380316.post-4414020005192644625</id><published>2011-09-24T13:04:00.000+02:00</published><updated>2012-05-21T20:44:53.028+02:00</updated><title type='text'>On the move</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;
The project is going forward steadily and while we&#39;re still merging, some things are already moving forward again.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
One of them is the paging subsystem. Well, actually it&#39;s gone backwards but that&#39;s mainly because it&#39;s a rewrite (can&#39;t clean up without making a mess first).&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
One thing I&#39;m working on is getting the pages to be put in the page tables to be put in a page directory (yes, Intel couldn&#39;t make it simpler).&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
That&#39;s not really my issue here, but what is my issue is that I have to find out a way to get the pages to be marked free and used, without requiring 4MiB as I used to.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
I have got some designs ready, one of which is the old design, which was underwhelming to say the least. Another is a simple bitmap, with the processes maintaining their own page locations. The last one is to have a list of regions, which is a doubly linked list so the processes can also mark the pages as used for them selves. This does however put me at a 8MiB max. The sunny side, however is that there also is an 8 byte minimum, and that with a bit of work, the fragmentation could be resolved, to make the entire requirements just a bit smaller.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Now this 8 MiB max is only on 32-bits systems, as on 64-bits this can be doubled. The bitmap approach has got several advantages, one of which is that it&#39;s small and easy to maintain. That is until we&#39;re going to think about swapping pages out to disk. At that moment, all hell breaks loose, and code is flying around randomly.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
So my choice is this: &quot;Am I going for low memory usage, easy swapping or easy maintenance?&quot; You&#39;ll hear the answer soon (hopefully).&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bemkorion.blogspot.com/feeds/4414020005192644625/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bemkorion.blogspot.com/2011/09/on-move.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2943756546216380316/posts/default/4414020005192644625'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2943756546216380316/posts/default/4414020005192644625'/><link rel='alternate' type='text/html' href='http://bemkorion.blogspot.com/2011/09/on-move.html' title='On the move'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2943756546216380316.post-2523874260552661503</id><published>2011-09-20T13:40:00.000+02:00</published><updated>2012-05-21T20:45:02.354+02:00</updated><title type='text'>The dust is settling</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;
While the dust of the cosmic collision starts to settle we&#39;re still a long way away from the total merge of the projects.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
At the moment it&#39;s more the drivers that are being implemented in the Andromeda kernel. Michel is the one responsible for that.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
In the mean time Steven feels like he can&#39;t do a thing since the change is going so&amp;nbsp;rapidly.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
And me, what am I doing?&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Well, I&#39;m primarily focussing on the same stuff as before the merge and that is getting the paging system up to par. At the moment work is being done on the basics of the paging system and while I feel it isn&#39;t sufficient in the long run (when this might be ported to 64 bits systems) for now it&#39;ll do and will probably even be good (according to the standards we&#39;re working with now).&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
So what is going to change?&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
To start with work is being done on drivers such as Intel&#39;s Advanced Programmable Interrupt Controller or APIC. In the mean time work also is being done on ACPI or Advanced Configuration and Power Interface (which is a disaster to work with). That is what is imported from Openloader.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
In the mean time we&#39;re also taking over the Openloader boot procedure and this is also a work in progress.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Also we&#39;re doing work on getting the kernel into higher half, which is where the new paging system comes in. It has to support identity paging which is that the same page can be referenced by multiple virtual addresses. This, in combination with relocatable code and a whole lot of rather simple arithmetic on relocating the heap, will allow us to relocate the entire kernel into the 3GiB region or the -2 GiB region on AMD 64 systems.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Work also is being done on the graphics systems, but that is basically what has been going on all the time since Steven joined, and we&#39;re looking to merge the makefiles.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
The heap code had some significant bugs, which are now resolved, but no guarantees can be given that it is now bug free.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
So while the dust is settling, the merging is far from complete and the legacy of the two projects will probably remain visible for months, if not years to come.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bemkorion.blogspot.com/feeds/2523874260552661503/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bemkorion.blogspot.com/2011/09/dust-is-settling.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2943756546216380316/posts/default/2523874260552661503'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2943756546216380316/posts/default/2523874260552661503'/><link rel='alternate' type='text/html' href='http://bemkorion.blogspot.com/2011/09/dust-is-settling.html' title='The dust is settling'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2943756546216380316.post-8561924989977907865</id><published>2011-09-11T17:12:00.000+02:00</published><updated>2012-05-21T20:45:13.126+02:00</updated><title type='text'>Cosmic collision</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;
This blog post marks quite an important moment in what now used to be Andromeda as we know it, since we&#39;re doing something bonkers.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Basically what we&#39;re doing is calling the boot loader by Michel Megens the&amp;nbsp;Milky way&amp;nbsp;and sped up time.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
If you&#39;re not aware of what&#39;s going to happen in a couple of million years, well, here&#39;s a quick explanation: &quot;Boom!&quot;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
If that doesn&#39;t cut it for you, well, Andromeda and the Milky way are both galaxies (not sweets) and Andromeda is the only galaxy moving towards the Milky way (aka us).&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
This means the two will collide in a couple of million years and the two galaxies will likely merge.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
That&#39;s exactly what Openloader and Andromeda (the kernel) are doing. We&#39;re fusing.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Since the end result will still be a kernel the name of the kernel will persist, but the project structure will likely change.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
In galactic terms this means the two black holes at the centre of the galaxies will revolve around each other but not merge. In project terms, this will mean we have two project leaders.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Michel being involved with the direct hardware interfacing, while Bart will be focussing on the higher level algorithms such as scheduling, paging and other kinds of memory management.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
The merging of two galaxies is a lengthy process and often messy. I don&#39;t see why the merging of the two projects will be different, but all together we will likely gain more mass and momentum (at least that&#39;s the general idea).&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
You can still use https://github.com/bemk/andromeda as main repository, but the official one now resides at&amp;nbsp;&lt;a href=&quot;https://github.com/Andromeda-Kernel/andromeda&quot;&gt;https://github.com/Andromeda-Kernel/andromeda&lt;/a&gt;.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
We hope the dust of this collision will soon settle down so we can continue what we were doing before this.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bemkorion.blogspot.com/feeds/8561924989977907865/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bemkorion.blogspot.com/2011/09/cosmic-collision.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2943756546216380316/posts/default/8561924989977907865'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2943756546216380316/posts/default/8561924989977907865'/><link rel='alternate' type='text/html' href='http://bemkorion.blogspot.com/2011/09/cosmic-collision.html' title='Cosmic collision'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2943756546216380316.post-4640377916484863498</id><published>2011-08-31T09:34:00.000+02:00</published><updated>2012-05-21T20:45:29.332+02:00</updated><title type='text'>Bugs, bugs, bugs and more bugs</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;
Yeah, the title says enough, I&#39;m afraid.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
I think it would be an understatement to say that we found SOME bugs last summer break. We found a lot.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
First up was a series of bugs related to the fact that the ELF loader didn&#39;t fully comply with the standards. Once that was found it was an easy fix.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Further, what we&#39;ve unearthed is quite an impressive bug, this bug is related to the paging system, which by the way, is by no means finished yet.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
It&#39;s this last bug that I&#39;ve been working on since a while and the last several days I&#39;ve been getting some small clues of where the bug could be.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
At first we thought it could be a memset issue, but by replacing the current memset with a simpler one, we eliminated that as the possible and most obvious cause.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
We then continued with some other obvious culprit which was the memory allocation system, which we started testing. During these tests we figured out that the allocator wasn&#39;t the issue.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
This led me to thinking about the issue in a new light. From the paging perspective, and so I did a little test, to figure out where in memory this bug starts.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
As it turns out, once we enter a level of memory above a certain number, we cause page-faults, which in turn cause more page-faults, and so forth.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
This issue is probably due to the way I approach paging, but it leads to the more interesting question. What is precisely going wrong, since without knowing that, we can&#39;t fix the issue.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
That&#39;s what we&#39;re doing now, so we probably won&#39;t meet this sprints target, but that doesn&#39;t really matter, as the bugs resolved will have a way higher priority.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
That&#39;s it for now,&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Hope you had a nice summer break, and see you next post.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bemkorion.blogspot.com/feeds/4640377916484863498/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bemkorion.blogspot.com/2011/08/bugs-bugs-bugs-and-more-bugs.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2943756546216380316/posts/default/4640377916484863498'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2943756546216380316/posts/default/4640377916484863498'/><link rel='alternate' type='text/html' href='http://bemkorion.blogspot.com/2011/08/bugs-bugs-bugs-and-more-bugs.html' title='Bugs, bugs, bugs and more bugs'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2943756546216380316.post-4510318269593407597</id><published>2011-07-20T14:33:00.000+02:00</published><updated>2012-05-21T20:47:09.148+02:00</updated><title type='text'>Chaos in the project?</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;
Strange title, maybe?&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Well, yes. There is a little bit of chaos in the project, mainly because it&#39;s vacation season, so that means that everybody will spend some time away from the project and most things which would normally go well, don&#39;t now.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Another source of chaos might be the fact that, up until the last release I had a pretty good idea of where I would like to go with the project. I need it to be in high memory and I want that to be done in a simple fashion, which I think I have completed by now.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Next up I thought I&#39;d look at streams and everything, but it turns out now that we need at the very least a simple virtual file system. Now that very simply put means that I don&#39;t have a clue what I&#39;m doing.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
I have been reading this book written by Andrew S. Tanenbaum and it does give a nice overview, but it&#39;s all theory, and like we all know, there is a difference between theory and practice. Oh-yeah, there are some differences all right.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Now I&#39;m not going to sum it all up for you, but it boils down to the fact that I have a lot of questions and pretty much nothing at hand to answer it all, besides the book, which I&#39;m still reading.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
I&#39;m at the same time also looking at the OS dev wiki and have found some interesting bits of info there as well.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
So, what can one expect to happen until September the first, when this sprint should be done.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Basically just us lagging severely behind. I think I might have overlooked the gravity of some of the functions and that in planning terms will cost us dearly.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Now this doesn&#39;t matter anyway, as I still don&#39;t have a clue of when the 1.0.0 release should be.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
One thing is for sure though, and that is that the 0.0.5 release might have a little less than one&#39;d expect it to have, more because of the gravity of the features, than because of the lack of planning in the vacation (which is why the sprint ends first of September instead of August the first).&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Speaking of summer break, what am I going to do?&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Well, I&#39;m going to France for a couple of weeks, and the neighbours will be watching over the plants and everything.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
My sister is not going with us for the very first time, because she gets to go to language training camp in&amp;nbsp;Cambridge&amp;nbsp;(lucky arse).&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
In the mean time I&#39;m pretty sure Steven will keep going with the graphics drivers and stuff like that.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
So I think that&#39;ll be it for now and I plan on posting again when I&#39;m back.&lt;/div&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bemkorion.blogspot.com/feeds/4510318269593407597/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bemkorion.blogspot.com/2011/07/chaos-in-project.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2943756546216380316/posts/default/4510318269593407597'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2943756546216380316/posts/default/4510318269593407597'/><link rel='alternate' type='text/html' href='http://bemkorion.blogspot.com/2011/07/chaos-in-project.html' title='Chaos in the project?'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2943756546216380316.post-8214577799385780956</id><published>2011-07-11T20:31:00.001+02:00</published><updated>2012-05-21T20:47:29.273+02:00</updated><title type='text'>And here comes the fourth release</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;
Yep, its time for the fourth development release also known as 0.0.4.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
This release features the ability to:&lt;/div&gt;
&lt;ul&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;Respond to interrupts (again),&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;Load in the core image and&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;Compile the core image.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
The previous release (the overhaul of the project layout) should actually have been part of this release, but it was so much of a change that I thought it was worth its own release, this making this the fourth release.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
I certainly did a short silly dance once I had the elf loading done for sure (probably not a soul that&#39;s seen it, lucky me), because this was a point I was working toward from the beginning of the project.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Up next (at least for me) is the revising of the printf functions and the way text is displayed on screen. This actually might get in the way of Steven a little, but I don&#39;t care as he is on vacation anyway.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
The next release is scheduled in September, and that might seem an awful long time from now, but keep in mind that the summer breaks are in the middle of this, and that I&#39;ll be gone for 21 days here.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Steven has been delivering code, but unfortunately this is not testable, and thus is shifted to the next sprint, which actually starts today (Monday, June the 11th of 2011).&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
We wish Steven a nice vacation and hope he will be able to make some good progress in my absence.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
We also wish to thank him for the server space he&#39;s provided.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;a href=&quot;https://github.com/bemk/andromeda/tree/0.0.4&quot;&gt;This is a link to the tag formed during the 0.0.4 release.&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bemkorion.blogspot.com/feeds/8214577799385780956/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bemkorion.blogspot.com/2011/07/and-here-comes-fourth-release.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2943756546216380316/posts/default/8214577799385780956'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2943756546216380316/posts/default/8214577799385780956'/><link rel='alternate' type='text/html' href='http://bemkorion.blogspot.com/2011/07/and-here-comes-fourth-release.html' title='And here comes the fourth release'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2943756546216380316.post-6855745297247595220</id><published>2011-07-09T12:34:00.000+02:00</published><updated>2012-05-21T20:48:09.147+02:00</updated><title type='text'>Major break through</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;
I know this post is a little early, but I don&#39;t care, since we have had this major breakthrough last nigt.&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
It doesn&#39;t seem like much, but if you&#39;re a little familiar with the project you&#39;ll realise that the fact that we have Elf loading working, is a HUGE thing.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
The reason why it such an impressive feat is because everything has been made from scratch.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&quot;So?&quot; You might ask.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Well, We&#39;ve had to initialise a heap, use that heap (did that with a first fit algorithm), print some text to screen, and set up paging.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
The first big breakthrough was when I had a heap working, the second was paging, even though that one isn&#39;t really finished yet. The last in this sequence is Elf loading, since it puts every thing together.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
It basically pulls the interesting stuff out of the image and pasts it somewhere in memory (defined by the image). The weird thing is that the batch of memory requested might not even exist. That&#39;s difficult since we actually need it.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Not to worry, we have a way of doing things to make this all possible. It&#39;s called virtual memory. Basically what it does is split the address space up into 4KB pages, and a page is then connected to a physical batch of memory, allowing for pages to exist in memory addresses which don&#39;t exist in the physical address space.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
This does however come with a problem. Since the virtual address space is 4 GB in size and the actual memory size is something random, that might spawn the problem of a lack of physical memory. Now that&#39;s solved by swapping the pages out to disk.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
This however hasn&#39;t been implemented, which has a very simple reason. We don&#39;t have file system support, and thus we aren&#39;t able to write to or read from disk.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Guess what&#39;s up next in the planning?&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Well, yes, graphics, but besides that?&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Indeed, file systems support. This will likely be a three tier approach.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Tier 1: The virtual filesystem (vfs), this is what you interface with as user/programmer.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Tier 2: The filesystem driver(fs driver), which is what looks up the physical position on a physical hard drive, regardless of what type of drive you use.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Tier 3: The disk driver, which takes commands from the filesystem driver to access specific blocks on the drive, without the need to know about filesystems.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
How this will be implemented needs some thinking though. Are we going to implement the inodes in the vfs, or will that be supported in the fs driver, and if so where will we keep track of mount points.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
If you have ideas, they&#39;re always welcome of course.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Another thing that desperately needs to be done is the design of a logo. Now for more info &lt;a href=&quot;http://orion.ksvbfinx.forty.versio.nl/?q=node/15&quot;&gt;go here&lt;/a&gt;.&lt;/div&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bemkorion.blogspot.com/feeds/6855745297247595220/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bemkorion.blogspot.com/2011/07/major-break-through.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2943756546216380316/posts/default/6855745297247595220'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2943756546216380316/posts/default/6855745297247595220'/><link rel='alternate' type='text/html' href='http://bemkorion.blogspot.com/2011/07/major-break-through.html' title='Major break through'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2943756546216380316.post-8797511574607108474</id><published>2011-07-07T14:06:00.002+02:00</published><updated>2012-05-21T20:48:34.048+02:00</updated><title type='text'>The fourth release already?</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;
So it&#39;s been a while since last blog post. I know. Last time we were still in 0.0.2, and now I&#39;m already talking about 0.0.4!&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
What&#39;s happened you might ask. Well, if we open &lt;a href=&quot;http://www.orionos.tk/&quot;&gt;the new site&lt;/a&gt;, we will see several things there. There is a sprint backlog over there, which explains what we&#39;re currently working on before the next release. There&#39;s a product backlog which represents all the future features, and there&#39;s some more general info.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
The sprint page shows you what we&#39;re doing and what&#39;s done. I&#39;ll make a quick summary for you, since this page will likely be updated in the near future.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
We&#39;ve:&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;Set up a site,&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;Finished the header analysis,&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;Done a new project layout,&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;and verified the elf header.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
What&#39;s more is, I&#39;ve actually just finished work on making the core image compile.&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Now the work on the core image isn&#39;t finished yet, as it still needs testing (it&#39;s now in to verify) en might thus go back into the in progress, or even the todo if the issues appear to severe.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
In the mean time Steven has been doing some work on getting the graphics going, and even though we don&#39;t always agree, he does his best, and quite often produces good work. Hence he&#39;s also got several topics.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
He&#39;s also working on a feature which isn&#39;t in the sprint. The feature needs to be done for sure, but will probably be introduced in the master branch at around 0.0.5 (Oh my god, I&#39;m already talking about an 0.0.5 release!).&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
In the mean time I have had official verification that I may continue at school into the second year!&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Now for more info check out the site at&amp;nbsp;&lt;a href=&quot;http://orionos.tk/&quot;&gt;http://orionos.tk/&lt;/a&gt;.&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
A quick side note though. Because of energy saving and the target audience primarily being in Europe, the server will be down between 23:00 UTC until 7:00 UTC.&lt;/div&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bemkorion.blogspot.com/feeds/8797511574607108474/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bemkorion.blogspot.com/2011/07/forth-release-already.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2943756546216380316/posts/default/8797511574607108474'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2943756546216380316/posts/default/8797511574607108474'/><link rel='alternate' type='text/html' href='http://bemkorion.blogspot.com/2011/07/forth-release-already.html' title='The fourth release already?'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2943756546216380316.post-2339482484619024423</id><published>2011-06-24T23:39:00.000+02:00</published><updated>2012-05-21T20:50:00.828+02:00</updated><title type='text'>What&#39;s going on here?</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;
If you have been following the code lately you will have seen several things changing, quite dramatically.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
One of which is that there is a new contributor, named Steven van der Schoot. His name already was in the &amp;nbsp;CREDITS file, but his role actually has changed dramatically.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Previously, all he was known for was the printhex function, which couldn&#39;t do much more that print out numbers in hex. I thought that was a bit messy, as I also wanted something that could do binary, decimal and octal, and just hacked them together into a single function. (If you know the maths it&#39;s not that dificult, I admit).&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Now he has more time because he has passed his final secondary school exams, for which I wish to congratulate him.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
But he has decided to do several things with his spare time. One of which is Mincecraft. The other? The VGA driver for the platform.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Yes, we already had text output, and that probably won&#39;t change in the near future, but what he is enabling here is much more than basic text printing. Basically the bootloader configures you to use VGA text mode, which enables you to write characters to a location somewhere in memory. Now that a driver is coming up, we still be writing to this buffer, be it in another location, only god (and my paging code) knows where in physical memory. But once this is done, what he can do, is start focussing on drawing shapes to screen. Such as rectangles, triangles and circles.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Now that sounds fantastic and all, we&#39;ve got graphics working, or ... do we?&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Technically, yes, but don&#39;t get too impressed. I still don&#39;t know anything about resolution, but for all I know VGA is basically crappy, not being able to go over 640x480, at, what was it? 256 or 16 colours.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Now this is nice and all, but it doesn&#39;t really have my priority. I&#39;m more worried about getting the source code in a new layout, which enables me to make a difference between the compressed image (or nano kernel. Yes I&#39;m changing the terminology here) and the core image on basis of path, in contrast to a complex, hard to notice, easy to forget while writing ifdef structure.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
This is actually the reason why you see these huge spikes in the impact graphs on &lt;a href=&quot;https://github.com/bemk/andromeda/graphs/impact&quot;&gt;github&lt;/a&gt;. It basically boils down to the entire project being assigned a new location, which generates a huge impact, while in reality, nothing changes in the content. It&#39;s a mere process of copying and removing.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
I am going to have to do some work on the makefiles though, and I probably am not going to like doing so. The make files need to get more scalable, as I know that they aren&#39;t exactly doing so as of now.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
But is your elf code done?&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Well, no.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
I needed to get my loaf away from it for a second. Making the project more scalable had a higher priority than elf code. Despite the elf code being half done. This is due to the fact that I&#39;m no longer the sole developer of this project and I need to make it possible to give the other developer(s) all the space they need.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
I still don&#39;t know where I should put Stevens drivers for example. The drivers could be necessary for the nano kernel, since the drivers need to be installed from unreal mode, and the core image can&#39;t go there any more (unless you have 3,5 gigs or more). I could also do v8086 mode, but I feel like that could pose security issues.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
I still haven&#39;t figured it out yet, but I&#39;m working on it. Fortunately with a new developer.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bemkorion.blogspot.com/feeds/2339482484619024423/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bemkorion.blogspot.com/2011/06/whats-going-on-here.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2943756546216380316/posts/default/2339482484619024423'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2943756546216380316/posts/default/2339482484619024423'/><link rel='alternate' type='text/html' href='http://bemkorion.blogspot.com/2011/06/whats-going-on-here.html' title='What&#39;s going on here?'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2943756546216380316.post-498034516507226588</id><published>2011-06-16T10:32:00.000+02:00</published><updated>2012-05-21T20:50:30.213+02:00</updated><title type='text'>Is it me, or has it been a while?</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;
It&#39;s not you. It indeed has been a while and it is all due to the fact that this week is exam week at school. Those things require my attention a little more than the kernel.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
So you&#39;ve done nothing to the kernel since last update?&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Well, that&#39;s not&amp;nbsp;entirely true. I&#39;ve been reading the Elf32 specifications and have managed to pull some more info from the Elf headers. Among which is a segment with a type number that doesn&#39;t appear to make sense according to the specifications.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
However, after doing some googling I found out that Linux uses its own types. One of those is a stack segment, in which the kernel is specified to reserve room for the stack. In normal circumstances that&#39;s nice, but since my kernel sets up its own stack I&#39;m just going to ignore this segment.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
As for the rest?&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Well I&#39;ve been redoing my printhex function so that it now prints numbers in every base in the range from 2 to 36. All printf has to do now is call this printnum function with the number (named index), base, a boolean called signed and a boolean for capital characters.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
So I guess that&#39;s all.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Well, not entirely. I have also changed the layout of the Orion project itself. Andromeda now no longer is merged into the Orion source tree. It rather is imported as sub-module. This means that when you import the Orion source tree, all you get is a .gitmodules file and a bunch of empty directories.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
You then have to do git submodule init; git submodule update; to get the sources from the sub-projects.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Now that&#39;s all.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
And what can we expect for the future?&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Well, school is about to break up for the summer, which renders me a lot of spare time. I&#39;ll be spending some of that spare time in the woods with my dog, and some of that time in France. I will also be spending some of that time on the project, so don&#39;t worry about that.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
I think the summer break up will give me more time to do work on the project so you might see the impact graphs show a lot more impact.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bemkorion.blogspot.com/feeds/498034516507226588/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bemkorion.blogspot.com/2011/06/is-it-me-or-has-it-been-while.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2943756546216380316/posts/default/498034516507226588'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2943756546216380316/posts/default/498034516507226588'/><link rel='alternate' type='text/html' href='http://bemkorion.blogspot.com/2011/06/is-it-me-or-has-it-been-while.html' title='Is it me, or has it been a while?'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2943756546216380316.post-727579086882752324</id><published>2011-06-01T23:32:00.000+02:00</published><updated>2012-05-21T20:50:59.702+02:00</updated><title type='text'>What? Nothing new?</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;
Well, according to my dictionary elves are typically irritating little things, and that is exactly the way Elf loading turns out to be. A whole heap of irritating little things.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
So I&#39;ve been busy for sure, but I also have school and other things to keep working on, so unfortunately this one feature will return to this weeks sprint, and I have a very irritating little feeling that it will continue to come back to the next sprint for a while.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
This basically means we have to put up with the slowing development for a while. If I have to choose between school and this project, I&#39;ll definitely opt for school, and as it turns out, that is exactly the choice I have to make this weekend.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
I don&#39;t expect to do a lot this week, because all the work I do is really the time I have left when all of my spare time is divided.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
I have hacked together a little document on scheduling though. It can be found at humane hours (from 7:00 through 23:00 GMT) behind &lt;a href=&quot;http://bemk.dyndns.info/orion/Scheduling.pdf&quot;&gt;this link&lt;/a&gt;.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bemkorion.blogspot.com/feeds/727579086882752324/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://bemkorion.blogspot.com/2011/06/what-nothing-new.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2943756546216380316/posts/default/727579086882752324'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2943756546216380316/posts/default/727579086882752324'/><link rel='alternate' type='text/html' href='http://bemkorion.blogspot.com/2011/06/what-nothing-new.html' title='What? Nothing new?'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>