Ahoi
Ich habe da mal mehrere Fragen, wegen des Multitaskings.
Also bis jetzt habe ich das so verstanden:
Es gibt einen Prozess, der erstellt wird, wenn z.B. ein Programm ausgeführt werden soll.
Dieser Prozess hat nun zur Ausführung Unterprozesse also Threads.
Mit dieser Aussage habe ich nun 2 Strukturen erstellt, einmal für einen Process und einmal für einen Thread.
typedef struct process
{
/* Process Stack */
unsigned int esp;
/* Kernel Stack */
unsigned int kernel_stack;
/* Process ID */
unsigned int pid;
/* Process Name */
char *process_name;
/* Page Directory */
page_directory_t cr3;
/* Lists with Threads from this process */
list_t *threads;
/* Max. Execution Time */
unsigned int timer_ticks_for_execution;
/* Execution time left */
unsigned int timer_ticks_left;
/* Stores the Process State */
unsigned int process_state;
} process_t;
typedef struct thread
{
/* Thread Stack */
unsigned int esp;
/* Thread Name */
char *thread_name;
/* stores the thread state */
unsigned int thread_state;
/* Is Thread in Virtual 8086 Mode */
bool is_vm8086;
} thread_t;
Nun muss ich einen Stack anlegen, wo der eip auf start gesetzt wird.
Ist die Struktur so vollständig oder fehlt da noch was, was unbedingt rein muss?
Bei den VM86 Tasks wollte ich den Code komplett über Threads ausführen lassen. Kann ich das so machen?
Brauche ich nur den einen Stack, weil ich meine wo anders gelesen zu haben, dass ich mehr als einen Stack brauche.
Gruß Christian