c:memorylayout [c:die_speicherlandschaft_eines_prozesses]

Diskussionen zu Tutorials, Änderungs- und Erweiterungswünsche
Benutzeravatar
fat-lobyte
Beiträge: 1398
Registriert: Sa Jul 05, 2008 12:23 pm
Wohnort: ::1
Kontaktdaten:

c:memorylayout [c:die_speicherlandschaft_eines_prozesses]

Beitrag von fat-lobyte » Fr Sep 19, 2008 3:11 pm

Hallo!
In einem Anflug von Übereifer gepaart mit Langeweile habe ich gleich den zweiten "low- level" Text geschrieben: Er handelt davon, wie der Adressraum eines laufenden Prozesses aussieht.

Hier ist der Link:

http://tutorial.proggen.org/doku.php?id ... _prozesses


Ich bitte um Durchsicht, und eure Meinung zu den folgenden Punkten:
  • Rechtschreibung (wie immer...)
  • Einleitung
  • Passender Titel
  • Verständlichkeit
  • Vollständigkeit und Korrektheit (habe ich Blödsinn geschrieben oder die Hälfte ausgelassen?)
mfg, fat-lobyte

Edit: neuer Link: http://www.proggen.org/doku.php?id=c:memorylayout
Haters gonna hate, potatoes gonna potate.

Benutzeravatar
Dirty Oerti
Beiträge: 2229
Registriert: Di Jul 08, 2008 5:05 pm
Wohnort: Thurndorf / Würzburg

Re: c:die_speicherlandschaft_eines_prozesses

Beitrag von Dirty Oerti » Fr Sep 19, 2008 4:08 pm

Anmerkung über den Teil mit den Segmenten:

Alle modernen Betriebssysteme, oder zumindest die häufigst benutzten, haben 2 Segemente:

Ein Code-Segment von 0 bis 4GB sowie ein Daten-Segment von 0 bis 4GB.
Kommt daher, dass Segmentierung eigntl nicht mehr zum Adressschutz verwendet wird.
Dazu dient nun Paging.
Außerdem ist ein Segment zu verschieben eine nahezu unmögliche Aufgabe. Zumindest, wenn das Segment nicht gerade klein ist.

Die Segmente eines Programms werden einfach in den Speicher geladen (da ja der gesamte Speicher als Code und Datensegment gilt), nicht mehr in einzelne Segmente (die früher einzelne Speicherbereich waren).
Dadurch ist es möglich geworden, kleinere Teile, auch Code von Programmen, auszulagern.

Das ist bei einer Variante mit Segmentierung nicht möglich..

Ok, aber das geht zuweit in Betriebssystemdesign.

Was ich nur sagen wollte:
Der Adressraum ist nicht mehr aufgeteilt in einzelne Segmente.
Die Segmente überlagern sich komplett und benutzen alle den kompletten Adressraum.
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne! :)
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.

Benutzeravatar
fat-lobyte
Beiträge: 1398
Registriert: Sa Jul 05, 2008 12:23 pm
Wohnort: ::1
Kontaktdaten:

Re: c:die_speicherlandschaft_eines_prozesses

Beitrag von fat-lobyte » Sa Sep 20, 2008 10:24 am

Dirty Oerti hat geschrieben:Anmerkung über den Teil mit den Segmenten:
Gab es etwa einen anderen Teil?
Dirty Oerti hat geschrieben:Alle modernen Betriebssysteme, oder zumindest die häufigst benutzten, haben 2 Segemente:

Ein Code-Segment von 0 bis 4GB sowie ein Daten-Segment von 0 bis 4GB.
Kommt daher, dass Segmentierung eigntl nicht mehr zum Adressschutz verwendet wird.
Dazu dient nun Paging.
Wie kann man Paging zum Adressschutz verwenden?
Dirty Oerti hat geschrieben:Außerdem ist ein Segment zu verschieben eine nahezu unmögliche Aufgabe. Zumindest, wenn das Segment nicht gerade klein ist.
Habe ich etwa geschrieben dass ein Segment verschoben wird?

Dirty Oerti hat geschrieben:Was ich nur sagen wollte:
Der Adressraum ist nicht mehr aufgeteilt in einzelne Segmente.
Die Segmente überlagern sich komplett und benutzen alle den kompletten Adressraum.
Ich meinte auch eigentlich nicht wirklich "Segmente", das Wort wahr vielleicht unglücklich gewählt. Was ich meinte war eher die funktionelle Aufteilung. Die gibt es ja noch immer, oder? Es gibt doch noch immer einen Bereich im Speicher, wo der Code gespeichert wird, oder? Bei meinen letzten versuchen da reinzuschreiben gabs noch nen Segfault - also nicht schreibbar. Es gibt auch noch immer einen Bereich wo Statische Daten gespeichert werden? Und das letzte mal als ich geschaut habe, gabs den Stack und den Heap auch noch. Soweit ich weiß sind das zwar alles nicht mehr richtige "Segmente", aber die Aufteilung gibt es noch: jeder dieser Bereiche haben bestimmte Adressbereiche, wo die Daten "bevorzugt" gespeichert werden. Bei ELF Beispielsweise beginnt das Code nicht-Segment meistens irgendwo bei 0x80000000, der Stack irgendwo bei 0xbf000000 + einen Zufallswert.

Wie würdest du diese Bereiche, die wahrscheinlich früher einmal wirklich "Segmente" waren dann Nennen?
Haters gonna hate, potatoes gonna potate.

Benutzeravatar
Dirty Oerti
Beiträge: 2229
Registriert: Di Jul 08, 2008 5:05 pm
Wohnort: Thurndorf / Würzburg

Re: c:die_speicherlandschaft_eines_prozesses

Beitrag von Dirty Oerti » Sa Sep 20, 2008 11:15 am

fat-lobyte hat geschrieben:
Dirty Oerti hat geschrieben:Alle modernen Betriebssysteme, oder zumindest die häufigst benutzten, haben 2 Segemente:

Ein Code-Segment von 0 bis 4GB sowie ein Daten-Segment von 0 bis 4GB.
Kommt daher, dass Segmentierung eigntl nicht mehr zum Adressschutz verwendet wird.
Dazu dient nun Paging.
Wie kann man Paging zum Adressschutz verwenden?
Nunja:
Jeder Prozess hat seine eigenen 4GB, denkt er zumindest.
Die Teile der 4GB, die benutzt werden, sind auch im physikalischen Speicher geladen.
Versucht der Prozess nun auf anderen Speicher zuzugreifen, resultiert das in einem Page Fault und der Prozess bekommt eine neue, LEERE Page (im phys Speicher).
Ein Prozess hat gar nicht die Möglichkeit, auf den physikalischen Speicher zuzugreifen.
Somit bekommt ein Prozess nur die Teile des physikalischen Speichers zu sehen, die ihm auch gehören.

Das ist im Übrigen auch einer der Vorteile, weswegen Paging verwendet wird.
Es bietet besseren Schutz als Segmentierung.
fat-lobyte hat geschrieben:
Dirty Oerti hat geschrieben:Außerdem ist ein Segment zu verschieben eine nahezu unmögliche Aufgabe. Zumindest, wenn das Segment nicht gerade klein ist.
Habe ich etwa geschrieben dass ein Segment verschoben wird?
Achso. Du hattest nur etwas über Verschiebbarkeit von Segmenten geschrieben. Also ein Punkt in dieser Liste.
Egal^^
fat-lobyte hat geschrieben:
Dirty Oerti hat geschrieben:Was ich nur sagen wollte:
Der Adressraum ist nicht mehr aufgeteilt in einzelne Segmente.
Die Segmente überlagern sich komplett und benutzen alle den kompletten Adressraum.
Ich meinte auch eigentlich nicht wirklich "Segmente", das Wort wahr vielleicht unglücklich gewählt. Was ich meinte war eher die funktionelle Aufteilung. Die gibt es ja noch immer, oder? Es gibt doch noch immer einen Bereich im Speicher, wo der Code gespeichert wird, oder? Bei meinen letzten versuchen da reinzuschreiben gabs noch nen Segfault - also nicht schreibbar. Es gibt auch noch immer einen Bereich wo Statische Daten gespeichert werden? Und das letzte mal als ich geschaut habe, gabs den Stack und den Heap auch noch. Soweit ich weiß sind das zwar alles nicht mehr richtige "Segmente", aber die Aufteilung gibt es noch: jeder dieser Bereiche haben bestimmte Adressbereiche, wo die Daten "bevorzugt" gespeichert werden. Bei ELF Beispielsweise beginnt das Code nicht-Segment meistens irgendwo bei 0x80000000, der Stack irgendwo bei 0xbf000000 + einen Zufallswert.

Wie würdest du diese Bereiche, die wahrscheinlich früher einmal wirklich "Segmente" waren dann Nennen?
Die Adressen, von denen du sprichst, sind alle virtuell. Du, bzw der Prozess, hat keinerlei Kontrolle darüber, wo die Daten/Code wirklich liegen oder wie sie im Speicher verteilt sind.
Es gibt natürlich noch einen Bereich im Speicher, in den der Code kommt, und einen, in den die Daten kommen.
So sieht es zumindest für den Prozess aus.
In Wirklichkeit kann das bunt gemsicht sein.

Das Problem liegt wahrscheinlich wirklich darin, dass wir mit Segmenten etwas unterschiedliches meinen.

Du meinst die Segmente, die für den Prozess intern gelten und vom Linker (denke ich, oder?) geregelt werden.
Ich meinte die Segmente, die in der sog GDT bzw LDT eingetragen sind und so etwas wie primitives, und langsames Paging waren.
Nur mit "Pages" von variabler Größe (meist größer als 4KB..).
Außerdem bestand trotzdem die Möglichkeit, auf Segmente anderer Prozesse zuzugreifen.

Wie ich das dann nennen würde?
Keine Ahnung.

*edit*
Es wird hier nur der „Adressraum“ eines Prozesses behandelt, also der Virtuelle Speicher.
Oh, ähm: Das habe ich nicht gesehen.
*/edit*
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne! :)
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.

Benutzeravatar
fat-lobyte
Beiträge: 1398
Registriert: Sa Jul 05, 2008 12:23 pm
Wohnort: ::1
Kontaktdaten:

Re: c:die_speicherlandschaft_eines_prozesses

Beitrag von fat-lobyte » Sa Sep 20, 2008 12:35 pm

Dirty Oerti hat geschrieben:*edit*
Es wird hier nur der „Adressraum“ eines Prozesses behandelt, also der Virtuelle Speicher.
Oh, ähm: Das habe ich nicht gesehen.
*/edit*
Das habe ist mir dann Bewusst geworden, als ich gesehen habe, dass du vom Physikalischen Speicher sprichst - obwohl ich eigentlich Explizit geschrieben habe, dass das nicht so ist.
Heißt das jetzt, mein Text ist doch zu etwas zu gebrauchen und muss nicht komplett umgeschrieben werden?
Zumindest brauchen wir einen anderen Namen für die Speicherbereiche, wenn "Segment" so viel Verwirrung erzeugt.
Haters gonna hate, potatoes gonna potate.

Benutzeravatar
Dirty Oerti
Beiträge: 2229
Registriert: Di Jul 08, 2008 5:05 pm
Wohnort: Thurndorf / Würzburg

Re: c:die_speicherlandschaft_eines_prozesses

Beitrag von Dirty Oerti » Sa Sep 20, 2008 1:26 pm

fat-lobyte hat geschrieben:
Dirty Oerti hat geschrieben:*edit*
Es wird hier nur der „Adressraum“ eines Prozesses behandelt, also der Virtuelle Speicher.
Oh, ähm: Das habe ich nicht gesehen.
*/edit*
Das habe ist mir dann Bewusst geworden, als ich gesehen habe, dass du vom Physikalischen Speicher sprichst - obwohl ich eigentlich Explizit geschrieben habe, dass das nicht so ist.
Heißt das jetzt, mein Text ist doch zu etwas zu gebrauchen und muss nicht komplett umgeschrieben werden?
Zumindest brauchen wir einen anderen Namen für die Speicherbereiche, wenn "Segment" so viel Verwirrung erzeugt.
Ich weiß nicht, ob wir einen anderen Namen brauchen.
Es wird doch auch allgemein Code/Daten/Bss - Segment genannt, oder?
Verwechsle ich etwas?

Das dein Text zu was zu gebrauchen ist stand nicht in Frage, nur ob's wirklich verständlich ist.


Vielleicht könnte man das anhand einer Linkerausgabe verdeutlichen?
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne! :)
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.

Benutzeravatar
fat-lobyte
Beiträge: 1398
Registriert: Sa Jul 05, 2008 12:23 pm
Wohnort: ::1
Kontaktdaten:

Re: c:die_speicherlandschaft_eines_prozesses

Beitrag von fat-lobyte » So Sep 21, 2008 1:57 pm

Dirty Oerti hat geschrieben:Ich weiß nicht, ob wir einen anderen Namen brauchen.
Es wird doch auch allgemein Code/Daten/Bss - Segment genannt, oder?
Verwechsle ich etwas?

Das dein Text zu was zu gebrauchen ist stand nicht in Frage, nur ob's wirklich verständlich ist.


Vielleicht könnte man das anhand einer Linkerausgabe verdeutlichen?
sieht so aus, als würdest du etwas verwechseln. Ich meinte mit dem Text nicht das Layout einer ELF- Datei auf der Festplatte, sondern den Speicher eines laufenden Prozesses.
Haters gonna hate, potatoes gonna potate.

Benutzeravatar
Dirty Oerti
Beiträge: 2229
Registriert: Di Jul 08, 2008 5:05 pm
Wohnort: Thurndorf / Würzburg

Re: c:die_speicherlandschaft_eines_prozesses

Beitrag von Dirty Oerti » So Sep 21, 2008 2:41 pm

Meinte ich jetzt in dem Fall auch:

Ich habe Mal die Ausgabe, die ich meine, angehängt.
Ist die Ausgabe, die LD macht, wenn ich meinen Kernel linke.

*edit* Tut mir Leid, anhängen geht nicht:
Die Dateierweiterung txt ist nicht erlaubt.
Deshalb also hier:

Code: Alles auswählen

Allocating common symbols
Common symbol       size              file

_gdtp               0x6               gdt-loader.o
_idtp               0x6               idt-loader.o

Memory Configuration

Name             Origin             Length             Attributes
*default*        0x0000000000000000 0xffffffffffffffff

Linker script and memory map

                0x0000000000100000                . = 0x100000
                0x0000000000100000                __kernel_start = .

.text           0x0000000000100000     0x1c60
 *(.text)
 .text          0x0000000000100000       0x45 basic-kernel-asm.o
                0x000000000010003d                _idt_load
                0x0000000000100000                start
                0x0000000000100020                _gdt_flush
 *fill*         0x0000000000100045        0x3 00
 .text          0x0000000000100048      0x449 basic-kernel.o
                0x000000000010031a                CheckFPU
                0x000000000010047d                Kernel__get_SYSTEM_mem_up
                0x000000000010039a                itoa
                0x0000000000100487                Kernel__get_SYSTEM_mem_low
                0x0000000000100216                StartUpMemoryCheck
                0x0000000000100048                _c_kernel_main
 *fill*         0x0000000000100491        0x3 00
 .text          0x0000000000100494       0xfa basic-system-functions.o
                0x0000000000100533                memsetw
                0x0000000000100494                inportb
                0x00000000001004cd                memcpy
                0x00000000001004af                outportb
                0x0000000000100503                memset
                0x0000000000100565                memset_4byte
 *fill*         0x000000000010058e        0x2 00
 .text          0x0000000000100590      0x213 gdt-loader.o
                0x0000000000100590                GDT_set_Gate
                0x0000000000100638                GDT_Install
 *fill*         0x00000000001007a3        0x1 00
 .text          0x00000000001007a4       0xed idt-loader.o
                0x00000000001007a4                IDT_set_Gate
                0x0000000000100812                IDT_Install
 *fill*         0x0000000000100891        0x3 00
 .text          0x0000000000100894      0x3e9 irq.o
                0x00000000001008a6                irq_uninstall_handler
                0x0000000000100c1e                _irq_handler
                0x0000000000100894                irq_install_handler
                0x0000000000100989                IRQs_install
                0x00000000001008b9                irq_remap
 *fill*         0x0000000000100c7d        0x3 00
 .text          0x0000000000100c80      0x22c isr-irq-asm.o
                0x0000000000100d3c                _isr20
                0x0000000000100df4                _irq2
                0x0000000000100d6e                _isr25
                0x0000000000100d0a                _isr15
                0x0000000000100ce2                _isr10
                0x0000000000100d28                _isr18
                0x0000000000100d5a                _isr23
                0x0000000000100cbc                _isr6
                0x0000000000100e26                _irq7
                0x0000000000100c80                _isr0
                0x0000000000100de0                _irq0
                0x0000000000100e12                _irq5
                0x0000000000100d46                _isr21
                0x0000000000100e6c                _irq14
                0x0000000000100e30                _irq8
                0x0000000000100cd8                _isr9
                0x0000000000100d8c                _isr28
                0x0000000000100cb2                _isr5
                0x0000000000100d78                _isr26
                0x0000000000100d96                _isr29
                0x0000000000100daa                _isr31
                0x0000000000100c8a                _isr1
                0x0000000000100cea                _isr11
                0x0000000000100d14                _isr16
                0x0000000000100c94                _isr2
                0x0000000000100cfa                _isr13
                0x0000000000100d64                _isr24
                0x0000000000100ca8                _isr4
                0x0000000000100e1c                _irq6
                0x0000000000100e4e                _irq11
                0x0000000000100e08                _irq4
                0x0000000000100e62                _irq13
                0x0000000000100c9e                _isr3
                0x0000000000100cc6                _isr7
                0x0000000000100d82                _isr27
                0x0000000000100da0                _isr30
                0x0000000000100d32                _isr19
                0x0000000000100d02                _isr14
                0x0000000000100e3a                _irq9
                0x0000000000100d1e                _isr17
                0x0000000000100e44                _irq10
                0x0000000000100e76                _irq15
                0x0000000000100cf2                _isr12
                0x0000000000100cd0                _isr8
                0x0000000000100dea                _irq1
                0x0000000000100d50                _isr22
                0x0000000000100e58                _irq12
                0x0000000000100dfe                _irq3
 .text          0x0000000000100eac      0x536 isr.o
                0x0000000000100eac                ISRs_install
                0x000000000010138c                _fehler_handler
 *fill*         0x00000000001013e2        0x2 00
 .text          0x00000000001013e4      0x3c7 kernel-print.o
                0x000000000010140a                K_scroll
                0x00000000001014be                HardwareCsr_move
                0x0000000000101745                K_pTextX
                0x000000000010166a                K_putstring
                0x00000000001013e4                K_strlen
                0x0000000000101788                K_pText
                0x000000000010153a                K_putchar
                0x00000000001016aa                K_cls
                0x000000000010171d                K_settextcolor
 *fill*         0x00000000001017ab        0x1 00
 .text          0x00000000001017ac      0x299 paging.o
                0x00000000001017d5                Set_Page_Entry
                0x0000000000101838                IdentityMap_Dir
                0x0000000000101814                Get_Page_Entry
                0x0000000000101921                Init_Paging
                0x00000000001017ac                Switch_Page_Directory
                0x00000000001019e6                PageFault_handler
 *fill*         0x0000000000101a45        0x3 00
 .text          0x0000000000101a48      0x218 phys-mm.o
                0x0000000000101b24                Set_Frame_as_free
                0x0000000000101c44                KBM_free_Frame
                0x0000000000101a48                Init_physMM_BitMap
                0x0000000000101aed                Set_Frame_as_used
                0x0000000000101c11                KBM_alloc_Frame
                0x0000000000101b5d                Find_first_free_Frame

.rel.dyn        0x0000000000101c60        0x0
 .rel.text      0x0000000000000000        0x0 basic-kernel-asm.o

.data           0x0000000000101c60      0x64e
 *(.data)
 .data          0x0000000000101c60        0x0 basic-kernel.o
 .data          0x0000000000101c60        0x0 basic-system-functions.o
 .data          0x0000000000101c60        0x0 gdt-loader.o
 .data          0x0000000000101c60        0x0 idt-loader.o
 .data          0x0000000000101c60        0x0 irq.o
 .data          0x0000000000101c60       0x80 isr.o
                0x0000000000101c60                exception_messages
 .data          0x0000000000101ce0        0x8 kernel-print.o
                0x0000000000101ce0                ZVideospeicher
                0x0000000000101ce4                Attribut
 .data          0x0000000000101ce8        0x0 paging.o
 .data          0x0000000000101ce8        0x0 phys-mm.o
 *(.rodata)
 .rodata        0x0000000000101ce8      0x166 basic-kernel.o
 *fill*         0x0000000000101e4e        0x2 00
 .rodata        0x0000000000101e50       0x50 gdt-loader.o
 .rodata        0x0000000000101ea0       0x50 idt-loader.o
 .rodata        0x0000000000101ef0       0x50 irq.o
 .rodata        0x0000000000101f40      0x28a isr.o
 *fill*         0x00000000001021ca        0x2 00
 .rodata        0x00000000001021cc       0x64 paging.o
 .rodata        0x0000000000102230       0x7e phys-mm.o

.bss            0x00000000001022c0     0x2080
 *(.bss)
 .bss           0x00000000001022c0     0x2000 basic-kernel-asm.o
 .bss           0x00000000001042c0        0x8 basic-kernel.o
                0x00000000001042c4                SYSTEM_mem_up
                0x00000000001042c0                SYSTEM_mem_low
 .bss           0x00000000001042c8        0x0 basic-system-functions.o
 .bss           0x00000000001042c8        0x4 gdt-loader.o
                0x00000000001042c8                GDT
 .bss           0x00000000001042cc        0x4 idt-loader.o
                0x00000000001042cc                IDT
 *fill*         0x00000000001042d0       0x10 00
 .bss           0x00000000001042e0       0x40 irq.o
                0x00000000001042e0                irq_routines
 .bss           0x0000000000104320        0x0 isr.o
 .bss           0x0000000000104320        0x8 kernel-print.o
                0x0000000000104324                Cursor_Y
                0x0000000000104320                Cursor_X
 .bss           0x0000000000104328        0x8 paging.o
                0x0000000000104328                KernelDir
                0x000000000010432c                CurrentDir
 .bss           0x0000000000104330        0x4 phys-mm.o
                0x0000000000104330                MemoryBitmap
 COMMON         0x0000000000104334        0x6 gdt-loader.o
                0x0000000000104334                _gdtp
 COMMON         0x000000000010433a        0x6 idt-loader.o
                0x000000000010433a                _idtp
                0x0000000000104340                __kernel_end = .
                0x0000000000104340                end = .
LOAD basic-kernel-asm.o
LOAD basic-kernel.o
LOAD basic-system-functions.o
LOAD gdt-loader.o
LOAD idt-loader.o
LOAD irq.o
LOAD isr-irq-asm.o
LOAD isr.o
LOAD kernel-print.o
LOAD paging.o
LOAD phys-mm.o
OUTPUT(basic-kernel.bin elf32-i386)

.comment        0x0000000000000000      0x1ca
 .comment       0x0000000000000000       0x28 basic-kernel-asm.o
 .comment       0x0000000000000028       0x2a basic-kernel.o
 .comment       0x0000000000000052       0x2a basic-system-functions.o
 .comment       0x000000000000007c       0x2a gdt-loader.o
 .comment       0x00000000000000a6       0x2a idt-loader.o
 .comment       0x00000000000000d0       0x2a irq.o
 .comment       0x00000000000000fa       0x28 isr-irq-asm.o
 .comment       0x0000000000000122       0x2a isr.o
 .comment       0x000000000000014c       0x2a kernel-print.o
 .comment       0x0000000000000176       0x2a paging.o
 .comment       0x00000000000001a0       0x2a phys-mm.o

.debug_abbrev   0x0000000000000000      0x6b4
 .debug_abbrev  0x0000000000000000      0x11b basic-kernel.o
 .debug_abbrev  0x000000000000011b       0x98 basic-system-functions.o
 .debug_abbrev  0x00000000000001b3       0xa1 gdt-loader.o
 .debug_abbrev  0x0000000000000254       0x9f idt-loader.o
 .debug_abbrev  0x00000000000002f3       0xe6 irq.o
 .debug_abbrev  0x00000000000003d9       0xab isr.o
 .debug_abbrev  0x0000000000000484       0xa3 kernel-print.o
 .debug_abbrev  0x0000000000000527       0xe4 paging.o
 .debug_abbrev  0x000000000000060b       0xa9 phys-mm.o

.debug_info     0x0000000000000000     0x1dca
 .debug_info    0x0000000000000000      0x5b6 basic-kernel.o
 .debug_info    0x00000000000005b6      0x342 basic-system-functions.o
 .debug_info    0x00000000000008f8      0x213 gdt-loader.o
 .debug_info    0x0000000000000b0b      0x1f0 idt-loader.o
 .debug_info    0x0000000000000cfb      0x336 irq.o
 .debug_info    0x0000000000001031      0x281 isr.o
 .debug_info    0x00000000000012b2      0x3c2 kernel-print.o
 .debug_info    0x0000000000001674      0x484 paging.o
 .debug_info    0x0000000000001af8      0x2d2 phys-mm.o

.debug_line     0x0000000000000000      0x569
 .debug_line    0x0000000000000000       0xce basic-kernel.o
 .debug_line    0x00000000000000ce       0x66 basic-system-functions.o
 .debug_line    0x0000000000000134       0x7f gdt-loader.o
 .debug_line    0x00000000000001b3       0x67 idt-loader.o
 .debug_line    0x000000000000021a       0xb1 irq.o
 .debug_line    0x00000000000002cb       0xbe isr.o
 .debug_line    0x0000000000000389       0xb3 kernel-print.o
 .debug_line    0x000000000000043c       0x98 paging.o
 .debug_line    0x00000000000004d4       0x95 phys-mm.o

.debug_frame    0x0000000000000000      0x644
 .debug_frame   0x0000000000000000       0xd4 basic-kernel.o
 .debug_frame   0x00000000000000d4       0xd4 basic-system-functions.o
 .debug_frame   0x00000000000001a8       0x54 gdt-loader.o
 .debug_frame   0x00000000000001fc       0x54 idt-loader.o
 .debug_frame   0x0000000000000250       0xb4 irq.o
 .debug_frame   0x0000000000000304       0x54 isr.o
 .debug_frame   0x0000000000000358      0x13c kernel-print.o
 .debug_frame   0x0000000000000494       0xdc paging.o
 .debug_frame   0x0000000000000570       0xd4 phys-mm.o

.debug_loc      0x0000000000000000      0x790
 .debug_loc     0x0000000000000000      0x108 basic-kernel.o
 .debug_loc     0x0000000000000108      0x108 basic-system-functions.o
 .debug_loc     0x0000000000000210       0x58 gdt-loader.o
 .debug_loc     0x0000000000000268       0x58 idt-loader.o
 .debug_loc     0x00000000000002c0       0xdc irq.o
 .debug_loc     0x000000000000039c       0x58 isr.o
 .debug_loc     0x00000000000003f4      0x18c kernel-print.o
 .debug_loc     0x0000000000000580      0x108 paging.o
 .debug_loc     0x0000000000000688      0x108 phys-mm.o

.debug_pubnames
                0x0000000000000000      0x48e
 .debug_pubnames
                0x0000000000000000       0xb4 basic-kernel.o
 .debug_pubnames
                0x00000000000000b4       0x5e basic-system-functions.o
 .debug_pubnames
                0x0000000000000112       0x45 gdt-loader.o
 .debug_pubnames
                0x0000000000000157       0x45 idt-loader.o
 .debug_pubnames
                0x000000000000019c       0x85 irq.o
 .debug_pubnames
                0x0000000000000221       0x4e isr.o
 .debug_pubnames
                0x000000000000026f       0xcf kernel-print.o
 .debug_pubnames
                0x000000000000033e       0xa9 paging.o
 .debug_pubnames
                0x00000000000003e7       0xa7 phys-mm.o

.debug_aranges  0x0000000000000000      0x120
 .debug_aranges
                0x0000000000000000       0x20 basic-kernel.o
 .debug_aranges
                0x0000000000000020       0x20 basic-system-functions.o
 .debug_aranges
                0x0000000000000040       0x20 gdt-loader.o
 .debug_aranges
                0x0000000000000060       0x20 idt-loader.o
 .debug_aranges
                0x0000000000000080       0x20 irq.o
 .debug_aranges
                0x00000000000000a0       0x20 isr.o
 .debug_aranges
                0x00000000000000c0       0x20 kernel-print.o
 .debug_aranges
                0x00000000000000e0       0x20 paging.o
 .debug_aranges
                0x0000000000000100       0x20 phys-mm.o

.debug_str      0x0000000000000000       0x24
 .debug_str     0x0000000000000000        0xa basic-kernel.o
 .debug_str     0x000000000000000a        0x6 basic-system-functions.o
 .debug_str     0x0000000000000010        0xa paging.o
 .debug_str     0x000000000000001a        0xa phys-mm.o

.note.GNU-stack
                0x0000000000000000        0x0
 .note.GNU-stack
                0x0000000000000000        0x0 basic-kernel.o
 .note.GNU-stack
                0x0000000000000000        0x0 basic-system-functions.o
 .note.GNU-stack
                0x0000000000000000        0x0 gdt-loader.o
 .note.GNU-stack
                0x0000000000000000        0x0 idt-loader.o
 .note.GNU-stack
                0x0000000000000000        0x0 irq.o
 .note.GNU-stack
                0x0000000000000000        0x0 isr.o
 .note.GNU-stack
                0x0000000000000000        0x0 kernel-print.o
 .note.GNU-stack
                0x0000000000000000        0x0 paging.o
 .note.GNU-stack
                0x0000000000000000        0x0 phys-mm.o
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne! :)
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.

nufan
Wiki-Moderator
Beiträge: 2557
Registriert: Sa Jul 05, 2008 3:21 pm

Re: c:die_speicherlandschaft_eines_prozesses

Beitrag von nufan » So Sep 21, 2008 2:50 pm

DirtyOerti hat geschrieben:*edit* Tut mir Leid, anhängen geht nicht:
Die Dateierweiterung txt ist nicht erlaubt.
zip?

Benutzeravatar
Dirty Oerti
Beiträge: 2229
Registriert: Di Jul 08, 2008 5:05 pm
Wohnort: Thurndorf / Würzburg

Re: c:die_speicherlandschaft_eines_prozesses

Beitrag von Dirty Oerti » So Sep 21, 2008 4:39 pm

dani93 hat geschrieben:
DirtyOerti hat geschrieben:*edit* Tut mir Leid, anhängen geht nicht:
Die Dateierweiterung txt ist nicht erlaubt.
zip?
Ja..
aber es ist so ersichtlich, was ich meine, oder?
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne! :)
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.

Antworten