background image

Imię

Nazwisko

Grupa

Data

Egzamin z Systemów Operacyjnych

Jeżeli w zadaniu wystąpi nazwa Windows mamy na myśli 32-bitowy system oparty na architekturze Win32

Jeżeli w zadaniu wystąpi nazwa proces mamy na myśli 32-bitowy proces

Zadanie 1

Karta dźwiękowa obsługiwana jest przez urządzenie wirtualne sound.vxd i sterownik sound.drv. Karta
wykorzystywana jest jednocześnie przez proces Windows i aplikację systemu MS-DOS. Zaznaczyć rysunek,
który poprawnie opisuje architekturę systemu i wykorzystanie zasobów przez pracujące procesy.

a

b

c

d

e

Wskazówka: jakie są zadania sterowników urządzeń i urządzeń wirtualnych?

Zadanie 2
W systemie  Windows pracuje 16-bitowy proces Windows 3.x , który otworzył widoczne okno. Jaka jest
standardowa reakcja systemu, gdy użytkownik przesuwa mysz nad oknem tego procesu?
a

Urządzenie wirtualne 

mouse.vxd

 wywołuje funkcję, którą wcześniej proces musi zarejestrować,

b

32-bitowy sterownik 

mouse.drv

 wywołuje funkcję, którą wcześniej proces musi zarejestrować,

c

Proces otrzymuje meldunki 

WM_MOUSEMOVE

,

d

System nie obsługuje 16-bitowych procesów, proces musi analizować dane z portu myszy

Zadanie 3
Wywołanie poniższej funkcji spowoduje w systemie Windows (wskaźnik ptr jest niezainicjowany):

char f(void) {char *ptr; char c; c = *ptr; return c;}

a

Funkcja na pewno wykona się i zwróci losową wartość z przestrzeni adresowej swojego procesu,

b

Funkcja na pewno zwróci wartość z przestrzeni adresowej swojego albo innego procesu,

c

Jeżeli ptr wskazuje bajt leżący na stronie, która nie ma praw do odczytu, system zawiesi się,

d

Jeżeli ptr wskazuje bajt leżący na stronie, która nie ma praw do odczytu, proces wykonujący funkcję
zostanie przerwany.

Wskazówka: jakie są prawa dostępu do strony?

Zadanie 4
W Windows pracują 3 procesy. Liczba wątków i aktualny priorytet pokazane są w tabeli.

Proces

p1

p2

p3

wątki

w1

w2

w3

w4

w5

priorytet

16

16

15

15

17

Który rysunek poprawnie przedstawia kolejkowanie (pomijamy wątki systemowe)?

a

b

c

d

W1

W1 W2

W5

W3 W4

W4

W3

W2

W1

W5

W2

vxd

drv

Win32

DOS

karta

W3

W4

vxd

drv

Win32

DOS

karta

W5

W5

W1

W2

W3

W4

drv

vxd

Win32

DOS

karta

vxd

drv

Win32

DOS

karta

drv

vxd

Win32

DOS

karta

background image

Zadanie 5

Pracują dwa wątki o równych priorytetach: w1 (uruchomiony pierwszy) i w2 (uruchomiony drugi). W chwili,
gdy wątek 1 wykonuje podkreśloną instrukcję następuje przełączenie zadań i system przełącza kontekst na
wątek 2. Funkcja 

printf

 nie jest współbieżna. Zaznaczyć, co prawdopodobnie pojawi się na ekranie.

int wyswietl(char *s)  {

int w;

  

  w=printf(s);

 

 ___    

  return w;

}

int w1(void *p)

{

  wyswietl(”0000”);

  return 0;

}

int w2(void *p)

{

  wyswietl(”1111”);

  return a;

}

a

00001111

b

00011110

c

System zawiesi się, ponieważ doszło do konfliktu współdzielenia zasobów (wspólny ekran)

d

Proces wykonujący wątki zostanie przerwany przez system, ponieważ doszło do konfliktu
współdzielenia zasobów (wspólny ekran)

Zadanie 6
Serwer skrzynki pocztowej pracuje na komputerze o nazwie Komp1, klient na komputerze o nazwie Komp2.
Zaznaczyć odpowiedź, która zawiera instrukcję tworzącą skrzynkę pocztową dla serwera i otwierającą plik dla
klienta w celu wysyłania wiadomości wyłącznie do serwera.
a

CreateMailslot(”\\\\.\\mailslot\\skrzynka.net”,4096,1000,0);

fopen(”\\\\komp1\\mailslot\\skrzynka.net”,”w”);

b

CreateMailslot(”\\\\komp1\\mailslot\\skrzynka.net”,4096,1000,0);

fopen(”\\\\komp2\\mailslot\\skrzynka.net”,”w”);

c

CreateMailslot(”\\\\.\\mailslot\\skrzynka.net”,4096,1000,0);

fopen(”\\\\*\\mailslot\\skrzynka.net”,”w”);

d

CreateMailslot(”\\\\komp1\\mailslot\\skrzynka.net”,4096,1000,0);

fopen(”\\\\komp1\\mailslot\\skrzynka.net”,”w”);

Zadanie 7
W Windows pracują współbieżnie dwa procesy. Czy można tak poprawić kod, żeby proces 1 nie został
zablokowany?

CEvent e;

int main(void) {

  CSingleLock SL(&e);

  SL.Lock();  obliczaj2();  return 0;

}

CEvent e;

int main(void) {

  

  obliczaj1();  e.SetEvent();  return 0;

}

a

Nic nie trzeba poprawiać, proces 1 nie zostanie zablokowany

b

Należy zmienić klasę obiektu e na CMutex

c

Należy nadać identyczne nazwy dla obydwu zdarzeń (obiektów klasy CEvent)

d

W Windows nie można synchronizować procesów, nie da się poprawić tego przykładu