Sunteți pe pagina 1din 6

UNIVERSITATEA TEHNICĂ A MOLDOVEI

FACULTATEA CALCULATOARE, INFORMATICĂ ȘI


MICROELECTRONICĂ
DEPARTAMENTUL INFORMATICĂ ȘI INGINERIA
SISTEMELOR

Raport
LUCRARE DE LABORATOR NR. 1
la Arhitectura Sistemelor de Operare
Tema: Implimentarea metodelor de sincronizare a proceselor.

A realizat: st. gr. C-161 Crucean Cristian


A verificat: lector superior Rotaru Lilia
Chișinău 2019
Tema: Implimentarea metodelor de sincronizare a proceselor.

Scopul lucrării: Însuşirea metodelor de sincronizare a thread-urilor

Sarcina:

3 producători generează aleatoriu consoane care sunt consumate de 2 consumatori. De afişat


informaţia despre producerea şi consumarea obiectelor, mesajele despre cazurile când
“depozitul e gol sau plin”. Toate operaţiile se efectuează până când fiecare consumator este
îndestulat cu 12 obiecte.

Dimensiunea depozitului este 11.

Main.java

public class Main {


public static void main(String[] args) {
Depozit depozit = new Depozit();
Producator p1 = new Producator(depozit, "Producator.1");
Producator p2 = new Producator(depozit, "Producator.2");
Producator p3 = new Producator(depozit, "Producator.3");
Consumator c1 = new Consumator(depozit, "Consumator_1");
Consumator c2 = new Consumator(depozit, "Consumator_2");

p1.start(); p2.start(); p3.start();


c1.start(); c2.start();
while(true){
if(!c1.isAlive() || !c2.isAlive() ){
p1.stop(); p2.stop(); p3.stop();
break;
}
}
}
}

Consumator.java

public class Consumator extends Thread {


private Depozit depozit;
private String nume;

Consumator(Depozit depozit, String nume){


this.depozit = depozit;
this.nume = nume;
}
public synchronized void run(){
int nr = 12,temp;

for(int i=0; i < nr; i++){


temp = depozit.get(nume);
if(i == nr-1){
System.out.println("\t"+nume+" a consumat "+nr+" elemente");
}
try{
sleep((int)(Math.random()*1000));
}catch(InterruptedException e){}
}
}
}

Producator.java

public class Producator extends Thread {


private Depozit depozit;
private String nume;
private char[] tab = new char[]
{'B','C','D','F','H','T','R','S','W','M','N'};

Producator(Depozit depozit, String nume){


this.depozit = depozit;
this.nume = nume;
}

public synchronized void run(){


int index1, index2;

while(true){
index1 = (int)(Math.random()*10);
depozit.put(tab[index1], nume);
try{
sleep((int)(Math.random()*1000));
}catch(InterruptedException e){}
}
}
}

Depozit.java

public class Depozit {

char[] dep = new char[15];


int c = 0;
boolean liber = false;
boolean gol = true;
String indicator = "Consumator_2";
int ind = 0;

public synchronized int get(String nume) {


while (!liber) {
try {
wait();
} catch (InterruptedException e) {
}
}
if(indicator != nume ){
indicator = nume;
if (c == 0) {
liber = false; gol = true;
System.out.println(">>> Depozitul este gol <<<");
}
if (c < 12) {
gol = true; liber = true;
System.out.println("\t" + nume + " a consumat " + dep[c]);
c--;
}
}
else indicator = nume;
notifyAll();
return dep[c + 1];
}
public synchronized void put(char n1, String nume){
while(!gol) {
try {
wait();
} catch (InterruptedException e) { }
}

if(c == 10){
afisare(n1, nume);
gol = false; liber = true;
System.out.println("!!! Depozitul este plin !!!");
}
else
if(c < 10){
afisare(n1, nume);
gol = true;
}

notifyAll();

private void afisare(char n1, String nume) {


c++;
dep[c] = n1;
System.out.println(""+nume+" a produs "+n1);
}

Rezultat:

Producator.1 a produs W

Producator.2 a produs B

Producator.3 a produs S

Producator.3 a produs C

Producator.2 a produs C

Producator.3 a produs H

Producator.1 a produs T

Producator.2 a produs S

Producator.3 a produs M

Producator.1 a produs B

Producator.1 a produs B

!!! Depozitul este plin !!!


Consumator_1 a consumat B

Producator.3 a produs F

!!! Depozitul este plin !!!

Consumator_2 a consumat F

Producator.2 a produs S

!!! Depozitul este plin !!!

Consumator_1 a consumat S

Producator.3 a produs C

!!! Depozitul este plin !!!

Consumator_2 a consumat C

Producator.1 a produs C

!!! Depozitul este plin !!!

Consumator_1 a consumat C

Producator.2 a produs S

!!! Depozitul este plin !!!

Consumator_2 a consumat S

Producator.3 a produs H

!!! Depozitul este plin !!!

Consumator_1 a consumat H

Producator.3 a produs F

!!! Depozitul este plin !!!

Consumator_2 a consumat F

Producator.2 a produs B

!!! Depozitul este plin !!!

Consumator_1 a consumat B

Producator.1 a produs C

!!! Depozitul este plin !!!

Consumator_2 a consumat C

Producator.2 a produs S
!!! Depozitul este plin !!!

Consumator_1 a consumat S

Producator.3 a produs M

!!! Depozitul este plin !!!

Consumator_2 a consumat M

Producator.2 a produs R

!!! Depozitul este plin !!!

Consumator_1 a consumat R

Producator.1 a produs S

!!! Depozitul este plin !!!

Consumator_2 a consumat S

Producator.3 a produs B

!!! Depozitul este plin !!!

Consumator_2 a consumat 12 elemente

Consumator_1 a consumat B

Consumator_1 a consumat 12 elemente

Producator.2 a produs B

!!! Depozitul este plin !!!

S-ar putea să vă placă și

  • Laborator 1 ASO
    Laborator 1 ASO
    Document4 pagini
    Laborator 1 ASO
    Жан Ганган
    Încă nu există evaluări
  • Hgjyujvvgvhgvn
    Hgjyujvvgvhgvn
    Document5 pagini
    Hgjyujvvgvhgvn
    CS:GO cFG
    100% (2)
  • Lucrarea 4 Utm
    Lucrarea 4 Utm
    Document10 pagini
    Lucrarea 4 Utm
    BlandjLdhui
    Încă nu există evaluări
  • Dutca Alexandru CR-182 Lab3 PCD
    Dutca Alexandru CR-182 Lab3 PCD
    Document5 pagini
    Dutca Alexandru CR-182 Lab3 PCD
    Dutca Alexandru
    Încă nu există evaluări
  • CR-191 MIPI Axenti Alina Lab4
    CR-191 MIPI Axenti Alina Lab4
    Document6 pagini
    CR-191 MIPI Axenti Alina Lab4
    Alina Axenti
    Încă nu există evaluări
  • TAP Lab4
    TAP Lab4
    Document10 pagini
    TAP Lab4
    Cristian Batir
    Încă nu există evaluări
  • LAB3PDP
    LAB3PDP
    Document4 pagini
    LAB3PDP
    Cristian
    Încă nu există evaluări
  • Gjgguyghjjgjh
    Gjgguyghjjgjh
    Document4 pagini
    Gjgguyghjjgjh
    CS:GO cFG
    Încă nu există evaluări
  • Atestare
    Atestare
    Document3 pagini
    Atestare
    Cristian Conea
    Încă nu există evaluări
  • AI-191 Medinschi Ion SO4
    AI-191 Medinschi Ion SO4
    Document5 pagini
    AI-191 Medinschi Ion SO4
    Carolin
    Încă nu există evaluări
  • Lab 3
    Lab 3
    Document4 pagini
    Lab 3
    Клара Кожухари
    Încă nu există evaluări
  • PCAD
    PCAD
    Document4 pagini
    PCAD
    Fiodor Ciumac
    Încă nu există evaluări
  • Lab 4
    Lab 4
    Document12 pagini
    Lab 4
    Fil Gorea
    Încă nu există evaluări
  • Lab 1
    Lab 1
    Document20 pagini
    Lab 1
    Fil Gorea
    Încă nu există evaluări
  • Lab MMC2
    Lab MMC2
    Document5 pagini
    Lab MMC2
    Maxim
    Încă nu există evaluări
  • PCD Lab 1 Nepiiovda Dmitrii
    PCD Lab 1 Nepiiovda Dmitrii
    Document10 pagini
    PCD Lab 1 Nepiiovda Dmitrii
    Catalina Bucur
    Încă nu există evaluări
  • Lab. Nr.1 - S.A.V - Ciubotaru Mihai
    Lab. Nr.1 - S.A.V - Ciubotaru Mihai
    Document10 pagini
    Lab. Nr.1 - S.A.V - Ciubotaru Mihai
    Mihai Ciubotaru
    Încă nu există evaluări
  • Hjjgkyjhgjbn
    Hjjgkyjhgjbn
    Document19 pagini
    Hjjgkyjhgjbn
    CS:GO cFG
    Încă nu există evaluări
  • Lab 6
    Lab 6
    Document4 pagini
    Lab 6
    Егор Казаков
    Încă nu există evaluări
  • Iepuras Daniel LAB 3 TS
    Iepuras Daniel LAB 3 TS
    Document8 pagini
    Iepuras Daniel LAB 3 TS
    DanuIepuras
    Încă nu există evaluări
  • Proiect de An RC
    Proiect de An RC
    Document15 pagini
    Proiect de An RC
    Клара Кожухари
    Încă nu există evaluări
  • TW Lab4
    TW Lab4
    Document8 pagini
    TW Lab4
    Dan
    Încă nu există evaluări
  • Preguza Cristian CR-201 LAB2
    Preguza Cristian CR-201 LAB2
    Document7 pagini
    Preguza Cristian CR-201 LAB2
    Aur Itar
    Încă nu există evaluări
  • LAB1PSR
    LAB1PSR
    Document9 pagini
    LAB1PSR
    Cristian
    Încă nu există evaluări
  • LAB3PSR
    LAB3PSR
    Document11 pagini
    LAB3PSR
    Cristian
    Încă nu există evaluări
  • Lab 3
    Lab 3
    Document4 pagini
    Lab 3
    Rosca Doinita
    Încă nu există evaluări
  • Lab 1
    Lab 1
    Document9 pagini
    Lab 1
    Cristian Conea
    Încă nu există evaluări
  • ASDN2
    ASDN2
    Document6 pagini
    ASDN2
    Viktor Dobrovolschi
    Încă nu există evaluări
  • TAP Lab2
    TAP Lab2
    Document4 pagini
    TAP Lab2
    Adrian Bodorin
    Încă nu există evaluări
  • Egajklrjalkgjlekrg
    Egajklrjalkgjlekrg
    Document8 pagini
    Egajklrjalkgjlekrg
    CS:GO cFG
    Încă nu există evaluări
  • Lab 3 Ppe
    Lab 3 Ppe
    Document8 pagini
    Lab 3 Ppe
    Anastasia Gherman
    Încă nu există evaluări
  • Lab 3
    Lab 3
    Document7 pagini
    Lab 3
    Fil Gorea
    Încă nu există evaluări
  • MMC Lab3 Rap
    MMC Lab3 Rap
    Document4 pagini
    MMC Lab3 Rap
    I LOVE ME
    Încă nu există evaluări
  • Pam 4
    Pam 4
    Document4 pagini
    Pam 4
    violina
    Încă nu există evaluări
  • TW Lab 5
    TW Lab 5
    Document4 pagini
    TW Lab 5
    danielploaia
    Încă nu există evaluări
  • Lab 1
    Lab 1
    Document8 pagini
    Lab 1
    dtatn
    Încă nu există evaluări
  • Lab 7 Cazacu POO
    Lab 7 Cazacu POO
    Document8 pagini
    Lab 7 Cazacu POO
    Iura Cazacu
    Încă nu există evaluări
  • Lab1 GC
    Lab1 GC
    Document8 pagini
    Lab1 GC
    Andrei Barbalat
    Încă nu există evaluări
  • SOMIPP Lab5
    SOMIPP Lab5
    Document4 pagini
    SOMIPP Lab5
    X3 KTO
    Încă nu există evaluări
  • Ppe 1
    Ppe 1
    Document5 pagini
    Ppe 1
    Victor Lungu
    Încă nu există evaluări
  • Bonta Alexandr SAV Lab2
    Bonta Alexandr SAV Lab2
    Document5 pagini
    Bonta Alexandr SAV Lab2
    X3 KTO
    Încă nu există evaluări
  • Lucrarea de Laborator NR 4 POO
    Lucrarea de Laborator NR 4 POO
    Document10 pagini
    Lucrarea de Laborator NR 4 POO
    Alexandru Burdeniuc
    Încă nu există evaluări
  • Lab 7 Somipp
    Lab 7 Somipp
    Document5 pagini
    Lab 7 Somipp
    Augusta Bucataru
    Încă nu există evaluări
  • Lab1 2mmc
    Lab1 2mmc
    Document10 pagini
    Lab1 2mmc
    Artur Kingsman
    Încă nu există evaluări
  • Somipp Linux 3 UTM
    Somipp Linux 3 UTM
    Document7 pagini
    Somipp Linux 3 UTM
    Cristi Poselețchi
    Încă nu există evaluări
  • PDP - Lucrarea de Laborator 2
    PDP - Lucrarea de Laborator 2
    Document9 pagini
    PDP - Lucrarea de Laborator 2
    Ion Caimacan
    Încă nu există evaluări
  • Lucrare de Laborator Nr.4
    Lucrare de Laborator Nr.4
    Document10 pagini
    Lucrare de Laborator Nr.4
    SpecialOps
    Încă nu există evaluări
  • SOMIPP Lab6
    SOMIPP Lab6
    Document4 pagini
    SOMIPP Lab6
    Dan
    Încă nu există evaluări
  • PPE Lab7
    PPE Lab7
    Document14 pagini
    PPE Lab7
    danielploaia
    Încă nu există evaluări
  • Evaluarea 1 TSSS, Varianta 2
    Evaluarea 1 TSSS, Varianta 2
    Document2 pagini
    Evaluarea 1 TSSS, Varianta 2
    Alex Tronciu
    Încă nu există evaluări
  • Laborator-2mmc Balan Ion
    Laborator-2mmc Balan Ion
    Document12 pagini
    Laborator-2mmc Balan Ion
    Ion Bn
    Încă nu există evaluări
  • Lucrul 4 SDA
    Lucrul 4 SDA
    Document3 pagini
    Lucrul 4 SDA
    Ilie Turcan
    Încă nu există evaluări
  • TAP Lab5 Popov Biatrice CR 191
    TAP Lab5 Popov Biatrice CR 191
    Document6 pagini
    TAP Lab5 Popov Biatrice CR 191
    Alina Axenti
    Încă nu există evaluări
  • Laborator-I MMC
    Laborator-I MMC
    Document7 pagini
    Laborator-I MMC
    Ion Bn
    Încă nu există evaluări
  • SOMIPP Lab4
    SOMIPP Lab4
    Document7 pagini
    SOMIPP Lab4
    Dan
    Încă nu există evaluări
  • Preguza Cristian CR-201 LAB4
    Preguza Cristian CR-201 LAB4
    Document9 pagini
    Preguza Cristian CR-201 LAB4
    Aur Itar
    Încă nu există evaluări
  • Examenul Final BTD - 2021
    Examenul Final BTD - 2021
    Document7 pagini
    Examenul Final BTD - 2021
    Клара Кожухари
    Încă nu există evaluări
  • Subiecte Examen ASDN
    Subiecte Examen ASDN
    Document3 pagini
    Subiecte Examen ASDN
    Camy Tripon
    Încă nu există evaluări
  • Definiţie: Un Segment de Cod Ce Gestionează o Resursă Comună Mai Multor Fire de
    Definiţie: Un Segment de Cod Ce Gestionează o Resursă Comună Mai Multor Fire de
    Document6 pagini
    Definiţie: Un Segment de Cod Ce Gestionează o Resursă Comună Mai Multor Fire de
    Andrii Andrei
    Încă nu există evaluări
  • POO Clase
    POO Clase
    Document5 pagini
    POO Clase
    Kng Ask
    Încă nu există evaluări
  • Lab 02 - Semnatura Electronica
    Lab 02 - Semnatura Electronica
    Document8 pagini
    Lab 02 - Semnatura Electronica
    Cristian
    Încă nu există evaluări
  • LAB3PDP
    LAB3PDP
    Document4 pagini
    LAB3PDP
    Cristian
    Încă nu există evaluări
  • LAB1PSR
    LAB1PSR
    Document9 pagini
    LAB1PSR
    Cristian
    Încă nu există evaluări
  • LAB3PSR
    LAB3PSR
    Document11 pagini
    LAB3PSR
    Cristian
    Încă nu există evaluări
  • C++ Primul Laborator11
    C++ Primul Laborator11
    Document4 pagini
    C++ Primul Laborator11
    Cristian
    Încă nu există evaluări
  • Raport de Practica
    Raport de Practica
    Document87 pagini
    Raport de Practica
    Cristian
    Încă nu există evaluări