Cyfroteka.pl

klikaj i czytaj online

Cyfro
Czytomierz
01288 012827 11049063 na godz. na dobę w sumie
Systemy operacyjne. Wydanie IV - ebook/pdf
Systemy operacyjne. Wydanie IV - ebook/pdf
Autor: , Liczba stron: 1136
Wydawca: Helion Język publikacji: polski
ISBN: 978-83-283-1425-2 Data wydania:
Lektor:
Kategoria: ebooki >> komputery i informatyka >> systemy operacyjne >> linux
Porównaj ceny (książka, ebook (-20%), audiobook).

Wszystko o systemach operacyjnych!

System operacyjny to niezwykle złożone środowisko, które zarządza Twoim sprzętem, uprawnieniami i setkami innych rzeczy. Jednak jego najważniejszym zadaniem jest uruchamianie programów, z których chcą korzystać użytkownicy. Edytory tekstów, programy graficzne, księgowe i inne nie mogłyby istnieć, gdyby nie możliwości współczesnych systemów operacyjnych.

Jeżeli chcesz poznać niuanse ich działania, najlepsze sposoby optymalizacji ich pracy oraz podstawy administrowania, trafiłeś na genialną książkę. Jest to kolejne wydanie światowego bestsellera, w którym w jasny sposób przedstawione zostały kluczowe informacje na temat systemów operacyjnych. W trakcie lektury poznasz dostępne systemy, ich możliwości, zalety oraz wady. Zaznajomisz się z fachowymi pojęciami oraz słownictwem. W kolejnych rozdziałach znajdziesz tematy związane z zarządzaniem procesami i wątkami. Dowiesz się, jak zorganizowane są pliki na dysku, czym jest wirtualizacja oraz dlaczego systemy są podatne na ataki. Ta książka jest obowiązkową lekturą dla pasjonatów informatyki chcących zrozumieć, jak pracują ich komputery.

Dzięki tej książce:

Idealna lektura dla każdego pasjonata informatyki!



Andrew S. Tanenbaum — profesor informatyki, zdobywca grantu European Research Council Advanced na badania nad niezawodnością w systemach komputerowych. Prowadził badania związane z kompilatorami, systemami operacyjnymi oraz sieciami komputerowymi. jest cenionym publicystą.

Herbert Bos — profesor na Uniwersytecie w Amsterdamie. Jego prace poruszają zagadnienia takie jak bezpieczeństwo oraz wsparcie sieci komputerowych w systemach operacyjnych. Jest zaangażowany w projekty MINIX 3 oraz Rosetta.
Znajdź podobne książki Ostatnio czytane w tej kategorii

Darmowy fragment publikacji:

Tytuł oryginału: Modern Operating Systems (4th Edition) Tłumaczenie: Radosław Meryk na podstawie „Systemy operacyjne. Wydanie III” w tłumaczeniu Radosława Meryka i Mikołaja Szczepaniaka ISBN: 978-83-283-1422-1 Authorized translation from the English language edition, entitled: MODERN OPERATING SYSTEMS; Fourth Edition, ISBN 013359162X; by Andrew S. Tanenbaum; and by Herbert Bos; published by Pearson Education, Inc, publishing as Prentice Hall. Copyright © 2015, 2008 by Pearson Education, Inc. All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording or by any information storage retrieval system, without permission from Pearson Education, Inc. Polish language edition published by HELION S.A., Copyright © 2016. Pearson Prentice Hall™ is a trademark of Pearson Education, Inc. Pearson® is a registered trademark of Pearson plc. Prentice Hall® is a registered trademark of Pearson Education, Inc. AMD, the AMD logo, and combinations thereof are trademarks of Advanced Micro Devices, Inc. Android and Google Web Search are trademarks of Google Inc. Apple and Apple Macintosh are registered trademarks of Apple Inc. ASM, DESPOOL, DDT, LINK-80, MAC, MP/M, PL/1-80 and SID are trademarks of Digital Research. BlackBerry®. RIM®, Research In Motion® and related trademarks, names and logos are the property of Research In Motion Limited and are registered and/or used in the U.S. and countries around the world. Blu-ray Disc™ is a trademark owned by Blu-ray Disc Association. CD Compact Disk is a trademark of Phillips. CDC 6600 is a trademark of Contral Data Corporation. CP/M and CP/NET are registered trademarks of Digital Research. DEC and POP are registered trademarks of Digital Equipment Corporation. eCosCentric is the owner of the eCos Trademark and eCos LoGo, in the US and other countries. The marks were acquired from the Free Software Foundation on 26th February 2007. The Trademark and Logo were previously owned by Red Hat. The GNOME logo and GNOME name are registered trademarks or trademarks of GNOME Foundation in the United States or other countries. Firefox® and Firefox® OS are registered trademarks of the Mozilla Foundation. Fortran is a trademark of IBM Corp. FreeBSD is a registered trademark of the FreeBSD Foundation. GE 645 is a trademark of General Electric Corporation. Intel Core is a trademark of Intel Corporation in the U.S. and/or other countries. Java is a trademark of Sun Microsystems, Inc., and refers to Sun s Java programming language. Linux® is the registered trademark of Linus Torvalds in the U.S. and other countries. MS-DOS and Windows are registered trademarks of Microsoft Corporation in the United States and/or other countries. TI Silent 700 is a trademark of Texas Instruments Incorporated. UNIX is a registered trademark of The Open Group. Zilog and Z80 are registered trademarks of Zilog, Inc. Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą kserograficzną, fotograficzną, a także kopiowanie książki na nośniku filmowym, magnetycznym lub innym powoduje naruszenie praw autorskich niniejszej publikacji. Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich właścicieli. Autor oraz Wydawnictwo HELION dołożyli wszelkich starań, by zawarte w tej książce informacje były kompletne i rzetelne. Nie biorą jednak żadnej odpowiedzialności ani za ich wykorzystanie, ani za związane z tym ewentualne naruszenie praw patentowych lub autorskich. Autor oraz Wydawnictwo HELION nie ponoszą również żadnej odpowiedzialności za ewentualne szkody wynikłe z wykorzystania informacji zawartych w książce. Wydawnictwo HELION ul. Kościuszki 1c, 44-100 GLIWICE tel. 32 231 22 19, 32 230 98 63 e-mail: helion@helion.pl WWW: http://helion.pl (księgarnia internetowa, katalog książek) Drogi Czytelniku! Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres http://helion.pl/user/opinie/sysop4 Możesz tam wpisać swoje uwagi, spostrzeżenia, recenzję. Printed in Poland. • Kup książkę • Poleć książkę • Oceń książkę • Księgarnia internetowa • Lubię to! » Nasza społeczność SPIS TRE(cid:165)CI Przedmowa 23 O autorach 27 1 Wprowadzenie 29 1.1. CZYM JEST SYSTEM OPERACYJNY? 31 1.1.1. System operacyjny jako rozszerzona maszyna 32 1.1.2. System operacyjny jako mened(cid:285)er zasobów 33 1.2. HISTORIA SYSTEMÓW OPERACYJNYCH 34 1.2.1. Pierwsza generacja (1945 – 1955) — lampy elektronowe 35 1.2.2. Druga generacja (1955 – 1965) — tranzystory i systemy wsadowe 35 1.2.3. Trzecia generacja (1965 – 1980) — uk(cid:239)ady scalone i wieloprogramowo(cid:258)(cid:202) 37 1.2.4. Czwarta generacja (1980 – czasy wspó(cid:239)czesne) — komputery osobiste 42 1.2.5. Pi(cid:200)ta generacja (1990 – czasy wspó(cid:239)czesne) — komputery mobilne 46 1.3. SPRZ(cid:125)T KOMPUTEROWY — PRZEGL(cid:107)D 47 1.3.1. Procesory 47 1.3.2. Pami(cid:218)(cid:202) 51 1.3.3. Dyski 54 5 Poleć książkęKup książkę 6 SPIS TRE(cid:165)CI 1.3.4. Urz(cid:200)dzenia wej(cid:258)cia-wyj(cid:258)cia 55 1.3.5. Magistrale 58 1.3.6. Uruchamianie komputera 61 1.4. PRZEGL(cid:107)D SYSTEMÓW OPERACYJNYCH 61 1.4.1. Systemy operacyjne komputerów mainframe 62 1.4.2. Systemy operacyjne serwerów 62 1.4.3. Wieloprocesorowe systemy operacyjne 62 1.4.4. Systemy operacyjne komputerów osobistych 63 1.4.5. Systemy operacyjne komputerów podr(cid:218)cznych 63 1.4.6. Wbudowane systemy operacyjne 63 1.4.7. Systemy operacyjne w(cid:218)z(cid:239)ów sensorowych 64 1.4.8. Systemy operacyjne czasu rzeczywistego 64 1.4.9. Systemy operacyjne kart elektronicznych 65 1.5. POJ(cid:125)CIA DOTYCZ(cid:107)CE SYSTEMÓW OPERACYJNYCH 65 1.5.1. Procesy 65 1.5.2. Przestrzenie adresowe 67 1.5.3. Pliki 68 1.5.4. Wej(cid:258)cie-wyj(cid:258)cie 71 1.5.5. Zabezpieczenia 71 1.5.6. Pow(cid:239)oka 71 1.5.7. Ontogeneza jest rekapitulacj(cid:200) filogenezy 73 1.6. WYWO(cid:146)ANIA SYSTEMOWE 76 1.6.1. Wywo(cid:239)ania systemowe do zarz(cid:200)dzania procesami 79 1.6.2. Wywo(cid:239)ania systemowe do zarz(cid:200)dzania plikami 82 1.6.3. Wywo(cid:239)ania systemowe do zarz(cid:200)dzania katalogami 83 1.6.4. Ró(cid:285)ne wywo(cid:239)ania systemowe 85 1.6.5. Interfejs Win32 API systemu Windows 85 1.7. STRUKTURA SYSTEMÓW OPERACYJNYCH 88 1.7.1. Systemy monolityczne 88 1.7.2. Systemy warstwowe 89 1.7.3. Mikroj(cid:200)dra 90 1.7.4. Model klient-serwer 93 1.7.5. Maszyny wirtualne 93 1.7.6. Egzoj(cid:200)dra 97 1.8. (cid:165)WIAT WED(cid:146)UG J(cid:125)ZYKA C 98 1.8.1. J(cid:218)zyk C 98 1.8.2. Pliki nag(cid:239)ówkowe 99 Poleć książkęKup książkę SPIS TRE(cid:165)CI 7 1.8.3. Du(cid:285)e projekty programistyczne 100 1.8.4. Model fazy dzia(cid:239)ania 100 1.9. BADANIA DOTYCZ(cid:107)CE SYSTEMÓW OPERACYJNYCH 101 1.10. PLAN POZOSTA(cid:146)EJ CZ(cid:125)(cid:165)CI KSI(cid:107)(cid:191)KI 103 1.11. JEDNOSTKI MIAR 104 1.12. PODSUMOWANIE 104 2 Procesy i w(cid:200)tki 109 2.1. PROCESY 109 2.1.1. Model procesów 110 2.1.2. Tworzenie procesów 112 2.1.3. Ko(cid:241)czenie dzia(cid:239)ania procesów 114 2.1.4. Hierarchie procesów 115 2.1.5. Stany procesów 115 2.1.6. Implementacja procesów 117 2.1.7. Modelowanie wieloprogramowo(cid:258)ci 119 2.2. W(cid:107)TKI 120 2.2.1. Wykorzystanie w(cid:200)tków 121 2.2.2. Klasyczny model w(cid:200)tków 125 2.2.3. W(cid:200)tki POSIX 129 2.2.4. Implementacja w(cid:200)tków w przestrzeni u(cid:285)ytkownika 131 2.2.5. Implementacja w(cid:200)tków w j(cid:200)drze 134 2.2.6. Implementacje hybrydowe 135 2.2.7. Mechanizm aktywacji zarz(cid:200)dcy 135 2.2.8. W(cid:200)tki pop-up 137 2.2.9. Przystosowywanie kodu jednow(cid:200)tkowego do obs(cid:239)ugi wielu w(cid:200)tków 138 2.3. KOMUNIKACJA MI(cid:125)DZY PROCESAMI 141 2.3.1. Wy(cid:258)cig 141 2.3.2. Regiony krytyczne 143 2.3.3. Wzajemne wykluczanie z wykorzystaniem aktywnego oczekiwania 144 2.3.4. Wywo(cid:239)ania sleep i wakeup 149 2.3.5. Semafory 151 2.3.6. Muteksy 154 2.3.7. Monitory 159 Poleć książkęKup książkę 8 SPIS TRE(cid:165)CI 2.3.8. Przekazywanie komunikatów 164 2.3.9. Bariery 167 2.3.10. Unikanie blokad: odczyt-kopiowanie-aktualizacja 168 2.4. SZEREGOWANIE 169 2.4.1. Wprowadzenie do szeregowania 170 2.4.2. Szeregowanie w systemach wsadowych 176 2.4.3. Szeregowanie w systemach interaktywnych 178 2.4.4. Szeregowanie w systemach czasu rzeczywistego 184 2.4.5. Oddzielenie strategii od mechanizmu 185 2.4.6. Szeregowanie w(cid:200)tków 185 2.5. KLASYCZNE PROBLEMY KOMUNIKACJI MI(cid:125)DZY PROCESAMI 187 2.5.1. Problem pi(cid:218)ciu filozofów 187 2.5.2. Problem czytelników i pisarzy 190 2.6. PRACE BADAWCZE NAD PROCESAMI I W(cid:107)TKAMI 191 2.7. PODSUMOWANIE 192 3 Zarz(cid:200)dzanie pami(cid:218)ci(cid:200) 201 3.1. BRAK ABSTRAKCJI PAMI(cid:125)CI 202 3.2. ABSTRAKCJA PAMI(cid:125)CI: PRZESTRZENIE ADRESOWE 205 3.2.1. Poj(cid:218)cie przestrzeni adresowej 205 3.2.2. Wymiana pami(cid:218)ci 207 3.2.3. Zarz(cid:200)dzanie woln(cid:200) pami(cid:218)ci(cid:200) 210 3.3. PAMI(cid:125)(cid:109) WIRTUALNA 213 3.3.1. Stronicowanie 214 3.3.2. Tabele stron 217 3.3.3. Przyspieszenie stronicowania 219 3.3.4. Tabele stron dla pami(cid:218)ci o du(cid:285)ej obj(cid:218)to(cid:258)ci 223 3.4. ALGORYTMY ZAST(cid:125)POWANIA STRON 226 3.4.1. Optymalny algorytm zast(cid:218)powania stron 227 3.4.2. Algorytm NRU 228 3.4.3. Algorytm FIFO 229 3.4.4. Algorytm drugiej szansy 229 3.4.5. Algorytm zegarowy 230 Poleć książkęKup książkę SPIS TRE(cid:165)CI 9 3.4.6. Algorytm LRU 231 3.4.7. Programowa symulacja algorytmu LRU 231 3.4.8. Algorytm bazuj(cid:200)cy na zbiorze roboczym 233 3.4.9. Algorytm WSClock 236 3.4.10. Podsumowanie algorytmów zast(cid:218)powania stron 238 3.5. PROBLEMY PROJEKTOWE SYSTEMÓW STRONICOWANIA 239 3.5.1. Lokalne i globalne strategie alokacji pami(cid:218)ci 239 3.5.2. Zarz(cid:200)dzanie obci(cid:200)(cid:285)eniem 241 3.5.3. Rozmiar strony 242 3.5.4. Osobne przestrzenie instrukcji i danych 243 3.5.5. Strony wspó(cid:239)dzielone 244 3.5.6. Biblioteki wspó(cid:239)dzielone 246 3.5.7. Pliki odwzorowane w pami(cid:218)ci 248 3.5.8. Strategia czyszczenia 248 3.5.9. Interfejs pami(cid:218)ci wirtualnej 249 3.6. PROBLEMY IMPLEMENTACJI 249 3.6.1. Zadania systemu operacyjnego w zakresie stronicowania 250 3.6.2. Obs(cid:239)uga b(cid:239)(cid:218)dów braku strony 250 3.6.3. Archiwizowanie instrukcji 251 3.6.4. Blokowanie stron w pami(cid:218)ci 253 3.6.5. Magazyn stron 253 3.6.6. Oddzielenie strategii od mechanizmu 255 3.7. SEGMENTACJA 256 3.7.1. Implementacja klasycznej segmentacji 259 3.7.2. Segmentacja ze stronicowaniem: MULTICS 260 3.7.3. Segmentacja ze stronicowaniem: Intel x86 263 3.8. BADANIA DOTYCZ(cid:107)CE ZARZ(cid:107)DZANIA PAMI(cid:125)CI(cid:107) 267 3.9. PODSUMOWANIE 268 4 Systemy plików 279 4.1. PLIKI 281 4.1.1. Nazwy plików 281 4.1.2. Struktura pliku 283 4.1.3. Typy plików 284 4.1.4. Dost(cid:218)p do plików 286 Poleć książkęKup książkę 10 SPIS TRE(cid:165)CI 4.1.5. Atrybuty plików 286 4.1.6. Operacje na plikach 288 4.1.7. Przyk(cid:239)adowy program wykorzystuj(cid:200)cy wywo(cid:239)ania obs(cid:239)ugi systemu plików 289 4.2. KATALOGI 291 4.2.1. Jednopoziomowe systemy katalogów 291 4.2.2. Hierarchiczne systemy katalogów 292 4.2.3. Nazwy (cid:258)cie(cid:285)ek 292 4.2.4. Operacje na katalogach 294 4.3. IMPLEMENTACJA SYSTEMU PLIKÓW 296 4.3.1. Uk(cid:239)ad systemu plików 296 4.3.2. Implementacja plików 297 4.3.3. Implementacja katalogów 302 4.3.4. Pliki wspó(cid:239)dzielone 304 4.3.5. Systemy plików o strukturze dziennika 306 4.3.6. Ksi(cid:218)guj(cid:200)ce systemy plików 308 4.3.7. Wirtualne systemy plików 310 4.4. ZARZ(cid:107)DZANIE SYSTEMEM PLIKÓW I OPTYMALIZACJA 313 4.4.1. Zarz(cid:200)dzanie miejscem na dysku 313 4.4.2. Kopie zapasowe systemu plików 319 4.4.3. Spójno(cid:258)(cid:202) systemu plików 324 4.4.4. Wydajno(cid:258)(cid:202) systemu plików 327 4.4.5. Defragmentacja dysków 332 4.5. PRZYK(cid:146)ADOWY SYSTEM PLIKÓW 332 4.5.1. System plików MS-DOS 333 4.5.2. System plików V7 systemu UNIX 336 4.5.3. Systemy plików na p(cid:239)ytach CD-ROM 338 4.6. BADANIA DOTYCZ(cid:107)CE SYSTEMÓW PLIKÓW 343 4.7. PODSUMOWANIE 344 5 Wej(cid:258)cie-wyj(cid:258)cie 349 5.1. WARUNKI, JAKIE POWINIEN SPE(cid:146)NIA(cid:109) SPRZ(cid:125)T WEJ(cid:165)CIA-WYJ(cid:165)CIA 349 5.1.1. Urz(cid:200)dzenia wej(cid:258)cia-wyj(cid:258)cia 350 5.1.2. Kontrolery urz(cid:200)dze(cid:241) 351 Poleć książkęKup książkę SPIS TRE(cid:165)CI 11 5.1.3. Urz(cid:200)dzenia wej(cid:258)cia-wyj(cid:258)cia odwzorowane w pami(cid:218)ci 352 5.1.4. Bezpo(cid:258)redni dost(cid:218)p do pami(cid:218)ci (DMA) 355 5.1.5. O przerwaniach raz jeszcze 358 5.2. WARUNKI, JAKIE POWINNO SPE(cid:146)NIA(cid:109) OPROGRAMOWANIE WEJ(cid:165)CIA-WYJ(cid:165)CIA 362 5.2.1. Cele oprogramowania wej(cid:258)cia-wyj(cid:258)cia 362 5.2.2. Programowane wej(cid:258)cie-wyj(cid:258)cie 364 5.2.3. Wej(cid:258)cie-wyj(cid:258)cie sterowane przerwaniami 365 5.2.4. Wej(cid:258)cie-wyj(cid:258)cie z wykorzystaniem DMA 366 5.3. WARSTWY OPROGRAMOWANIA WEJ(cid:165)CIA-WYJ(cid:165)CIA 367 5.3.1. Procedury obs(cid:239)ugi przerwa(cid:241) 367 5.3.2. Sterowniki urz(cid:200)dze(cid:241) 368 5.3.3. Oprogramowanie wej(cid:258)cia-wyj(cid:258)cia niezale(cid:285)ne od urz(cid:200)dze(cid:241) 372 5.3.4. Oprogramowanie wej(cid:258)cia-wyj(cid:258)cia w przestrzeni u(cid:285)ytkownika 377 5.4. DYSKI 379 5.4.1. Sprz(cid:218)t 379 5.4.2. Formatowanie dysków 384 5.4.3. Algorytmy szeregowania ramienia dysku 388 5.4.4. Obs(cid:239)uga b(cid:239)(cid:218)dów 391 5.4.5. Stabilna pami(cid:218)(cid:202) masowa 393 5.5. ZEGARY 396 5.5.1. Sprz(cid:218)t obs(cid:239)ugi zegara 397 5.5.2. Oprogramowanie obs(cid:239)ugi zegara 398 5.5.3. Zegary programowe 400 5.6. INTERFEJSY U(cid:191)YTKOWNIKÓW: KLAWIATURA, MYSZ, MONITOR 402 5.6.1. Oprogramowanie do wprowadzania danych 402 5.6.2. Oprogramowanie do generowania wyj(cid:258)cia 407 5.7. CIENKIE KLIENTY 423 5.8. ZARZ(cid:107)DZANIE ENERGI(cid:107) 424 5.8.1. Problemy sprz(cid:218)towe 425 5.8.2. Problemy po stronie systemu operacyjnego 426 5.8.3. Problemy do rozwi(cid:200)zania w programach aplikacyjnych 432 5.9. BADANIA DOTYCZ(cid:107)CE WEJ(cid:165)CIA-WYJ(cid:165)CIA 433 5.10. PODSUMOWANIE 435 Poleć książkęKup książkę 12 SPIS TRE(cid:165)CI 6 Zakleszczenia 443 6.1. ZASOBY 444 6.1.1. Zasoby z mo(cid:285)liwo(cid:258)ci(cid:200) wyw(cid:239)aszczania i bez niej 444 6.1.2. Zdobywanie zasobu 445 6.2. WPROWADZENIE W TEMATYK(cid:125) ZAKLESZCZE(cid:148) 447 6.2.1. Warunki powstawania zakleszcze(cid:241) zasobów 447 6.2.2. Modelowanie zakleszcze(cid:241) 448 6.3. ALGORYTM STRUSIA 450 6.4. WYKRYWANIE ZAKLESZCZE(cid:148) I ICH USUWANIE 451 6.4.1. Wykrywanie zakleszcze(cid:241) z jednym zasobem ka(cid:285)dego typu 451 6.4.2. Wykrywanie zakleszcze(cid:241) dla przypadku wielu zasobów ka(cid:285)dego typu 453 6.4.3. Usuwanie zakleszcze(cid:241) 455 6.5. UNIKANIE ZAKLESZCZE(cid:148) 457 6.5.1. Trajektorie zasobów 457 6.5.2. Stany bezpieczne i niebezpieczne 458 6.5.3. Algorytm bankiera dla pojedynczego zasobu 459 6.5.4. Algorytm bankiera dla wielu zasobów 460 6.6. PRZECIWDZIA(cid:146)ANIE ZAKLESZCZENIOM 462 6.6.1. Atak na warunek wzajemnego wykluczania 462 6.6.2. Atak na warunek wstrzymania i oczekiwania 463 6.6.3. Atak na warunek braku wyw(cid:239)aszczania 463 6.6.4. Atak na warunek cyklicznego oczekiwania 463 6.7. INNE PROBLEMY 464 6.7.1. Blokowanie dwufazowe 465 6.7.2. Zakleszczenia komunikacyjne 465 6.7.3. Uwi(cid:218)zienia 468 6.7.4. Zag(cid:239)odzenia 469 6.8. BADANIA NA TEMAT ZAKLESZCZE(cid:148) 469 6.9. PODSUMOWANIE 470 Poleć książkęKup książkę SPIS TRE(cid:165)CI 13 7 Wirtualizacja i przetwarzanie w chmurze 477 7.1. HISTORIA 479 7.2. WYMAGANIA DOTYCZ(cid:107)CE WIRTUALIZACJI 480 7.3. HIPERNADZORCY TYPU 1 I TYPU 2 483 7.4. TECHNIKI SKUTECZNEJ WIRTUALIZACJI 484 7.4.1. Wirtualizacja systemów bez obs(cid:239)ugi wirtualizacji 485 7.4.2. Koszt wirtualizacji 487 7.5. CZY HIPERNADZORCY S(cid:107) PRAWID(cid:146)OWYMI MIKROJ(cid:107)DRAMI? 488 7.6. WIRTUALIZACJA PAMI(cid:125)CI 491 7.7. WIRTUALIZACJA WEJ(cid:165)CIA-WYJ(cid:165)CIA 495 7.8. URZ(cid:107)DZENIA WIRTUALNE 498 7.9. MASZYNY WIRTUALNE NA PROCESORACH WIELORDZENIOWYCH 498 7.10. PROBLEMY LICENCYJNE 499 7.11. CHMURY OBLICZENIOWE 500 7.11.1. Chmury jako us(cid:239)uga 500 7.11.2. Migracje maszyn wirtualnych 501 7.11.3. Punkty kontrolne 502 7.12. STUDIUM PRZYPADKU: VMWARE 502 7.12.1. Wczesna historia firmy VMware 503 7.12.2. VMware Workstation 504 7.12.3. Wyzwania podczas opracowywania warstwy wirtualizacji na platformie x86 505 7.12.4. VMware Workstation: przegl(cid:200)d informacji o rozwi(cid:200)zaniu 506 7.12.5. Ewolucja systemu VMware Workstation 515 7.12.6. ESX Server: hipernadzorca typu 1 firmy VMware 515 7.13. BADANIA NAD WIRTUALIZACJ(cid:107) I CHMUR(cid:107) 517 Poleć książkęKup książkę 14 SPIS TRE(cid:165)CI 8 Systemy wieloprocesorowe 521 8.1. SYSTEMY WIELOPROCESOROWE 523 8.1.1. Sprz(cid:218)t wieloprocesorowy 524 8.1.2. Typy wieloprocesorowych systemów operacyjnych 534 8.1.3. Synchronizacja w systemach wieloprocesorowych 538 8.1.4. Szeregowanie w systemach wieloprocesorowych 542 8.2. WIELOKOMPUTERY 548 8.2.1. Sprz(cid:218)t wielokomputerów 548 8.2.2. Niskopoziomowe oprogramowanie komunikacyjne 552 8.2.3. Oprogramowanie komunikacyjne poziomu u(cid:285)ytkownika 555 8.2.4. Zdalne wywo(cid:239)ania procedur 558 8.2.5. Rozproszona wspó(cid:239)dzielona pami(cid:218)(cid:202) 560 8.2.6. Szeregowanie systemów wielokomputerowych 565 8.2.7. Równowa(cid:285)enie obci(cid:200)(cid:285)enia 565 8.3. SYSTEMY ROZPROSZONE 568 8.3.1. Sprz(cid:218)t sieciowy 570 8.3.2. Us(cid:239)ugi i protoko(cid:239)y sieciowe 573 8.3.3. Warstwa middleware bazuj(cid:200)ca na dokumentach 576 8.3.4. Warstwa middleware bazuj(cid:200)ca na systemie plików 578 8.3.5. Warstwa middleware bazuj(cid:200)ca na obiektach 582 8.3.6. Warstwa middleware bazuj(cid:200)ca na koordynacji 584 8.4. BADANIA DOTYCZ(cid:107)CE SYSTEMÓW WIELOPROCESOROWYCH 586 8.5. PODSUMOWANIE 587 9 Bezpiecze(cid:241)stwo 593 9.1. (cid:165)RODOWISKO BEZPIECZE(cid:148)STWA 595 9.1.1. Zagro(cid:285)enia 596 9.1.2. Intruzi 598 9.2. BEZPIECZE(cid:148)STWO SYSTEMÓW OPERACYJNYCH 599 9.2.1. Czy mo(cid:285)emy budowa(cid:202) bezpieczne systemy? 600 9.2.2. Zaufana baza obliczeniowa 601 Poleć książkęKup książkę SPIS TRE(cid:165)CI 15 9.3. KONTROLOWANIE DOST(cid:125)PU DO ZASOBÓW 602 9.3.1. Domeny ochrony 602 9.3.2. Listy kontroli dost(cid:218)pu 605 9.3.3. Uprawnienia 607 9.4. MODELE FORMALNE BEZPIECZNYCH SYSTEMÓW 610 9.4.1. Bezpiecze(cid:241)stwo wielopoziomowe 612 9.4.2. Ukryte kana(cid:239)y 614 9.5. PODSTAWY KRYPTOGRAFII 619 9.5.1. Kryptografia z kluczem tajnym 620 9.5.2. Kryptografia z kluczem publicznym 621 9.5.3. Funkcje jednokierunkowe 622 9.5.4. Podpisy cyfrowe 622 9.5.5. Modu(cid:239)y TPM 624 9.6. UWIERZYTELNIANIE 626 9.6.1. Uwierzytelnianie z wykorzystaniem obiektu fizycznego 633 9.6.2. Uwierzytelnianie z wykorzystaniem technik biometrycznych 635 9.7. WYKORZYSTYWANIE B(cid:146)(cid:125)DÓW W KODZIE 638 9.7.1. Ataki z wykorzystaniem przepe(cid:239)nienia bufora 640 9.7.2. Ataki z wykorzystaniem (cid:239)a(cid:241)cuchów formatuj(cid:200)cych 648 9.7.3. „Wisz(cid:200)ce wska(cid:283)niki” 651 9.7.4. Ataki bazuj(cid:200)ce na odwo(cid:239)aniach do pustego wska(cid:283)nika 652 9.7.5. Ataki z wykorzystaniem przepe(cid:239)nie(cid:241) liczb ca(cid:239)kowitych 653 9.7.6. Ataki polegaj(cid:200)ce na wstrzykiwaniu kodu 654 9.7.7. Ataki TOCTOU 655 9.8. ATAKI Z WEWN(cid:107)TRZ 656 9.8.1. Bomby logiczne 656 9.8.2. Tylne drzwi 656 9.8.3. Podszywanie si(cid:218) pod ekran logowania 657 9.9. Z(cid:146)O(cid:165)LIWE OPROGRAMOWANIE 658 9.9.1. Konie troja(cid:241)skie 661 9.9.2. Wirusy 663 9.9.3. Robaki 673 9.9.4. Oprogramowanie szpieguj(cid:200)ce 676 9.9.5. Rootkity 680 Poleć książkęKup książkę 16 SPIS TRE(cid:165)CI 9.10. (cid:165)RODKI OBRONY 684 9.10.1. Firewalle 685 9.10.2. Techniki antywirusowe i antyantywirusowe 687 9.10.3. Podpisywanie kodu 693 9.10.4. Wtr(cid:200)canie do wi(cid:218)zienia 695 9.10.5. Wykrywanie w(cid:239)ama(cid:241) z u(cid:285)yciem modeli 695 9.10.6. Izolowanie kodu mobilnego 697 9.10.7. Bezpiecze(cid:241)stwo Javy 701 9.11. BADANIA DOTYCZ(cid:107)CE BEZPIECZE(cid:148)STWA 704 9.12. PODSUMOWANIE 705 10 Pierwsze studium przypadku: UNIX, Linux i Android 715 10.1. HISTORIA SYSTEMÓW UNIX I LINUX 716 10.1.1. UNICS 716 10.1.2. PDP-11 UNIX 717 10.1.3. Przeno(cid:258)ny UNIX 718 10.1.4. Berkeley UNIX 719 10.1.5. Standard UNIX 720 10.1.6. MINIX 721 10.1.7. Linux 722 10.2. PRZEGL(cid:107)D SYSTEMU LINUX 725 10.2.1. Cele Linuksa 725 10.2.2. Interfejsy systemu Linux 726 10.2.3. Pow(cid:239)oka 728 10.2.4. Programy u(cid:285)ytkowe systemu Linux 731 10.2.5. Struktura j(cid:200)dra 733 10.3. PROCESY W SYSTEMIE LINUX 735 10.3.1. Podstawowe poj(cid:218)cia 735 10.3.2. Wywo(cid:239)ania systemowe Linuksa zwi(cid:200)zane z zarz(cid:200)dzaniem procesami 738 10.3.3. Implementacja procesów i w(cid:200)tków w systemie Linux 742 10.3.4. Szeregowanie w systemie Linux 748 10.3.5. Uruchamianie systemu Linux 753 Poleć książkęKup książkę SPIS TRE(cid:165)CI 17 10.4. ZARZ(cid:107)DZANIE PAMI(cid:125)CI(cid:107) W SYSTEMIE LINUX 755 10.4.1. Podstawowe poj(cid:218)cia 756 10.4.2. Wywo(cid:239)ania systemowe Linuksa odpowiedzialne za zarz(cid:200)dzanie pami(cid:218)ci(cid:200) 759 10.4.3. Implementacja zarz(cid:200)dzania pami(cid:218)ci(cid:200) w systemie Linux 760 10.4.4. Stronicowanie w systemie Linux 766 10.5. OPERACJE WEJ(cid:165)CIA-WYJ(cid:165)CIA W SYSTEMIE LINUX 769 10.5.1. Podstawowe poj(cid:218)cia 769 10.5.2. Obs(cid:239)uga sieci 771 10.5.3. Wywo(cid:239)ania systemowe wej(cid:258)cia-wyj(cid:258)cia w systemie Linux 772 10.5.4. Implementacja wej(cid:258)cia-wyj(cid:258)cia w systemie Linux 773 10.5.5. Modu(cid:239)y w systemie Linux 776 10.6. SYSTEM PLIKÓW LINUKSA 777 10.6.1. Podstawowe poj(cid:218)cia 777 10.6.2. Wywo(cid:239)ania systemu plików w Linuksie 782 10.6.3. Implementacja systemu plików Linuksa 785 10.6.4. NFS — sieciowy system plików 794 10.7. BEZPIECZE(cid:148)STWO W SYSTEMIE LINUX 800 10.7.1. Podstawowe poj(cid:218)cia 800 10.7.2. Wywo(cid:239)ania systemowe Linuksa zwi(cid:200)zane z bezpiecze(cid:241)stwem 802 10.7.3. Implementacja bezpiecze(cid:241)stwa w systemie Linux 803 10.8. ANDROID 804 10.8.1. Android a Google 804 10.8.2. Historia Androida 805 10.8.3. Cele projektowe 808 10.8.4. Architektura Androida 810 10.8.5. Rozszerzenia Linuksa 811 10.8.6. Dalvik 814 10.8.7. Binder IPC 816 10.8.8. Aplikacje Androida 824 10.8.9. Zamiary 834 10.8.10. Piaskownice aplikacji 835 10.8.11. Bezpiecze(cid:241)stwo 836 10.8.12. Model procesów 841 10.9. PODSUMOWANIE 846 Poleć książkęKup książkę 18 SPIS TRE(cid:165)CI 11 Drugie studium przypadku: Windows 8 855 11.1. HISTORIA SYSTEMU WINDOWS DO WYDANIA WINDOWS 8.1 855 11.1.1. Lata osiemdziesi(cid:200)te: MS-DOS 856 11.1.2. Lata dziewi(cid:218)(cid:202)dziesi(cid:200)te: Windows na bazie MS-DOS-a 857 11.1.3. Lata dwutysi(cid:218)czne: Windows na bazie NT 857 11.1.4. Windows Vista 860 11.1.5. Druga dekada lat dwutysi(cid:218)cznych: Modern Windows 861 11.2. PROGRAMOWANIE SYSTEMU WINDOWS 862 11.2.1. Rdzenny interfejs programowania aplikacji (API) systemu NT 865 11.2.2. Interfejs programowania aplikacji Win32 869 11.2.3. Rejestr systemu Windows 872 11.3. STRUKTURA SYSTEMU 875 11.3.1. Struktura systemu operacyjnego 875 11.3.2. Uruchamianie systemu Windows 890 11.3.3. Implementacja mened(cid:285)era obiektów 891 11.3.4. Podsystemy, biblioteki DLL i us(cid:239)ugi trybu u(cid:285)ytkownika 901 11.4. PROCESY I W(cid:107)TKI SYSTEMU WINDOWS 904 11.4.1. Podstawowe poj(cid:218)cia 904 11.4.2. Wywo(cid:239)ania API zwi(cid:200)zane z zarz(cid:200)dzaniem zadaniami, procesami, w(cid:200)tkami i w(cid:239)óknami 911 11.4.3. Implementacja procesów i w(cid:200)tków 916 11.5. ZARZ(cid:107)DZANIE PAMI(cid:125)CI(cid:107) 924 11.5.1. Podstawowe poj(cid:218)cia 924 11.5.2. Wywo(cid:239)ania systemowe zwi(cid:200)zane z zarz(cid:200)dzaniem pami(cid:218)ci(cid:200) 928 11.5.3. Implementacja zarz(cid:200)dzania pami(cid:218)ci(cid:200) 929 11.6. PAMI(cid:125)(cid:109) PODR(cid:125)CZNA SYSTEMU WINDOWS 939 11.7. OPERACJE WEJ(cid:165)CIA-WYJ(cid:165)CIA W SYSTEMIE WINDOWS 940 11.7.1. Podstawowe poj(cid:218)cia 940 11.7.2. Wywo(cid:239)ania API zwi(cid:200)zane z operacjami wej(cid:258)cia-wyj(cid:258)cia 942 11.7.3. Implementacja systemu wej(cid:258)cia-wyj(cid:258)cia 944 11.8. SYSTEM PLIKÓW NT SYSTEMU WINDOWS 949 11.8.1. Podstawowe poj(cid:218)cia 949 11.8.2. Implementacja systemu plików NTFS 950 Poleć książkęKup książkę SPIS TRE(cid:165)CI 19 11.9. ZARZ(cid:107)DZANIE ENERGI(cid:107) W SYSTEMIE WINDOWS 960 11.10. BEZPIECZE(cid:148)STWO W SYSTEMIE WINDOWS 8 963 11.10.1. Podstawowe poj(cid:218)cia 964 11.10.2. Wywo(cid:239)ania API zwi(cid:200)zane z bezpiecze(cid:241)stwem 965 11.10.3. Implementacja bezpiecze(cid:241)stwa 967 11.10.4. Czynniki ograniczaj(cid:200)ce zagro(cid:285)enia bezpiecze(cid:241)stwa 969 11.11. PODSUMOWANIE 972 12 Projekt systemu operacyjnego 979 12.1. ISTOTA PROBLEMÓW ZWI(cid:107)ZANYCH Z PROJEKTOWANIEM SYSTEMÓW 980 12.1.1. Cele 980 12.1.2. Dlaczego projektowanie systemów operacyjnych jest takie trudne? 981 12.2. PROJEKT INTERFEJSU 983 12.2.1. Zalecenia projektowe 983 12.2.2. Paradygmaty 986 12.2.3. Interfejs wywo(cid:239)a(cid:241) systemowych 989 12.3. IMPLEMENTACJA 992 12.3.1. Struktura systemu 992 12.3.2. Mechanizm kontra strategia 996 12.3.3. Ortogonalno(cid:258)(cid:202) 997 12.3.4. Nazewnictwo 998 12.3.5. Czas wi(cid:200)zania nazw 999 12.3.6. Struktury statyczne kontra struktury dynamiczne 1000 12.3.7. Implementacja góra-dó(cid:239) kontra implementacja dó(cid:239)-góra 1001 12.3.8. Komunikacja synchroniczna kontra asynchroniczna 1002 12.3.9. Przydatne techniki 1004 12.4. WYDAJNO(cid:165)(cid:109) 1009 12.4.1. Dlaczego systemy operacyjne s(cid:200) powolne? 1009 12.4.2. Co nale(cid:285)y optymalizowa(cid:202)? 1010 12.4.3. Dylemat przestrze(cid:241)-czas 1011 12.4.4. Buforowanie 1014 12.4.5. Wskazówki 1015 12.4.6. Wykorzystywanie efektu lokalno(cid:258)ci 1015 12.4.7. Optymalizacja z my(cid:258)l(cid:200) o typowych przypadkach 1016 Poleć książkęKup książkę 20 SPIS TRE(cid:165)CI 12.5. ZARZ(cid:107)DZANIE PROJEKTEM 1017 12.5.1. Mityczny osobomiesi(cid:200)c 1017 12.5.2. Struktura zespo(cid:239)u 1018 12.5.3. Znaczenie do(cid:258)wiadczenia 1020 12.5.4. Nie istnieje jedno cudowne rozwi(cid:200)zanie 1021 12.6. TRENDY W (cid:165)WIECIE PROJEKTÓW SYSTEMÓW OPERACYJNYCH 1021 12.6.1. Wirtualizacja i przetwarzanie w chmurze 1022 12.6.2. Uk(cid:239)ady wielordzeniowe 1022 12.6.3. Systemy operacyjne z wielkimi przestrzeniami adresowymi 1023 12.6.4. Bezproblemowy dost(cid:218)p do danych 1024 12.6.5. Komputery zasilane bateriami 1024 12.6.6. Systemy wbudowane 1025 12.7. PODSUMOWANIE 1026 13 Lista publikacji i bibliografia 1031 13.1. SUGEROWANE PUBLIKACJE DODATKOWE 1031 13.1.1. Publikacje wprowadzaj(cid:200)ce i ogólne 1032 13.1.2. Procesy i w(cid:200)tki 1032 13.1.3. Zarz(cid:200)dzanie pami(cid:218)ci(cid:200) 1033 13.1.4. Systemy plików 1033 13.1.5. Wej(cid:258)cie-wyj(cid:258)cie 1034 13.1.6. Zakleszczenia 1035 13.1.7. Wirtualizacja i przetwarzanie w chmurze 1035 13.1.8. Systemy wieloprocesorowe 1036 13.1.9. Bezpiecze(cid:241)stwo 1037 13.1.10. Pierwsze studium przypadku: UNIX, Linux i Android 1039 13.1.11. Drugie studium przypadku: Windows 8 1039 13.1.12. Zasady projektowe 1040 13.2. BIBLIOGRAFIA W PORZ(cid:107)DKU ALFABETYCZNYM 1041 A Multimedialne systemy operacyjne 1069 A.1. WPROWADZENIE W TEMATYK(cid:125) MULTIMEDIÓW 1070 A.2. PLIKI MULTIMEDIALNE 1074 Poleć książkęKup książkę SPIS TRE(cid:165)CI 21 A.2.1. Kodowanie wideo 1075 A.2.2. Kodowanie audio 1078 A.3. KOMPRESJA WIDEO 1079 A.3.1. Standard JPEG 1080 A.3.2. Standard MPEG 1082 A.4. KOMPRESJA AUDIO 1085 A.5. SZEREGOWANIE PROCESÓW MULTIMEDIALNYCH 1088 A.5.1. Szeregowanie procesów homogenicznych 1088 A.5.2. Szeregowanie w czasie rzeczywistym — przypadek ogólny 1088 A.5.3. Szeregowanie monotoniczne w cz(cid:218)stotliwo(cid:258)ci 1090 A.5.4. Algorytm szeregowania EDF 1091 A.6. PARADYGMATY DOTYCZ(cid:107)CE MULTIMEDIALNYCH SYSTEMÓW PLIKÓW 1093 A.6.1. Funkcje steruj(cid:200)ce VCR 1094 A.6.2. Wideo niemal na (cid:285)yczenie 1096 A.7. ROZMIESZCZENIE PLIKÓW 1097 A.7.1. Umieszczanie pliku na pojedynczym dysku 1097 A.7.2. Dwie alternatywne strategie organizacji plików 1098 A.7.3. Rozmieszczenie wielu plików na pojedynczym dysku 1102 A.7.4. Rozmieszczanie plików na wielu dyskach 1104 A.8. BUFOROWANIE 1106 A.8.1. Buforowanie bloków 1106 A.8.2. Buforowanie plików 1108 A.9. SZEREGOWANIE OPERACJI DYSKOWYCH W SYSTEMACH MULTIMEDIALNYCH 1108 A.9.1. Statyczne szeregowanie operacji dyskowych 1108 A.9.2. Dynamiczne szeregowanie operacji dyskowych 1110 A.10. BADANIA NA TEMAT MULTIMEDIÓW 1112 A.11. PODSUMOWANIE 1112 Skorowidz 1119 Poleć książkęKup książkę 22 SPIS TRE(cid:165)CI Poleć książkęKup książkę 2 PROCESY I W(cid:107)TKI Zanim rozpocznie si(cid:218) szczegó(cid:239)owe studium tego, w jaki sposób systemy operacyjne s(cid:200) zapro- jektowane i skonstruowane, warto przypomnie(cid:202), (cid:285)e kluczowym poj(cid:218)ciem we wszystkich sys- temach operacyjnych jest proces: abstrakcja dzia(cid:239)aj(cid:200)cego programu. Wszystkie pozosta(cid:239)e elementy systemu operacyjnego bazuj(cid:200) na poj(cid:218)ciu procesu, dlatego jest bardzo wa(cid:285)ne, aby projektant systemu operacyjnego (a tak(cid:285)e student) jak najszybciej dobrze zapozna(cid:239) si(cid:218) z poj(cid:218)- ciem procesu. Procesy to jedne z najstarszych i najwa(cid:285)niejszych abstrakcji wyst(cid:218)puj(cid:200)cych w systemach operacyjnych. Zapewniaj(cid:200) one mo(cid:285)liwo(cid:258)(cid:202) wykonywania (pseudo-) wspó(cid:239)bie(cid:285)nych operacji nawet wtedy, gdy dost(cid:218)pny jest tylko jeden procesor. Przekszta(cid:239)caj(cid:200) one pojedynczy procesor CPU w wiele wirtualnych procesorów. Bez abstrakcji procesów istnienie wspó(cid:239)czesnej techniki kom- puterowej by(cid:239)oby niemo(cid:285)liwe. W niniejszym rozdziale przedstawimy szczegó(cid:239)owe informacje na temat tego, czym s(cid:200) procesy oraz ich pierwsi kuzynowie — w(cid:200)tki. 2.1. PROCESY 2.1. PROCESY Wszystkie nowoczesne komputery bardzo cz(cid:218)sto wykonuj(cid:200) wiele operacji jednocze(cid:258)nie. Osoby przyzwyczajone do pracy z komputerami osobistymi mog(cid:200) nie by(cid:202) do ko(cid:241)ca (cid:258)wiadome tego faktu, zatem kilka przyk(cid:239)adów pozwoli przybli(cid:285)y(cid:202) to zagadnienie. Na pocz(cid:200)tek rozwa(cid:285)my serwer WWW. (cid:191)(cid:200)dania stron WWW mog(cid:200) nadchodzi(cid:202) z wielu miejsc. Kiedy przychodzi (cid:285)(cid:200)danie, serwer spraw- dza, czy potrzebna strona znajduje si(cid:218) w pami(cid:218)ci podr(cid:218)cznej. Je(cid:258)li tak, jest przesy(cid:239)ana do klienta. Je(cid:258)li nie, inicjowane jest (cid:285)(cid:200)danie dyskowe w celu jej pobrania. Jednak z perspektywy procesora obs(cid:239)uga (cid:285)(cid:200)da(cid:241) dyskowych zajmuje wieczno(cid:258)(cid:202). W czasie oczekiwania na zako(cid:241)czenie obs(cid:239)ugi (cid:285)(cid:200)dania na dysk mo(cid:285)e nadej(cid:258)(cid:202) wiele kolejnych (cid:285)(cid:200)da(cid:241). Je(cid:258)li w systemie jest wiele dysków nie- które z (cid:285)(cid:200)da(cid:241) mo(cid:285)e by(cid:202) skierowanych na inne dyski na d(cid:239)ugo przed obs(cid:239)u(cid:285)eniem pierwszego (cid:285)(cid:200)dania. Oczywiste, (cid:285)e potrzebny jest sposób zamodelowania i zarz(cid:200)dzania t(cid:200) wspó(cid:239)bie(cid:285)no(cid:258)ci(cid:200). Do tego celu mo(cid:285)na wykorzysta(cid:202) procesy (a w szczególno(cid:258)ci w(cid:200)tki). 109 Poleć książkęKup książkę 110 PROCESY I W(cid:107)TKI ROZ. 2 Teraz rozwa(cid:285)my komputer osobisty u(cid:285)ytkownika. Podczas rozruchu systemu nast(cid:218)puje start wielu procesów. Cz(cid:218)sto u(cid:285)ytkownik nie jest tego (cid:258)wiadomy; np. mo(cid:285)e by(cid:202) uruchomiony proces oczekuj(cid:200)cy na wchodz(cid:200)ce wiadomo(cid:258)ci e-mail. Inny uruchomiony proces mo(cid:285)e dzia(cid:239)a(cid:202) w imieniu programu antywirusowego i sprawdza(cid:202) okresowo, czy s(cid:200) dost(cid:218)pne jakie(cid:258) nowe defi- nicje wirusów. Dodatkowo mog(cid:200) dzia(cid:239)a(cid:202) jawne procesy u(cid:285)ytkownika — np. drukuj(cid:200)ce pliki lub tworz(cid:200)ce kopie zapasowe zdj(cid:218)(cid:202) na dysku USB — podczas gdy u(cid:285)ytkownik przegl(cid:200)da strony WWW. Dzia(cid:239)aniami tymi trzeba zarz(cid:200)dza(cid:202). W tym przypadku bardzo przydaje si(cid:218) system z obs(cid:239)ug(cid:200) wieloprogramowo(cid:258)ci, obs(cid:239)uguj(cid:200)cy wiele procesów jednocze(cid:258)nie. W ka(cid:285)dym systemie wieloprogramowym procesor szybko prze(cid:239)(cid:200)cza si(cid:218) pomi(cid:218)dzy proce- sami, po(cid:258)wi(cid:218)caj(cid:200)c ka(cid:285)demu z nich po kolei dziesi(cid:200)tki albo setki milisekund. Chocia(cid:285), (cid:258)ci(cid:258)le rzecz bior(cid:200)c, w dowolnym momencie procesor realizuje tylko jeden proces, w ci(cid:200)gu sekundy mo(cid:285)e obs(cid:239)u(cid:285)y(cid:202) ich wiele, co daje iluzj(cid:218) wspó(cid:239)bie(cid:285)no(cid:258)ci. Czasami w tym kontek(cid:258)cie mówi si(cid:218) o pseu- dowspó(cid:239)bie(cid:285)no(cid:258)ci, dla odró(cid:285)nienia jej od rzeczywistej, sprz(cid:218)towej wspó(cid:239)bie(cid:285)no(cid:258)ci systemów wieloprocesorowych (wyposa(cid:285)onych w dwa procesory wspó(cid:239)dziel(cid:200)ce t(cid:218) sam(cid:200) fizyczn(cid:200) pami(cid:218)(cid:202) lub wi(cid:218)ksz(cid:200) liczb(cid:218) takich procesorów). (cid:165)ledzenie wielu równoleg(cid:239)ych dzia(cid:239)a(cid:241) jest bardzo trudne. Z tego powodu projektanci systemów operacyjnych w ci(cid:200)gu wielu lat opracowali model poj(cid:218)- ciowy (procesów sekwencyjnych), które u(cid:239)atwiaj(cid:200) obs(cid:239)ug(cid:218) wspó(cid:239)bie(cid:285)no(cid:258)ci. Ten model, jego zastosowania oraz kilka innych konsekwencji stanowi(cid:200) temat niniejszego rozdzia(cid:239)u. 2.1.1. Model procesów W tym modelu ca(cid:239)e oprogramowanie mo(cid:285)liwe do uruchomienia w komputerze — czasami w(cid:239)(cid:200)cznie z systemem operacyjnym — jest zorganizowane w postaci zbioru procesów sekwencyj- nych (lub w skrócie procesów). Proces jest egzemplarzem uruchomionego programu w(cid:239)(cid:200)cznie z bie(cid:285)(cid:200)cymi warto(cid:258)ciami licznika programu, rejestrów i zmiennych. Poj(cid:218)ciowo ka(cid:285)dy proces ma w(cid:239)asny wirtualny procesor CPU. Oczywi(cid:258)cie w rzeczywisto(cid:258)ci procesor fizyczny prze(cid:239)(cid:200)cza si(cid:218) od procesu do procesu. Aby jednak zrozumie(cid:202) system, znacznie (cid:239)atwiej jest my(cid:258)le(cid:202) o kolekcji procesów dzia(cid:239)aj(cid:200)cych (pseudo) wspó(cid:239)bie(cid:285)nie, ni(cid:285) próbowa(cid:202) (cid:258)ledzi(cid:202) to, jak procesor prze(cid:239)(cid:200)cza si(cid:218) od programu do programu. To szybkie prze(cid:239)(cid:200)czanie si(cid:218) procesora jest okre(cid:258)lane jako wie- loprogramowo(cid:258)(cid:202), o czy mówili(cid:258)my w rozdziale 1. Na rysunku 2.1(a) pokazali(cid:258)my komputer, w którym w pami(cid:218)ci dzia(cid:239)aj(cid:200) w trybie wielopro- gramowym cztery programy. Na rysunku 2.1(b) wida(cid:202) cztery procesy — ka(cid:285)dy ma w(cid:239)asny prze- p(cid:239)yw sterowania (tzn. w(cid:239)asny logiczny licznik programu) i ka(cid:285)dy dzia(cid:239)a niezale(cid:285)nie od pozosta(cid:239)ych. Oczywi(cid:258)cie jest tylko jeden fizyczny licznik programu, dlatego kiedy dzia(cid:239)a wybrany proces, jego logiczny licznik programu jest kopiowany do rzeczywistego licznika programu. Kiedy proces ko(cid:241)czy dzia(cid:239)anie (na pewien czas), jego fizyczny licznik programu jest zapisywany w logicznym liczniku programu umieszczonym w pami(cid:218)ci. Na rysunku 2.1(c) wida(cid:202), (cid:285)e w d(cid:239)u(cid:285)szym przedziale czasu nast(cid:200)pi(cid:239) post(cid:218)p we wszystkich procesach, jednak w danym momencie dzia(cid:239)a tylko jeden proces. W tym rozdziale za(cid:239)o(cid:285)ymy, (cid:285)e jest tylko jeden procesor CPU. Coraz cz(cid:218)(cid:258)ciej jednak takie za(cid:239)o(cid:285)enie okazuje si(cid:218) nieprawdziwe. Nowe uk(cid:239)ady cz(cid:218)sto s(cid:200) wielordzeniowe — maj(cid:200) dwa pro- cesory, cztery lub wi(cid:218)ksz(cid:200) ich liczb(cid:218). O uk(cid:239)adach wielordzeniowych i systemach wieloproceso- rowych powiemy wi(cid:218)cej w rozdziale 8. Na razie b(cid:218)dzie pro(cid:258)ciej, je(cid:258)li przyjmiemy, (cid:285)e maszyna wykorzystuje jednorazowo tylko jeden procesor. Je(cid:258)li zatem mówimy, (cid:285)e procesor w danym momencie mo(cid:285)e wykonywa(cid:202) tylko jeden proces, to je(cid:258)li zawiera dwa rdzenie (lub dwa proce- sory), na ka(cid:285)dym z nich w okre(cid:258)lonym momencie mo(cid:285)e dzia(cid:239)a(cid:202) jeden proces. Poleć książkęKup książkę PODROZ. 2.1. PROCESY 111 Rysunek 2.1. (a) Cztery programy uruchomione w trybie wieloprogramowym; (b) poj(cid:218)ciowy model czterech niezale(cid:285)nych od siebie procesów sekwencyjnych; (c) w wybranym momencie jest aktywny tylko jeden program Ze wzgl(cid:218)du na szybkie prze(cid:239)(cid:200)czanie si(cid:218) procesora pomi(cid:218)dzy procesami tempo, w jakim proces wykonuje obliczenia, nie jest jednolite, a nawet trudne do powtórzenia w przypadku ponownego uruchomienia tego samego procesu. A zatem nie mo(cid:285)na programowa(cid:202) procesów z wbudowanymi za(cid:239)o(cid:285)eniami dotycz(cid:200)cymi czasu dzia(cid:239)ania. Rozwa(cid:285)my dla przyk(cid:239)adu proces obs(cid:239)ugi strumienia audio, który odtwarza muzyk(cid:218) b(cid:218)d(cid:200)c(cid:200) akompaniamentem wysokiej jako(cid:258)ci wideo uruchomionego przez inne urz(cid:200)dzenie. Poniewa(cid:285) d(cid:283)wi(cid:218)k powinien rozpocz(cid:200)(cid:202) si(cid:218) nieco pó(cid:283)niej ni(cid:285) wideo, proces daje sygna(cid:239) serwerowi wideo do rozpocz(cid:218)cia odtwarzania, a nast(cid:218)pnie, zanim rozpocznie odtwarzanie d(cid:283)wi(cid:218)ku, uruchamia 10 tysi(cid:218)cy iteracji pustej p(cid:218)tli. Wszystko pójdzie dobrze, je(cid:258)li pust(cid:200) p(cid:218)tl(cid:218) mo(cid:285)na uzna(cid:202) za niezawodny czasomierz. Je(cid:258)li jednak procesor zdecy- duje si(cid:218) na prze(cid:239)(cid:200)czenie do innego procesu podczas trwania p(cid:218)tli, proces obs(cid:239)ugi strumienia audio nie b(cid:218)dzie móg(cid:239) ponownie si(cid:218) uruchomi(cid:202) do momentu, kiedy nie b(cid:218)d(cid:200) gotowe w(cid:239)a(cid:258)ciwe ramki wideo. W efekcie powstanie bardzo denerwuj(cid:200)cy efekt braku synchronizacji pomi(cid:218)dzy audio i wideo. Kiedy proces obowi(cid:200)zuj(cid:200) tak (cid:258)cis(cid:239)e wymagania dzia(cid:239)ania w czasie rzeczywistym — tzn. okre(cid:258)lone zdarzenia musz(cid:200) wyst(cid:200)pi(cid:202) w ci(cid:200)gu okre(cid:258)lonej liczby milisekund — trzeba przed- si(cid:218)wzi(cid:200)(cid:202) specjalne (cid:258)rodki w celu zapewnienia, (cid:285)e tak si(cid:218) stanie. Zazwyczaj jednak wi(cid:218)kszo(cid:258)ci procesów nie dotycz(cid:200) ograniczenia wieloprogramowo(cid:258)ci procesora czy te(cid:285) wzgl(cid:218)dne szybko(cid:258)ci dzia(cid:239)ania ró(cid:285)nych procesów. Ró(cid:285)nica pomi(cid:218)dzy procesem a programem jest subtelna, ale ma kluczowe znaczenie. Do wyja(cid:258)nienia tej ró(cid:285)nicy pos(cid:239)u(cid:285)ymy si(cid:218) analogi(cid:200). Za(cid:239)ó(cid:285)my, (cid:285)e pewien informatyk o zdolno(cid:258)ciach kulinarnych piecze urodzinowy tort dla swojej córki. Ma do dyspozycji przepis na tort urodzi- nowy oraz kuchni(cid:218) dobrze wyposa(cid:285)on(cid:200) we wszystkie sk(cid:239)adniki: m(cid:200)k(cid:218), jajka, cukier, aromat waniliowy itp. W tym przyk(cid:239)adzie przepis spe(cid:239)nia rol(cid:218) programu (tzn. algorytmu wyra(cid:285)onego w odpowiedniej notacji), informatyk jest procesorem (CPU), natomiast sk(cid:239)adniki ciasta odgry- waj(cid:200) rol(cid:218) danych wej(cid:258)ciowych. Proces jest operacj(cid:200), w której informatyk czyta przepis, dodaje sk(cid:239)adniki i piecze ciasto. Wyobra(cid:283)my sobie teraz, (cid:285)e z krzykiem wbiega syn informatyka i mówi, (cid:285)e u(cid:285)(cid:200)dli(cid:239)a go pszczo(cid:239)a. Informatyk zapami(cid:218)tuje, w którym miejscu przepisu si(cid:218) znajdowa(cid:239) (zapisuje bie(cid:285)(cid:200)cy stan procesu), bierze ksi(cid:200)(cid:285)k(cid:218) o pierwszej pomocy i zaczyna post(cid:218)powa(cid:202) zgodnie z zapisanymi w niej wskazówkami. W tym momencie widzimy prze(cid:239)(cid:200)czenie si(cid:218) procesora z jednego procesu (pieczenie) do procesu o wy(cid:285)szym priorytecie (udzielanie pomocy medycznej). Przy czym ka(cid:285)dy z procesów ma inny program (przepis na ciasto, ksi(cid:200)(cid:285)ka pierwszej pomocy medycznej). Kiedy informatyk poradzi sobie z opatrzeniem u(cid:285)(cid:200)dlenia, powraca do pieczenia ciasta i kontynuuje od miejsca, w którym sko(cid:241)czy(cid:239). Poleć książkęKup książkę 112 PROCESY I W(cid:107)TKI ROZ. 2 Kluczowe znaczenie ma u(cid:258)wiadomienie sobie, (cid:285)e proces jest pewnym dzia(cid:239)aniem. Charakte- ryzuje si(cid:218) programem, wej(cid:258)ciem, wyj(cid:258)ciem i stanem. Jeden procesor mo(cid:285)e by(cid:202) wspó(cid:239)dzielony przez kilka procesów za pomoc(cid:200) algorytmu szeregowania. Algorytm ten decyduje, w którym zatrzyma(cid:202) prac(cid:218) nad jednym programem i rozpocz(cid:200)(cid:202) obs(cid:239)ug(cid:218) innego. Natomiast program jest czym(cid:258), co mo(cid:285)e by(cid:202) przechowywane na dysku i niczego nie robi(cid:202). Warto zwróci(cid:202) uwag(cid:218) na to, (cid:285)e je(cid:258)li program uruchomi si(cid:218) dwa razy, liczy si(cid:218) jako dwa pro- cesy. Cz(cid:218)sto np. istnieje mo(cid:285)liwo(cid:258)(cid:202) dwukrotnego uruchomienia edytora tekstu lub jednocze- snego drukowania dwóch plików, je(cid:258)li system komputerowy jest wyposa(cid:285)ony w dwie drukarki. Fakt, (cid:285)e dwa dzia(cid:239)aj(cid:200)ce procesy korzystaj(cid:200) z tego samego programu, nie ma znaczenia — s(cid:200) to oddzielne procesy. System operacyjny mo(cid:285)e mie(cid:202) mo(cid:285)liwo(cid:258)(cid:202) wspó(cid:239)dzielenia kodu pomi(cid:218)dzy nimi w taki sposób, (cid:285)e w pami(cid:218)ci znajduje si(cid:218) jedna kopia. Jest to jednak szczegó(cid:239) techniczny, który nie zmienia faktu dzia(cid:239)ania dwóch procesów. 2.1.2. Tworzenie procesów Systemy operacyjne wymagaj(cid:200) sposobu tworzenia procesów. W bardzo prostych systemach lub w systemach zaprojektowanych do uruchamiania tylko jednej aplikacji (np. kontrolera w kuchence mikrofalowej), bywa mo(cid:285)liwe zainicjowanie wszystkich potrzebnych procesów natychmiast po uruchomieniu systemu. Jednak w systemach ogólnego przeznaczenia potrzebny jest sposób tworzenia i niszczenia procesów podczas ich dzia(cid:239)ania. W tym punkcie przyjrzymy si(cid:218) niektórym spo(cid:258)ród tych mechanizmów. S(cid:200) cztery podstawowe zdarzenia, które powoduj(cid:200) tworzenie procesów: 1. Inicjalizacja systemu. 2. Uruchomienie wywo(cid:239)ania systemowego tworz(cid:200)cego proces przez dzia(cid:239)aj(cid:200)cy proces. 3. (cid:191)(cid:200)danie u(cid:285)ytkownika utworzenia nowego procesu. 4. Zainicjowanie zadania wsadowego. W momencie rozruchu systemu operacyjnego zwykle tworzonych jest kilka procesów. Niektóre z nich s(cid:200) procesami pierwszego planu — tzn. s(cid:200) to procesy, które komunikuj(cid:200) si(cid:218) z u(cid:285)ytkow- nikami i wykonuj(cid:200) dla nich prac(cid:218). Inne s(cid:200) procesami drugoplanowymi, które nie s(cid:200) powi(cid:200)zane z okre(cid:258)lonym u(cid:285)ytkownikiem, ale spe(cid:239)niaj(cid:200) pewn(cid:200) specyficzn(cid:200) funkcj(cid:218). I tak jeden proces dru- goplanowy mo(cid:285)e by(cid:202) zaprojektowany do akceptacji wchodz(cid:200)cych wiadomo(cid:258)ci e-mail. Taki pro- ces mo(cid:285)e by(cid:202) u(cid:258)piony przez wi(cid:218)kszo(cid:258)(cid:202) dnia i nagle si(cid:218) uaktywni(cid:202), kiedy nadchodzi wiadomo(cid:258)(cid:202) e-mail. Inny proces drugoplanowy mo(cid:285)e by(cid:202) zaprojektowany do akceptacji wchodz(cid:200)cych (cid:285)(cid:200)da(cid:241) stron WWW zapisanych na serwerze. Proces ten budzi si(cid:218) w momencie odebrania (cid:285)(cid:200)dania strony WWW w celu jego obs(cid:239)u(cid:285)enia. Procesy dzia(cid:239)aj(cid:200)ce na drugim planie, które s(cid:200) przeznaczone do obs(cid:239)ugi pewnych operacji, takich jak odbiór wiadomo(cid:258)ci e-mail, serwowanie stron WWW, aktual- no(cid:258)ci, drukowanie itp., s(cid:200) okre(cid:258)lane jako demony. W du(cid:285)ych systemach zwykle dzia(cid:239)aj(cid:200) dziesi(cid:200)tki takich procesów. W systemie UNIX, aby wy(cid:258)wietli(cid:202) list(cid:218) dzia(cid:239)aj(cid:200)cych procesów, mo(cid:285)na skorzy- sta(cid:202) z programu ps. W systemie Windows mo(cid:285)na skorzysta(cid:202) z mened(cid:285)era zada(cid:241). Procesy mog(cid:200) by(cid:202) tworzone nie tylko w czasie rozruchu, ale tak(cid:285)e pó(cid:283)niej. Dzia(cid:239)aj(cid:200)cy proces cz(cid:218)sto wydaje wywo(cid:239)anie systemowe w celu utworzenia jednego lub kilku nowych procesów maj(cid:200)cych pomóc w realizacji zadania. Tworzenie nowych procesów jest szczególnie przydatne, kiedy prac(cid:218) do wykonania mo(cid:285)na (cid:239)atwo sformu(cid:239)owa(cid:202) w kontek(cid:258)cie kilku zwi(cid:200)zanych ze sob(cid:200), ale poza tym niezale(cid:285)nych, wspó(cid:239)dzia(cid:239)aj(cid:200)cych ze sob(cid:200) procesów. Je(cid:258)li np. przez sie(cid:202) jest pobie- rana du(cid:285)a ilo(cid:258)(cid:202) danych w celu ich pó(cid:283)niejszego przetwarzania, to mo(cid:285)na utworzy(cid:202) jeden proces, Poleć książkęKup książkę PODROZ. 2.1. PROCESY 113 który pobiera dane i umieszcza je we wspó(cid:239)dzielonym buforze, oraz drugi proces, który usuwa dane z bufora i je przetwarza. W systemie wieloprocesorowym, w którym ka(cid:285)dy z procesów mo(cid:285)e dzia(cid:239)a(cid:202) na innym procesorze, zadanie mo(cid:285)e by(cid:202) wykonane w krótszym czasie. W systemach interaktywnych u(cid:285)ytkownicy mog(cid:200) uruchomi(cid:202) program poprzez wpisanie polecenia lub klikni(cid:218)cie (ewentualnie dwukrotne klikni(cid:218)cie) ikony. Wykonanie dowolnej z tych operacji inicjuje nowy proces i uruchamia w nim wskazany program. W systemach uniksowych bazuj(cid:200)cych na systemie X Window nowy proces przejmuje okno, w którym zosta(cid:239) uruchomiony. W systemie Microsoft Windows po uruchomieniu procesu nie ma on przypisanego okna. Mo(cid:285)e on jednak stworzy(cid:202) jedno (lub wi(cid:218)cej) okien i wi(cid:218)kszo(cid:258)(cid:202) systemów to robi. W obydwu syste- mach u(cid:285)ytkownicy maj(cid:200) mo(cid:285)liwo(cid:258)(cid:202) jednoczesnego otwarcia wielu okien, w których dzia(cid:239)aj(cid:200) jakie(cid:258) procesy. Za pomoc(cid:200) myszy u(cid:285)ytkownik mo(cid:285)e wybra(cid:202) okno i komunikowa(cid:202) si(cid:218) z procesem, np. podawa(cid:202) dane wej(cid:258)ciowe wtedy, kiedy s(cid:200) potrzebne. Ostatnia sytuacja, w której s(cid:200) tworzone procesy, dotyczy tylko systemów wsadowych w du(cid:285)ych komputerach mainframe. Rozwa(cid:285)my dzia(cid:239)anie systemu zarz(cid:200)dzania stanami magazy- nowymi sieci sklepów pod koniec dnia. W systemach tego typu u(cid:285)ytkownicy mog(cid:200) przesy(cid:239)a(cid:202) do systemu zadania wsadowe (czasami zdalnie). Kiedy system operacyjny zdecyduje, (cid:285)e ma zasoby wystarczaj(cid:200)ce do uruchomienia innego zadania, tworzy nowy proces i uruchamia nast(cid:218)pne zada- nie z kolejki. Z technicznego punktu widzenia we wszystkich tych sytuacjach proces tworzy si(cid:218) poprzez zlecenie istniej(cid:200)cemu procesowi wykonania wywo(cid:239)ania systemowego tworzenia procesów. Mo(cid:285)e to by(cid:202) dzia(cid:239)aj(cid:200)cy proces u(cid:285)ytkownika, proces systemowy, wywo(cid:239)any z klawiatury lub za pomoc(cid:200) myszy, albo proces zarz(cid:200)dzania zadaniami systemowymi. Proces ten wykonuje wywo(cid:239)a- nie systemowe tworz(cid:200)ce nowy proces. To wywo(cid:239)anie systemowe zleca systemowi operacyj- nemu utworzenie nowego procesu i wskazuje, w sposób po(cid:258)redni lub bezpo(cid:258)redni, jaki program nale(cid:285)y w nim uruchomi(cid:202). W systemie UNIX istnieje tylko jedno wywo(cid:239)anie systemowe do utworzenia nowego pro- cesu: fork. Wywo(cid:239)anie to tworzy dok(cid:239)adny klon procesu wywo(cid:239)uj(cid:200)cego. Po wykonaniu instrukcji fork procesy rodzic i dziecko maj(cid:200) ten sam obraz pami(cid:218)ci, te same zmienne (cid:258)rodowiskowe oraz te same otwarte pliki. Po prostu s(cid:200) identyczne. Wtedy zazwyczaj proces-dziecko uruchamia wywo(cid:239)anie execve lub podobne wywo(cid:239)anie systemowe w celu zmiany obrazu pami(cid:218)ci i uru- chomienia nowego programu. Kiedy u(cid:285)ytkownik wpisze polecenie w (cid:258)rodowisku pow(cid:239)oki, np. sort, pow(cid:239)oka najpierw tworzy proces-dziecko za pomoc(cid:200) wywo(cid:239)ania fork, a nast(cid:218)pnie proces- dziecko wykonuje polecenie sort. Powodem, dla którego dokonuje si(cid:218) ten dwuetapowy pro- ces, jest umo(cid:285)liwienie procesowi-dziecku manipulowania deskryptorami plików po wykonaniu wywo(cid:239)ania fork, ale przed wywo(cid:239)aniem execve w celu przekierowania standardowego wej(cid:258)cia, standardowego wyj(cid:258)cia oraz standardowego urz(cid:200)dzenia b(cid:239)(cid:218)dów. Dla odró(cid:285)nienia w systemie Windows jedna funkcja interfejsu Win32 — CreateProcess — jest odpowiedzialna zarówno za utworzenie procesu, jak i za(cid:239)adowanie odpowiedniego programu do nowego procesu. Wywo(cid:239)anie to ma 10 parametrów. S(cid:200) to program do uruchomienia, para- metry wiersza polecenia przekazywane do programu, ró(cid:285)ne atrybuty zabezpiecze(cid:241), bity decy- duj(cid:200)ce o tym, czy otwarte pliki b(cid:218)d(cid:200) dziedziczone, informacje dotycz(cid:200)ce priorytetów, specyfi- kacja okna, jakie ma by(cid:202) utworzone dla procesu (je(cid:258)li proces ma mie(cid:202) okno), oraz wska(cid:283)nik do struktury, w której s(cid:200) zwracane do procesu wywo(cid:239)uj(cid:200)cego informacje o nowo tworzonym pro- cesie. Oprócz wywo(cid:239)ania CreateProcess interfejs Win32 zawiera oko(cid:239)o 100 innych funkcji do zarz(cid:200)dzania i synchronizowania procesów oraz wykonywania powi(cid:200)zanych z tym operacji. Zarówno w systemie UNIX, jak i Windows po utworzeniu procesu rodzic i dziecko maj(cid:200) osobne przestrzenie adresowe. Je(cid:258)li dowolny z procesów zmieni s(cid:239)owo w swojej przestrzeni Poleć książkęKup książkę 114 PROCESY I W(cid:107)TKI ROZ. 2 adresowej, zmiana nie jest widoczna dla drugiego procesu. W systemie UNIX pocz(cid:200)tkowa prze- strze(cid:241) adresowa procesu-dziecka jest kopi(cid:200) przestrzeni adresowej procesu-rodzica. S(cid:200) to jednak ca(cid:239)kowicie odr(cid:218)bne przestrzenie adresowe. Zapisywalna pami(cid:218)(cid:202) nie jest wspó(cid:239)dzielona pomi(cid:218)- dzy procesami (w niektórych implementacjach Uniksa tekst programu jest wspó(cid:239)dzielony pomi(cid:218)dzy procesami rodzica i dziecka, poniewa(cid:285) nie mo(cid:285)e on by(cid:202) modyfikowany). Alternatywnie proces- -dziecko mo(cid:285)e wspó(cid:239)u(cid:285)ytkowa(cid:202) pami(cid:218)(cid:202) procesu-rodzica, ale w tym przypadku pami(cid:218)(cid:202) jest wspó(cid:239)- dzielona w trybie kopiuj przy zapisie (ang. copy-on-write). To oznacza, (cid:285)e zawsze, gdy jeden z dwóch procesów chce zmieni(cid:202) cz(cid:218)(cid:258)(cid:202) pami(cid:218)ci, najpierw fizycznie j(cid:200) kopiuje, aby mie(cid:202) pewno(cid:258)(cid:202), (cid:285)e mody- fikacja nast(cid:218)puje w prywatnym obszarze pami(cid:218)ci. Tak jak wcze(cid:258)niej, nie ma wspó(cid:239)dzielenia zapi- sywalnych obszarów pami(cid:218)ci. Nowo utworzony proces mo(cid:285)e jednak wspó(cid:239)dzieli(cid:202) niektóre inne zasoby procesu swojego twórcy — np. otwarte pliki. W systemie Windows przestrzenie adre- sowe procesów rodzica i dziecka od samego pocz(cid:200)tku s(cid:200) ró(cid:285)ne. 2.1.3. Ko(cid:241)czenie dzia(cid:239)ania procesów Po utworzeniu proces zaczyna dzia(cid:239)anie i wykonuje swoje zadania. Nic jednak nie trwa wiecz- nie — nawet procesy. Pr(cid:218)dzej czy pó(cid:283)niej nowy proces zako(cid:241)czy swoje dzia(cid:239)anie. Zwykle dzieje si(cid:218) to z powodu jednego z poni(cid:285)szych warunków: 1. Normalne zako(cid:241)czenie pracy (dobrowolnie). 2. Zako(cid:241)czenie pracy w wyniku b(cid:239)(cid:218)du (dobrowolnie). 3. B(cid:239)(cid:200)d krytyczny (przymusowo). 4. Zniszczenie przez inny proces (przymusowo). Wi(cid:218)kszo(cid:258)(cid:202) procesów ko(cid:241)czy dzia(cid:239)anie dlatego, (cid:285)e wykona(cid:239)y swoj(cid:200) prac(cid:218). Kiedy kompilator skompiluje program, wykonuje wywo(cid:239)anie systemowe, które informuje system operacyjny o zako(cid:241)czeniu pracy. Tym wywo(cid:239)aniem jest exit w systemie UNIX oraz ExitProcess w systemie Windows. W programach wyposa(cid:285)onych w interfejs ekranowy zwykle s(cid:200) mechanizmy pozwa- laj(cid:200)ce na dobrowolne zako(cid:241)czenie dzia(cid:239)ania. W edytorach tekstu, przegl(cid:200)darkach internetowych i podobnych im programach zawsze jest ikona lub polecenie menu, które u(cid:285)ytkownik mo(cid:285)e klikn(cid:200)(cid:202), aby zleci(cid:202) procesowi usuni(cid:218)cie otwartych plików tymczasowych i zako(cid:241)czenie dzia(cid:239)ania. Innym powodem zako(cid:241)czenia pracy jest sytuacja, w której proces wykryje b(cid:239)(cid:200)d krytyczny. Je(cid:258)li np. u(cid:285)ytkownik wpisze polecenie: cc foo.c w celu skompilowania programu foo.c, a taki plik nie istnieje, to kompilator po prostu sko(cid:241)czy dzia(cid:239)anie. Procesy interaktywne wyposa(cid:285)one w interfejsy ekranowe zwykle nie ko(cid:241)cz(cid:200) dzia(cid:239)ania, je(cid:258)li zostan(cid:200) do nich przekazane b(cid:239)(cid:218)dne parametry. Zamiast tego wy(cid:258)wietlaj(cid:200) okno dialogowe z pro(cid:258)b(cid:200) do u(cid:285)ytkownika o ponowienie próby. Trzecim powodem zako(cid:241)czenia pracy jest b(cid:239)(cid:200)d spowodowany przez proces — cz(cid:218)sto wyni- kaj(cid:200)cy z b(cid:239)(cid:218)du w programie. Mo(cid:285)e to by(cid:202) uruchomienie niedozwolonej instrukcji, odwo(cid:239)anie si(cid:218) do nieistniej(cid:200)cego obszaru pami(cid:218)ci lub dzielenie przez zero. W niektórych systemach (np. w Uniksie) proces mo(cid:285)e poinformowa(cid:202) system operacyjny, (cid:285)e sam chce obs(cid:239)u(cid:285)y(cid:202) okre(cid:258)lone b(cid:239)(cid:218)dy. W takim przypadku, je(cid:258)li wyst(cid:200)pi b(cid:239)(cid:200)d, proces otrzymuje sygna(cid:239) (przerwanie), zamiast zako(cid:241)czy(cid:202) prac(cid:218). Czwartym powodem, dla którego proces mo(cid:285)e zako(cid:241)czy(cid:202) dzia(cid:239)anie, jest wykonanie wywo(cid:239)a- nia systemowego, które zleca systemowi operacyjnemu zniszczenie innego procesu. W Uniksie mo(cid:285)na to zrobi(cid:202) za pomoc(cid:200) wywo(cid:239)ania systemowego kill. Odpowiednikiem tego wywo(cid:239)ania Poleć książkęKup książkę PODROZ. 2.1. PROCESY 115 w interfejsie Win32 API jest TerminateProcess. W obu przypadkach proces niszcz(cid:200)cy musi posia- da(cid:202) odpowiednie uprawnienia do niszczenia innych procesów. W niektórych systemach zako(cid:241)- czenie procesu — niezale(cid:285)nie od tego, czy jest wykonywane dobrowolnie, czy przymusowo — wi(cid:200)(cid:285)e si(cid:218) z zako(cid:241)czeniem wszystkich procesów utworzonych przez ten proces. Jednak w taki sposób nie dzia(cid:239)a ani UNIX, ani Windows. 2.1.4. Hierarchie procesów W niektórych systemach, kiedy proces utworzy inny proces, to proces-rodzic jest w pewien sposób zwi(cid:200)zany z procesem-dzieckiem. Proces-dziecko sam mo(cid:285)e tworzy(cid:202) kolejne procesy, co formuje hierarchi(cid:218) procesów. Zwró(cid:202)my uwag(cid:218), (cid:285)e w odró(cid:285)nieniu od ro(cid:258)lin i zwierz(cid:200)t roz- mna(cid:285)aj(cid:200)cych si(cid:218) p(cid:239)ciowo proces mo(cid:285)e mie(cid:202) tylko jednego rodzica (ale zero, jedno dziecko lub wi(cid:218)cej dzieci). Tak wi(cid:218)c proces przypomina bardziej hydr(cid:218) ni(cid:285), powiedzmy, ciel(cid:218). W Uniksie proces wraz z wszystkimi jego dzie(cid:202)mi i dalszymi potomkami tworzy grup(cid:218) pro- cesów. Kiedy u(cid:285)ytkownik wy(cid:258)le sygna(cid:239) z klawiatury, sygna(cid:239) ten jest dostarczany do wszyst- kich cz(cid:239)onków grupy procesów, które w danym momencie s(cid:200) powi(cid:200)zane z klawiatur(cid:200) (zwykle s(cid:200) to wszystkie aktywne procesy utworzone w bie(cid:285)(cid:200)cym oknie). Ka(cid:285)dy proces mo(cid:285)e indywi- dualnie przechwyci(cid:202) sygna(cid:239), zignorowa(cid:202) go lub podj(cid:200)(cid:202) dzia(cid:239)anie domy(cid:258)lne — tzn. zosta(cid:202) znisz- czonym przez sygna(cid:239). W celu przedstawienia innego przyk(cid:239)adu sytuacji, w której hierarchia procesów odgrywa rol(cid:218), przyjrzyjmy si(cid:218) sposobowi, w jaki system UNIX inicjuje si(cid:218) podczas rozruchu. W obrazie rozruchowym wyst(cid:218)puje specjalny proces o nazwie init. Kiedy rozpoczyna dzia(cid:239)anie, odczytuje plik i informuje o liczbie dost(cid:218)pnych terminali. Nast(cid:218)pnie tworzy po jednym nowym procesie na terminal. Procesy te czekaj(cid:200), a(cid:285) kto(cid:258) si(cid:218) zaloguje. Kiedy logowanie zako(cid:241)czy si(cid:218) pomy(cid:258)lnie, pro- ces logowania uruchamia pow(cid:239)ok(cid:218), która jest gotowa na przyjmowanie polece(cid:241). Polecenia te mog(cid:200) uruchamia(cid:202) nowe procesy itd. Tak wi(cid:218)c wszystkie procesy w ca(cid:239)ym systemie nale(cid:285)(cid:200) do tego samego drzewa — jego korzeniem jest proces init. Dla odró(cid:285)nienia w systemie Windows nie wyst(cid:218)puje poj(cid:218)cie hierarchii procesów. Wszyst- kie procesy s(cid:200) sobie równe. Jedyn(cid:200) oznak(cid:200) hierarchii procesu jest to, (cid:285)e podczas tworzenia procesu rodzic otrzymuje specjalny znacznik (nazywany uchwytem — ang. handle), który mo(cid:285)e wykorzysta(cid:202) do zarz(cid:200)dzania dzieckiem. Mo(cid:285)e jednak swobodnie przekaza(cid:202) ten znacznik do innego procesu i w ten sposób zdezaktualizowa(cid:202) hierarchi(cid:218). Procesy w Uniksie nie maj(cid:200) mo(cid:285)liwo(cid:258)ci „wydziedziczenia” swoich dzieci. 2.1.5. Stany procesów Chocia(cid:285) ka(cid:285)dy proces jest niezale(cid:285)nym podmiotem, posiadaj(cid:200)cym w(cid:239)asny licznik programu i wewn(cid:218)trzny stan, procesy cz(cid:218)sto musz(cid:200) si(cid:218) komunikowa(cid:202) z innymi procesami. Jeden proces mo(cid:285)e generowa(cid:202) wyj(cid:258)cie, które inny proces wykorzysta jako wej(cid:258)cie. W poleceniu pow(cid:239)oki: cat rozdzial1 rozdzial2 rozdzial3 | grep drzewo pierwszy proces uruchamia polecenie cat, (cid:239)(cid:200)czy i wyprowadza trzy pliki. Drugi proces uru- chamia polecenie grep, wybiera wszystkie wiersze zawieraj(cid:200)ce s(cid:239)owo „drzewo”. W zale(cid:285)no(cid:258)ci od wzgl(cid:218)dnej szybko(cid:258)ci obu procesów (co z kolei zale(cid:285)y zarówno od wzgl(cid:218)dnej z(cid:239)o(cid:285)ono(cid:258)ci pro- gramów, jak i tego, ile czasu procesora ka(cid:285)dy z nich ma do dyspozycji) mo(cid:285)e si(cid:218) zdarzy(cid:202), (cid:285)e polecenie grep b(cid:218)dzie gotowe do dzia(cid:239)ania, ale nie b(cid:218)d(cid:200) na nie czeka(cid:239)y (cid:285)adne dane wej(cid:258)ciowe. Proces b(cid:218)dzie si(cid:218) musia(cid:239) zablokowa(cid:202) do czasu, a(cid:285) b(cid:218)d(cid:200) one dost(cid:218)pne. Poleć książkęKup książkę 116 PROCESY I W(cid:107)TKI ROZ. 2 Proces blokuje si(cid:218), poniewa(cid:285) z logicznego punktu widzenia nie mo(cid:285)e kontynuowa(cid:202) dzia(cid:239)ania. Zazwyczaj dzieje si(cid:218) tak dlatego, (cid:285)e oc
Pobierz darmowy fragment (pdf)

Gdzie kupić całą publikację:

Systemy operacyjne. Wydanie IV
Autor:
,

Opinie na temat publikacji:


Inne popularne pozycje z tej kategorii:


Czytaj również:


Prowadzisz stronę lub blog? Wstaw link do fragmentu tej książki i współpracuj z Cyfroteką: