ОС1/Јануар 2013 — разлика између измена

Извор: SI Wiki
Пређи на навигацију Пређи на претрагу
(→‎Rešenje: Додат још један разлог блокирања процеса (трећи), чекање на И/О)
(→‎Rešenje: Опис copyOnWrite)
Ред 87: Ред 87:
Neki sistem sa straničnom organizacijom memorije koristi tehniku ''copy on write''.  Jedan proces je tek kreirao drugi proces pozivom <code>fork()</code>. Ako novokreirani proces odmah po pokretanju izvrši operaciju upisa u memoriju, koji izuzetak će generisati procesor, ''page fault''  ili  neki  drugi  i koji? Precizno objasniti zašto i kako.
Neki sistem sa straničnom organizacijom memorije koristi tehniku ''copy on write''.  Jedan proces je tek kreirao drugi proces pozivom <code>fork()</code>. Ako novokreirani proces odmah po pokretanju izvrši operaciju upisa u memoriju, koji izuzetak će generisati procesor, ''page fault''  ili  neki  drugi  i koji? Precizno objasniti zašto i kako.
=== Rešenje ===
=== Rešenje ===
{{delimično rešeno}}
Десиће се "access violeation", јер процес има све странице тренутно учитане, али у њиховим дескрипторима у PMT je записано да се у њих несме уписивати, ОС погледа у описе сегмената и види да је дозвољен упис у ту страницу па је закључак да се она тренутно дели са неким другим процесом, страница ће се копирати и у ту нову копију, чији је власник тренутни процес, ће бити извршен упис.


== 8. zadatak ==
== 8. zadatak ==

Верзија на датум 3. октобар 2021. у 14:38

Zadaci na stranici predmeta.

1. zadatak

Postavka

Šta je to multiprocesorski sistem, a šta distribuirani sistem? Navesti po jedan primer svakog.

Rešenje

Videti zadatak iz julskog roka 2012.

2. zadatak

Postavka

Korišćenjem funkcije yield(jmp_buf old, jmp_buf new) koja čuva kontekst jedne niti i predaje procesor drugoj niti, realizovati operaciju wait na brojačkom semaforu u školskom jezgru.

Rešenje

void Semaphore::wait() {
	lock(lck);
	if(--val < 0) {
		jmp_buf old = Thread::running->context;
		blocked.put(Thread::running);
		Thread::running = Scheduler::get();
		jmp_buf new = Thread::running->context;
		yield(old, new);
	}
	unlock(lck);
}

3. zadatak

Postavka

Navesti najmanje tri slučaja (povoda) u kojima proces gubi procesor i prelazi u red suspendovanih (blokiranih) i naznačiti da li se to dešava kao posledica sistemskog poziva tog procesa ili spoljašnjeg prekida

Rešenje

  1. Zbog operacije na sinhronizacionoj primitivi, tj. na semaforu ili događaju
  2. Prilikom eksplicitnog poziva metode koja čeka da se nit/niti završe (join npr.)
  3. Pri sinhronoj I/O operaciji, posledica sistemskopg poziva tog procesa

4. zadatak

Postavka

Napisati kod koji realizuje Petersonov algoritam međusobnog isključenja dva uporedna procesa pomoću uposlenog čekanja.

Rešenje

shared var turn : integer := 1, flag1, flag2 : boolean := false;
process P1
	begin
		loop
			flag1 = true; turn := 2; 
			while flag2 and turn = 2 do null;
			<critical>
			flag1 := false
			<non-critical>
	end
end P1;

process P2
	begin
		loop
			flag2 = true; turn := 1; 
			while flag1 and turn = 1 do null;
			<critical>
			flag2 := false
			<non-critical>
	end
end P2;

5. zadatak

Postavka

U čemu je razlika između tehnika dinamičkog učitavanja (dynamic loading) i preklopa (overlay)?

Rešenje

Videti zadatak iz julskog roka 2012.

6. zadatak

Postavka

Virtuelni adresni prostor sistema je 8GB, adresibilna jedinica je 16-bitna reč, a virtuelni adresni prostor je organizovan stranično sa stranicomveličine 32KB. Fizički adresni prostor je veličine 2GB. Tabele preslikavanja stranica su organizovaneu dva nivoa, s tim da tabela prvog nivoa ima 2K ulaza. Prikazati logičku strukturu virtuelneadresei označiti širinu svakog polja. Označiti i podelu polja za broj stranice na polja zaindeksiranje PMT prvog i drugog nivoa.

Rešenje

PA:frame(16),offset(14)

VA:PMT1(11),PMT2(7),offset(14)

7. zadatak

Postavka

Neki sistem sa straničnom organizacijom memorije koristi tehniku copy on write. Jedan proces je tek kreirao drugi proces pozivom fork(). Ako novokreirani proces odmah po pokretanju izvrši operaciju upisa u memoriju, koji izuzetak će generisati procesor, page fault ili neki drugi i koji? Precizno objasniti zašto i kako.

Rešenje

Десиће се "access violeation", јер процес има све странице тренутно учитане, али у њиховим дескрипторима у PMT je записано да се у њих несме уписивати, ОС погледа у описе сегмената и види да је дозвољен упис у ту страницу па је закључак да се она тренутно дели са неким другим процесом, страница ће се копирати и у ту нову копију, чији је власник тренутни процес, ће бити извршен упис.

8. zadatak

Postavka

Na asembleru nekog zamišljenog RISC procesora sa LOAD/STORE arhitekturom napisati program koji prenosi blok podataka zadate dužine sa zadate adrese na izlazni uređaj korišćenjem programiranog ulaza/izlaza sa prozivanjem (polling).

Rešenje

main:	LD R1, blockAddr
		LD R2, cnt
		ST [ctrl], #0..1
wait:	LD R0, [status]
		AND R0, #1..0
		JZ wait
		LD R0, [R1]
		ST [data], R0
		INC R1
		DEC R2
		JNZ wait
		ST [ctrl], #0

9. zadatak

Postavka

Šta je osnovna svrha (motiv) postojanja operacije otvaranja fajla?

Rešenje

Svrha toga jeste da pri svakom obraćanju fajlu ne koristimo njegovo ime već koristimo ID u nizu fajl deskriptora koji sadrže pokazivače deskriptor u tabeli otvorenih fajlova koja sadrži pokazivač na FCB datog fajla.

10. zadatak

Postavka

Navesti i objasniti neku tehniku organizacije strukture podataka za rukovanje slobodnim prostorom fajl sistema na disku, osim bit-vektora.

Rešenje

Slobodni blokovi se mogu grupisati tako da prvi blok u grupi slobodnih sadrži pokazivač na naredne slobodne blokove.