Praca sop


Projekt pisemny z przedmiotu DSOPLI0

Imię i nazwisko autora: Natalia Malinowska
Prowadzący ćwiczenia: dr hab. Stanisław Gawiejnowicz
Tytuł projektu: Wątki w systemie Windows XP
Data Oddania: 03/01/2012

1. Wstęp

0x08 graphic
0x08 graphic
System Windows XP został oficjalnie wydany 25 października 2001. Jest on zbudowany na podstawie takiej samej architektury jak systemy Windows NT i Windows 2000. Ten system operacyjny bazuje na pamięci wirtualnej i pracuje w dwóch podstawowych trybach: w trybie jądra (uprzywilejowanym) oraz w trybie użytkownika. Tryb jądra odpowiada głównie za zarządzanie pamięcią wirtualną i kolejkowanie działania aplikacji, posiada także pełny dostęp do sprzętu oraz zasobów systemowych komputera. Natomiast tryb użytkownika to [1]„obszar, w którym działają programy użytkowe, zarządzany przez elementy jądra.” Innym ważnym elementem architektury systemu Windows XP jest wielozadaniowość. Dawniej systemy operacyjne pozwalały na jednoczesne uruchomienie tylko jednego programu. Było to oczywiście bardzo niepraktyczne, dlatego też wprowadzono systemy wielozadaniowe. Istotą wielozadaniowości jest możliwość działania wielu programów jednocześnie. To zadanie zrealizowano poprzez zastosowanie wątków.

Czym jest wątek? Jak podaje źródło [2] Watek jest tym, co w danej chwili wykonuje procesor - kawałkiem programu, a proces to inaczej program wraz z danymi. Różnica pomiędzy wątkiem a procesem polega na tym, ze to właśnie wątkowi, a nie procesowi, system operacyjny przydziela czas procesora”. Zatem możemy powiedzieć, że wątek to pewna sekwencja instrukcji, będąca fragmentem programu. Każdy uruchamiany program posiada związany z nim proces, ten z kolei dysponuje co najmniej jednym wątkiem. [4] „Koncepcja wątku wiąże się ze współdzieleniem dostępnych zasobów. Każdy proces otrzymuje określone zasoby od systemu, które następnie przydzielane są odpowiednim wątkom. Ważne jest to, że wszystkie wątki działające w danym procesie współdzielą jedną przestrzeń adresową oraz resztę potrzebnych struktur systemowych, takich jak listy otwartych plików, gniazd itp. Takie rozwiązanie umożliwia szybsze działanie systemu, ponieważ utworzenie i zakończenie wątku zajmuje znacznie mniej czasu niż w przypadku procesu.

2. Dyskusja

2.1 Wątki poziomu użytkownika

Wątki poziomu użytkownika tworzone za pomocą funkcji bibliotecznych, a struktury związane ze stanami wątków tworzone są w przestrzeni adresowej procesu. Wątki poziomu użytkownika rezygnują z zarządzania wykonaniem przez jądro i robią to same. Przełączanie między wątkami nie wymaga wzywania systemu operacyjnego. Zwiększa to szybkość przełączania kontekstu, ale powoduje też, że jądro, nie wiedząc nic o wątkach, planuje przydział czasu procesora dla procesów. Jest to przyczyną pewnych problemów.
[3] Na przykład, jeśli jądro jest jednowątkowe, to każdy wątek poziomu użytkownika odwołujący się do systemu będzie powodował oczekiwanie całego zadania na zakończenie wywołania systemowego”. Oznacza to, że gdy jeden z wątków zażąda operacji wejścia-wyjścia lub utknie na jakimś mechanizmie synchronizacji z innymi procesami planista potraktuje proces jako oczekujący do czasu zakończenia operacji. W ten sposób marnuje się czas, bo jądro nie wie o wątkach, które mogłyby się w tym czasie wykonywać. Problemem jest także nieadekwatny przydział czasu procesora. Zadanie wielowątkowe i jednowątkowe mogą dostawać tyle samo kwantów czasu, a w przypadku większej liczby wątków procesu, czas procesora, przypadający na jeden wątek będzie mniejszy, niż w przypadku procesu z mniejszą liczbą wątków.

2.2 Wątki poziomu jądra

W systemie Windows XP wątki zrealizowano na poziomie jądra systemu operacyjnego, która pozbawiona jest wyżej wymienionych wad. W tym rozwiązaniu system zarządza każdym wątkiem wykorzystując kwant czasu przyznany dla jego procesu-rodzica. Jądro określa też harmonogram wykonywania wątków. Każdy watek otrzymuje priorytet z zakresu od 0 do 31. Wątek o najwyższym priorytecie jest pobierany na krótki czas i zleca się jego wykonanie przez proces. Gdy przydzielony czas minie, jądro znów pobiera z listy priorytetowej po jednym wątku dla każdego procesora. Zaletą takiej implementacji jest zniknięcie problemu nierównego przydzielania czasu procesora. Rozwiązana jest także kwestia oczekujących wątków, gdyż świadomość istnienia wątków procesu umożliwia uwzględnienie tego faktu w zarządzaniu zasobami przez jądro i prowadzi do poprawy ich wykorzystania. Oczywiście ta implementacja nie jest pozbawiona słabych stron. Wszelkie odwołania do mechanizmów obsługi wątków wymagają dostępu do usług jądra, co zwiększa koszt czasowy realizacji. Jądro musi też utrzymać bloki kontrolne (deskryptory) wątków, co w przypadku wykorzystania statycznych tablic może stanowić istotny koszt pamięciowy.

2.3 Tryb wielozadaniowości z wywłaszczaniem

W środowisku jednoprocesorowym tylko jeden wątek może być wykonywany w danej chwili przez jednostkę centralną. Niezwykle istotna jest zatem metoda zastosowana przy podziale czasu procesora pomiędzy wątki różnych procesów. Przykładowo w systemie Windows 3.1 zastosowano tryb wielozadaniowości bez wywłaszczania. Podając za źródłem [1] Metoda ta polega na przydzieleniu czasu procesora dla danego zadania na czas potrzebny do całkowitego wykonania zadania, następnie zadanie oddaje zasoby procesora następnemu zadaniu oczekującemu w kolejce. Oczywiście jeśli działający program nie chce przekazać procesora następnemu programowi oczekującemu w kolejce, to komputer zawiesi się.”. Przy tym rozwiązaniu błąd jednego procesu powoduje blokadę całego systemu operacyjnego, co naturalnie jest wysoce nieefektywne. Dlatego w Systemie Windows XP zastosowano wielozadaniowość z wywłaszczaniem, w której algorytm szeregujący może wstrzymać aktualnie wykonywany proces lub wątek, aby umożliwić działanie innemu. Oprócz tego wywłaszczanie umożliwia szczegółowe określanie czasu, w którym dany proces może korzystać z procesora. Po upłynięciu danego czasu proces oddaje kontrolę nad jednostką centralną, a system operacyjny zapisuje dane potrzebne do kontynuowania działania procesu w przyszłości. Operacja przechodzenia pomiędzy wątkami procesów nazywa się przełączaniem kontekstów i ma miejsce miliony razy w ciągu sekundy. Ponieważ teraz działaniem procesora steruje system operacyjny, a nie aplikacja unikniemy sytuacji, kiedy błąd jednej aplikacji zatrzyma działanie całego systemu. Zatem jeśli w Windows XP program z jakiegoś powodu zawiesi się, zawsze można ten proces „zabić".

2.4 Modele wielowątkowości

0x08 graphic

0x08 graphic
W zależności od poziomu na jakim zostały zrealizowane wątki w systemie wyróżniamy różne modele wielowątkowości. W modelu wiele na jeden” wiele wątków poziomu użytkownika odwzorowanych na jeden wątek jądra. Stosuje się go w systemach nie posiadających wątków jądra. Przykładem jest tu biblioteka green threads w systemie Solaris 2. Model jeden na jeden” odwzorowuje każdy wątek poziomu użytkownika wzajemnie jednoznacznie na jeden wątek jądra. Zajdziemy go w systemach takich jak Windows NT/2000/XP, OS/2. Natomiast w modelu wiele na wiele” kilka wątków poziomu użytkownika jest multipleksowanych na mniejszą lub równą liczbę wątków jądra. Pozwala to systemowi operacyjnemu utworzyć dostateczną liczbę wątków jądra co implikuje dobrą współbieżność i wydajność.

2.5 Budowa wątku

Wątki dzielą z innymi równorzędnymi wątkami przestrzeń adresową procesu, a w szczególności jego kod, dane, otwarte pliki i sygnały. Ponadto każdy wątek składa się ze swoich własnych składników takich jak: identyfikator wątku (ID) jednoznacznie wyróżniający ten wątek, licznik rozkazów, zbiór rejestrów reprezentujący stan procesora i obszar stosu jądra i stosu użytkownika (w zależności od tego w jakim poziomie działa wątek). Zbiór rejestrów, stosy i obszar pamięci prywatnej określa się łącznie jako kontekst wątku, a ich architektura zależy od sprzętu, na którym działa system operacyjny. Do podstawowych struktur danych wątku należą: ETHREAD, KTHREAD i TEB.

Bloki wykonawczy i jądrowy istnieją w całości w przestrzeni jądra, co oznacza, że tylko jądro ma do nich dostęp, natomiast blok środowiska dostępny jest tylko w trybie użytkownika.

2.6 Stany wątku

Ważną własnością wątku jest jego stan. Wyróżnić można stanów wątków. Są to:

2.7 Priorytety wątków

Planowaniem kolejności wykonywania wątków zarządza fragment jądra zwany dyspozytorem, który w tym celu posługuje się 32-poziomowym schematem priorytetów. Priorytety podzielono na dwie klasy: klasę zmienną zawierającą wątki priorytecie od 0 do 15, w której wartość priorytetów może ulec zmianie oraz klasę czasu rzeczywistego, zawierającą priorytety od 16 do 31, w której wartość priorytetów jest już stała. Dla każdego priorytetu planowania dyspozytor używa osobnej kolejki. Algorytm polega na przeglądaniu wszystkich kolejek w kolejności od najwyższej do najniższej aż do napotkania wątku gotowego do działania. W przypadku nie znalezienia żadnego wątku dyspozytor nakaże wykonywać specjalny wątek postojowy. Jeśli podczas wykonywania wątku pewien wątek czasu rzeczywistego o wyższym priorytecie staje się gotowy do działania, to wątek o niższym priorytecie zostanie wywłaszczony.

3. Podsumowanie

Podsumowując wielozadaniowość jest jedną z ważniejszych cech systemu Windows XP. Kluczem do zrealizowania idei wielozadaniowości stała się obsługa wątków, czyli pewnych wydzielonych i niezależnych fragmentów programu. Dla najlepszej wydajności twórcy Windows XP zastosowali pewne rozwiązania, do jakich należy wprowadzenie wątków na poziomie jądra systemu, model wielowątkowości „jeden na jeden” oraz algorytm z wywłaszczanie. Okazuje się, że ta implementacja doskonale sprawdza się w praktyce.

4. Literatura

[1] Windows XP PL. Księga eksperta, Terry W. Ogletree, Helion 2002

[2] ABC systemu Windows XP PL, Marcin Świątelski, Marcin Szeliga, Helion 2003

[3] A. Silberschatz, P.B. Galvin: Podstawy systemów operacyjnych, WNT 2000.

[4] Jerzy Brzeziński, Dariusz Wawrzyniak: Systemy operacyjne - wykłady

4

Modele wielowątkowości:

1:N - („wiele na jeden”) jeden proces jest rozgałęziany bez wiedzy jądra w przestrzeni użytkownika
1:1 - („jeden na jeden”) wzajemnie jednoznaczne odwzorowanie wątków systemu i jądra
M:N - („wiele na wiele”) pozwala zablokowanemu wątkowi przełączyć się na inny wątek procesu realizowany przez jądro

Źródło: http://grzesieklog.blogspot.com/2010_06_01_archive.html

Różnica między procesem z jednym wątkiem a procesem z wieloma wątkami



Wyszukiwarka

Podobne podstrony:
praca z uczniem zdolnym i słabym 2
Praca psychoterapeutyczna z DDA wykład SWPS
PRACA NA 4 RECE (aga)(1)[1]
praca 4
PRACA HODOWLANA Podstawy
Praca osób niepełnosprawnych
PRACA Z UCZNIEM NIEWIDOMYM I SŁABO WIDZĄCYM
8 Właściwa Praca, moc, energia całość
Praca zespolowa z elementami komunikacji interpersonalnej ed wczesn
Prezentacja praca dyplom
2 Planowanie produkcji SOP
Praca szkoly w zakresie organizacji opieki pomocy
CECHY STRUKTUR ORGANIZACYJNYCH PRACA GRUPOWA 17 KWIETNIA[1]
PRACA Z DZIECKIEM NIESMIALYM
Praca z komputerem

więcej podobnych podstron