Un commutatore di contesto si verifica in un sistema la cui coda pronta ha solo un processo e che utilizza la pianificazione round-robin?Si verifica un cambio di contesto in un sistema la cui coda pronta ha solo un processo e che utilizza la pianificazione round-robin?
Si supponga che l'attuale cpu burst del processo solitario si estenda su più di una porzione di tempo dell'algoritmo round-robin.
mio ragionamento è come sotto
I passi che possono aver luogo quando si verifica un interrupt timer in un caso tipico sono verifica
- Interrupt. Passa alla modalità kernel
- OS salva contesto attuale in PCB (salvare i registri, stato del processo e di gestione della memoria informazioni di processo in corso)
- eseguire molte operazioni specifici per l'architettura, tra cui vampate di calore dati e le cache di istruzioni e TLB di.
- Mettere processo in corso nella coda pronta
- Scegliere il nuovo processo per eseguire
- contesto carico dal PCB di quel processo
- Passa alla modalità utente. Iniziare l'esecuzione del nuovo processo
Ora sto pensando che il sistema operativo potrebbe anche esaminare prima la coda pronta e verificare se ci sono altri processi. Se non ce ne sono, non c'è bisogno di un interruttore di contesto. Quindi la gestione dell'interrupt del timer comporterà il passaggio tra la modalità utente e la modalità kernel, controllando la Q pronta e tornando alla modalità utente per riprendere l'esecuzione del processo.
E 'questo che succede? Oppure un corretto passaggio al contesto che comporta il salvataggio non necessario dello stato attuale del processo solitario e il ripristino dello stesso avviene?
Se succede più tardi, c'è un motivo speciale?
Questa confusione è sorto a causa di una domanda in un documento di esame riguardante il calcolo del tempo trascorso nel cambio di contesto in tale situazione. La risposta fornita implica che gli switch di contesto abbiano luogo.
Spero che le persone che hanno esaminato il codice del kernel saranno in grado di fare luce su questo. Quindi questa domanda su StackOverflow.
Non intendevo dire che quelli erano i passaggi esatti e in questo ordine. Intendevo dire che quelli erano i possibili passi e che potrebbero non essere necessari se non ci fosse nessun altro processo nella Q pronta. Cercherò di rendere più chiaro nella mia domanda. E sì, sono da un libro di testo. Sto imparando sui sistemi operativi ora. –
buono! Un libro elencherà in basso, cosa fa il sistema operativo in generale. Ma una vera implementazione si prenderà cura dei casi d'angolo, come hai detto.Si noti che, in base alla politica di pianificazione, anche se sono presenti più di 1 processo pronto, il sistema operativo potrebbe comunque selezionare il processo il cui intervallo temporale è appena scaduto. Quindi questo è un controllo molto utile. Non vuoi eseguire codice aggiuntivo, solo per scoprire che rallenta il tuo sistema. – Saurabh
Desidero accettare la risposta per il motivo che il codice linux che hai mostrato mostra chiaramente che un interruttore di contesto non ha luogo se c'è un solo processo. Tuttavia ritengo che la spiegazione sopra il codice non conduca naturalmente al punto espresso dal codice. Questo è successo prima del mio chiarimento sulla domanda. Potresti modificare la tua risposta (la parte del codice non linux) in modo che io possa accettare la tua risposta. Qualsiasi suggerimento per modificare la mia domanda sarebbe benvenuto. –