Professional Documents
Culture Documents
Podsetnik Sistemskih Poziva.b
Podsetnik Sistemskih Poziva.b
Izvršavanje procesa se suspenduje zadati broj sekundi. Funkcija execl očekuje listu argumenata koja se završava sa
Nakon isteka specificiranog vremena proces normalno NULL. Funkcija execv očekuje niz (vektor) argumenata. Prvi
nastavlja svoje izvršenje od prve naredne linije koda. argument odgovara argv[0] i mora da bude ime programa
koji se poziva, poslednji element niza mora d aima
vrednost NULL. Funkcije execlp i execvp omogudavaju
Završetak procesa pretraživanje izvršnih datoteka u PATH putanji (ukoliko ime
izvršne datoteke ne sadrži / a u suprotnom se ponašaju kao
#include <stdlib.h> standardne execl i execv funkcije). Funkcije execle i execve
void exit(int status); omogućavaju specificiranje vrednosti environment
promenljivih.
Završava se izvršavanje procesa koji je pozvao funkciju:
zatvaraju se sve otvorene datoteke oslobađa se zauzeta
memorija obaveštava se roditeljski proces i prosleđuje mu Kreiranje niti
se exit kod procesi deca za roditeljski proces dobijaju
proces init (PID = 1) Nikad ne dolazi do greške prilikom #include <pthread.h>
poziva funkcije exit i funkcija ne vraća vrednost. Argument int pthread_create ( pthread_t *threadhandle,
status definiše exit kod procesa (status kojim se završio). pthread_attr_t *attribute, void *(*start_routine)(void*),
Uobičajeno je da 0 označava da se proces normalno završio void *arg ) ;
a negativna vrednost da je došlo do greške. Ne postoji
standardna lista statusa koji se mogu primenjivati. Status Argumenti: handle novokreirane niti ukoliko se funkcija
procesa se može dobiti korišdenjem wait funkcije. uspešno izvrši argumenti za kreiranje niti (mogu imati NULL
vrednost) pokazivač na funkciju koja sadrži programski kod
koji de niti zvršavati. Funkcija mora da vraća void * i da ima
jedan ulazni argument koji je void *. pokazivač na ulazni
argument niti
Operativni sistemi
Spisak Linux sistemskih poziva (podsetnik) 1
Operativni sistemi
Spisak Linux sistemskih poziva (podsetnik)
Čekanje niti Argument je pokazivač na uslovnu promenljivu koji želimo
da obrišemo.
#include <pthread.h>
int pthread_join ( pthread_t threadhandle, void
**returnvalue ) Blokiranje niti na uslovnoj promenljivoj
Operativni sistemi
Spisak Linux sistemskih poziva (podsetnik) 2
Operativni sistemi
Spisak Linux sistemskih poziva (podsetnik)
Kreiranje System V semafora Kontrola System V semafora
Prvi argument semid predstavlja identifikator (referencu) Unija semun je deklarisana u zaglavlju
System V semafora koji je dobijen pozivom funkcije <sys/sem.h>
semget. Drugi argument semops predstavlja niz operacija i ima slededi izgled:
koje treba izvršiti nad celobrojnim vrednostima System V
semafora. Svaka operacija je zadata kao sembuf struktura. union semun {
Treći argument nsops predstavlja broj elemenata niza sa int val;
operacijama. struct semid_ds *buf;
ushort *array;
struct seminfo * __buf;
Struktura sembuf je deklarisana u zaglavlju void * __pad;
<sys/sem.h> };
i ima slededi izgled:
Polje val se koristi za zadavanje vrednosti prilikom
struct sembuf { inicijalizacije celobrojne vrednosti semafora. Neke od
ushort sem_num; mogućih operacija koje se mogu izvršiti nad System V
short sem_op; semaforom: SETVAL – definiše vrednost odgovarajuće
short sem_flg; celobrojne vrednosti System V semafora IPC_RMID –
}; brisanje System V semafora iz sistema.
Operativni sistemi
Spisak Linux sistemskih poziva (podsetnik) 3
Operativni sistemi
Spisak Linux sistemskih poziva (podsetnik)
Citanje i pisanje iz datavoda procesa SIGTSTP- izvršavanje procesa u pozadini (Ctrl + Z)
SIGCONT – proces nastavlja izvršavanje nakon
#include <unistd.h> suspendovanja SIGCHLD – proces dete je završilo sa
ssize_t read(int fd, void * buff, size_t count); izvršavanjem SIGUSR1/SIGUSR2 – korisnički definisani
ssize_t write(int fd, void * buff, size_t count); signali
Operativni sistemi
Spisak Linux sistemskih poziva (podsetnik) 5
Operativni sistemi
Spisak Linux sistemskih poziva (podsetnik)
Mapiranje segmenta deljene memorije upis i za čitanje. O_APPEND – pozicionira pokazivač
datoteke na kraj. Datoteka je spremna za upis na kraj.
#include <sys/ipc.h> O_CREAT – ukoliko datoteka sa zadatim imenom ne
#include <sys/types.h> postoji, kreira se nova. O_TRUNC – ukoliko datoteka sa
#include <sys/shm.h> zadatim imenom postoji njen sadržaj se briše (datoteka
void * shmat(int shm_id, char * ptr, int flag); postaje dužine nula) Treći argument mode je opcioni i
koristi se prilikom kreiranja nove datoteke za definisanje
Prvi argument shm_id predstavlja identifikator (referencu) privilegija. Ukoliko se izostavi koriste se podrazumevane
segmenta deljene memorije koji je dobijen pozivom privilegije koje zavise od toga koji je korisnik pokrenuo
funkcije shmget. Drugi argument ptr u našem slučaju uvek proces.
ima vrednost NULL. Treći atgument definiše način
korišdenja segmenta deljene memorije: SHM_RDONLY –
deljenu memoriju je mogude samo čitati 0 – moguda je i i Zatvaranje datoteke
zmena sadržaja deljene memorijeu bajtovima. U slučaju
uspeha sistemski poziv vrača pokazivač na početak #include <unistd.h>
adresnog prostora u koji je mapirana deljena memorija. U int * close (int fd);
slučaju greške sistemski poziv vrada NULL.
Arguemnt fd predstavlja deskriptor datoteke koja se
zatvara.
Uklanjanje segmenta deljene memorije
#include <dirent.h>
Struktura stat struct dirent * readdir(DIR * dp);
#include <dirent.h>
Makro naredbe za odredjivanje tipa datoteke void rewinddir(DIR * dp);
Brisanje direktorijuma
#include <sys/stat.h>
int rmdir(const chat * pathname);
Operativni sistemi
Spisak Linux sistemskih poziva (podsetnik) 7