Domanda

Ho una domanda per quanto riguarda implementazione pthread su Linux.

Supponiamo che un processo ha 5 fili. Ora, come fa lo scheduler vede queste discussioni (o doesnt vede affatto). per esempio. Quando scheduler viene richiamato, vuol programmare solo il processo principale, e quindi la sua l'onere del processo principale di linea tra ciascuno dei suoi thread.

O è il contrario, che gli orari di pianificazione ogni filo, come se si tratta di un processo separato.

È stato utile?

Soluzione

Per Linux moderno (implementazione pthread NPTL), i fili orari scheduler, un thread viene considerato un "processo leggero". pthread_create è implementata in termini di clone chiamata di sistema.

Altri suggerimenti

orari Linux ogni filo, come se si tratta di un processo con portata di PTHREAD_SCOPE_SYSTEM. L'implementazione nptl può utilizzare CPU multiple.

Come detto Logan, ogni filo è prevista indipendentemente.

Tuttavia, se si desidera si può utilizzare gruppi di controllo di processo Linux per gruppi di pianificazioni di fili, invece.

gruppi di controllo di processo rendono la programmazione un po 'più inefficiente, ma può essere molto più equo.

Un uso che è diventato molto popolare è quello di mettere tutti i processi e thread creati da ogni TTY in un gruppo di controllo per ogni TTY. Questo si traduce in tutte le applicazioni grafiche di un utente di essere programmate allo stesso livello come il suo 24-thread compilazione del kernel, che ha lanciato in una finestra di terminale. Le applicazioni grafiche ottengono il 50% e la compilazione ottiene il 50%. Se apre un'altra finestra di terminale e inizia a compilare glibc con altre 24 thread, si sposta alle applicazioni desktop 33%, 33% di compilazione del kernel e il 33% glibc compilazione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top