Thread utente

Come thread utente (anche thread scritti dagli utenti ), occasionalmente a livello utente -Thread e z. B. in Windows Fiber ( vedi sotto ) chiamava, in informatica, un certo modo di eseguire programmi o parti di programma in modo interconnesso. La funzionalità non è implementata direttamente nel kernel (come in un thread del kernel ), ma in una libreria di programmi separata che si trova nello spazio utente . Ciò consente una modifica del contesto (commutazione delle attività) tra i thread dell'utente senza chiamate di sistema complesse, il che significa che le modifiche del contesto sono significativamente più veloci rispetto ai thread o ai processi del kernel .

Pianificazione

Poiché i thread utente all'interno di un thread del kernel in linea di principio non vengono eseguiti simultaneamente ([pseudo] parallelamente), ma solo uno dopo l'altro, i thread utente non possono essere distribuiti in modo ragionevole su più processori . Poiché il sistema operativo non sa nulla dell'esistenza dei thread utente, la pianificazione (controllo temporale) dei thread utente deve essere eseguita dal programma stesso o dalla libreria del programma utilizzata. In tal modo, la programmazione cooperativa è praticamente sempre gestita e non preventiva ( dall'inglese preemptive , "privilegiata"). I thread utente devono quindi rinunciare al controllo di propria iniziativa.

Tuttavia, questo è problematico se uno dei thread dell'utente effettua una chiamata di sistema di blocco . Il fatto che questo thread utente sia bloccato rende impossibile trasferire il controllo a un altro thread utente, in questo modo l'intero programma viene bloccato. Tuttavia, questo problema può essere aggirato in quanto la libreria utilizzata fornisce funzioni sostitutive per il thread utente. La libreria utilizza quindi solo le chiamate di sistema non bloccanti del sistema operativo, che il sistema operativo deve fornire.

Punto di vista diverso

Il concetto di thread utente può anche essere visto come un'estensione dei concetti di procedure o funzioni nei linguaggi di programmazione corrispondenti . Da questo punto di vista, un thread utente corrisponde a una procedura che viene chiamata da un altro punto (tramite la pianificazione esplicita proprio di questo thread utente). Tuttavia, tale procedura non ritorna necessariamente al flusso di controllo del chiamante esattamente in un punto, ma può piuttosto "tornare" più di una volta e in punti diversi tramite la sua pianificazione autoeseguita. Questa visione si riflette anche nel modo in cui i thread utente vengono dichiarati in alcuni sistemi, vale a dire come una procedura separata per ogni thread utente.

Implementazioni

Le librerie di thread utente sono disponibili in molti sistemi operativi , ma gli interpreti possono anche supportare i thread utente. La denominazione dei thread utente varia a seconda dell'implementazione .

finestre

Microsoft chiama i thread utente che offre (da Windows 98 ) in Windows Fibers . La parola inglese fiber ( dt. ' Fiber ' → ' fiber ') può essere usata qui come riferimento alla relazione naturale di un filo - d. H. un filo - da intendersi come una fibra / fibra: una fibra / fibra è più sottile e più semplice di un filo (filo); un filo può essere filato da più singole fibre. Un thread può essere convertito in una fibra in Windows e viceversa.

Linux

In Linux, per esempio, i LinuxThreads e GNU Discussioni portatili librerie forniscono utente discussioni . Tuttavia, LinuxThreads non viene più sviluppato e il suo successore, la Native POSIX Thread Library (NPTL), non è più una libreria dello spazio utente puro .

Solaris

La convenzione di denominazione su Solaris è diversa da quella su Windows e Linux . Un thread del kernel è qui come un processo leggero ( Inglese ; → vedi, processo leggero '. Thread (informatica) ) a cui ci si riferisce e un thread utente chiamato semplicemente thread .
Un thread Solaris può anche essere assegnato ad altri processi leggeri nello stesso processo .

macchina virtuale Java

Le versioni più recenti della Java Virtual Machine (JVM) utilizzano, se disponibili, le capacità del sistema operativo locale per rendere i thread disponibili al programmatore. Con le versioni precedenti o se il sistema operativo non supporta i thread del kernel , la JVM ha anche la propria funzionalità di thread utente. Questo è noto come filo verde . I thread verdi sono thread di utenti reali, ma offrono comunque una pianificazione preventiva basata sulla priorità implementata dalla JVM.

letteratura

Prove individuali

  1. Cprogramming.com: Introduzione alla programmazione Windows e OpenGL. (Inglese)
  2. Vikram Shukla: modelli di threading Linux a confronto: LinuxThreads e NPTL (PDF; 50 KB, inglese), accesso 31 maggio 2019.
  3. ^ Fabian Zabatta, Kevin Ying: un confronto delle prestazioni dei thread: Windows NT e Solaris su un multiprocessore simmetrico. 2 ° USENIX Windows NT Symposium, 3 - 5 agosto 1998. In: usenix.org. USENIX Association, 10 aprile 2002, accesso 6 febbraio 2014 .
  4. ^ Glenn L. Vanderburg et al.: Tricks of the Java Programming Gurus. Archiviata dall'originale il 25 maggio 2009 ; accesso il 14 aprile 2018 (inglese).

link internet