SOP, SOP-Lab2Zestawy, SOPy - LABORKI SEM 2


SOPy - LABORKI SEM 2

zestawy

Zestaw I

(Made by C. Sobaniec)

  1. Jak sprawdzić poprawność wykonania funkcji systemowej? Jak zdobyć informacje szczegółowe o zaistniałym błędzie?

  2. Czy poniższy program zadziała poprawnie? Odpowiedź uzasadnij:

int num:

int desk1[2], desk2[2];

pipe(desk1);

pipe(desk2);

if (fork()==0) {

close(desk1[1]);

close(desk2[0]);

read(desk1[0],&num,sizeof(int));

write(desk2[1],&num,sizeof(int));

}

else {

close(desk2[1]);

close(desk1[0]);

read(desk2[0],&num,sizeof(int));

write(desk[1],&num,sizeof(int));

}

  1. Przy pomocy semaforów zaimplementuj sekcję krytyczną, w której może się znaleźć co najwyżej 5 procesów. Napisz odpowiedni fragment kodu w C.

  2. W jaki sposób można odczytać asynchronicznie status zakończenia procesu potomnego?

  3. Opisz działanie poniższego programu:

void main(int argc, char* argv[]) {

execlp(argv[0],argv[0],NULL)

}

Zestaw II

(Made by C. Sobaniec)

  1. Dla następujących programów A i B:

Program A Program B

void main() { void main() {

printf("A\n"); printf("B1\n");

} if (fork()==0) {

execlp("A","A",NULL);

printf("B2\n");

}

printf("B3\n");

}

  1. Co powoduje następujące wywołanie funkcji signal:

signal(SIGINT,obsluga);

  1. Na czym polega różnica pomiędzy "zwykłymi" potokami a potokami nazwanymi (kolejkami FIFO)?

  2. Czy poniższy program zadziała poprawnie? Odpowiedź uzasadnij.

pipe(desk);

if (fork()==0) {

close(1);

dup(desk[1]);

close(desk[0]);

close(desk[1]);

execlp("ls","ls","-l",NULL);

}

else {

close(desk[1]);

wait(NULL);

read(desk[0],buf,1024);

}

  1. Jak ograniczyć dostęp do pamięci współdzielonej dla innych procesów?

Zestaw III

(Made by D. Wawrzyniak)

  1. Napisać program w języku C z wykorzystaniem funkcji jądra systemu operacyjnego UNIX, który będzie wykonywał polecenie ps, a po jego zakończeniu wyświetli ciąg pięciu gwiazdek.

#define MAX 512

void main() {

}

  1. Określić ile razy (przez ile procesów) wykonane będą poszczególne fragmenty kodu poniższego programu.

void main() {

int pid;

pid=fork();

sleep(5);

if (pid==0) {

fork();

sleep(10);

exit(1);

printf("Koniec\n");

}

wait(NULL);

pid=fork();

execlp("ls","ls","-l",NULL);

wait(NULL);

sleep(3);

exit(0);

}

Zestaw IV

(Made by D. Wawrzyniak; z pamięci więc pewne modyfikacje mogą wystąpić)

  1. Zmodyfikuj poniższy program tak aby wyjście instrukcji ps zostało przekazane do instrukcji more. Skomentuj odpowiednio tak zmodyfikowany program.

void main()

if (fork()==0) {

execlp("ps","ps","-ef",NULL);

exit(1);

}

wait(NULL);

execlp("more","more",NULL);

}

  1. Napisz program, który tworzy proces zombie na 30 sekund. Napisany program skomentuj i uzasadnij dlaczego w ten sposób zostanie utworzony proces zombie.



Wyszukiwarka

Podobne podstrony:
materiały prosecy i techniki produkcyjne laborki sem v
cwiczenie 6 - RLC, Metrologia, laborki sem. III
Lab fiz 304, Polibuda, II semestr, Fizyka laboratoria, Fizyka laborki sem.1
Lab fiz 104, Polibuda, II semestr, Fizyka laboratoria, Fizyka laborki sem.1
cwiczenie 2 - rozszerzanie zakresow, Metrologia, laborki sem. III
OZ M17, Studia, sprawozdania, sprawozdania od cewki 2, Dok 2, Dok 2, LABORKA, SEM~1.5I6
MASZYN~1, Studia, sprawozdania, sprawozdania od cewki 2, Dok 2, Dok 2, LABORKA, SEM~1.5I6
Lab fiz 301, Polibuda, II semestr, Fizyka laboratoria, Fizyka laborki sem.1
Lab fiz 100, Polibuda, II semestr, Fizyka laboratoria, Fizyka laborki sem.1
cw 13 - moc, Metrologia, laborki sem. III
Lab fiz 101, Polibuda, II semestr, Fizyka laboratoria, Fizyka laborki sem.1
Lab fiz 102, Polibuda, II semestr, Fizyka laboratoria, Fizyka laborki sem.1
materiały prosecy i techniki produkcyjne laborki sem v
2 Planowanie produkcji SOP
poprawa druk, Uczelnia, sem I, fiza, LABORATORIUM, Nowe laborki, Ciecz
Drgania Ćwiczenie nr 13, Politechnika Lubelska, Studia, semestr 5, Sem V, Sprawozdania, Laborka, Lab

więcej podobnych podstron