Learning Minix

Benutzeravatar
davidvajda.de
Site Admin
Beiträge: 1486
Registriert: Di Jul 18, 2023 8:36 pm
Wohnort: D-72072, Tübingen
Kontaktdaten:

Re: Learning Minix

Beitrag von davidvajda.de »

Code: Alles auswählen

kernel
mm
fs

kernel
mm
fs

kernel
mm
fs

kernel
mm
fs

h
kernel
mm
fs

h
kernel
mm
fs

const.h
main.c

const.h
main.c
type.h

const.h
type.h
main.c

const.h
type.h
main.c

kernel/main.c
kernel/const.h
mm/main.c
mm/const.h
fs/main.c
fs/const.h
const/const.h

type.h

alloc.c
forkexit.c
break.c
signal.c
exec.c
main.c

mm/alloc.c
mm/signal.c
mm/break.c
mm/forkexit.c
mm/exec.c

mm/alloc.c
mm/signal.c
mm/break.c
mm/forkexit.c
mm/exec.c
mm/main.c

mm/main.c
mm/alloc.c
mm/signal.c
mm/break.c
mm/exec.c
mm/forkexit.c

mm/main.c
mm/forkexit.c
mm/exec.c
mm/break.c
mm/signal.c
mm/alloc.c

mm/main.c
mm/forkexit.c
mm/alloc.c
mm/exec.c
mm/break.c
mm/signal.c

NR_TASKS
NR_PROCS
N_PROCS

NR_TASKS
NR_PROCS
N_PROCS

NR_TASKS
NR_PROCS
N_PROCS

NR_TASKS
NR_PROCS
N_PROCS

NR_TASKS
NR_PROCS
N_PROCS

NR_SEGS
NR_REGS

NR_SEGS
NR_REGS

NR_SEGS
NR_REGS

NR_TASKS
NR_PROCS
N_PROCS
NR_SEGS
NR_REGS

NR_TASKS
NR_PROCS
NR_SEGS
NR_REGS
N_PROCS

phys_clicks
vir_clicks
phys_clicks
vir_clicks
phys_clicks
vir_clicks

struct mem_map {...};
struct mem_map {...};
struct mem_map {...};
struct mem_map {...};
struct mem_map {...};

struct proc {

} proc [NR_TASKS+NR_PROCS];

struct mproc {

} mproc [N_PROCS]

struct proc {

} proc [NR_TASKS+NR_PROCS];

struct mproc {

} mproc [N_PROCS];

struct proc {

} proc [NR_TASKS+NR_PROCS]

struct mproc {

} mproc [N_PROCS]

Code: Alles auswählen

kernel
mm
fs

kernel
mm
fs

kernel
mm
fs

kernel
mm
fs

h
kernel
mm
fs

h
kernel
mm
fs

const.h
main.c

const.h
main.c
type.h

const.h
type.h
main.c

const.h
type.h
main.c

kernel/main.c
kernel/const.h
mm/main.c
mm/const.h
fs/main.c
fs/const.h
const/const.h

type.h

alloc.c
forkexit.c
break.c
signal.c
exec.c
main.c

mm/alloc.c
mm/signal.c
mm/break.c
mm/forkexit.c
mm/exec.c

mm/alloc.c
mm/signal.c
mm/break.c
mm/forkexit.c
mm/exec.c
mm/main.c

mm/main.c
mm/alloc.c
mm/signal.c
mm/break.c
mm/exec.c
mm/forkexit.c

mm/main.c
mm/forkexit.c
mm/exec.c
mm/break.c
mm/signal.c
mm/alloc.c

mm/main.c
mm/forkexit.c
mm/alloc.c
mm/exec.c
mm/break.c
mm/signal.c

NR_TASKS
NR_PROCS
N_PROCS

NR_TASKS
NR_PROCS
N_PROCS

NR_TASKS
NR_PROCS
N_PROCS

NR_TASKS
NR_PROCS
N_PROCS

NR_TASKS
NR_PROCS
N_PROCS

NR_SEGS
NR_REGS

NR_SEGS
NR_REGS

NR_SEGS
NR_REGS

NR_TASKS
NR_PROCS
N_PROCS
NR_SEGS
NR_REGS

NR_TASKS
NR_PROCS
NR_SEGS
NR_REGS
N_PROCS

phys_clicks
vir_clicks
phys_clicks
vir_clicks
phys_clicks
vir_clicks

struct mem_map {...};
struct mem_map {...};
struct mem_map {...};
struct mem_map {...};
struct mem_map {...};

struct proc {

} proc [NR_TASKS+NR_PROCS];

struct mproc {

} mproc [N_PROCS]

struct proc {

} proc [NR_TASKS+NR_PROCS];

struct mproc {

} mproc [N_PROCS];

struct proc {

} proc [NR_TASKS+NR_PROCS]

struct mproc {

} mproc [N_PROCS]

struct proc {
    type p_...
} proc [NR_PROCS + NR_TASKS]

struct mproc {
    type mp_...
} mproc [N_PROCS];

struct mem_map p_map [NR_SEGS];
struct mem_map p_map [NR_SEGS];
struct mem_map mp_map [NR_SEGS];
struct mem_map mp_map [NR_SEGS];

struct mem_map p_map [NR_SEGS];
struct mem_map mp_map [NR_SEGS];

struct proc {
        struct mem_mep p_map [NR_SEGS];
        ...
} proc [NR_PROCS + NR_TASKS];

struct mproc {
        struct mem_map mp_map [NR_SEGS];
} mproc [NR_PROCS + NR_TASKS];

int p_pid;
int p_pid;

int mp_pid:

int p_reg [NR_REGS];
int p_reg [NR_REGS];
int p_reg [NR_REGS];
int p_reg [NR_REGS];

alloc_mem
free_mem
merge
del_slot
max_hole

alloc_mem
free_mem
merge
del_slot
max_hole

Code: Alles auswählen

Task-Register TR
Task-Register TR
Task-Register TR
Task-Register TR
Task-Register TR

Local Descriptor Table LDTR
Local Descriptor Table LDTR
Local Descriptor Table LDTR
Local Descriptor Table LDTR

Task State Segment TSS
Task State Segment TSS
Task State Segment TSS

Taskö-Register
task State Segment

Task Register
Task State Segmenet

Task Register
Task State Segment

Local Descriptor Table LDTR
Local Descriptor Table LDTR
Local Descriptor Table LDTR

TSS 104 Byte
TSS 104 Byte, 32 Bit
TSS 104 Byte, 32 Bit
TSS 104 Byte, 32 Bit

I/O Privilege Level Field Flags
I/O Privilege Level Field Flag
I/O Privilege Level Field Flag
I/O Privilege Level Field Flag

Nested Task Flag
Nested Task Flag
Nested Task Flag
Nested Task Flag

Resume Flag
Resume Flag

I/O Privilege Level Field Flag
Nested Task Flag
Resume Flag

I/O Privilege Level Field Flag
Nested Task Flag
Resume Flag

I/O Privilege Level Field Flag
Nested Task Flag
Resume Flag

Virtual 8086-Mode Flag VM
Virtual 8086-Mode Flag VM
Virtual 8086-Mode Flag VM
Virtual 8086-Mode Flag VM

Alignment Check Flag
Alignment Check Flag
Alignment Check Flag
Alignment Check Flag

Virtual Interrupt Flag
Virtual Interrupt Flag
Virtual Interrupt Flag
Virtual Interrupt Flag

Virtual Interrupt Pending Flag (VIP)
Virtual Interrupt Pending Flag (VIP)
Virtual Interrupt Pending Flag (VIP)

Identification Flag
Identficiation Flag

Alignment Check Flag
Virtual Interrupt Flag
Virtual Interrupt Pending Flag

CR0 = Situation steuern
CR0 = Situation steuern
CR0 = Situation steuern C
CR0 = Situation Steuern
CR0 = Sitautoin steuern

Protected Enable Flag = Pe
Protected Enable Flag = PE
Protected Enable Flag = PE
Protected Enable Flag = PE
Protected Enable Flag = PE

Monitor Coprocessor Flag
Monitor Coprocessor Flag
Minitor Coprocoess Flag

Protected Enable Flag

Emulation Flag

Protected Enable
Minitor Coprocess
Emulation

Task Switch Flag
Task Switch Flag
Task Switch Flag
Task Switch Flag

CR2: Page Fault
CR3: Page Directory Base Addeess

CR2: Page Fault
CR3: Page Directory Base Address

CR2: Page Fault
CR3: Page Directory Base Address

Jetzt lerne ich das noch mal auswendig, und danach lerne ich zwei funktionen, von der mm/alloc.c zwei Funktionen von der Speicherverwaltung auswendig.

Code: Alles auswählen

phys_clicks alloc_mem (phys_clicks clicks) {
    regsiter struct hole *hp, *prev_ptr;
    phys_click old_base;

    hp = hole_head;
    while (hp != NIL_HOLE) {

        prev_ptr = hp;
        hp = hp->h_next;
    }
}

phys_clicks alloc_mem (phys_clicks clicks) {
    phys_clicks old_base;
    regsiter struct hole *hp, *prev_ptr;

    hp = hole_head;
    while (hp != NIL_HOLE) {

        prev_ptr = hp;
        hp = hp -> h_next;
    }
}

phys_clicks alloc_mem (phys_clicks clicks) {
    phys_clicks old_base;
    register struct hole *hp;

    hp = hole_head;
    while (hp != NIL_HOLE) {

        prev_ptr = hp;
        hp = hp->h_next;
    }
}

phys_clicks alloc_mem (phys_clicks clicks) {
    phys_clicks old_base;
    register struct hole *hp, *prev_ptr;

    while (hp != NIL_HOLE) {
        if (hp -> h_len >= clicks) {

        }
        prev_ptr = hp;
        hp = hp->h_next;
    }
}

phys_clicks alloc_mem (phys_clicks clicks) {
    phys_clicks old_base;
    register struct hole *hp, *prev_ptr;

    hp = hole_head;
    while (hp != NIL_HOLE) {
        if (hp->h_len >= clicks) {
            old_base = hp->h_base;
            hp->h_base += clicks;
            hp->h_len -= clicks;

        }
        prev_ptr = hp;
        hp = hp->h_base;
    }
}

phys_clicks alloc_mem (phys_clicks clicks) {
    phys_clicks old_base;
    register struct hole *hp, *prev_ptr;

    hp = hole_head;
    while (hp != NIL_HOLE) {
        if (hp->h_len >= clicks) {
            old_base = hp->h_base;
            hp->h_base += clicks;
            hp->h_len -= clicks;

            if (hp->h_len > 0) return (old_base);
            del_slot (prev_ptr, hp);
            return (old_base);
        }
        old_base = hp;
        hp = hp -> h_next;
    }
}
Antworten