/ / In un sistema operativo, chi è responsabile della cancellazione del thread? - multithreading, sistema operativo, cancellazione

In un sistema operativo, chi è responsabile della cancellazione del thread? - multithreading, sistema operativo, cancellazione

In un ambiente di multithreading, i thread possono essere annullati in due modi: attraverso cancellazione asincrona o cancellazione differita. Dal momento che ho letto in un manuale di riferimento che in un modello a due livelli per il multithreading, una libreria di thread utente è responsabile della programmazione dei thread, mi stavo chiedendo chi è responsabile della cancellazione del thread in un sistema operativo?

È anche la libreria dei thread utente?

Questo non mi sembra un'idea brillantedal momento che la libreria potrebbe benissimo fare praticamente tutto ciò che vuole e questo mi sembra un enorme difetto di progettazione. (Potresti finire con discussioni non ciclabili che cancellano l'intero disco!)

Potrebbe essere il sistema operativo stesso?

Inoltre, il sistema operativo potrebbe non essere nemmeno a conoscenza dei thread (ad esempio in un modello Many-to-One), quindi finirebbe per non essere in grado di riconoscere tali thread.

Ad ogni modo, ogni illuminazione è apprezzata!

risposte:

1 per risposta № 1

La risposta dipende da come sono i filiimplementato. Se, come suggerisci, i thread vengono creati attraverso una libreria utente, quindi uccidere il processo uccide i thread. A seconda del sistema operativo, la libreria potrebbe essere in grado di implementare la pulizia dei thread (anziché una morte improvvisa).

Se i thread sono implementati nel kernel del sistema operativo, il sistema operativo deve gestire la terminazione del thread.


0 per risposta № 2

"Threads wiping your hard disk" non è un problema. I thread in modalità utente possono fare tanto quanto il thread principale. Inoltre, il sistema operativo in genere può uccidere l'intero processo dell'utente senza preoccuparsi dei suoi dettagli interni, quindi è irrilevante se quei dettagli riguardavano i thread in modalità utente.

Naturalmente, quando il sistema operativo è responsabile per i threadin un processo, deve interrompere quei thread prima di rimuovere il processo. Il sistema operativo non può più programmare quei thread, ovviamente, poiché il loro codice muore con lo spazio degli indirizzi del processo interrotto.