ОС1/Фебруар 2014

Извор: SI Wiki
< ОС1
Датум измене: 18. септембар 2021. у 23:51; аутор: Ivan Pešić (разговор | доприноси) (нек неко намести 2. задатак)
(разл) ← Старија измена | Тренутна верзија (разл) | Новија измена → (разл)
Пређи на навигацију Пређи на претрагу

Zadaci na stranici predmeta.

1. zadatak

Postavka

Objasniti zašto je i kako uvođenje magnetnih diskova bilo od ključnog značaja kod prelaska sa paketnih sistema na sisteme sa multiprogramiranjem.

Rešenje

OS može da pristupa disku direktno, u proizvoljnom redosledu, bez značajnih razlika u vremenu odziva kao kod traka (zbog premotavanja) bez obzira na to kako su podaci smešteni na samom disku. Disk je blokovski orijentisan ulazno-izlazni uređaj. Podaci se mogu i učitavati sa diska i upisivati na njega, ali se prenose isključivo u blokovima fiksne veličine. Zbog ovoga je skup poslova koji su podneti na izvršavanje mogao da se snimi na disk a da OS sa njega učitava one koje odluči da će se izvršavati, na osnovu zauzeća procesora i memorije, a ne na osnovu redosleda kojim su podneti.

2. zadatak

Postavka

Objasniti kako se međusobno isključenje kritičnih sekcija jezgra operativnog sistema može obezbediti kod jednosprocesorskih, a kako kod višeprocesorskih sistema.

Rešenje

1. jednosprocesorski sistemi:

- maskirati prekide

- zabraniti preuzimanje

- optimistički pristup

2. višeprocesorski sistemi:

- test-and-set

- swap

3. zadatak

Postavka

Korišćenjem standardnih sistemskih poziva fork() i wait() napisati C program koji kreira tačno N procesa svoje dece, gde je N parametar programa, a potom čeka da se sva deca završe. Procesi-deca samo ispišu neku poruku na standardni izlaz i potom se završavaju.

Rešenje

#include <stdio.h>
int main(int argc, char* argv[]) {
	if(argc < 2)
		return -1;
	int N = atoi(argv[1]);
	int pid[N];
	for(int i = 0; i < N; i++) {
		pid[i] = fork();
		if(pid[i] < 0)
			return -2;
		else if(pid[i] == 0) {
			printf("Child %d", i);
			exit(0);
		}
	}
	for(int i = 0; i < N; i++)
		wait(pid[i]);
	return 0;
}

4. zadatak

Postavka

Korišćenjem standardnih brojačkih semafora napisati kod za sinhronizaciju proizvođača i potrošača sa neograničenim baferom. (Kod za smeštanje i uzimanje elemenata ne treba pisati, već samo naznačiti njegovo mesto.)

Rešenje

Semaphore mutex(1), spaceAvailable(N), itemAvailable(0);

void append(Data* d) {
	spaceAvailable.wait();
	mutex.wait();
	<add>
	mutex.signal();
	itemAvailable.signal();
}

Data* take() {
	itemAvailable.wait();
	mutex.wait();
	<get data>
	mutex.signal();
	spaceAvailable.signal();
	return data;
}

5. zadatak

Postavka

Ukratko objasniti osnovnu razliku između tehnika dinamičkog učitavanja (dynamic loading) i preklopa (overlays).

Rešenje

Videti zadatak iz julskog roka 2011.

6. zadatak

Postavka

Šta je eksterna fragmentacija kod alokacije memorije? Da li je ona moguća kod segmentno-stranične alokacije memorije?

Rešenje

Eksterna fragmentacija nastaje kada se procesi učitavaju u memoriju a zatim dealociraju. Kako se delovi proizvoljnih dimenzija zauzimaju i oslobađaju dinamički, slobodni fragmenti se stvaraju i nazivaju eksternim. Nije moguća eksterna fragmentacija kod segmentno-stranične organizacije jer alociraju blokovi iste veličine.


8. zadatak

Postavka

Ukratko objasniti tehniku spooling.

Rešenje

Kada neki nedeljivi spori uređaj želi da odradi posao, prvo se zatraži korišćenje tog uređaja sistemskim pozivom, OS tada pravi poseban fajl na određenom mestu u svom fajl sistemu u koji će preusmeriti sve ulazne operacije tog procesa sa štampačem i vraća kontrolu procesu. OS predaje fajl na obradu posebnom procesu ili niti (spuleru) koji će jedan po jedan fajl da uzima i njihove sadržaje da šalje datom uređaju.

9. zadatak

Dati procenu kompleksnosti u najgorem slučaju sledećih operacija sa direktorijumom u odnosu na broj postojećih fajlova n u direktorijumu, za navedene implementacije direktorijuma.

Rešenje

Овај задатак није решен. Помозите SI Wiki тако што ћете га решити.

10. zadatak

Koliko pristupa blokovima na disku treba izvršiti za pristup n-tom logičkom bloku sadržaja fajla ako je alokacija fajla a) indeksna, pri čemu je indeks fajla uvek u dva nivoa, a na blok sa indeksom prvog nivoa ukazuje polje u FCB, b) FAT, pri čemu je cela FAT u memoriji? FCB fajla je u memoriji.

Rešenje

Овај задатак није решен. Помозите SI Wiki тако што ћете га решити.