Documente Academic
Documente Profesional
Documente Cultură
Descriere
Modele de Multithreading
Probleme asociate Firelor de Execuţie
Pthreads
Thread-uri Windows XP
Thread-uri Linux
Thread-uri Java
Operating System Concepts with Java 5.1 Silberschatz, Galvin and Gagne ©2003 Operating System Concepts with Java 5.2 Silberschatz, Galvin and Gagne ©2003
Operating System Concepts with Java 5.3 Silberschatz, Galvin and Gagne ©2003 Operating System Concepts with Java 5.4 Silberschatz, Galvin and Gagne ©2003
Exemple Unu-la-Unu
Windows XP/2000
Solaris Multe-la-Multe
Linux
Tru64 UNIX
Mac OS X
Operating System Concepts with Java 5.5 Silberschatz, Galvin and Gagne ©2003 Operating System Concepts with Java 5.6 Silberschatz, Galvin and Gagne ©2003
1
Multe-la-Una Modelul Multe-la-Una
Multe fire de nivel utilizator mapate pe un singur fir de nivel
nucleu
Exemple
Solaris Green Threads
GNU Portable Threads
Operating System Concepts with Java 5.7 Silberschatz, Galvin and Gagne ©2003 Operating System Concepts with Java 5.8 Silberschatz, Galvin and Gagne ©2003
Operating System Concepts with Java 5.9 Silberschatz, Galvin and Gagne ©2003 Operating System Concepts with Java 5.10 Silberschatz, Galvin and Gagne ©2003
Operating System Concepts with Java 5.11 Silberschatz, Galvin and Gagne ©2003 Operating System Concepts with Java 5.12 Silberschatz, Galvin and Gagne ©2003
2
Modelul pe două nivele Modelul pe două nivele
Similar cu M:M, cu excepţia că permite ca un fir utilizator să fie
legat de un fir nucleu
Exemple
IRIX
HP-UX
Tru64 UNIX
Solaris 8 şi mai vechi
Operating System Concepts with Java 5.13 Silberschatz, Galvin and Gagne ©2003 Operating System Concepts with Java 5.14 Silberschatz, Galvin and Gagne ©2003
Operating System Concepts with Java 5.15 Silberschatz, Galvin and Gagne ©2003 Operating System Concepts with Java 5.16 Silberschatz, Galvin and Gagne ©2003
Operating System Concepts with Java 5.17 Silberschatz, Galvin and Gagne ©2003 Operating System Concepts with Java 5.18 Silberschatz, Galvin and Gagne ©2003
3
Plaja de Fire Date specifice firului
Creează un număr de fire într-o plajă unde ei aşteaptă de lucru Permite ca fiecare fir să aibe propria copie a datelor
Avantaje: Folositoare când nu există controlul asupra procesului de creare
De obicei puţin mai rapid în satisfacerea unei cereri printr-un fir a firului (ex., când se foloseşte o plajă de fire)
existent decât prin crearea unui fir nou
Permite ca numărul de fire din aplicaţie/aplicaţii să fie legat de
dimensiunea plajei
Operating System Concepts with Java 5.19 Silberschatz, Galvin and Gagne ©2003 Operating System Concepts with Java 5.20 Silberschatz, Galvin and Gagne ©2003
Operating System Concepts with Java 5.21 Silberschatz, Galvin and Gagne ©2003 Operating System Concepts with Java 5.22 Silberschatz, Galvin and Gagne ©2003
Operating System Concepts with Java 5.23 Silberschatz, Galvin and Gagne ©2003 Operating System Concepts with Java 5.24 Silberschatz, Galvin and Gagne ©2003
4
Fire Linux Fire Java
Linux se referă la ele ca şi task-uri în loc de fire (threads)
Crearea de fire este realizată prin apelul sistem clone() Firele Java sunt gestionate de către JVM
clone() permite ca un task fiu să partajeze spaţiul de adrese al
task-ului (procesului) părinte Firele Java pot fi create prin:
Operating System Concepts with Java 5.25 Silberschatz, Galvin and Gagne ©2003 Operating System Concepts with Java 5.26 Silberschatz, Galvin and Gagne ©2003
Operating System Concepts with Java 5.27 Silberschatz, Galvin and Gagne ©2003 Operating System Concepts with Java 5.28 Silberschatz, Galvin and Gagne ©2003
Operating System Concepts with Java 5.29 Silberschatz, Galvin and Gagne ©2003 Operating System Concepts with Java 5.30 Silberschatz, Galvin and Gagne ©2003
5
Joncţiunea Firelor Anularea Firului
class JoinableWorker implements Runnable
{
public void run() {
System.out.println(“Lucratorul lucreaza"); Thread thrd = new Thread (new InterruptibleThread());
} Thrd.start();
}
...
public class JoinExample
{ // Acum sa il intrerupem
public static void main(String[] args) { Thrd.interrupt();
Thread task = new Thread(new JoinableWorker());
task.start();
try { task.join(); }
catch (InterruptedException ie) { }
System.out.println(“Lucratorul a terminat");
}
}
Operating System Concepts with Java 5.31 Silberschatz, Galvin and Gagne ©2003 Operating System Concepts with Java 5.32 Silberschatz, Galvin and Gagne ©2003
Operating System Concepts with Java 5.33 Silberschatz, Galvin and Gagne ©2003 Operating System Concepts with Java 5.34 Silberschatz, Galvin and Gagne ©2003
Operating System Concepts with Java 5.35 Silberschatz, Galvin and Gagne ©2003 Operating System Concepts with Java 5.36 Silberschatz, Galvin and Gagne ©2003
6
Firul Producator Firul Consumator
Operating System Concepts with Java 5.37 Silberschatz, Galvin and Gagne ©2003 Operating System Concepts with Java 5.38 Silberschatz, Galvin and Gagne ©2003