<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>G33K @ Work &#187; GCC</title>
	<atom:link href="http://www.geekatwork.de/tag/gcc/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.geekatwork.de</link>
	<description>Basteleien eines Geeks</description>
	<lastBuildDate>Mon, 12 Jul 2010 08:38:54 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>GeexOS</title>
		<link>http://www.geekatwork.de/projekte/geexos/</link>
		<comments>http://www.geekatwork.de/projekte/geexos/#comments</comments>
		<pubDate>Mon, 14 Dec 2009 00:26:44 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[GCC]]></category>
		<category><![CDATA[LD]]></category>
		<category><![CDATA[OS]]></category>
		<category><![CDATA[OSDev]]></category>

		<guid isPermaLink="false">http://galauner.de/wp/?page_id=5</guid>
		<description><![CDATA[Irgendwann, im Laufe eines Informatikstudiums, hört ma [...]]]></description>
			<content:encoded><![CDATA[<p>Irgendwann, im Laufe eines Informatikstudiums, hört man auch mal sowas ähnliches wie &#8220;Architektur von Rechnersystemen und Betriebsystemen&#8221;. Und da sich die dort vorgestellten Verfahren ja alle so einfach anhören und man sowas schon immer mal machen wollte, fängt man als Geek dann plötzlich an ein Betriebssystem zusammenzuhacken: Das GeexOS.</p>
<p>Wer jetzt schon heiß auf Code ist, kann ihn hier bekommen: <a href="http://github.com/G33KatWork/GeexOS" target="_blank">github</a></p>
<p>Die Architektur, die dieser Kernel haben soll, ist ein Mikrokernel. Bisher ist davon allerdings nicht viel implementiert, da ich mir seit ein paar Monaten versuche Gedanken über die Speicherverwaltung im Kernel zu machen und sowieso nicht immer Lust habe an diesem Projekt weiterzuarbeiten.</p>
<p>Aktuell Implementierte Features:</p>
<ul>
<li>Ein-/Ausgabe von Text über einen 80&#215;25 Zeichen Textmodus auf dem Monitor</li>
<li>Ein-/Ausgabe von Text über eine serielle Schnittstelle</li>
<li>Bootstrapping eines x86 Prozessors und Umgebung (Protected Mode, Interrupts, PIC, PIT)</li>
<li>Interrupthandling, welches bisher noch sehr Plattformabhängig ist</li>
<li>Ansätze eines HALs</li>
<li>Paging</li>
<li>Timer</li>
<li>Das Buildsystem, basierend auf GNU make</li>
</ul>
<p>Im master-Branch auf GitHub findet man noch einen implementierten Heap, den ich mitlerweile aber wieder weggeworfen habe, da ich ihn durch einen SLAB-Allocator mit etwas besserem Virtuellem Speichermanagement im Hintergrund ersetzen möchte.<br />
Eine weitere Designentscheidung, die ich im Züge des neuen Speichermanagements getroffen habe, ist das der Kernel auf einem 32 Bit System die vollen 32 Bit an virtuellem Speicher bekommen wird und nicht in den virtuellen Speicher eines jeden Prozesses eingeblendet wird. Dies geht zwar mit einem Performanceverlust einher, da ich bei jedem Systemaufruf oder Interrupt das Page Directory wechseln muss und somit der TLB (Translation Lookaside Buffer) geleert werden muss. Wie hoch dieser Verlust sein wird, weiß ich allerdings nicht. Mac OS X macht das auch so und das ist auch noch schnell.</p>
<p>Alle diese Änderungen befinden sich momentan im Branch 4gbKernel auf github.</p>
<p>Weitere geplante Features sind:</p>
<ul>
<li>Ein Scheduler mit Interprozesskommunikation über Shared Memory</li>
<li>Dieser Shared Memory kann auch auf anderen Rechnern liegen und das System kann somit verteilt werden</li>
<li>Einige Userspace System-Daemons, die Sachen wie das Prozessmanagement, Userspace Speicherverwaltung, Netzwerk, Dateisysteme etc. übernehmen</li>
<li>Einige Userspace Libs, die Posix implementieren, um GNU-Software ausführen zu können</li>
<li>Evtl. einen DOS-Kompatiblitätslayer</li>
</ul>
<p>Bis diese Sachen wirklich alle implementiert sind wird allerdings noch einiges an Zeit vergehen.</p>
<p><a rel="lightbox" href="http://www.geekatwork.de/wp-content/uploads/Bildschirmfoto-2009-12-18-um-20.58.00.png"><img class="alignnone size-medium wp-image-45" title="GeexOS 4gbKernel Branch" src="http://www.geekatwork.de/wp-content/uploads/Bildschirmfoto-2009-12-18-um-20.58.00-300x188.png" alt="GeexOS 4gbKernel Branch" width="300" height="188" /></a><br />
Screenshot des Aktuellen 4gbKernel-Branches in einem Qemu.</p>
<p><a rel="lightbox" href="http://www.geekatwork.de/wp-content/uploads/scheduling.png"><img class="alignnone size-medium wp-image-223" title="scheduling" src="http://www.geekatwork.de/wp-content/uploads/scheduling-300x188.png" alt="GeexOS Scheduler" width="300" height="188" /></a><br />
Screenshot mit kleinem Scheduler, der Kontextwechsel zwischen 2 Threads ausführt.</p>
 <p>Feel free to Flattr this post at <a href="http://flattr.com/" title="Flattr" target="_blank">flattr.com</a>, if you like it.</p> <p><a href="http://flattr.com/" title="Flattr" target="_blank"><img src="http://www.geekatwork.de/wp-content/plugins/flattrss/button-compact-static-100x17.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.geekatwork.de/projekte/geexos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apple und der GCC</title>
		<link>http://www.geekatwork.de/2008/08/23/apple-und-der-gcc/</link>
		<comments>http://www.geekatwork.de/2008/08/23/apple-und-der-gcc/#comments</comments>
		<pubDate>Sat, 23 Aug 2008 15:08:24 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
				<category><![CDATA[The usual rants]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[GCC]]></category>
		<category><![CDATA[LD]]></category>
		<category><![CDATA[Linker]]></category>
		<category><![CDATA[Linkerscript]]></category>
		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">http://galauner.de/wp/?p=34</guid>
		<description><![CDATA[Grmpf... Da freut man sich, dass Apple auf den supertol [...]]]></description>
			<content:encoded><![CDATA[<p>Grmpf&#8230; Da freut man sich, dass Apple auf den supertollen GCC und seine komplette Toolchain setzt und dann das:<span id="more-34"></span></p>
<pre class="brush:plain">[15:56:09][andy@geekbook:~/Desktop/oskrempel/kernel]
|-&gt; ld -T linker.ld loader.o kernel.o kernel.bin
ld: unknown option: -T
</pre>
<p>Wieso? Klar&#8230; Apple hat einiges am GCC verändern müssen, um ihn Mac OS-Komptabibel zu bekommen. Aber wieso bitte gibt es keinen Support für Linker Scripte?</p>
<p>Selbst Google hat dazu nicht viel ausgespuckt, ausser die Empfehlung sich einfach einen vollwertigen GCC zu installieren. MacPorts sei dank geht das ja relativ einfach. Dauert nur ewig. Mein MacBook ist jetzt schon gut 3 Stunden damit beschäftigt.</p>
<script type="text/javascript">
var flattr_wp_ver = '0.9.11';
var flattr_uid = 'G33KatWork';
var flattr_url = 'http://www.geekatwork.de';
var flattr_lng = 'en_GB';
var flattr_cat = 'text';
var flattr_tag = 'blog,wordpress,rss,feed';
var flattr_btn = 'large';
var flattr_tle = 'G33K @ Work';
var flattr_dsc = 'Basteleien eines Geeks';
</script>
<script src="http://api.flattr.com/button/load.js?v=0.2" type="text/javascript"></script> <p>Feel free to Flattr this post at <a href="http://flattr.com/" title="Flattr" target="_blank">flattr.com</a>, if you like it.</p> <p><a href="http://flattr.com/" title="Flattr" target="_blank"><img src="http://www.geekatwork.de/wp-content/plugins/flattrss/button-compact-static-100x17.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.geekatwork.de/2008/08/23/apple-und-der-gcc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
