‟overcq”

Notatki o OUX/C+

Program czasu rzeczywistego OUX/C+

OUX/C+ określa własny standard programu czasu rzeczywistego. Jest on możliwy do realizacji na popularnych systemach operacyjnych, ale bez gwarancji reakcji urządzenia w momencie zajmowania czasu procesora przez system operacyjny. Takie zajęcie czasu procesora może wynikać z uruchomienia innego programu, który nie jest zgodny z tym standardem, w wyniku czego następuje nadmierne zajęcie pamięci operacyjnej i procesora centralnego.

Standard programu czasu rzeczywistego OUX/C+ wyrażony w projekcie OUX/C+ określa:

Wszystkie błędy wykonania muszą być obsłużone przy użyciu strukturalnego wychodzenia z wykonywanego programu do bloków nadrzędnej funkcjonalności. Na przykład: przy błędzie braku pamięci należy wyjść do pętli nadrzędnej ‹zadania›, w której jeszcze ten błąd nie wystąpił. Błędy te są sygnalizowane przez wartość zwracaną przez procedury (zwykle ~0 minus kod błędu).

Przełączanie ‹zadań› programu opiera się na ‹raportach›, ‹cyklerach› i swobodnym powrocie do planisty (instrukcją “I_B”). Czekanie na ‹raporty› i ‹cyklery› oraz ich emitowanie są oczywiste i nie wymagają dostosowywania. Natomiast w przypadku większych bloków programu w ‹zadaniu› należy stosować swobodny powrót do planisty, by nie zajmować czasu procesora na jednej czynności. Ale te bloki pamięci powinny wykonać pojedynczą czynność i zwolnić zasoby w jak największym — akceptowalnym ze względu na inne ‹zadania› w programie — pojedynczym bloku.

Program OUX/C+ ma gwarantowane co najmniej podanie liczby pominiętych emisji ‹cyklera› przy jego zrealizowanym wyemitowaniu, która to wartość jest wykorzystywana do synchronizacji danych (np. podczas odtwarzania multimediów), oraz gwarantowane wyemitowanie ‹raportu› w najkrótszym dostępnym czasie. Natomiast w systemie operacyjnym program OUX/C+ powinien być skonfigurowany do wykonywania się z pominięciem priorytetów czyli w systemie równopodzielnego przełączania zadań czasu rzeczywistego (tak jak są przełączane wewnętrzne zadania programu).

Do przydzialania pamięci trzeba używać dostarczonego menedżera pamięci i zwalniać pamięć odpowiednio do konkretnego wzorca użycia: albo przy wyjściu z bloku strukturalnego, albo po zakończeniu użycia obiektu bez względu na bloki strukturalne a w oparciu o pętlę przetwarzania danych.

Specyficzne zachowania systemów operacyjnych

Zarówno Linux jak i Windows przerywają działanie jakiegoś programu przy braku pamięci, wcześniej przydzielając nadmiar pamięci bez błędu. Menedżer pamięci stara się wykryć ilość wolnej pamięci rzeczywistej i przydzielać tylko do tego rozmiaru, ale program OUX/C+ nie może zapobiec jego zakończeniu z powodu braku pamięci w systemie operacyjnym. Dlatego należy stosować zewnętrzny mechanizm restartowania programu po jego usunięciu, ponieważ program OUX/C+ nie żąda więcej pamięci niż jest przypuszczalnie wolne w systemie.

Nie można wyłączać tego mechanizmu w systemie operacyjnym, ponieważ większość programów niezgodnych ze standardem OUX/C+ jest teraz pisana tak, by żądać nadmiarowej pamięci, i nie mogłaby być uruchomiona.

Również plik wymiany rozszerzający pamięć operacyjną komputera nie może być wyłączony zarówno na przypadek konieczności uruchomienia programu mającego większe wymagania pamięci jak i dla celu przeniesienia z pamięci operacyjnej drobnych bloków, gdy jest ona wypełniona optymalnie prawie w całości, by nie następowało marnowanie wolnej pamięci operacyjnej z powodu żądania niewiele większego od wolnej pozostałości. Natomiast w programie OUX/C+ plik wymiany nie może być używany.