SOP wyk nr 13-Slajd7: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Dwa (dyskusja | edycje)
Nie podano opisu zmian
 
Dwa (dyskusja | edycje)
zmiana tytułu i drobne zmiany w treści
 
Linia 1: Linia 1:
==Implementacja semafora ogólnego na poziomie systemu (1)==
==Implementacja semafora ogólnego na poziomie systemu operacyjnego (1)==


[[Image:SOP_wyk_nr_13-Slajd7.PNG|Implementacja semafora ogólnego na poziomie systemu (1)]]
[[Image:SOP_wyk_nr_13-Slajd7.PNG|Implementacja semafora ogólnego na poziomie systemu operacyjnego (1)]]




Celem implementacji na poziomie systemu jest zlikwidowanie aktywnego czekania i związanego z tym marnotrawstwa czasu procesora.  
Celem implementacji na poziomie systemu operacyjnego 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.  
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.  
Linia 10: Linia 10:
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:  
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ść 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ść ujemna oznacza, że semafor jest opuszczony, są procesy oczekujące na podniesienie semafora, a ich liczba jest równa 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).
* wartość 0 oznacza, że semafor jest opuszczony ale nie ma procesów oczekujących na jego podniesienie (jest to szczególny przypadek poprzedniego punktu).




[[SOP_wyk_nr_13-Slajd6 | << Poprzedni slajd]] | [[SOP_wyk_nr_13-toc|Spis treści ]] | [[SOP_wyk_nr_13-Slajd8 | Następny slajd >>]]
[[SOP_wyk_nr_13-Slajd6 | << Poprzedni slajd]] | [[SOP_wyk_nr_13-toc|Spis treści ]] | [[SOP_wyk_nr_13-Slajd8 | Następny slajd >>]]

Aktualna wersja na dzień 23:37, 5 wrz 2006

Implementacja semafora ogólnego na poziomie systemu operacyjnego (1)

Implementacja semafora ogólnego na poziomie systemu operacyjnego (1)


Celem implementacji na poziomie systemu operacyjnego 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 równa 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 >>