Procitao sam osnovno o OS, kapiram da vise nismo u periodu kada bi smo programe pisali u masinskom jeziku ili asembleru i preko busenih kartica ubacivali... Kapiram da je OS jedan veliki administrator, bla bla bla...
Procitao sam i osnovno o procesima, da su to programi u izvrsenju, imaju svoje resurse, jedinstvene oznake.... Ono sto me malo buni jesu deca procesi i niti.
Imam jedan primer iz knjige pa evo da ga prenesem ovde
Code:
#include <stdio.h>
main(int argc, char *argv[]) {
int pid;
pid=fork() // ovde imamo poziv forka koji pravi novi proces a pid je jedinstveni broj svakog procesa koji sluzi za oznaku
if(pid==0) // proces dete
{
excelp ("/bin/ls", "ls", NULL); // izvrsavanje necega
}
else
{
wait(NULL);
/* proces dete je zavrsio svoje aktivnosti */
exit();
#include <stdio.h>
main(int argc, char *argv[]) {
int pid;
pid=fork() // ovde imamo poziv forka koji pravi novi proces a pid je jedinstveni broj svakog procesa koji sluzi za oznaku
if(pid==0) // proces dete
{
excelp ("/bin/ls", "ls", NULL); // izvrsavanje necega
}
else
{
wait(NULL);
/* proces dete je zavrsio svoje aktivnosti */
exit();
Koliko sam iz ovoga uspeo shvatiti ovde nakon fork-a roditelj ima jednu brojnu oznaku a dete drugu ( 0 u ovom slucaju) sto je i logicno. Sada roditelj ceka da dete izvrsi svoj zadatak (wait) i nakon toga roditelj nastavlja sa svojim zadatkom tj ide exit, cime se proces poslednjom naredbom zavrsava i unistava.....
Shvatio sam da proces roditelj i dete uglavnom dele resurse, adresni prostor, ali i da ne mora biti tako...
Ono sto mene zanima je da li ovo mogu posmatrati kao program i potprogram, znaci nakon zavrsetka potprograma i vracenih rezultata (mada to nije obavezno) glavni program nastavlja sa radom ???
Ako sam dobro razumeo ovde je proces dete nastao izvrsavanjem sistemskog poziva fork, da li to znaci da svaki novi proces zapravo nastaje kao dete nekog drugog procesa (sto bi znacilo da je pocetni i glavni proces roditelj zapravo neki sistemski proces ili neki pocetni korisnicki proces) i da nije moguce napraviti neki novi proces koji nece imati svog roditelja vec ce zapravo biti nov proces u pravom smisliu te reci ???
Sada deo o nitima. I taj sam deo procitao, da niti zapravo predstavljaju male potprograme sa jednostavnim (najcesce) zadacima i da sluze da prikazu kvazi paralelno izvrsavanje koje zapravo nije moguce na 1 cpu sa 1 jezgrom vec se konstantnim dodeljivanjem (svicovanjem) procesora izmedju procesa (ukoliko je proces vise nitni onda niti) dolazi do privida da je to paralelno izvrsavanje ???
Kako sam shvatio niti se stvaraju izvrsavanjem sistemskog poziva clone() i slicno kao procesi roditelj - dete mogu deliti memoriju pa me to dovodi do pitanja cemu potreba za nitima ako je sve moguce odraditi preko forka-a tj preko procesa dete ako znamo da proces roditelj moze da nasavi sa izvrsavanjem nezavisno i konkurentno sa procesom detetom (suprutno od gore navedenog primera) ???
Literatura iz koje ucim je knjiga Operativni sistemi , autor Borislav Djordjevic, Dragan Pleskonjic i Nemanja Macek i za sada sam tek zagrebao po knjizi, 60 od 500+ strana... Vecinu stvari sam shvatio ali ovde sam naveo, verujem, neka pocetnicka pitanja jer zelim shvatiti stvar u srzi a ne da ucim napamet, sablonski.... Nadam se da ce neko uspeti da mi objasni ono sto sam pitao i ukaze na eventualne nepravilnosti i greske koje sam mozda (verovatno) napravio....