Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Środowisko pracy informatyka zima 2014 Wykład 7 Uruchamianie systemu operacyjnego dr inż. Wojciech Bieniecki Instytut Nauk Ekonomicznych i Informatyki.

Podobne prezentacje


Prezentacja na temat: "Środowisko pracy informatyka zima 2014 Wykład 7 Uruchamianie systemu operacyjnego dr inż. Wojciech Bieniecki Instytut Nauk Ekonomicznych i Informatyki."— Zapis prezentacji:

1 Środowisko pracy informatyka zima 2014 Wykład 7 Uruchamianie systemu operacyjnego dr inż. Wojciech Bieniecki Instytut Nauk Ekonomicznych i Informatyki 1

2 SYSTEM LINUX 2

3 Proces uruchamiania systemu Linux 3 Ładowanie z dysku do pamięci operacyjnej obrazu jądra za pomocą boot loadera. Inicjalizacja urządzeń i ich sterowników przez jądro Montowanie systemu plików partycji podstawowej (“/”) Start jądra i uruchomienie programu init (w katalogu /sbin). Uruchamianie przez init pozostałych procesów ( usług) przwewidzianych w opcjach startowych systemu Uruchomienie procesu logowania użytkowników Jądro jest ładowane poprzez program rozruchowy boot loader, który po włączeniu komputera rozpoczyna samosprawdzanie sprzętu a następnie wyświetla menu wyboru systemu operacyjnego Obraz jądra vmlinuz znajduje się na dyskietce startowej lub w katalogu boot partycji podstawowej.

4 Program init 4 Celem programu init jest uruchamianie (zatrzymywanie) innych programów w określonej sekwencji W dystrybucji Red Hat program init zarówno wita w systemie Linux jak i opisuje po kolei poszczególne operacje procesu inicjalizacji z informacją o sukcesie ich wykonania lub porażce. Większość dystrybucji korzysta z wersji uniksowej System V programu init. Rzadko spotyka się prostszą wersję init typu BSD.

5 Program init 5 Poziom uruchomienia (runlevel) Określa go pewien podstawowy zbiór uruchomionych procesów na starcie systemu. Oznacza się go numerami od 0 do 6. 0: zatrzymanie komputera, 1: tryb pojedynczego użytkownika - odpowiednik trybu awaryjnego Windows, pozwala na wykonywanie tylko niektórych poleceń, 2: uruchamia większość usług, poza współdzieleniem plików sieciowych (NFS, SMB), dopuszcza wielu użytkowników. 3: używany standardowo w serwerach. Ładuje wszystkie usługi oprócz X Windows, a więc także prócz powłok graficznych jak GNOME, KDE itp. 4: poziom specjalny -może uruchamiać dodatkowe usługi 5: normalny tryb działania stacji roboczych. Startuje wszystkie GUI i usługi drukowania. 6: restart systemu

6 Plik /etc/inittab 6 Wiersze inittab są zbudowane następująco: unikalny identyfikator w procesie uruchamiania, stosowane poziomy uruchomienia, akcja przewidziana dla programu init, uruchomienie polecenia wiążącego się z podaną akcją.

7 Plik /etc/inittab 7 initdefault -domyślny poziom inicjalizacji systemu. id : 5 : initdefault: określa poziom 5 jako domyślny poziom po uruchomieniu systemu wait -akcja oczekiwania na zakończenie polecenia id : 5 : wait : /etc/rc.d/rc 5 wywołuje konfiguracje i usługi systemowe zapisane w katalogach rc*.d i init.d poprzez wykonanie polecenia /etc/rc.d/rc 5. Akcja wait nakazuje oczekiwanie na zakończenie polecenia przed podjęciem innych działań. respawn -ponowne uruchomienie polecenia po jego zakończeniu. 1 : 2345 : respawn : /sbin/mingetty tty1 oznacza ponowne wyświetlanie znaku zachęty logowania po wylogowaniu się z systemu ctrlaltdel – zachowanie systemu po naciśnięciu Ctrl+Alt+Del. ca::ctrlaltdel:/sbin/shutdown -h now Wywołanie polecenia shutdown zamykającego system. sysinit -pierwsze polecenie uruchamiane przez init przed wejściem na poziomy uruchamiania

8 Pliki w katalogu rc5.d 8

9 Polecenie rc 5 9 Polecenie rc 5 (run commands) w linii id : 5 : wait : /etc/rc.d/rc 5 pliku /etc/inittab oznacza uruchomienie szeregu poleceń składowych (usług) dla 5-tego poziomu z parametrem start. Te same usługi mogą być startowane i zatrzymywane ręcznie odpowiednio z parametrami start i stop. Polecenia składowe to zazwyczaj skrypty powłoki uruchamiające programy binarne z katalogów /sbin i /usr/sbin. Dla poziomu n znajdują się zwykle w podkatalogach rc.d Liczba (00-99) podawana w nazwie polecenia (rys. 2) określa kolejność uruchamiania przez program rc.

10 Przykładowa lista danych katalogu rc*.d 10 Wymieniane usługi stanowią dowiązania symboliczne do katalogu init.d

11 Dodawanie usługi 11 W celu dodania usługi piszemy skrypt w katalogu init.d i dowiązujemy w katalogu rc*d. Najlepiej zmodyfikować jeden z istniejących skryptów. Usługa korzystająca z innych musi być uruchomiona w odpowiedniej kolejności, np. na końcu tzn. z numerem powyżej 90 (mało ważna). Usługi startowe sa włączane i wyłączane przez interfejsy programowe: update -rc.d dla Debiana, chkconfig dla Red Hata.

12 Przełączanie poziomu init 12 (tel)init, gdzie ={0,...,6} określa poziom uruchomienia. (tel)init q -żądanie ponownego odczytania /etc/inittab po wykonanych zmianach (tel)init s -przejście do trybu pojedynczego użytkownika

13 Zamykanie systemu – komendy 13 shutdown [-hr] czas -h (halt) opcja zatrzymania systemu (przy nowych płytach głównych połączona z wyłączaniem zasilania) -r (reboot) opcja restartu systemu -f opuść proces sprawdzania fschk podczas restartu -szybki restart -F wymuś proces sprawdzania fschk podczas restartu -c (cancel) anulowanie procesu zamykania czas -określa moment wykonania operacji: now (+0) -natychmiast, +liczba -ilość sekund opóźnienia. (tel)init 0 -zamknięcie systemu i wyłączenie zasilania (tel)init 6 -restart systemu reboot -restart systemu halt -zatrzymanie systemu i wyłączenie zasilania poweroff -zatrzymanie systemu i wyłączenie zasilania

14 Sekwencja zamykania systemu 14 zakończenie działania wszystkich procesów polecenia z katalogów rc0.d lub rc6.d -zablokowanie plików systemowych i inne przygotowania do wyłączenia polecenia z katalogów rc0.d lub rc6.d -odmontowanie wszystkich partycji oprócz systemowej (“/”). polecenia z katalogów rc0.d lub rc6.d -przemontowanie partycji systemowej w trybie do odczytu zapis danych buforowanych do systemu plików -poleceniem sync polecenia z katalogów rc0.d lub rc6.d – zatrzymanie lub ponowne uruchomienie jądra poleceniem reboot, halt lub poweroff. Na poziomie 0 lub 6 polecenia te nakazują natychmiastowe zatrzymanie jądra.

15 Program rozruchowy LILO 15 LiLo (linux loader) – jeden z programów pozwalających wybrać i zainicjować system operacyjny po uruchomieniu komputera (tzw. program rozruchowy). [Ctrl]+[X] przełącza w tryb tekstowy zawierający wiersz poleceń ze słowem boot : [Tab] wypisuje domyślne opcje jądra / systemu operacyjnego Poszczególne opcje można wpisać w postaci linii poleceń: opcja1 opcja2... gdzie oznacza aktualną nazwę jądra Brak wypisanych opcji po komendzie linux oznacza przyjęcie opcji domyślnych. Przykłady: -s : uruchomienie w trybie pojedynczego uzytkownika root=/dev/hda1 -s : zastąpienie domyślnej partycji systemowej

16 Program rozruchowy GRUB (Grand Unified Bootloader 16 LILO jest wykorzystywane praktycznie od pojawienia się pierwszego jądra Linux. Obecnie jednak coraz częściej jest zastępowane przez GRUB Pozwala na przeglądanie systemu plików bez ładowania jądra systemu. Program działa domyślnie w wersji graficznej pozwalając na wybór systemu operacyjnego.

17 Program rozruchowy GRUB v.1 17 [c] przełącza w tryb linii poleceń ze słowem zachęty grub>. Przykład: Uruchamianie systemu w trybie pojedynczego użytkownika z partycją systemową /dev/hdb1 i standardowym położeniem jądra w katalogu /boot/vmlinuz. root(hd1, 0) -GRUB oznacza dyski i partycje od 0 kernel /boot/vmlinuz root=/dev/hdb1 -s boot Aby dokonać zmian w menu bootloadera (wersja 1) należy: zalogować się jako root, wejść do katalogu /boot/grub, otworzyć do edycji plik menu.lst. Wpis default 0 odpowiadający domyślnej pozycji 1 wiersza menu można zmienić na inny numer (liczony od 0). Grupy wpisów: title, root, kernel, initrd –opcjonalnie, quiet –opcjonalnie, savedefault – opcjonalnie, boot określają kolejne pozycje menu opisane w menu przez ich tytuły title.

18 GRUB v.1 – przykłady menu.lst 18

19 Konfiguracja menu GRUB v.1 19 Opcja timeout ustala czas oczekiwania na wybór systemu do uruchomienia. Aby za każdym razem domyślnie uruchamianym systemem był ten, który ostatnio uruchomiliśmy wpisuje się opcję default save a przy każdym z wpisów uruchamiających jakiś system, musi być linijka savedefault System Windows ma typowo wpisy: title Windows rootnoverify (hd?,?), ?=0,1,… makeactive chainloader +1

20 Konfiguracja GRUB v.2 20 Grub 2 lokalizuje swoje pliki w 3 miejscach: /boot/grub/grub.cfg - główny plik konfiguracyjny zastępujący menu.lst. Jest zmieniany przez polecenia systemowe i nie powinien być edytowany ręcznie. /etc/grub.d/ - Nowy katalog zawierający skrypty GRUB. Podczas wywołania komend GRUB skrypty są czytane w określonej sekwencji budując grub.cfg. /etc/default/grub - Zawiera nastawy menu GRUB odczytywane przez skrypty GRUB i zapisywane do grub.cfg. Stanowi modyfikowalną część GRUB. Jeżeli chcemy podłożyć obraz tła wprowadzamy go do katalogu domyślnego dla GRUB: /usr/share/images/desktop-base dlaUBUNTU modyfikujemy w skrypcie ”05_debian_theme” zawartym w katalogu /etc/grub.d/ -linię WALLPAPER tak aby wskazywała na obraz tła. dla UBUNTU ustaw GRUB_BACKGROUND w pliku /etc/default/grub, wyszukiwane są obrazy jpg, JPG, jpeg, JPEG, png, PNG,tga,TGA.

21 Konfiguracja GRUB v.2 21

22 Plik 05_debian_theme 22

23 Uruchamianie awaryjne Linux 23 Odbywa się w trybie pojedynczego użytkownika i obejmuje operacje: sprawdzanie spójności systemu plików – fsck. rozwiązywanie krytycznych błędów w plikach /etc/fstab, /etc/passwd, /etc/inittab. odtwarzanie kopii bezpieczeństwa W trybie pojedynczego użytkownika ustawienie zmiennej środowiska TERM=linux pozwala ustawić typ terminala i uzyskać dostęp do edytorów tekstu. parametr jądra -b lub init=/bin/sh pozwala na awaryjne uruchomienie powłoki. Partycja systemowa nie jest w trybie pełnego dostępu i nie działają różne mechanizmy systemowe. Należy samodzielnie zamontować partycje i system plików /proc. Korzysta się z płyty instalacyjnej CD/DVD i jej programu rozruchowego podając opcje rozruchu wskazujące partycję podstawową

24 URUCHAMIANIE SYSTEMU WINDOWS 24

25 Dysk systemowy 25 Dysk twardy jest podzielony logicznie na współosiowe pierścienie zwane ścieżkami. Każda ścieżka jest podzielona na sekcje zwane sektorami o pojemności typowo 512 bajtów. „Fdisk.exe” lub program instalacyjny Windows zapisują sektor MBR jako pierwszy sektor dysku twardego. W sektorze MBR (Master Boot Record) znajduje się kod startowy oraz tablica partycji.

26 Dysk systemowy 26 Budowa MBR BIOS wczytuje kod MBR do pamięci operacyjnej i przekazuje mu sterowanie. Program znajdujący się w MBR przeszukuje tablicę partycji w poszukiwaniu znacznika partycji systemowej. Kod zawarty w MBR umożliwia przejście do partycji systemowej, wczytuje jej 1 sektor i przekazuje sterowanie do znajdującego się tam programu.

27 Partycja rozruchowa i systemowa 27 Partycja systemowa – aktywna partycja podstawowa dysku twardego która zawiera pliki sprzętowe potrzebne do uruchomienia systemu Windows: NTLDR, BOOT.INI, NTDETECT.COM, NTBOOTDD.SYS (dla kontrolera SCSI z wyłączonym BIOS-em). Partycja systemowa może, ale nie musi, być partycją rozruchową. Partycja rozruchowa –zawiera pliki systemu operacyjnego Windows (domyślnie w folderze WINDOWS) i pliki pomocnicze (domyślnie w folderze WINDOWS\System32). Partycja rozruchowa może, ale nie musi, być partycją systemową. W przypadku dysków dynamicznych są używane określenia wolumin systemowy lub wolumin rozruchowy.

28 Windows 7 – dodatkowa partycja 28 Jeśli instaluje się Windows 7 na czystym dysku bez partycji, to rezerwują one specjalną partycję 100 MB na początku dysku i dopiero w pozostałej części dysku tworzą partycję systemową. Ta niewielka partycja nie ma przypisanej litery woluminu ale jest widoczna w konsoli zarządzania dyskami. a specjalna partycja pełni 2 funkcje: Zawiera kod Boot Managera i Boot Configuration Database, Rezerwuje przestrzeń dla plików startowych wymaganych przez podsystem BitLocker Drive Encryption, co pozwala na łatwe szyfrowanie dysku systemowego za pomocą BitLockera bez konieczności repartycji Jeżeli nie przewiduje się korzystania z BitLocker’a można pozbyć się tej partycji budując partycje na dysku innym narzędziem i żądając instalacji Windows we wskazanej partycji. Na początku instalacji Shift+F10 otwiera okno komend. Wywołanie narzędzia diskpart pozwala na utworzenie partycji pod Windows 7.

29 Sekwencja rozruchu Windows XP 29 Wymagane pliki

30 Sekwencja rozruchu 30 Rozruch wstępny komputera Komputer uruchamia proces power-on self test (POST) aby określić pamięć fizyczną i istniejące komponenty sprzętowe Jeśli komputer posiada Plug and Play (BIOS), następuje enumeracja i konfigurowanie sprzętu BIOS komputera lokalizuje urządzenie rozruchowe, ładuje i uruchamia główny rekord rozruchowy (MBR) Windows podczas instalacji modyfikuje rekord rozruchowy tak, że przy starcie systemu ładowany jest program „Ntldr”. Sekwencja rozruchowa używa następujących plików: Ntldr, (Boot.ini), Ntdetect.com, oraz Ntoskrnl.exe. Sekwencja rozruchu ma 5 faz: Faza wstępna Faza wyboru systemu operacyjnego Faza detekcji sprzętu Faza wyboru konfiguracji Ładowanie jądra systemu, Inicjalizacja jądra, ładowanie sterowników urządzeń i usług Faza logowania

31 Sekwencja rozruchu 31 Faza wstępna „Ntldr” przełącza procesor z trybu rzeczywistego w tryb 32-bitowy „flat” uwidaczniający całą pamięć RAM. Uruchamia wbudowane sterowniki aby umożliwić załadowanie Windows z partycji FAT lub NTFS. Faza wyboru systemu operacyjnego „Ntldr” czyta plik „boot.ini”. Jeśli na komputerze zainstalowano więcej niż jeden system wyświetlana jest lista wyboru systemów operacyjnych. Jeżeli nie ma pliku „boot.ini” „Ntldr” próbuje załadować system Windows z folderu „winnt” pierwszej partycji pierwszego dysku. Faza detekcji sprzętu Na komputerach z procesorami Intela detekcję przeprowadzają „Ntdetect.com” i „Ntoskrnl.exe”. „Ntdetect” tworzy listę wyposażenia sprzętowego i zwraca ją do „Ntldr” w celu zapisania do rejestru systemu pod kluczem HKEY_LOCAL_MACHINE\HARDWARE. Faza wyboru konfiguracji Po zebraniu informacji sprzętowych „Ntldr” może wyświetlić do wyboru listy profilów sprzętowych komputera jeśli istnieje więcej niż jedna z nich (ekran „Hardware Profile/Configuration Recovery Menu”). Przy użyciu klawisza „L” można przywołać ostatnią poprawną konfigurację.

32 Sekwencja rozruchu 32 Ładowanie jądra systemu Jądro jest ładowane z pliku „Ntoskrnl.exe”, potem plik warstwy pośredniczącej ze sprzętem „Hal.dll” (hardware abstraction layer), klucz rejestru systemowego HKEY_LOCAL_MACHINE \SYSTEM, niskopoziomowe sterowniki sprzętowe (np. dysków). Inicjalizacja jądra, ładowanie sterowników urządzeń i usług Jądro przejmuje sterowanie od „Ntldr”. Wyświetla się ekran graficzny ze statusem ładowania systemu, tworzony jest klucz rejestru HKEY_LOCAL_MACHINE\ HARDWARE, ładowane i inincjalizowane są sterowniki urządzeń, startowane są usługi Faza logowania użytkownika Kończy sekwencję rozruchu systemu. Uruchamiany jest proces „Winlogon.exe”, który z kolei startuje „Lsass.exe” (Local Security Authority) i wyświetla dialog logowania. Pozwala to na logowanie się równocześnie z uruchamianiem sterowników urządzeń sieciowych. Po zalogowaniu system zapisuje kopię wprowadzonych nastaw jako ostatnią dobrą konfigurację (Last Known Good Configuration).

33 Plik boot.ini 33 BOOT.INI (Windows XP) –plik tekstowy zawierający lokalizacje sektorów rozruchowych. Zawiera 2 sekcje [Boot Loader] oraz [Operating Systems]. [Boot Loader] określa czas wyświetlania menu startowego i domyślny system operacyjny. [Operating Systems] –lista systemów operacyjnych zawierająca tzw. ścieżki ARC (Advanced RISC Computing) multi lub SCSI - odpowiednio magistrala IDE lub SCSI jest używana w dostępie do partycji systemowej disk – identyfikator urzadzenia SCSI w przypadku multi zawsze 0 rdisk – urządzenie dyskowe podłączone do kontrolera multi ; napędy od 0 do 3 partition –numer partycji dysku od 1 w górę związany zawsze z konkretnym napędem; nowe partycje podstawowe mogą przesuwać numery partycji rozszerzonych

34 Windows Vista i późniejsze 34 W Windows Vista i późniejszych wersjach Windows „boot.ini” zastąpiono narzędziem BCDEdit (Boot Configuration Data) do zmiany konfiguracji danych startowych. Wywołuje się je przez nazwę aplikacji bcdedit po zalogowaniu w konsoli, w trybie administratora. Katalog \boot\bcd w Windows 7 znajduje się na partycji ukrytej a w Windows Vista w katalogu C:\boot\bcd. Wyświelona zostaje bieżąca konfiguracja bootloadera dla wszystkich zainstalowanych systemów:

35 bcdedit 35 Podstawowe elementy każdej pozycji na liście startowej ’identifier’ - identyfikator pozycji startowej, ’drive’ – sterownik lub obraz wirtualny używany przez system do startu danego wejścia ’path’ – ścieżka do bootloadera ’description’ – opis systemu na liście startowej. Standardowe identyfikatory UUID pozycji startowych bcdedit: {bootmgr} = program ładujący system operacyjny, {current} = aktualnie wybrany system operacyjny, {default} = domyślny system operacyjny, {ntldr} = program ładujący starsze systemy ( windows xp), {memdiag}, {ramdisk} - inne możliwości. Wprowadzenie na końcu listy opisu pozycji dla systemu Windows XP: bcdedit /create {ntldr} /d "Windows XP" bcdedit /set {ntldr} device partition=F: bcdedit /set {ntldr} path \ntldr bcdedit /displayorder {ntldr} /addlast

36 Program easyBCD 36 EasyBCD (Boot Configuration Data) - darmowy program graficzny firmy NeoSmart Technologies do zarządzania konfiguracją danych bootowania systemu Windows. Pozwala zmienić domyślnie uruchamiany system, czas po którym ma zostać uruchomiony, dodać do listy dowolny system Windows oraz Mac lub Linux. Program umożliwia również zarządzanie startem systemu.

37 Standard ACPI 37 ACPI (Advanced Configuration and Power Interface) –standard zarządzania zasilaniem przy pomocy systemu operacyjnego opracowany przez firmy HP, Intel, Microsoft, Phoenix i Toshiba. Zgodnie ze specyfikacją w wersji 3.0b z 2006 r definiuje on siedem tak zwanych stanów globalnych, w których może znajdować się system komputerowy kompatybilny z ACPI. Poprzednio stosowany standard APM pozostawiał kwestie poboru energii BIOSowi komputera Zakłada się, że poszczególne urządzenia komputera można przenieść w stan krańcowo niskiego poboru mocy, z którego można go obudzić poprzez przerwanie przy pomocy klawiatury, myszki, zegara czasu rzeczywistego lub poprzez sieć. ACPI implementuje zasady zarządzania poborem prądu. Każdy ze stanów zasilania definiuje: zużycie energii, wznowienie oprogramowania, opóźnienie sprzętowe.

38 Stany globalne ACPI 38 G0, Pracuje (Working) –normalny stan pracy z włączonymi urządzeniami i aktywnym procesorem. Możliwe jest przełączenie procesora oraz urządzeń dodatkowych (napędów optycznych, dysków twardych) w stan niskiego poboru energii, C0-Cn dla procesora i D0-D3 dla napędów i innych urządzeń. G1, Uśpiony (Sleeping) dzieli się na dalsze stany, oznaczane S1 do S4. S1 – niski poziom uśpienia. Podłączone są procesor i pamięć. Pamięć cache jest czyszczona, procesor nie wykonuje poleceń. Urządzenia nie używane są wyłączone. S2 – głębsze uśpienie –odłączenie zasilania procesora, podtrzymanie zasilania RAM. Odłącza mniej urządzeń niż S3. S3 – „stan wstrzymania” w systemie Windows. Podtrzymanie tylko zasilania RAM. Otwarte programy i dokumenty pozostają w pamięci operacyjnej S4 – „hibernacja”. Zawartość RAM jest zapisywana na dysku, zasilanie RAM odłączone. Podniesienie do stanu pracy trwa dłużej. G2, programowo wyłączony (Soft Off) - skutek wydania przez użytkownika polecenia zamknięcia systemu. Przejście do stanu pracy G0 wymaga uruchomienia komputera od nowa. Źródło zasilania nie jest odłączone. G3 (mechanicznie wyłączony, Mechanical Off). Odłączony kabel zasilający. Możliwy jest demontaż podzespołów. Z baterii działa zegar czasu rzeczywistego.

39 Stany urządzeń i procesora 39 Stany procesora C0-C3 C0 jest stanem standardowej pracy procesora. C1, określany jako "Zatrzymany" (Halt) jest stanem, w którym procesor nie wykonuje rozkazów, ale może momentalnie powrócić do stanu pełnej funkcjonalności. C2, określany jako "Zatrzymanie zegara" (Stop-Clock) oznacza przejście procesora w stan, w którym jest on widoczny programowo, lecz jego "wybudzenie" może zająć więcej czasu. C3, określany jako "Uśpiony" (Sleep) jest stanem, w którym procesor nie musi utrzymywać spójnej zawartości swojej pamięci podręcznej. Niektóre procesory wprowadzają różne wersje tego stanu (głębokie uśpienie, głębsze uśpienie, itd.), różniące się czasem, jaki jest niezbędny do doprowadzenia procesora do stanu pełnej gotowości do pracy. Stany urządzeń D0-D3 D0, W pełni działający, Fully-On jest stanem zwykłego działania urządzenia. D1 i D2 są pośrednimi stanami zasilania, różnie definiowanymi dla poszczególnych urządzeń. D3, Wyłączony, Off, jest stanem, w którym urządzenie jest wyłączone i nie reaguje na sygnały dochodzące z magistrali.

40 KONIEC WYKŁADU 7 40


Pobierz ppt "Środowisko pracy informatyka zima 2014 Wykład 7 Uruchamianie systemu operacyjnego dr inż. Wojciech Bieniecki Instytut Nauk Ekonomicznych i Informatyki."

Podobne prezentacje


Reklamy Google