CROOK-5 - Charakterystyka systemu
System operacyjny CROOK-5 jest przeznaczony dla zestawów minikomputera MERA-400 wyposażonych w pamięci dyskowe.
System organizuje pracę minikomputera zarządzając jego zasobami (procesorem, pamięcią operacyjną, pamięciami masowymi, urządzeniami zewnętrznymi itp.). Poprzez podział czasu procesora system zapewnia wieloprogramowość i wielododostępność minikomputera. Wielodostępność oznacza możliwość jednoczesnej pracy wielu użytkowników mających dostęp do wszystkich zasobów systemu (w tym do całej pamięci operacyjnej).
Dostęp do pamięci masowych (dyskowych) odbywa się poprzez hierarchiczny podsystem zbiorów, umożliwiając jednoczesne i wygodne korzystanie z nich wielu użytkownikom.
Użytkownik komunikuje się z systemem poprzez koncówkę (terminal) tj. monitor ekranowy, drukarkę z klawiaturą lub podobne urządzenie umożliwiające dwukierunkową wymianę informacji. Praca użytkownika pod sytemem odbywa się w ramach sesji. Rozpoczęcie sesji poprzedzone jest procedurą rozpoznania użytkownika. Po rozpoznaniu użytkownika system udostępnia mu interpretator zleceń systemowych za pośrednictwem którego można sterować przebiegiem sesji.
W czasie sesji użytkownik może wprowadzać i wykonywać dowolne programy w różnych językach programowania; może uruchomić jednocześnie wiele programów, z których każdy może być jednym procesem lub składać się z wielu współbieżnych procesów.
Najbardziej elementarnym obiektem mogącym uzyskiwać zasoby od systemu jest proces. Dla każdego procesu w momencie jego powoływania system tworzy wektor opisu procesu oraz blok pamięci operacyjnej albo specjalny zbiór dyskowy służący do przechowywania obrazu pamięci procesu w czasie gdy proces nie zajmuje pamięci operacyjnej. Każdy proces może tworzyć inne procesy potomne, każdy (z wyjątkiem jednego) ma też swojego przodka. System zapewnia synchronizację procesów i przydziela im zasoby.
Sesja kończy się po wydaniu zlecenia zakończenia sesji. W wyniku jego wykonania zostają usunięte wszystkie procesy wprowadzone przez użytkownika oraz zwolnione wszystkie zajmowane zasoby (z wyjątkiem utrwalonych zbiorów dyskowych).
Organizacja zbiorów w pamięciach dyskowych
Użytkowanie pamięci dyskowych w systemie CROOK-5 odbywa się w oparciu o podsystem zbiorów. Przez zbiór rozumiemy tutaj pewien spójny obszar pamięci dyskowej, wraz z odpowiadającą mu pozycją słownika zbiorów.
Najmniejszą adresowalną częścią pamięci dyskowej jest sektor i wielkości poszczególnych zbiorów są wyrażone w sektorach. Sektor zawiera 256 słów 16-bitowych, czyli 512 byte'ów (znaków) 8-bitowych.
Oprócz zbiorów dyskowych system umożliwia tworzenie zbiorów w przestrzeni RAM. Są to zbiory znajdujące się w pamięci operacyjnej. Ich wszystkie parametry i sposób użycia są takie same jak dla zbiorów dyskowych. Niedozwolone jest utrwalanie ich w przestrzeni RAM.
System umożliwia korzystanie ze zbiorów w sposób sekwencyjny jak również swobodny. Przy dostępie sekwencyjnym zbiór traktowany jest jako ciąg znaków (byte'ów) i system dokonuje przepakowania poszczególnych sektorów na znaki lub odwrotnie. Używany jest przy tym wskażnik (związany ze strumieniem, poprzez który uzyskuje się dostęp do zbioru), który wskazuje aktualny element zbioru (znak, byte). Wskażnik ten jest automatycznie zwiększany po pobraniu lub zapisie każdego elementu zbioru. Wskażnik ten można odpowiednim ekstrakodem cofnąć do początku zbioru lub ustawić na koniec zbioru, co umożliwia dopisywanie do zbioru nowych elementów.
Przy dostępie swobodnym system umożliwia przepisanie do/z pamięci operacyjnej zawartości dowolnego sektora lub sektorów położonych wewnątrz zbioru.
Pamięci masowe dyskowe są podzielone na jednostki logiczne zwane obszarami, odpowiadające zazwyczaj nośnikom fizycznym (talerz, pakiet wymienny). Do maszyny mogą być dołączone rózne typy pamięci dyskowych - dyski z talerzami wymiennymi, dyski elastyczne (floppy disc), dyski niewymienne typu Winchester. System zapewnia jednakowy z punktu widzenia użytkowników i programów sposób dostępu do tych pamięci masowych, niezależnie od ich typu, jak również dołączanie i odłączanie poszczególnych obszarów, co z kolei umożliwia zmianę nośników wymiennych bez przerywania pracy systemu.
Na każdym obszarze dyskowym znajdują się dwa zbiory szczególne: zbiór zawierający opis wielopoziomowego drzewa skorowidzów, oraz zbiór zawierający słownik zbiorów. Każdy użytkownik ma wstępnie ustalony główny skorowidz zbiorów i może utworzyć podległe sobie poddrzewo skorowidzów. Działania na skorowidzach umożliwia specjalny program biblioteczny.
Zbiory zakładane przez użytkowników są tworzone w zasadzie jako nietrwałe i w tej postaci mogą istnieć co najwyżej do końca sesji. Jeśli użytkownik zechce zachować utworzony zbiór, może go utrwalić (w ramach przydzielonego budżetu sektorów). Może również udostępnić swoje zbiory do zapisu i odczytu lub tylko do odczytu użytkownikom podległym lub wszystkim użytkownikom.
Oprócz zbiorów zwykłych tworzonych przez użytkownika i przez jego programy, istnieją zbiory specjalne, tworzone przez system operacyjny. Dla każdego nierezydującego procesu który otrzymał własny blok pamięci operacyjnej tworzony jest specjalny zbiór o tej samej nazwie co proces i o wielkości równej wielkości bloku pamięci (przy trybie pracy z wymianami - dla maszyn mających wystarczająco dużo pamięci operacyjnej można zadeklarować w tablicy konfiguracji tryb pracy, w którym wszystkie programy są rezydujące i wtedy zbiór taki nie jest tworzony). Zbiór ten używany jest do przechowania zawartości pamięci operacyjnej przy jej zwalnianiu, a usuwany jest razem z procesem do którego należy.
Z wyjątkiem zbiorów specjalnych, typy zbiorów nie są przez system analizowane i mogą stanowić dla użytkownika lub programów informację o zawartości zbioru.
Przy tworzeniu zbioru ustalany jest jego pierwotny rozmiar. Jeżeli przy zapisie do zbioru rozmiar ten okaże się zbyt mały, system przeprowadzi automatycznie operację rozszerzenia zbioru zajmując sektory przyległe do zbioru. Jeśli sektory pamięci dyskowej przyległe do zbioru są zajęte, system w ramach operacji rozszerzania zbioru przepisze cały zbiór w inne wolne miejsce. Dopiero przy braku na danym talerzu dyskowym spójnego obszaru o potrzebnym rozmiarze nastąpi alarm systemowy.
Dostęp do zbiorów uzyskuje się poprzez strumienie. Identyfikator strumienia (liczba 16-bitowa) jest lokalny dla procesu definującego strumień i jednocześnie globalny dla wszystkich jego potomków. Potomek może jednak utworzyć strumień lokalny o takim samym identyfikatorze jak globalny (wówczas strumień globalny zostanie "przysłonięty").
Przy dołączaniu do strumienia zbiór jest identyfikowany poprzez tytuł zbioru. Tytuł zbioru składa się z trzech elementów: nazwy przestrzeni, nazwy skorowidza i nazwy zbioru. Poszczególne elementy mogą być puste.
Decydujący wpływ na sposób szukania zbioru w skorowidzach ma format zadanego tytułu zbioru:
- podanie tylko nazwy zbioru powoduje przeszukiwanie skorowidzów na wszystkich dostępnych obszarach (według kolejności pokazywania obszarów w zleceniu LIF) zgodnie z następującym algorytmem:
- ustalenie pierwszego obszaru na którym jest znany użytkownik jako obszaru do poszukiwania zbioru;
- ustalenie do przeglądania skorowidza bieżącego (skorowidz ustalony);
- poszukiwanie zbioru w skorowidzu ustalonym;
- ustalenie do przeglądania skorowidza nadrzędnego względem ostatnio przeglądanego i, jeżeli taki istnieje, powrót do punktu 3.;
- zmiana obszaru i powrót do punktu 2.;
- jeżeli talerz systemowy jest dla danego użytkownika widziany jako roboczy, w pierwszej kolejności przeszukiwane są na nim zbiory nietrwałe, następnie zaś te zbiory utrwalone, które są dostępne dla wszystkich użytkowników;
- jeżeli użytkownik utworzył zbiory robocze w przestrzeni RAM (zbiory w pamięci operacyjnej), przestrzeń ta będzie przeszukiwana jako pierwsza.
- podanie nazwy obszaru powoduje ograniczenie szukania zbioru do wskazanego obszaru;
- podanie nazwy skorowidza powoduje przeszukiwanie tylko wskazanego skorowidza na wszystkich obszarach dyskowych. System ustala wstępnie czy wskazany skorowidz jest nadrzędnym, podrzędnym, czy też obocznym (ani podrzędnym ani nadrzędnym) skorowidza bieżącego. Następnie poszukuje w nim zbioru o podanej nazwie i odpowiednio ustalonej kategorii dostępu. Należy dodać, że podanie nazwy skorowidza jest niezbędne przy dostępie do zbioru w skorowidzu podrzędnym oraz w skorowidzu nie będącym nadrzędnym względem bieżącego.
Inicjalizacja
System po uruchomieniu i otrzymaniu pierwszego zgłoszenia (BREAK) sprawdza metryki obszarów dyskowych. Kontrola przeprowadzana jest dla wszystkich obszarów wyszczególnionych w tablicy konfiguracji dla których bit 0 ustalony jest na 0 (zadeklarowanych jako "własne"). Obszary posiadające prawidłowe metryki zostaną dołączone do systemu. Odrzucane są obszary o powtarzających się nazwach oraz talerze wpisane dwa lub więcej razy do tablicy konfiguracji. O zaistnieniu błędu w opisie konfiguracji użytkownik jest każdorazowo informowany.
Po przejrzeniu obszarów dyskowych system wyprowadza komunikat:
SET TIME,PLEASE :
po którym użytkownik powinien podać trzy liczby określające aktualną godzinę, minutę i sekundę (przedzielone przecinkami i zakończone znakiem powrotu karetki 'CR'). Podawanie minut i sekund nie jest obowiązkowe - odpowiednie wartości są wówczas przyjmowane jako równe zero. Następnie system wyprowadza datę i czeka na akceptację. Użytkownik może znakiem CR zaakceptować ją lub wprowadzić korektę podając róznicę (w dniach) między datą aktualną a podaną przez system.
Uwaga: wersji sytemu z wbudowanym zegarem czasu rzeczywistego opisana wyżej konwersacja nie jest przeprowadzana.
Po tej wstępnej konwersacji system uruchamia program INI tworząc dla niego proces będący przodkiem wszystkich innych procesów.
Zlecenia systemu operacyjnego
System CROOK-5 nie ma wbudowanego interpretatora zleceń systemowych. Funkcje te spełniają programy INI i XOSL.
INI przeprowadza operacje rozpoznania użytkownika, dopuszczenia go do pracy i zakończenia sesji. Może być on uważany za przedłużenie systemu operacyjnego.
XOSL jest standardowym interpretatorem języka zleceń systemowych OSL. System umożliwia jednoczesne używanie różnych programów współpracy użytkownika z systemem, a nie tylko programu XOSL.
Źródło: SYSTEM OPERACYJNY CROOK-5 dla minikomputera MERA-400 (wersja 7), Zbigniew Czerniak, Marek Nikodemski, Gdańsk 1988