Lekcja: Wielozadaniowość, Wielodostępność, Wieloprocesorowość w Systemach Operacyjnych
1. Wprowadzenie do tematu
Systemy operacyjne (SO) są fundamentem działania współczesnych komputerów, umożliwiając użytkownikom i programom korzystanie z zasobów sprzętowych w sposób wydajny, zorganizowany i bezpieczny. Dla współczesnych systemów operacyjnych kluczowe znaczenie mają takie cechy jak wielozadaniowość, wielodostępność oraz wieloprocesorowość, które zapewniają, że komputery mogą pracować z wieloma zadaniami, użytkownikami i procesorami jednocześnie.
2. Wielozadaniowość (Multitasking)
Definicja: Wielozadaniowość to zdolność systemu operacyjnego do uruchamiania i zarządzania wieloma procesami lub zadaniami jednocześnie. Kluczowym celem wielozadaniowości jest umożliwienie komputerowi wykonywania więcej niż jednego zadania równocześnie, co tworzy iluzję równoległej pracy wielu aplikacji.
Rodzaje wielozadaniowości:
-
Współbieżna wielozadaniowość (Cooperative multitasking)
W tym modelu zadania same „decydują”, kiedy zwrócić kontrolę systemowi operacyjnemu. Procesy muszą współpracować, aby umożliwić innym programom działanie. W takim systemie pojedynczy program może zawiesić cały system, jeśli nie zwróci kontroli. Starsze wersje Windows (np. Windows 3.x) działały na zasadzie współbieżnej wielozadaniowości. -
Wywłaszczeniowa wielozadaniowość (Preemptive multitasking)
Nowoczesne systemy operacyjne (np. Windows, Linux, macOS) stosują ten typ wielozadaniowości, w którym system operacyjny przydziela określone fragmenty czasu procesora każdemu zadaniu. Dzięki temu system operacyjny ma pełną kontrolę nad przełączaniem zadań, co eliminuje ryzyko, że jedno zadanie zablokuje inne.
Jak działa wielozadaniowość:
- Procesor wykonuje jedno zadanie w danym momencie, ale szybko przełącza się między różnymi zadaniami. Każde zadanie otrzymuje niewielki fragment czasu procesora, co tworzy wrażenie, że wiele zadań jest wykonywanych równocześnie.
- System operacyjny zarządza procesami za pomocą tzw. planisty zadań (scheduler), który decyduje, które procesy otrzymają czas procesora.
Przykłady wielozadaniowości w codziennym użytkowaniu:
- Możliwość słuchania muzyki podczas przeglądania internetu i edytowania dokumentów.
- Użytkownik może jednocześnie korzystać z przeglądarki, programu do edycji tekstu, oraz klienta pocztowego.
Zalety wielozadaniowości:
- Efektywność: Pozwala na lepsze wykorzystanie mocy obliczeniowej procesora, który może obsługiwać wiele programów na raz.
- Elastyczność: Użytkownicy mogą uruchamiać wiele aplikacji równocześnie, co zwiększa produktywność.
Wyzwania wielozadaniowości:
- Priorytetyzacja zadań: System operacyjny musi decydować, które zadania mają pierwszeństwo, co może być trudne w przypadku dużego obciążenia.
- Zarządzanie pamięcią: Wielozadaniowość wymaga skutecznego zarządzania pamięcią operacyjną (RAM), aby uniknąć problemów takich jak jej nadmierne zużycie.
3. Wielodostępność (Multiuser)
Definicja: Wielodostępność to cecha systemu operacyjnego, która pozwala wielu użytkownikom korzystać z tego samego komputera lub systemu jednocześnie. Każdy użytkownik ma dostęp do odrębnych zasobów, danych i aplikacji, co pozwala na izolowanie sesji użytkowników.
Kluczowe aspekty wielodostępności:
- Zarządzanie sesjami użytkowników: Każdy użytkownik, który loguje się do systemu, otrzymuje własną sesję. System operacyjny musi zarządzać tymi sesjami w sposób, który zapobiega zakłóceniom między nimi.
- Ochrona danych: W systemach wielodostępnych (np. serwery Unix/Linux), system musi chronić dane użytkowników, tak aby były one niewidoczne i niedostępne dla innych użytkowników.
- Przydział zasobów: System przydziela procesor, pamięć i inne zasoby w sposób dynamiczny, tak aby każdy użytkownik mógł sprawnie pracować.
Przykłady systemów wielodostępnych:
- Unix/Linux: Przykłady systemów, które umożliwiają wielu użytkownikom korzystanie z tego samego serwera poprzez zdalne terminale.
- Serwery baz danych: W dużych systemach baz danych, takich jak Oracle czy MySQL, wielu użytkowników może jednocześnie wykonywać operacje na tej samej bazie danych.
Korzyści wielodostępności:
- Efektywne wykorzystanie zasobów: Serwery mogą obsługiwać wielu użytkowników jednocześnie, co pozwala na lepsze wykorzystanie zasobów sprzętowych.
- Łatwość zarządzania: Administratorzy mogą zarządzać jednym centralnym serwerem, zamiast instalować aplikacje na wielu osobnych komputerach.
Wyzwania wielodostępności:
- Bezpieczeństwo: Niezbędne są mechanizmy zabezpieczające, takie jak uwierzytelnianie i autoryzacja, aby chronić dane użytkowników.
- Zarządzanie obciążeniem: System musi być w stanie efektywnie zarządzać obciążeniem, aby nie dochodziło do spadku wydajności przy dużej liczbie użytkowników.
4. Wieloprocesorowość (Multiprocessing)
Definicja: Wieloprocesorowość to zdolność systemu operacyjnego do wykorzystywania więcej niż jednego procesora lub rdzenia procesora jednocześnie, co pozwala na równoległe wykonywanie wielu zadań.
Rodzaje wieloprocesorowości:
-
Symetryczna wieloprocesorowość (SMP - Symmetric Multiprocessing):
Każdy procesor w systemie ma równy dostęp do pamięci oraz innych zasobów, co pozwala im na równoczesne przetwarzanie zadań. Przykład: Nowoczesne komputery osobiste z wielordzeniowymi procesorami (np. Intel i7). -
Asymetryczna wieloprocesorowość (AMP - Asymmetric Multiprocessing):
Jeden procesor zarządza systemem, podczas gdy pozostałe wykonują określone zadania. Taki model był stosowany w starszych systemach komputerowych i nie jest obecnie szeroko używany.
Przykład działania wieloprocesorowości:
- W systemie z procesorem wielordzeniowym, takim jak Intel i7, system operacyjny może rozdzielać zadania między różne rdzenie procesora. Jeden rdzeń może obsługiwać przeglądarkę internetową, inny procesor w tle renderować wideo, a jeszcze inny przetwarzać dane.
Zalety wieloprocesorowości:
- Wydajność: Możliwość równoległego przetwarzania zadań pozwala na znaczne zwiększenie wydajności.
- Skalowalność: Możliwość dodawania kolejnych procesorów lub rdzeni procesora pozwala na skalowanie systemów do obsługi większej liczby zadań lub użytkowników.
- Lepsza responsywność: Użytkownicy odczuwają lepszą responsywność systemu, nawet przy obciążeniu wieloma aplikacjami.
Zastosowania wieloprocesorowości:
- Serwery: Serwery korzystające z wieloprocesorowości mogą obsługiwać większą liczbę użytkowników i zadań, co jest kluczowe w aplikacjach takich jak serwery baz danych, hosting stron internetowych czy obliczenia naukowe.
- Gry komputerowe: Nowoczesne gry korzystają z wieloprocesorowości, aby przetwarzać skomplikowaną grafikę, fizykę i sztuczną inteligencję w czasie rzeczywistym.
5. Podsumowanie
- Wielozadaniowość umożliwia efektywne zarządzanie wieloma procesami jednocześnie, da
jąc użytkownikowi wrażenie równoczesnego wykonywania wielu zadań.
- Wielodostępność zapewnia, że wielu użytkowników może korzystać z tego samego systemu operacyjnego jednocześnie, co jest szczególnie przydatne w środowiskach serwerowych.
- Wieloprocesorowość pozwala na rozdzielanie zadań między wiele procesorów lub rdzeni, co znacząco zwiększa wydajność i skalowalność systemu.
Ćwiczenie w CMD (dla Wielozadaniowości i Wieloprocesorowości)
Ćwiczenie 1: Sprawdzanie obciążenia procesora i monitorowanie procesów
- Otwórz CMD (wiersz poleceń) w systemie Windows.
- Wpisz polecenie:
tasklist
To wyświetli listę uruchomionych procesów oraz ich PID.
- Aby sprawdzić bieżące obciążenie procesora, wpisz:
wmic cpu get loadpercentage
Wynik pokazuje aktualne obciążenie CPU jako procent.
- Aby sprawdzić liczbę procesorów i rdzeni procesora, użyj:
wmic cpu get name, NumberOfCores, NumberOfLogicalProcessors
To pozwala zrozumieć strukturę wieloprocesorową systemu.