[Berlin-wireless] Lizenzpolitik von OpenWrt
Stefan Sperling
stsp
So Nov 25 19:11:58 CET 2007
On Sun, Nov 25, 2007 at 06:40:55PM +0100, Alina Friedrichsen wrote:
> > ja, es gibt AFAIR linux fuer mmulose systeme.
>
> Kann ich mir nicht vorstellen. Wie leuft dann die Speicherverwaltung?
> Mit Segmenten bzw. Selectoren (GDT) wie beim 286er? Irgentwie muess
> der User-Space ja ein Flat-Memory-Model zu sehen bekommen ohne das es
> Adressueberschneidungen gibt.
Die Details weiss ich nicht so genau.
Ungefähr sollte das so vor sich gehen:
Binaries (Format: FLT ("flat"), nicht ELF) werden als ein chunk ins
RAM gepackt. Wenn der Speicher so stark segmentiert ist dass kein
chunk gross genug ist kann das Programm nicht starten.
Die Programme sind mit -fPIC kompiliert (Position Independent Code).
Der loader passt alle Addressen mit einem Global Offset Table (GOT) an,
und dann läuft das Program los, in dem ihm zugewiesenen chunk (ob alle
segmente in dem chunk sind weiss ich nicht, es kann auch sein dass
die segmente halt alle irgendwo liegen wo gerade platz ist).
Stacks sind klein, das führt bei grossen Programmen manchmal zu
crashes. Beim kompilieren kann man die stacksize konfigurieren.
Shared libraries ist nicht weil mapping mangels MMU nicht geht.
Man kann nur statisch linken, jede library liegt also auch
öfter im Speicher wenn mehrere Programme sie benutzen.
Pufferüberläufe können sich in andere Prozesse oder vielleicht
sogar in den Kernel ergiessen. Es gibt noch ne MPU (Memory
Protection Unit), aber so dolle ist die auch nicht. Wenigstens
kann man damit beim booten den Kernel code read-only machen
aber ich glaube viel mehr machen wir damit nicht.
(http://dslinux.gits.kiev.ua/trunk/linux-2.6.x/arch/arm/mach-nds/head.S
siehe Kommentare bei "IAccess" (Instruction) und "DAccess" (Data),
wenn du da mehr wissen willst, frag Malcolm, email ist oben im
copyright statement der Datei).
Memory management ist also komplett unschön, aber anders gehts
halt nicht. Dafür kann man dann aber ziemlich viele für Linux
geschrieben Tools z.B. auf einer Kiste laufen lassen auf der sonst
nichts interessantes läuft (ausser vielleicht Zelda und Mario :)
Das hier scheint recht detailliert zu sein:
http://www.linuxjournal.com/article/7221
Mehr natürlich wie immer hier:
http://www.google.de/search?hl=de&q=uClinux+memory+management
--
stefan
http://stsp.name PGP Key: 0xF59D25F0
-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname : nicht verfügbar
Dateityp : application/pgp-signature
Dateigröße : 187 bytes
Beschreibung: nicht verfügbar
URL : <http://lists.berlin.freifunk.net/pipermail/berlin/attachments/20071125/bfca7cb2/attachment.pgp>
Mehr Informationen über die Mailingliste Berlin