Sobes.tech
Junior

Šta je proces i nit? Čime se razlikuju?

sobes.tech АИ

Одговор од АИ

Proces je pokrenut program koji poseduje svoj sopstveni adresni prostor, resurse (deskriptore fajlova, mrežne konekcije) i kontekst izvršenja.

Nit (thread) je najmanja jedinica izvršenja unutar procesa. Jedan proces može sadržavati jednu ili više niti, koje dele njegove resurse, ali imaju sopstveni stek poziva, kontekst izvršenja i brojač instrukcija.

Glavne razlike:

Karakteristika Proces Nit (thread)
Izolacija Potpuna. Jedan proces ne utiče na drugog. Delimična. Niti dele resurse procesa.
Razmena podataka Preko IPC (međuprocesne komunikacije). Laka. Preko zajedničkih promenljivih unutar procesa.
Prebacivanje konteksta Skupo. Zahteva čuvanje i obnavljanje celog stanja procesa. Jeftinije. Zahteva čuvanje i obnavljanje stanja niti.
Kreiranje Skupo. Zahteva alokaciju resursa. Jeftinije. Zahteva alokaciju steka.
Završetak Završetak procesa završava sve njegove niti. Završetak niti ne utiče na druge niti ili proces.

Primer kreiranja procesa (spoljašnja komanda) u Javi:

// Java
Process process = Runtime.getRuntime().exec("ls -l");
// Rad sa procesom: dobijanje ulaza/izlaza i dr.

Primer kreiranja niti u Javi:

// Java
Runnable task = () -> {
    System.out.println("Zdravo iz niti: " + Thread.currentThread().getName());
};

Thread thread = new Thread(task);
thread.start(); // Pokretanje niti