GRUPA A

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

Jeżeli w zadaniu wystąpi nazwa proces mamy na myśli 32-bitowy proces Windows W każdym zadaniu poprawna jest jedna odpowiedź

1. Użytkownik zalogowany w systemie Windows na konto bez uprawnień administratora formatuje dyskietkę za pomocą polecenia format wydanego z konsoli (użytkownik ma odpowiednie uprawnienia). W trakcie formatowania do systemu zdalnie loguje się administrator za pomocą usługi telnet i wyświetla zawartotść dyskietki. System zachowa się w sposób:

a

Nie można formatować dyskietki w taki sposób, ponieważ programy MS DOS nie mają dostępu do sprzętu, b

Na konsoli administratora pojawi się komunikat informujący o braku dostępu do urządzenia, c

Administrator zobaczy wirtualną zawartość dyskietki sprzed sformatowania,

d

Formatowanie zostanie przerwane, zawartość dyskietki odtworzona i wyświetlona administratorowi.

2. Proces wyświetla okno pokazane na rysunku. Z ilu wątków składa się ten proces?

a

1

b

2

c

3

d

Nie można określić liczby wątków na podstawie wyglądu okna.

3. W celu uzyskania informacji o prawach dostępu do stron procesu należy: a

Na podstawie identyfikatora procesu uzystać jego uchwyt (HANDLE) i użyć odpowiedniej funkcji systemowej, b

Użyć odpowiedniej funkcji systemowej, która zwraca te informacje na podstwie identyfikatora procesu, c

Nie można uzyskać takich informacji,

d

W eksploratorze Windows kliknąć prawym przyciskiem myszy na nazwie programu i z menu kontekstowego wybrać polecenie Właściwości.

4. W systemie Windows uruchamiamy dwa procesy, najpierw p1, następnie p2 (tryby otwierania plików: w – do zapisu, a

- dołączanie)

P1

P2

void main(void){

void main(void){

CEvent e1(0,0,”zdarzenie1”);

CEvent e1(0,0,”zdarzenie1”);

CEvent e2(0,0,”zdarzenie2”);

CEvent e2(0,0,”zdarzenie2”);

CSingleLock SL(&e1);

FILE *f=fopen(”plik.txt”,”a”);

FILE *f=fopen(”plik.txt”,”w”);

fprintf(f,”1”); e1.SetEvent();

SL.Lock(); fprintf(f,”3”);

CSingleLock SL(&e2); SL.Lock();

e2.SetEvent(); return 0;

fprintf(f,”2”); return 0;

}

}

Jaka będzie zawartość pliku plik.txt?

213

123

321

132

5. Co się stanie w wyniku wykonania następujących instrukcji (wykonujący je proces jest procesem Windows):

{FILE *f;f=fopen(”\\\\d3\\mailslot\\1025”,”w”);fprintf(f,”1”);fclose(f);}

a

Funkcja fopen zwróci błąd, ponieważ w nazwie pliku nie może wystąpić ciąg znaków \\, b

Na dysku zostanie utworzony plik o podanej nazwie zawierający znak ”1”,

c

Użytkownik ”1025” na komputerze o nazwie ”d3” otrzyma e-mail o treści ”1”,

d

Serwer skrzynki pocztowej o nazwie ”1025” na komputerze o nazwie ”d3” otrzyma wiadomość o treści ”1”.

6. Na komputerze o nazwie 108a2, na którym pracuje system Windows, uruchomiono serwer potoku nazwanego o nazwie potok. Co należy wstawić w miejsce znaku  w poniższym kodzie, żeby transakcja z tym serwerem zakończyła się pomyślnie:

char s[]="Wiadomość dla serwera\n"; char odp[256]; unsigned long nodp; CallNamedPipe( ,s,strlen(s)+1,odp,256,&nodp,0);

a

”\\\\108a2\\pipe\\potok”,

b

”\\108a2\pipe\potok”,

c

Serwer potoku nazwanego nie może pracować z systemem Windows,

d

”\\\\108a2\\potok”.

7. Dodajemy właściwość (property) FileName do interfejsu kontrolki ActiveX. Jakie składowe zostaną utworzone w klasie bazowej C++ do obsługi tej właściwości?

a

Dwie funkcje: GetFileName, SetFileName,

b

Jedna zmienna składowa klasy o nazwie FileName i żadna funkcja,

c

Do obsługi właściwości nie potrzebne są żadne składowe klasy bazowej kontrolki, d

Trzy funkcje: GetFileName, SetFileName, QueryFileName.

GRUPA B

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

Jeżeli w zadaniu wystąpi nazwa proces mamy na myśli 32-bitowy proces Windows W każdym zadaniu poprawna jest jedna odpowiedź

1. Producent modemów wyprodukował nowy model modemu w formie karty na magistralę PCI, niekompatybilny z dostępnymi na rynku. W celu umożliwienia działania tej karty w systemie Windows (programy MS-DOS nie będą wykorzystywać modemu), producent musi dostarczyć następujące składniki programowe: a

Sterownik trybu jądra i sterownik trybu użytkownika,

b

Tylko sterownik trybu jądra, ponieważ urządzenia PCI nie potrzebują sterowników trybu użytkownika, c

Tylko sterownik trybu użytkownika, ponieważ urządzenie nie będzie współpracowało z MS-DOS, d

Nic nie musi dostarczać, system Windows pobierze oprogramowanie z witryny Windows Update.

2. Co robi funkcja f?

void f(DWORD id, void *adres) { HANDLE hProces; DWORD n;

hProces = OpenProcess(PROCESS_ALL_ACCESS,0,id);

VirtualProtectEx(hProces,adres,4095,PAGE_READONLY,&n);

CloseHandle(hProces);}

a

Funkcja jest błędna, ponieważ nie kończy się instrukcją return,

b

Ustawia uprawnienia dostępu dla wskazanej strony pamięci procesu o zadanym identyfikatorze, c

Funkcja jest błędna, ponieważ w wywołaniu VirtualProtectEx brakuje operatora & przed zmienną adres, d

Odpowiedzi a i c są prawidłowe.

3. Rysunek obok przedstawia kolejkę systemową (wątek W1 ma najwyższy priorytet). Przyjmujemy W1

następujące założenia:

- aktualnie aktywny jest wątek W5, który jest w trakcie obliczeń i jest gotowy, W2

W3

- wątki W1 i W2 nie są gotowe,

W4

W5

- wątek W4 jest w trakcie obliczeń i jest gotowy, wątek W3 nic nie robi i jest gotowy.

Który wątek stanie się aktywny po upłynięciu szczeliny czasowej?

W1

W2

W3

W4

4. Proces P1 utworzył obiekt synchronizacji typu zdarzenie w następujący sposób: CEvent e1(0,0,”gotowe”);

W procesie P2 znajdują się nstępujące instrukcje:

CEvent e1; CSingleLock SL(&e1); SL.Lock();

Zakładamy, że procesy P1 i P2 są jednowątkowe o równych priorytetach. Zaznaczyć prawidłową odpowiedź.

a

Proces P2 zostanie zatrzymany i odblokowany gdy w P1 wystąpi instrukcja e1.SetEvent(), b

Proces P2 zostanie zatrzymany i odblokowany gdy dowolne zdarzenie o nazwie ”gotowe” zostanie ustawione, c

Proces P2 zostanie zatrzymany i przy podanych założeniach nie ma możliwości jego odblokowania, d

Odpowiedzi a i b są prawidłowe.

5. Co się stanie w wyniku wykonania następujących instrukcji (wykonujący je proces jest procesem Windows): HANDLE m; m=CreateMailslot(”\\\\prz.edu.pl\\mailslot\\stud”,0,0,0);

a

Na komputerze o nazwie prz.edu.pl zostanie utworzona skrzynka pocztowa o nazwie stud, b

Będzie m==TRUE, jeżeli użytkownik stud ma konto e-mail na serwerze prz.edu.pl, c

Użytkownikowi stud zostanie utworzone konto pocztowe na serwerze prz.edu.pl,

d

W funkcji CreateMailslot jest błąd, zamiast ”prz.edu.pl” powinien być znak ”.”.

6. Na komputerze o nazwie 108a2, na którym pracuje system Windows, uruchomiono serwer potoku nazwanego o nazwie potok. Co należy wstawić w miejsce znaku  w poniższym kodzie, żeby transakcja z tym serwerem zakończyła się pomyślnie:

char s[]="Wiadomość dla serwera\n"; char odp[256]; unsigned long nodp; CallNamedPipe( ,s,strlen(s)+1,odp,256,&nodp,0);

a

”\\\\108a2\\pipe\\potok”,

b

”\\108a2\pipe\potok”,

c

Serwer potoku nazwanego nie może pracować z systemem Windows,

d

”\\\\108a2\\potok”.

7. Zaznaczyć, które stwierdzenia dotyczące technologii COM i ActiveX są prawdziwe.

a

Obiekt COM musi posiadać interfejs o nazwie IWindowsCOMObject,

b

Obiekty ActiveX identyfikowane są za pomocą nazwy (np. SOAnimacja),

c

Metoda obiektu ActiveX utworzonego w języku C++ musi mieć odpowiadającą funkcję w klasie reprezentującej ten obiekt,

d

Zmiana wartości właściwości (property) kontrolki ActiveX nie może spowodować zmiany wyglądu kontrolki, e

Do obsługi właściwości kontrolki ActiveX nie potrzebne są żadne składowe klasy bazowej kontrolki.