O co chodzi z komunikatami systemu??

0

Jak to jest z komunikatami systemu operacyjnego? Aplikacja wysyla komunikat do systemu o jakims zdarzeniu czy system do aplikacji?

0

Zdefiniuj pojęcie komunikatu i system operacyjny, mechanika wszelkich rodzajów komunikatów i ich obsługi w systemach operacyjnych jest bardzo różna, ogólnie to o tym można książkę napisać.

0

no np mamy jakis program ktory chce utworzyc sobie jakas zmienna. W tym celu musi zarezerwowac sobie troche ram'u. Kto wiec wysyla komunikat "zarezerwuj odpowiednia ilosc ram'u"?. A jezeli chodzi o system to interesuje mnie jak to wyglada w systemach UNIXopodobnych lub Windows

0

Generalnie to tutaj nie ma komunikatów. Zmienne lokalne są tworzone na stosie - program po prostu cofa sobie odrobinę stos, jedna instrukcja i po sprawie. Statycznymi i globalnymi w ogóle zajmuje się kompilator i linker przy budowaniu binarki. Alokacja dynamiczna też nie polega na komunikatach praktycznie - program normalnie wywołuje funkcję lub przerwanie podając mu argumenty i otrzymując wynik jakim jest adres nowego obiektu. Wywołanie to zwykłe chwilowe przekazanie kontroli w inne miejsce kodu.

0

Mam taki rysunek http://en.wikipedia.org/wiki/Image:OS-structure.svg i tam jest napis System Call czyli chyba komunikat. Mogłby mi ktos wytlumaczyc ten rysunek. Czy po lewej to aplikacja wysyla komunikaty do jadra a po prawej jadro do aplikacji?

0

System Call to nie komunikat (Message), tylko wywołanie systemowe. Takie wywołanie inicjuje aplikacja. Zależnie od systemu operacyjnego bądź ogółu platformy, jądro może działać w trybie uprzywilejowanym lub nie, ale możesz je po prostu interpretować jako inną działającą aplikację, udostępniającą funkcje.

Podstawowa różnica jest taka, że komunikat jest jednostronnym wysłaniem informacji (ok, wiem, że są komunikaty zwrotne; omawiamy model uproszczony), która trafia do kolejki. Aplikacja wysyłająca robi coś dalej, a odbierająca z kolejki wyciąga sobie komunikaty i przetwarza je w swoim tempie.

Wywołanie systemowe jest natomiast jak wywołanie funkcji - realizowane są operacje po stronie jądra, a po ich zakończeniu sterowanie jest zwracane aplikacji.

Nie wnikając w konkretne architektury, wyobraź sobie, że aplikacja przed wywołaniem umieszcza w określonym miejscu argumenty (na przykład na stosie, w rejestrach procesora; zależnie od platformy), a potem wykonuje na procesorze operację "przełącz na jądro" (na ogół jest to przerwanie albo instrukcja dedykowana). Kod jądra weryfikuje uprawnienia aplikacji i albo wraca z błędem wywołania, albo wykonuje co trzeba i w określone miejsce zwraca wynik. Potem zwraca sterowanie aplikacji.

Inną sprawą jest interakcja w drugą stronę - gdy system chce przekazać coś aplikacji. Może wtedy skorzystać z jakiegoś mechanizmu IPC (na przykład dodać aplikacji do jej kolejki jakiś komunikat, na przykład "odmaluj swoje okno"), albo udostępniać wywołanie funkcji zwrotnej (callback).

1 użytkowników online, w tym zalogowanych: 0, gości: 1