Lowlevel

Lowlevel => OS-Design => Thema gestartet von: MikyGonzalez am 21. January 2013, 16:12

Titel: Help! Exception 14, Page Fault -- OS-Dev Teil 9 (code)
Beitrag von: MikyGonzalez am 21. January 2013, 16:12
Wie kann ich realisiere ich das?:
Beim Anlegen eines Tasks müssen wir jetzt einen neuen Speicherkontext anlegen (dafür gibt es ja schon vmm_create_context) und ggf. den Kernelteil des Page Directory kopieren. init_elf kann den Speicher jetzt im Kernel an eine beliebige Stelle im aktuellen Page Directory mappen, muss das Programm aber zusätzlich noch in dessen Page Directory an die richtige Stelle (nämlich 0x200000) mappen.

(http://www.lowlevel.eu/wiki/Teil_9_-_Paging)
Titel: Re: Help! Exception 14, Page Fault -- OS-Dev Teil 9 (code)
Beitrag von: MNemo am 21. January 2013, 21:54
LOL - Welcher Depp schmeisst sein Geld zum Fenster raus für so Anfänger wie dich ?! Wie wäre es erst mal was gescheites zu lernen, bevor du dich an einem so ambitionierten Projekt beteiligst.
Also ich verstehe MikyGonzalez frage nicht ganz, aber WTF soll dieser Kommentar?
Titel: Re: Help! Exception 14, Page Fault -- OS-Dev Teil 9 (code)
Beitrag von: MikyGonzalez am 21. January 2013, 22:01
Ich bin ein Anfänger in Betriebssystem-Design. Ich wollte nur lernen, nicht versuchen, zu erstellen oder zu erfinden nichts, aber wie ich hier sehen, ist nicht gut zu erkennen helfen.
Titel: Re: Help! Exception 14, Page Fault -- OS-Dev Teil 9 (code)
Beitrag von: kevin am 21. January 2013, 22:26
Dein Deutsch ist leider sehr schwer zu verstehen. Eventuell solltest du zusätzlich eine englische Version (oder was auch immer deine Muttersprache ist) posten.

In Pseudocode würde ich sagen:
context = vmm_create_context(); // Neuen Kontext anlegen
memcpy(context.pagedir, kernel_context.pagedir, 256 * sizeof(uint32_t)); // Kernel-Pagetables übernehmen
init_elf(context, modules[i].mod_start);

Um init_elf() zu implementieren brauchst du ein vmm_alloc(), wie es im Abschnitt zuvor beschrieben ist. Dann läuft das ungefähr so:
dest = vmm_alloc(kernel_context, ph->mem_size);
memcpy(dest, ...);
vmm_map(context, ph->virt_addr, vmm_resolve(kernel_context, dest), ph->mem_size);
vmm_unmap(kernel_context, dest, ph->mem_size);
Titel: Re: Help! Exception 14, Page Fault -- OS-Dev Teil 9 (code)
Beitrag von: kevin am 21. January 2013, 22:29
LOL - Welcher Depp schmeisst sein Geld zum Fenster raus für so Anfänger wie dich ?! Wie wäre es erst mal was gescheites zu lernen, bevor du dich an einem so ambitionierten Projekt beteiligst.
Nochmal sowas und du kriegst einen Bann.
Titel: Re: Help! Exception 14, Page Fault -- OS-Dev Teil 9 (code)
Beitrag von: Dimension am 22. January 2013, 19:14
Nochmal sowas und du kriegst einen Bann.
OK, sorry - Ich hielt den Typ für einen Berufseinsteiger mit gekauftem Abschluss, der andere seine Arbeit machen lassen wollte.

Dennoch ist es mir ein Rätsel, wieso er nicht gleich auf osdev.org postet.
Titel: Re: Help! Exception 14, Page Fault -- OS-Dev Teil 9 (code)
Beitrag von: kevin am 22. January 2013, 21:18
Vielleicht haben wir einfach trotz Sprachbarriere die besseren Tutorials? :-D