ОС2/Фебруар 2019

Извор: SI Wiki
< ОС2
Датум измене: 5. јул 2023. у 00:32; аутор: Fedja (разговор | доприноси) (rešenje 5. zadatka)
(разл) ← Старија измена | Тренутна верзија (разл) | Новија измена → (разл)
Пређи на навигацију Пређи на претрагу

Zadaci na stranici predmeta.

1. zadatak

Postavka

Kod Multilevel Feedback Queue raspoređivanja, precizno navesti u kojoj situaciji (na koji događaj u sistemu) raspoređivač „degradira“ proces (smešta ga u red spremnih procesa nižeg prioriteta od onog u kom je ranije bio), a kada ga „promoviše“ (smešta u red višeg prioriteta od onog u kom je bio)?

Rešenje

  • Proces se degradira kada mu istekne vremenski kvant.
  • Proces se promoviše kad je dugo čekao.

2. zadatak

Postavka

Na jeziku Java napisati kod serverskog procesa koji prihvata klijentski zahtev preko priključnice (socket) na portu 6060 i odmah raskida konekciju.

Rešenje

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {
	public static void main(String[] args) {

		try {
			ServerSocket sock = new ServerSocket(6060);
			Socket client = sock.accept();
			sock.close();
		} catch (IOException e) {
			// ...
		}
	}
}

3. zadatak

Postavka

Šta je SOAP, a šta WSDL?

Rešenje

  • SOAP je protokol za razmenu poruka između aplikacija.
  • WSDL je jezik za opisivanje web servisa, zasnovan na XML.

4. zadatak

Postavka

Šta je tehnika „starenja“ (engl. aging) i za šta se ona upotrebljava?

Rešenje

Tehnika starenja je tehnika u algoritmima raspoređivanja zasnovanim na prioritetu koja sprečava izgladnjivanje. Što duže neki proces čeka, povećava mu se prioritet, i tako dolazi na red.

5. zadatak

Postavka

Tri uporedna procesa, A, B i C zauzimaju i oslobaˇaju tri nedeljiva resursa X, Y i Z po sledećem redosledu:

A: request(X), release(X), request(Y), release(Y)
B: request(Y), release(Y), request(X), release(X)
C: request(Y), request(Z), release(Z), release(Y)

Da li ova tri procesa mogu da uđu u stanje mrtve blokade (deadlock)? Ako mogu, dati scenario po kome dolaze u ovo stanje i nacrtati graf zauzeća resursa u tom stanju. Ako ne mogu, precizno objasniti (dokazati) zašto ne mogu.

Rešenje

Ova tri procesa mogu da uđu u stanje mrtve blokade, ako proces A zauzme X a proces B zauzme Y resurs. Na grafu zauzeća se vidi petlja A->Y->B->X->A

Graf zauzeća iz rešenja 5. zadatka.

6. zadatak

Postavka

Neki sistem primenjuje algoritam časovnika (davanja nove šanse, clock, second-chance) za izbor stranice za izbacivanje. U donjoj tabeli date su različite situacije u kojima treba odabrati stranicu za zamenu. Date su vrednosti bita referenciranja za sve stranice koje učestvuju u izboru i pozicija „kazaljke“. Kazaljka se pomera u smeru prema višim brojevima stranica. Za svaku od datih situacija navesti koja stranica će biti zamenjena.

Situacija 1 Situacija 2 Situacija 3
Stranica Bit ref. Kazaljka Bit ref. Kazaljka Bit ref. Kazaljka
0 1 1 1
1 1 1 1
2 0 X 0 1 X
3 0 0 1
4 1 0 1
5 0 1 X 1
6 1 1 1
7 1 1 1

Rešenje

Situacija Stranica
1 2
2 2
3 2

7. zadatak

Postavka

Kod slab alokatora, da li jedna struktura zvana cache sadrži alocirane strukture kernela istog ili različitih tipova?

Rešenje

Cache sadrži ploče koje u sebi sadrže alocirane stukure jednog tipa, tako da jedan cache služi za jedan tip.

8. zadatak

Postavka

Da li struktura RAID0 povećava otpornost na otkaze? Obrazložiti kako/zašto.

Rešenje

Ne, jer ne postoji nikakva redundansa. Otpornost se smanjuje jer se otkazom jednog diska trajno gube podaci celog sistema, pa se RAID 0 koristi tamo gde pouzdanost nije bitna.

9. zadatak

Postavka

Šta je journaling u fajl sistemu

Rešenje

Beleženje ili journaling je funkcionalnost fajl sistema gde se sve modifikacije fajl sistema modeluju kao transakcije i ne vrše se sinhrono, već se zapisuju u "zapisnik" (journal) i izvršavaju asinhrono. U slučaju pada sistema, neizvršene transakcije se mogu izvršiti ili poništiti tako da sistem ostane u konzistentnom stanju.

10. zadatak

Postavka

Na kom jeziku su napisane biblioteke poput OpenGL i SQLite koje su sastavni deo Android sistema?

Rešenje

Napisane su na C/C++.