Menu

Budowa systemu

Budowa komputera

Przykładowe systemy

Programowanie

Linki



Wielozadaniowość

Wielozadaniowość to cecha, która każdy porządny system operacyjny powinien posiadać. Któż dzisiaj nie uruchamia wielu programów na raz? Dobrym przykładem jest sytuacja, gdy w tle pracuje nam pobieranie pliku z internetu, odtwarzacz multimedialny, a my sobie pracujemy przy edytorze tekstu, tak jak ja w tej chwili pisząc ten tekst ;-). Wielozadaniowość polega po prostu na możliwości dzielenia obciążenia procesora pomiędzy wszystkie uruchomione zadania (procesy, aplikacje, wątki). Zaraz jednak się okaże, że to "po prostu" nie jest takie proste.

Części systemu operacyjnego odpowiadające za wielozadaniowość

Aby system operacyjny był wielozadaniowy, musi posiadać odpowiednie podsystemy. Należą do nich:

1. Procedura przełączania kontekstów

Funkcja systemowa uruchamiana w momencie przełączania zadania. Jej praca polega na zapisaniu aktualnego statusu zadania do pewnej struktury w pamięci, w celu jego późniejszego odtworzenia oraz załadowaniu z takiej samej struktury, ale innego zadania, zapisanego uprzednio stanu.

2. Planista (z ang. scheduler)

Funkcja systemowa przydzielająca odpowiednim zadaniom odpowiednią dla nich długość czasu procesora. Zwykle stosuje się priorytety procesów, aby zapewnić więcej czasu procesora ważniejszym procesom systemowym. Planista jest wywoływany przed przełączeniem kontekstu. Po przydzieleniu zadaniu odpowiedniej dla niego ilości czaso procesora, przekazuje wyniki swojej pracy procedurze przełączania kontekstów, który przekazuje kontrolę wybranemu przez planistę procesowi.

3. Podsystem zarządzania procesami

Udostępnienie procesom funkcji pozwalających na tworzenie nowych procesów, możliwość wstrzymywania pracy niektórych zadań, funkcje systemowe związane z kontrolą pracy procesów (np. normalne zakończenie pracy).

Rodzaje planowania

1. FCFS - Pierwszy nadszedł, pierwszy obsłużony

Jest to najprostszy algorytm planowania. Polega on na prowadzeniu prostej kolejki FIFO, do której dodawane są nadchodzące zadania. Tak więc proces, który otrzyma procesor, zwolni go jedynie wtedy, kiedy skończy pracę lub będzie oczekiwał na dane.

2. Najpierw najkrótsze zadanie

Algorytm ten jest najbardziej optymalny pod względem średniego czasu oczekiwania na procesor oczekujących procesów. Wymaga on jednak możliwości określenia trwania kolejnej fazy procesora danego procesu przez co jest stosowany jedynie w specyficznych warunkach. Jednym z rozwiązań jest przybliżenie trwania kolejnej fazy procesora na podstawie faz poprzednich za pomocą różnych algorytmów.

3. Planowanie priorytetowe

Algorytm "najpierw najkrótsze zadanie" jest specyficzną odmianą algorytmu priorytetowego, gdzie priorytetem jest długość fazy procesora. Uogólniając, planowanie priorytetowe polega na przydzielaniu czasu procesora w kolejności ustalonej priorytetem danego procesu. Priorytet może być ustalany na podstawie dowolnego kryterium.

4. Planowanie rotacyjne

Algorytm planowania rotacyjnego polega na przydzielaniu procesom danej jednostki czasu procesora (zwanej kwantem). Po upływie tego czasu, procesowi odbiera się procesor i to samo powtarza się z kolejnym. Kwant czasu jest bardzo mały i zwykle wynosi od 1 ms do 100 ms.

5. Planowanie rotacyjne z użyciem priorytetów

Jest to prawdopodobnie najbardziej powszechny algorytm planowania. Jest to planowanie rotacyjne wzbogacone o możliwość nadawania procesom priorytetów. Proces uzyskuje odpowiednią ilość kwantów czasu procesora na podstawie swojego priorytetu. Dzięki wprowadzeniu priorytetów możliwe stało się przydzielenie większej ilości czasu procesora ważnym procesom systemowym, tym samym zwiększając odpowiedzialność (z ang. responsibility) systemu.

Wywłaszczanie

Jest to możliwość odebrania w razie potrzeby procesora zadaniu, aby oddać go innej aplikacji. Typowym algorytmem z użyciem wywłasczania jest planowanie rotacyjne oraz planowanie rotacyjne z użyciem priorytetów.



Valid XHTML 1.1 License Poprawny CSS!
© 2007 by Tomek Figa na licencji Creative Commons Uznanie autorstwa-Użycie niekomercyjne 2.5 Polska.