Obiektowość Warpa

Autor: Przemysław Pawełczyk

W 3 numerze PC Kuriera z 97 roku ukazał się mój artykuł zatytułowany Wykonywanie kopii w Warpie. Prawdopodobnie na skutek zbyt daleko posuniętej DOSowej indoktrynacji, pominąłem w nim tylko jedno zagadnienie, ale za to o zasadniczym znaczeniu. Jest ono związane z niespotykaną do tej pory cechą systemu operacyjnego, a mianowicie obiektowością, w tym przypadku Warpa. Nawiasem pisząc srodze się to potem zemściło, wyłączając mnie na wiele dni z pracy, w którym to czasie wielokrotnie odtwarzałem wszystkie używane poprzednio obiekty Workplace Shella i ich niewidoczne połączenia.

Otóż, w 32 bitowych obiektowych systemach operacyjnych takich jak OS/2 Warp czy NexT (?), których graficzne oblicze także jest obiektowe, nie wystarczy tylko zarchiwizowanie najważniejszych plików danych. Równie istotne jest wykonanie kopii zapasowych wszystkich plików odpowiedzialnych za graficzny wygląd Pulpitu, w tym wszelkie plików ukrytych przed oczami użytkownika, w których przechowywane są logiczne powiązania pomiędzy obiektami. Zanim opiszę w jaki sposób ograniczyć straty związane z awarią Pulpitu, proponuję odrobinę teorii. Tym bardziej, że do zapisania tego rodzaju danych system OS/2 Warp wykorzystuje pliki binarne, o których w dokumentacji ani słowa.

Garść teorii

Co to jest PM i WPS?

Przedstawmy najpierw skrótowo środowiska graficzne OS/2 - Presentation Managera (Zarządcę Oblicza) i Workplace Shella (Otoczkę Warsztatu).

Jak do tej pory, w przypadku systemów jednozadaniowych, kierowanie pracą komputera zawsze wymagało zaznajomienia się z jego działaniem. Panowanie nad katalogami, plikami, programami, kopiowaniem, drukowaniem itp., itd., wymagało od użytkownika niezłej znajomości komputera. Pomagały mu w tym, tzw. interfejsy użytkownika (raczej komputera), zazwyczaj znakowe (np. Norton Commander), nie umniejsza to jednak faktu, że użytkownik musiał wiedzieć co się w komputerze dzieje.

Pojawienie się interfejsów graficznych np. wcześniejszych wersji PM czy Windows x.x, uczyniło tę pracę tylko przyjemniejszą, ale wcale nie łatwiejszą! Wbrew obiegowym opiniom w rodzaju "przyjazne dla użytkownika", stale powtarzanych w debilnych reklamach Microsoftu lub przez równie inteligentnych dziennikarzy. Jedynym wyjątkiem (ale z dużymi zastrzeżeniami) był system operacyjny firmy Apple, który całkowicie odseparował użytkownika od jakichś tam  katalogów, czy "fajli" (tfu...), które kojarzyły się raczej z bibliotekami, niż logicznym miejscem składowania danych na dysku (chociaż akurat ta analogia ma głęboki sens).

Dopiero kolejna wersja 2.0 systemu OS/2, spowodowała przełom we współpracy człowieka z komputerem. Dotyczył on nie tylko ich wzajemnego komunikowania się, ale co ważniejsze, zmniejszył wymagania stawiane UŻYTKOWNIKOM tych systemów. A to dzięki graficznej reprezantacji obiektów dobrze znanych im z ich środowiska pracy oraz ich wzajemnych i naturalnych powiązań.

List do kosza, proszę bardzo - graficzny wygląd pliku do "graficznego" kosza na ekranie! Voil ! Chowamy sprawozdanie do segregatora, a ten do szafy pod oknem? Więc przesuwamy na ekranie graficzną reprezentację sprawozdania do graficznego segregatora czyli teczki (folderu), a tę z kolei wkładamy do graficznej szafy (innej teczki). Prawda, że proste? Bez żadnej znajomości zasad pracy komputera!. Po co komu wiedzieć, co się dzieje w komputerze podczas chowania graficznego "segregatora" do "graficznej" szafy?

Jeszcze lepszym przykładem mogą być Obszary Robocze OS/2, które są odpowiednikiem wielu biurek użytkownika. Dziś pracuję nad sprawozdaniem, proszę bardzo, otwieram odpowiednie biurko, a wraz z nim wszystkie potrzebne mi dokumenty. Szef każe nagle przygotować zestawienie? Zamykam obszar roboczy "sprawozdanie" (czyli moje elektroniczne biurko), a system sam chowa mi wszystkie rozłożone na nim dokumenty, by potem, po ponownym otwarciu, pokazać mi je na ekranie tak jak je zostawiłem przed zamknięciem. Czyż nie wspaniałe ułatwienie, pozwalające pracować nad wieloma tematami na raz? (Co daje nam prawo do domagania się podwyżki!)

A drukowanie, tworzenie i wysyłanie poczty elektronicznej czy komunikowanie się w obrębie sieci, wykonywane techniką przenieść i upuść? A wysyłanie faksów, przypominające zaniesienie faksu do sekreteriatu (to już starej daty)?

Za wszystkie tego rodzaju wzajmene współdziałanie aplikacji dla OS/2 odpowiedzialny jest właśnie Workplace Shell. Ale jego możliwości są daleko większe, obejmują nie tylko obsługę aplikacji wykorzystujących obiektowe możliwości OS/2. Równie efektywnie WPS obsługuje inne aplikacje, DOSowe i Windows, "otaczając" je opieką i pozwalając na drobiazgowe i optymalne ustawienie parametrów ich działania (mówiąc napuszenie: zapewniając im wysoce elastyczne środowisko systemowe).

Na przykład, jedną z obiektowych cech WPSa jest kojarzenie danych z programami i na odrót, i to na kilka sposobów (!). Używa się jej także do "obsługi" programów DOS i jego graficznej nakładki. WPS to również okna OS/2 i DOS, pozwalające używać komend systemowych bardziej doświadczonym użytkownikom.

WPS zaliczamy do powłok objektowych, w skrócie OOUI [Object Oriented User Interface]. Jest ona zbudowany w oparciu o standard 1991 IBM Systems Application Architecture (SAA) Common User Access (CUA) Workplace Environment. Powłokę WPS reprezentuje w systemie Pulpit (Desktop), na którym znajdują się łatwe w posługiwaniu się obiekty. Te z kolei są widoczne pod postacią symboli graficznych zwanych ikonami. Obiekty mogą "skrywać" zarówno obiekty fizyczne jak np. drukarkę lub napędy dyskowe, jak i logiczne, np. foldery, pliki, itp.

Ciekawsze w WPS jest to, że sama w sobie jest programem systemu OS/2, który można zmienić na inny, innymi słowy jest wymienna. Odpowiadająca jej linia w pliku CONFIG.SYS wygląda następująco:

PROTSHELL=C:\OS2\PMSHELL.EXE

WPS rozpoczyna pracę jako proces i jeśli zajdzie taka potrzeba uruchamia dodatkowe wątki. Dodatkowo wraz z PMSHELLem uruchamiany jest w osobnym procesie dodatkowy program nadzorujący powłokę, który uruchamia ją ponownie (powłokę) wraz z działającymi w niej aplikacjami użytkownika, jeśli tylko coś w jej obrębie wykona się błędnie. Bez potrzeby ponownego uruchamiania komputera i systemu (ang. restart).

Krótko mówiąc WPS daje nam swobodę w wykorzystywaniu i obsługiwaniu systemu, zarówno dla początkujących nie posiadających żadnej wiedzy komputerowej, jak i zaawansowanych. Innaczej, Workplace Shell jest programem, który umożliwia uruchamianie programów OS/2, DOS i Windows. Nadaje on systemowi obiektową otoczkę, która znakomicie ułatwia zarządzanie systemem i wykonywanie aplikacji użytkowych. Jest w końcu, odpowiedzialna za współpracę tych aplikacji z systemem.

Na zakończenie podam jeszcze jedną definicję WPSa, pochodzącą z glosariusza zawartego w Księdze Czerwonej Systemu OS/2 2.0 Vol. 3 (Document Number GG24-3732-00), zatytułowanej Presentation Manager and Workplace Shell:

Workplace Shell jest obiektowo-zorientowaną powłoką użytkownika, która wykorzystując ikony do reprezentacji obiektów, ułatwia użytkownikowi wykonanie pracy poprzez bezpośrednie manipulowanie nimi na Pulpicie za pomocą myszy lub klawiatury.

Presentation Manager

Czym w takim razie jest PM? Otóż jest on niczym więcej, niż tylko graficznym systemem okien. Kropka. Albo innaczej, jest graficznym, okienkowym obliczem komputera (a nie użytkownika :) ), czyli OeSowym GUI (Graphical User Interface). Użytkownik komunikuje się z aplikacjami OS/2 za pomocą myszki lub klawiatury i za pośrednictwem łącza programowego kontrolowanego właśnie przez PM. Na przykład, wprowadzanie danych może odbywać się poprzez obiekt Presentation Managera zwany Entry Field.

Presentation Manager posługuje się systemem ikon, służących do reprezentowania obiektów oraz systemem okien, stanowiącym wgląd we własności (lub/i zawartość) tych obiektów. To właśnie PM pozwala nam oglądać na ekranie tak wiele okien z uruchomionymi programami.

Podsumowując. PM jest graficznym obliczem komputera, które pozwala użytkownikom w ten sam, intuicyjny sposób obsługiwać dowolną aplikację OS/2. Korzysta z systemu okien i kilkunastu predefiniowanych obiektów (jak np. kontener, suwak, wskaźnik, notatnik, okna dialogowe, itp.).

Gdzie się zapisuje dane o obiektach?

Dla zrozumienia zależności pomiędzy obiektami musimy sobie jeszcze wyjaśnić króciutko i dla przykładu, pojęcie obiektów WPSa. Dzielą się one na trzy klasy:
WPAbstract - klasa obiektów abstrakcyjnych.
Należą do niej odnośniki do programów, cienie i takie obiekty jak zegar. Można je kopiować w obrębie WPSa, ale nie na dyskietkę. Informacja o nich jest zapisywana w plikach *.INI.
WPFileSystem - klasa obiektów plikowych.
Każdy obiekt tej klasy jest pamiętany na dysku. Typowymi przedstawicielami są foldery (katalogi) i pliki, które można kopiować na i z dowolnego nośnika informacji. Informacja o nich jest zapisywana w atrybutach rozszerzonych stowarzyszonych z katalogiem lub plikiem.
WPTransient - klasa przejściowa.
Praktycznie dotyczy nieistniejących (stale) obiektów. Przykładami są Lista Okien i sterowniki drukarek. Obiekty tej klasy można umieszczać w folderach, ale po ich zamknięciu wszelka informacja o tych obiektach znika.
Teraz musimy się przyjrzeć w jaki sposób WPS jest powiązany ze znanym nam systemem plików. Na przykład, co się dzieje po przesunięciu na Pulpicie jakiejś ikony (tj. graficznego symbolu jakiegoś obiektu), powiedzmy z jednego folderu do drugiego.

To zależy od klasy obiektu. Jeśli przesuwamy plik danych (jego graficzną reprezentację), zostanie on faktycznie (mówimy - fizycznie) przeniesiony do nowego katalogu. Jeśli był to odnośnik do programu albo cień obiektu, przeniesiony zostanie wskaźnik oryginalnego obiektu.

Graficznie można by to przedstawić nastąpująco:

                      Zmiany na Pulpicie
-------------------------------------------------------------------
Folder A                                         Folder B
-------------------------------------------------------------------
plik programu  ------(Kopiowanie)--------------> plik programu
plik danych    ------(Tworzenie Cienia)--------> cień pliku danych
plik danych    ------(Kopiowanie)--------------> plik danych
-------------------------------------------------------------------


                      Zmiany rzeczywiste
-------------------------------------------------------------------
Folder A                                         Folder B
-------------------------------------------------------------------

Plik      ------------(kopiowanie)-------------> Plik
Plik.EA   ----+     +---------------+     ++---> Plik.EA
              |     |    OS2.INI    |     ||
              |     |               |     ||
              |     |  Folder A     |     ||
              +---->|    Plik       |     ||
                    |               |     ||
                    |  Folder B     |     ||
                    |    Plik       |<+---+|
                    |    Cień pliku |<-----+
                    +---------------+
Objaśnienia: Plik.EA - atrybuty rozszerzone pliku

Zarówno foldery jak i obiekty abstrakcyjne pamiętane są w pliku OS2.INI jako wskaźniki (zwane HOBJECTS - uchwytami obiektów). Kiedy skopiujemy program do innego folderu (odnośnik do programu) jego wskaźnik zostanie umieszczony w pliku OS2.INI, w obszarze folderu docelowego. Natomiast dane o położeniu w obrębie folderu docelowego jak i jego wskaźnik, zostaną umieszczane w atrybutach rozszerzonych katalogu docelowego (odpowiadającego docelowemu folderowi). Podobnie wygląda przesuwanie cieni. Pierwotny plik pozostaje na swoim miejscu, natomiast w folderze docelowym umieszczany jest jego wskaźnik.

Pamiętajmy o jeszcze jednej rzeczy. Działający w ten sposób WPS tworzy w systemie słabe strony:

Pliki INI i EA

Przedsumujmy więc na koniec w skrócie pliki INI i atrybuty rozszerzone.

OS2.INI jest jedynym plikiem, w którym trzymane są informacje o obiektach abstrakcyjnych, np. w jakich folderach się znajdują. To tutaj również umieszczane są dane o wszystkich odnośnikach do programów. Ponieważ ilość informacji zawarta w OS2.INI staje się z czasem bardzo duża, to dla zwiększenia szybkości jego odczytu (dostępu) został utworzony w postaci binarnej.

Jego struktura jest trzypoziomowa. Najpierw zapisywana jest Nazwa Aplikacji (Application Name). W jej obrębie zapisane są Klucze (Keys), do którego z kolei przynależy jakaś Wartość (key Value). W szczególności plik OS2.INI zawiera informacje o:

Natomiast Extended Attributes zawierają dodatkowe informacje o katalogach i plikach, tj. informacje o ich zawartości, sposobie wykorzystywania, wzajemnych powiązaniach, itp. Nie są częścią plików, a tylko obszarem informacji stowarzyszonym z plikami. W przypadku HPFS dane odnoszące się do EA są przechowywane w opisie katalogów, natomiast w systemie FAT, w osobnym pliku.

Wystarczy by choć jeden z zapisów dokonany w plikach systemowych INI okazał się błędny, aby wygląd Pulpitu lub wygląd jego części (np. zawartość foldera) należało odtwarzać od nowa. IBM poświęcił odtwarzaniu Pulpitu i związanym z tym procedurom ratunkowym prawie cały rozdział w swoim Podręczniku Użytkownika (od str. 201 do str. 211, wersja angielska).
 

 
 
<-Powrót 

Tech/2 strony z poradami technicznymi na temat systemu OS/2