Non riesco a trovare questa informazione da nessuna parte. Ovunque guardi, trovo le cose che si riferiscono a come appare lo stack una volta che hai premuto "main" (qualunque sia il tuo punto di ingresso), quali sarebbero gli argomenti del programma e l'ambiente, ma quello che sto cercando è come il sistema si configura lo stack per collaborare con la macro switch_to. La prima volta che si passa all'attività, sarà necessario avere EFLAGS, EBP, i registri che GCC salva e l'indirizzo di ritorno dalla funzione schedule() sullo stack puntata da "tsk-> thread-> esp", ma quello che non riesco a capire è come il kernel imposta questo stack, poiché consente a GCC di salvare i registri generici (usando i parametri di output per l'assembly inline).Qual è lo stato stack del kernel del processo Linux durante la creazione del processo?
Mi riferisco solo ai PC x86. Sto facendo ricerche sul sistema di pianificazione/processo di Linux per il mio piccolo kernel che sto tentando di scrivere e non riesco a capire cosa mi manca. So che mi manca qualcosa dal momento che Slackware è in esecuzione sul mio computer è una testimonianza del fatto che lo schedulatore funziona: P
EDIT: Mi sembra di averlo scritto male. Sto cercando informazioni su come lo stack del kernel task non è configurato come l'attività utente utente è impostata. Più in particolare, lo stack a cui tsk-> thread-> esp punta, e che "switch_to" passa a.
Sembra che tu abbia due domande separate qui: 1) stack state su init di processo e 2) kernel 'schedule()' in un IRQ. Probabilmente dovresti postare una di queste domande come una nuova domanda e tenerne una di queste qui; in questo modo otterrai risposte focalizzate su ogni domanda. Su Stack Overflow, l'avvio di una domanda separata per ogni domanda è perfettamente soddisfacente. –
Va bene, lo farò! Ho letto le risposte/domande qui da molto tempo, ma mai pubblicato! Grazie per il suggerimento :) Bene, lo farò in circa 5 minuti. Devo aspettare: P – Caleb1994