SOP wyk nr 13-Slajd7

Z Studia Informatyczne
Wersja z dnia 10:55, 16 sie 2006 autorstwa Dwa (dyskusja | edycje)
(różn.) ← poprzednia wersja | przejdź do aktualnej wersji (różn.) | następna wersja → (różn.)
Przejdź do nawigacjiPrzejdź do wyszukiwania

Implementacja semafora ogólnego na poziomie systemu (1)

Implementacja semafora ogólnego na poziomie systemu (1)


Celem implementacji na poziomie systemu jest zlikwidowanie aktywnego czekania i związanego z tym marnotrawstwa czasu procesora.

Zamiast permanentnego testowania zmiennej semaforowej, stan procesu zmieniany jest na oczekujący , w związku z czym planista przydziału procesora nie uwzględnia go, wybierając proces do wykonania. Z semaforem wiąże się kolejka procesów oczekujących na jego podniesienie. W definicji struktury danych na potrzeby semafora użyto abstrakcyjnej konstrukcji list of . Kolejkę taką można zbudować w oparciu o odpowiednie pola do wskazywania procesów, przechowywane w deskryptorze procesu. W strukturze semaforowej jest wówczas tzw. głowa listy, czyli wskaźnik na deskryptor pierwszego z oczekujących procesów.

W samej implementacji operacji opuszczania interesujący jest sposób modyfikacji pola wartość struktury semaforowej. Jest ono zmniejszane bezwarunkowo i może osiągnąć wartość ujemną. Interpretacja wartości tego pola jest następująca:

  • wartość dodatnia oznacza, że semafor jest podniesiony i przy takim stanie proces nie jest blokowany w operacji opuszczania,
  • wartość ujemna oznacza, że semafor jest opuszczony są procesy oczekujące na podniesienie semafora, a ich liczba jest wartości bezwzględnej pola wartość ,
  • wartość 0 oznacza, że semafor jest opuszczony ale nie ma procesów oczekujących na jego podniesienie (jest to szczególny przypadek poprzedniego punktu).


<< Poprzedni slajd | Spis treści | Następny slajd >>