SOP wyk nr 13-Slajd7: Różnice pomiędzy wersjami
Nie podano opisu zmian |
zmiana tytułu i drobne zmiany w treści |
||
Linia 1: | Linia 1: | ||
==Implementacja semafora ogólnego | ==Implementacja semafora ogólnego na poziomie systemu operacyjnego (1)== | ||
[[Image:SOP_wyk_nr_13-Slajd7.PNG|Implementacja semafora ogólnego | [[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)
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).