Mein Nachbar...

  • Zitat

    Original von Jarni
    Hallo, wer lesen kann ist klar im Vorteil!!!! smile




    Gruß
    Jarni


    Ja ja, ich stülpe meine Brille ja schon ab und zu über - hier hätte ichs auch tun sollen :-D)


    Aber zum Punkt "Auslagerung" bleibe ich auch (vorher ohne, jetzt mit) Brille bei meinem Standpunkt :P

    Navigation mit Google Maps über Android Auto und AAWireless im Nissan Qashqai Akari Automatik. Zusätzlich ist POIbase NAVI ein treuer Beegleiter meiner Fahrten  ;)

  • Zitat

    Original von HSVMichi
    Programme werden ausschließlich im RAM ausgeführt - nirgendwo anders.


    Schon.
    Aber die Prozesse, die gerade nicht ausgeführt werden, oder Bereiche des RAMs des aktiven Prozesses, die gerade nicht benutzt werden, können dennoch ausgelagert werden.


    Zitat

    Auslagerungen finden IMHO außerhalb des RAM ebenfalls nicht statt (Betriebssystem Mobile-irgendwas)


    Doch doch...


    Als Multi-Tasking-OS hat es auch RAM-Paging.



    Stichwort "virtual memory".
    S. z.B. hier:
    http://msdn2.microsoft.com/en-us/library/aa914933.aspx



    Dann gibt's noch das "Demand Paging":
    http://msdn2.microsoft.com/en-us/library/aa915332.aspx


    (Bei Bedarf werden Module aus dem ROM in das RAM gepaged.)



    Einen guten kleinen Überblick über Interna von CE gibt's z.B. hier:

    http://ddi.cs.uni-potsdam.de/L…%20J.%20Hannemann.pdf</a>


    Oder hier:
    http://www2.informatik.hu-berl…chling/emes2003/18-os.pdf


    Schon ältere Versionen (CE4.x, 3.x etc.) konnten 32 Prozesse mit jeweils bis zu 32MB RAM verwalten, das wäre ohne Auslagerung/Paging nicht möglich.

    2 Mal editiert, zuletzt von Pikachu_ ()

  • Das sind ja mal interessante Links - gefallen mir :)


    Dennoch finde ich nirgends einen Hinweis, dass außerhalb des RAM ausgelagert wird (verstehe aber auch nicht wirklich jede der Zeichnungen).


    Müsste man dann nicht auch im Laufe der Zeit auf der Speicherkarte oder im FlashROM "Reste" finden, wenn man im laufenden Betrieb einfach abschaltet? ?(


    Und wieso kommt es immer wieder zu "Memory-Problemen (speziell MN|6 <-> POI-Warner), wenn denn das Auslagern so einfach wäre? ?(

    Navigation mit Google Maps über Android Auto und AAWireless im Nissan Qashqai Akari Automatik. Zusätzlich ist POIbase NAVI ein treuer Beegleiter meiner Fahrten  ;)

    Einmal editiert, zuletzt von HSVMichi ()

  • Ich bin überzeugt, daß man die Pages finden würde, wenn man genau wüßte, wonach man suchen muß.


    Auslagerung geschieht übrigens grundsätzlich außerhalb des RAMs (Ausnahme "demand paging").


    Hier noch ein (zwar älterer, aber dennoch sehr interessanter Artikel dazu):
    http://www.embedded.com/98/9810fe3.htm


    Zitat

    Each process (and all its threads) is restricted to its own 32MB address space, plus the files it chooses to map in memory. Interestingly enough, although Windows CE uses a single 4GB virtual address space for all processes, it restricts, through paging tricks, each process to its code and data. For instance, it doesnt permit any thread of process A to alter or even look at process Bs data.


    Dennoch: Auch bei den "großen" Windows-Brüdern kann es zu Problemen kommen, wenn z.B. die Auslagerungsdatei zu groß wird; allerdings dürfte dieser Zustand wohl nur im Extremfall eintreten.


    Grundsätzlich gilt: Wenn das RAM nicht mehr ausreicht, wird gepaged (Festplatte oder sonstige Speicher). Bei passender Gelegenheit werden diese Swap Files auch wieder bereinigt.


    Problem beim POIwarner scheint zu sein (sofern ich Markus richtig verstanden habe), daß er eine Funktion des MN6 nutzt (Markus spricht von "Schnittstelle"), welch nach Markus' Meinung nicht richtig funktioniert. Offenbar wird benutzter Speicher (also erstmal RAM) nicht korrekt freigegeben oder es wird zu viel allokiert. So genau sagt er das ja hier nicht.


    Immer dann, wenn aber so viel RAM vom laufenden Prozeß belegt ist, daß sogar aktive Prozeßteile oder Datenbereiche des aktiven Prozesses ausgelagert werden MÜSSTEN, kommt es zum Crash des laufenden Programms. Ein gutes Betriebssystem würde diese Situation allerdings vorher abfangen und es nicht erst soweit kommen lassen, daß "nichts mehr geht". Sprich: Die weitere Anforderung von Speicher verweigern.


    Dadurch würde zwar das Programm beendet, aber weigstens das Betriebssystem würde stabil weiterlaufen.


    Keine Ahnung, warum hier die zweifellos eingebauten Schutzmechanismen von CE nicht wirken. Vielleicht ist der Übeltäter ja auch eine nicht gänzlich korrekt eingerichtete Betriebssystemfunktion. Das sind aber Spekulationen, solange man die Interna nicht kennt.


    Hier noch dazu:

    Zitat

    The unit of execution under CE is a thread , which also has an ID, a private 64K stack, and a set of CPU registers associated with it. It has access to the entire address space of its process (say, 32MB). It may have a message queue if it needs one: since Windows CE is a message-based system (like the other flavors of Windows), many threads need their own queues. Threads can create other threads, which all share the same process address space. Each thread can also have some private memory, known as Thread Local Storage. No limitation exists regarding the number of running threads, other than the limits imposed by the available physical memory.


    Erklärt das Modell ein wenig.

    Einmal editiert, zuletzt von Pikachu_ ()

  • Moin,


    Zitat

    Original von HSVMichi
    Ja ja, ich stülpe meine Brille ja schon ab und zu über - hier hätte ichs auch tun sollen :-D)


    Ok, Entschuldigung ist angenommen... : drink


    Zitat


    Aber zum Punkt "Auslagerung" bleibe ich auch (vorher ohne, jetzt mit) Brille bei meinem Standpunkt :P


    Da widerspreche ich ja auch nicht, eine Auslagerung auf die SD würde ja auch nicht wirklich Sinn ergeben...

  • Moin,


    Zitat

    Original von Pikachu_
    Ich bin überzeugt, daß man die Pages finden würde, wenn man genau wüßte, wonach man suchen muß.


    Auslagerung geschieht übrigens grundsätzlich außerhalb des RAMs (Ausnahme "demand paging").


    Auslagern in eigentlich für Storage freigegebene oder reservierte Flashbereiche lasse ich mir ja noch gefallen (z.B. in den Bereich "My FlashDisk"). Aber auf eine SD-Karte? Wie gerade schon geschrieben: Ergibt für mich keinen echten Sinn... ?(

  • Hallo,


    macht doch mal folgenden Versuch, den ich eben selbst durchgeführt habe.


    1. Geht über start auf Settings und dort auf System und dort auf Memory,
    stellt den Schieberegler auf den niedrigst möglichen Wert von Storage Memory, ein teil ist belegt, also kurz darüber, dann startet MN6 und macht eine Routenpalnung, die Planung dauert erheblich länger als üblich, durch die Begrenzung der Storage Memory verkleinert ihr die Auslagerungsdatei.
    Es gibt zwei Gründe dafür, entweder MN6 lagert nur kleinere Zwischenergebnisse beim Berechnen aus, nämlich noch soviel wie jetzt noch in die Auslagerungsdatei passt, oder MN6 lagert, das was nicht in die Auslagerunsgdatei der Flash Disk passt auf der SD Karte aus, was natürlich
    zu einer längeren Rechenzeit, weil die SD Karte niemals so schnell lesen und schreiben kann, wie die Flashdisk.
    2. Wem dieser Versuch aber noch nicht ausreicht, der kopiere bei den unveränderten Memoryeinstellungen von oben, noch ein paar *.jpg Dateien
    auf seine SD Karte, die Rechenzeit für die Routenplanung verlängert sich bei derselben Route nochmals erheblich, ich habe meine SD Karte bis auf
    5 Kb mit jpg vollgepackt, in der nachfolgenden Routenberechnung ist MN6 mit Speicherfehler ganz ausgestiegen.
    Für mich ergibt sich daraus mit fast an Sicherheit grenzender Wahrscheinlichkeit, dass WinCE notfalls auf der SD Karte auslagert.
    Bei einem normalen Navi mit 64 MB RAM ( Flash Disk), reichen 30-40 MB auf der SD Karte zum Auslagern sicherlich aus.



    Ausprobieren und bitte berichten, wenn ihr ein anderen Ergebnis erhaltet.
    Den test habe ich auf einen Medion 4210 gemacht, ich glaube die hat 256 MB Flash Disk.



    Gruß
    Jarni

    Einmal editiert, zuletzt von Jarni ()

  • Hi,


    Daß MN6 bei der Routenplanung Dateien auf die SD-Karte schreibt ist doch längst bekannt! :D


    Ich denke aber nicht, daß Windows dafür verantwortlich ist.


    : drink

  • Hallo,
    dass Daten auf die Sd Karte geschrieben werden ist ja auch nicht das Problem, die *.xml Dateien aus dem Ordner Settings zu denen auch eine*.default im Ordner Settings vorhandenist z.B. werden bei der Erstinstallation des PNA auf die SD Karte geschrieben.


    Es geht hier in der Diskussion darum, ob das betreibssystem des PNA
    Zwischenergebnisse auf die SD Karte auslagert.




    Gruß
    Jarni

  • Zitat

    Original von Jarni
    Es geht hier in der Diskussion darum, ob das betreibssystem des PNA
    Zwischenergebnisse auf die SD Karte auslagert.


    Gruß
    Jarni


    Ja,


    MN6 lagert bei der Routenplanung "Zwischenergebnisse" auf die SD-Karte aus und löscht die nachher auch wieder! :)


    Aber doch nicht das Betriebssystem!


    8)

  • Also ich denke, hier besteht ein Begriffs-Durcheinander.


    "Auslagerung". Was soll damit gemeint sein?


    Normalerweise ist damit das Paging des Betriebssystems gemeint. Wer das nicht glaubt, soll sich halt informieren, das ist ein feststehender Begriff im Systemdesign von multitaskingfähigen Betriebssystemen. Dazu gehört auch Win CE (oder Mobile oder wie immer Ihr das nennt).


    Das Betriebssytem eines jedweden Rechners ist alleinig verantwortlich für die Zuteilung der Ressourcen. (Ok, vergessen wir mal alte DOS-Programme und die dortigen BIOS-Aufrufe). Wir sprechen hier von multitaskingfähigen Betriebssystemen, die die User-Prozesse auf einem anderen Level als die Kernelprozesse ausführen und selbstverständlich alle Prozesse sauber voneinander trennen. Mag übrigens sein, daß CE hier nicht 100% sauber arbeitet. Das weiß ich nicht.


    Jedenfalls müssen Anwendungs-Programme (m.E. zählt hier der MN6 auch dazu; oder ist er Teil des Betriebssytems??? Wohl eher nicht.) Ressourcen beim Betriebssystem anfordern, und dieses teilt diese entsprechend zu.


    Die saubere ZUTEILUNG ist der Schlüssel des stabilen Systems. Wer mehr anfordert als da ist, wird abschlägig beschieden!
    Würde also der MN6 aus dem Ruder laufen und zu viel anfordern, dann müßte CE ihm mitteilen: Junge, da ist nix! Mach mal Schluß!


    Ebenso sorgt das in CE implementierte sog. "präemptive Multitasking" dafür, daß nicht ein Prozeß alle verfügbare Rechnezeit für sich selbst beanspruchen kann. Es sorgt dafür, daß auch andere Prozesse (auch die des Betriebssystem-Kerns selbst) mal zum Zuge kommen.


    Notfalls könnte man also rein theoretisch den "wildgewordenen" MN6 oder POIWarner mit Bordmitteln abschießen. Dazu müßte man "lediglich" einen brauchbaren Taskmanager installieren.


    Das erstmal als Grundlage.


    Natürlich können auch Anwendungsprogramme Speicherinhalte, die sie gerade nicht benötigen, temporär auf einem anderen Speichermedium "auslagern". Dieser Vorgang ist jedoch technisch völlig anders als das Paging. Hierzu müssen Funktionen der Dateiverwaltung des Betriebssystems aufgerufen werden.


    Eine dritte Sache ist das Anfordern von Speicher. Anwendungsprogramme können RAM allokieren (mittels Betriebssystem-Funktion), und zwar dynamisch zur Laufzeit. Durch Fehler in den entsprechenden BS-Funktionen kann es hier zu Überläufen kommen (hier können z.B. auch Schadprogramme und Viren/Trojaner ansetzen: der sog. Buffer-Overflow). Dabei werden eigentlich als Datenbereiche vorgesehene Speicherbereiche als ausführbare Programmspeicherbereiche "umfunktioniert".


    Dies sind aber BUGS, also FEHLER der Speicherverwaltung.


    Und genau diese KÖNNTEN rein theoretisch auch bei CE im Zusammenspiel von MN6 und POIWarner auftreten. Das ist aber reine Spekulation.


    Fazit: Wir müssen immer unterscheiden zwischen dem Paging des Betriebssystems (das es auch mit Unterstützung der CPU tut) und "Auslagerungen" von Anwendungsprogrammen, die im Prinzip auf Dateiebene unter der Kontrolle des Betriebssystems stattfinden. Das ist NICHT das gleiche.



  • Da muss ich mich jetzt mal fragen wie Du dem 7000 beigebracht hast ne 4 Gb SD Karte zu lesen ... ich denke das ist ne sdhc sogar ... also ich habs probiert und meins zeigt keine sd card an ...

  • Das 7110 wird auch z.T.mit 2GB SD ausgeliefert. 4GB liest der 7000 übrigens auch, allerdings Non SDHC


    cu,dehlya

  • Zitat

    Original von akira_xx


    Da muss ich mich jetzt mal fragen wie Du dem 7000 beigebracht hast ne 4 Gb SD Karte zu lesen ... ich denke das ist ne sdhc sogar ... also ich habs probiert und meins zeigt keine sd card an ...


    Genau, da gibt es von Transcend die 4GB 150X Karte. Die läuft ganz gut.


    Zum Beispiel hier:


    http://direkt.jacob-computer.d…artnr_130406.html?ref=103


    Ist übrigens ein guter Laden.


    Gruß Peter

    5 Mal editiert, zuletzt von peline ()

  • N'Abend,



    Wenn Du schon für den Laden wirbst (ich kenne ihn nicht, schließe mich der Einfachheit halber aber mal an), dann aber bitte mit dem richtigen Link zur 150x-Karte... 8)