System przyszłości

Najważniejszym programem każdej konfiguracji komputerowej jest system operacyjny. Czego możemy spodziewać się w tej dziedzinie w przyszłości?

Najważniejszym programem każdej konfiguracji komputerowej jest system operacyjny. Czego możemy spodziewać się w tej dziedzinie w przyszłości?

W dyskusjach dotyczących rozwoju informatyki dość niewiele czasu poświęca się systemom operacyjnym. Jest to o tyle paradoksalne, że mówimy tu o najważniejszym z programów, bez którego każdy komputer byłby całkowicie bezużyteczny. Z drugiej strony system operacyjny jest sam w sobie mało interesujący dla przeciętnego użytkownika i musi pozostawać (także dosłownie) w tle oprogramowania użytkowego. Płynna jest także granica między systemem operacyjnym a aplikacjami pracującymi pod jego kontrolą. W końcu tak złożone oprogramowanie jak system operacyjny jest pakietem wielu programów. Kwestia definicji czym jest system operacyjny często ma charakter pozatechniczny i wynika z przyczyn czysto komercyjnych - chodzi tu np. o rozszerzanie sprzedawanego systemu o funkcje oferowane przez konkurenta w oddzielnym programie.

Bywa, że głos w sprawie definicji systemu operacyjnego zabierają prawnicy. Tak było w przypadku przeglądarek internetowych: Internet Explorera Microsoftu i Netscape Navigatora. Podobną nieostrość granic można znaleźć w różnych klasach systemów operacyjnych. Kompilator języka C może być postrzegany jako naturalna część Linuxa, skoro kilka milionów linii kodu samego systemu operacyjnego zapisano właśnie w tym języku i w nim najprościej jest dokonywać zmian czy rozszerzeń. Z kolei systemy operacyjne popularnych serwerów IBM AS/400 projektowano w ten sposób, by integrować je z bazą danych.

System wirtualny

Złożoność systemu operacyjnego dodatkowo jest potęgowana za sprawą jego wielowarstwowości - każda z poszczególnych jego warstw musi obsługiwać funkcje sprzętowe, współdziałać z programami użytkowymi i wreszcie zapewniać komunikację z samym użytkownikiem. Z pewnością najbardziej "operacyjna" jest ta część systemu, która musi być zawsze aktywna, czyli jego jądro. Można też postrzegać system operacyjny jako rozszerzenie sprzętu, czyli jego wirtualizację. W informatyce nie ma bowiem ścisłej granicy między sprzętem a oprogramowaniem. Przecież możliwa jest emulacja funkcji sprzętowych na drodze programowej, względnie "zaszywanie w żelazie" mikrokodu, np. rozkazów Cobola w procesorach Bulla dla przyspieszenia działania programów pisanych w tym języku.

Te przykłady są zresztą pouczające także w kontekście dylematu dotyczącego związków ducha i materii: w jaki sposób niematerialna myśl może poruszyć rękę, która ma przecież jak najbardziej fizyczne właściwości, i w jaki sposób można odczuwać ból, skoro odczuwanie jest tylko pewną ideą? W konfiguracji komputerowej mamy podobne zależności, ale zapewne jest tutaj łatwiej niż w relacji myśl-ciało dostrzec, że otaczający nas świat stanowi integralną jedność i nie ma "czystej" informacji bez jej fizycznej reprezentacji, tak jak nie istnieją obiekty jedynie "fizyczne" bez skojarzonego z nimi ładunku informacyjnego. Informacja - obok czasu, przestrzeni, energii czy masy (wąsko rozumianej materii) - należy do podstawowych wymiarów i atrybutów opisujących rzeczywistość, czyli szeroko rozumianej materii, w której jest także miejsce na zjawiska określane mianem duchowych.

O przełomowości idei systemu operacyjnego jako wygodnego dla człowieka rozszerzenia funkcjonalności sprzętu świadczy niepowodzenie prac Charlesa Babbage'a nad jego maszyną analityczną (analitical engine, lata 30. XIX w.). Nawet gdyby ówczesna, przedelektroniczna technika umożliwiła zrealizowanie tej śmiałej koncepcji, to inteligencja takiego "komputera" nie byłaby większa niż automatu tkackiego Jacquarda (1810 r.) czy systemu kart dziurkowanych Holleritha (1884 r.). Po prostu nie było w niej miejsca na system operacyjny - pierwszy seryjny komputer z wewnętrznym programem sterującym UNIVAC I powstał w 1951 r. w USA.

Tylna straż

Pierwsze komputery były przede wszystkim sprzętem, czyli maszynami obsługiwanymi ręcznie przez człowieka z zewnątrz. Tak działał przekaźnikowy MARK I, sterowany taśmą papierową (1944 r.), czy elektronowy ENIAC (1946 r.), programowany tablicami połączeń. Wreszcie światło dzienne ujrzała, jarząca się kolorowymi lampkami, konsola operatorska, a chęć lepszego wykorzystania czasu bardzo drogich wówczas komputerów doprowadziła do powstania techniki wsadu (batch), którego nadzorowanie przejął prosty program rezydujący w pamięci, zwany monitorem. Dalsze kroki rozwoju systemów operacyjnych są znane: tryb pośredni (off-line), buforowanie i spooling, wieloprogramowość, wielozadaniowość (multitasking) i podział czasu (time sharing), sterowanie procesami (semafory, kolejki), zarządzanie pamięcią (stronicowanie, segmentacja, nakładki), organizacja i ochrona plików, programy usługowe, systemy rozproszone, wieloużytkowe, wieloprocesorowe i wielokomputerowe czy wreszcie sieciowe (grid).

Widać zatem wyraźnie, że droga rozwoju systemów operacyjnych wiedzie od sprzętu do użytkownika - w szczególności od użytkownika profesjonalnego do użytkownika tzw. końcowego, czyli metodą bottom-up. Taka metoda nie gwarantuje systemom operacyjnym miejsca w awangardzie oprogramowania, więc najczęściej stanowią one raczej jego "tylną straż". Nowinki implementowane są przede wszystkim w programach użytkowych, później dołączają do nich narzędzia (języki programowania), a wszystko "upycha się" pod starszy system operacyjny - w końcu liczy się przede wszystkim to, żeby program "poszedł". Można i tak, tyle tylko, że o wiele lepiej byłoby, gdybyśmy mieli do czynienia z podobnymi generacjami systemów operacyjnych i pracujących pod nimi narzędzi.

Tymczasem nawet tworzenie jednego z nowocześniejszych systemów ostatnich lat - MACH-a - rozpoczęto przy użyciu języka C, a nie C++, mimo że celem był obiektowy system operacyjny. Takie podejście tłumaczono chęcią zagwarantowania większej przenośności systemu (portability). No cóż, jeszcze niedawno całkiem poważni dostawcy systemów uniksowych tłumaczyli, że popularny przez wiele lat prosty edytor vi nie może znać klawiszy ze strzałkami, bo istnieją różne standardy klawiatur. Trudno mieć zatem pretensję do rzeszy programistów czy tysięcy firm wytwarzających oprogramowanie, bowiem całe środowisko informatyczne jest zależne od garstki producentów dostarczających na rynek systemy operacyjne.

Konkurencja jest tu niewielka, a do tego często mamy do czynienia ze "sprzedażą wiązaną": wybór sprzętu pociąga za sobą akceptację określonego systemu operacyjnego. Tak dzieje się w przypadku dużych komputerów mainframe, ale także w obszarze PC: wiadomo, że masowy użytkownik prawie zawsze akceptuje ten system operacyjny, jaki znajduje na komputerze przyniesionym ze sklepu. Z kolei w sferze biznesowej pozatechniczny decydent interesuje się określoną aplikacją i to jej wybór znacząco wpływa na stosowaną konfigurację sprzętowo-programową, a więc również system operacyjny.

Nieosiągalne ideały

Jaki powinien być idealny system operacyjny? Teoretyczna wyliczanka jego pożądanych cech jest powszechnie znana i obejmuje m.in. otwartość, modularność, skalowalność, przenośność, kompatybilność, standaryzację, modyfikowalność, efektywność, przyjazność, bezpieczeństwo, bezawaryjność, rozszerzalność, samoopisywalność, funkcjonalność czy ergonomiczność. Owe jakościowe agregaty rozbijane są z kolei na dalsze żądania: np. poziom heterogeniczności obsługiwanego środowiska, rodzaje skojarzonych interfesjów czy sposobów obsługi procesów (wątków) bądź danych w różnych rodzajach pamięci. Owe tasiemcowe listy mają jednak charakter postulatywny gdyż mamy tu do czynienia, w znacznej mierze, z rynkiem producentów i trudno spodziewać się, że to użytkownik będzie wymuszał na nich odpowiednie zmiany.

Owszem, wszędzie tam, gdzie dla masowego użytkownika system był zbyt nieprzyjazny, pojawiały się nakładki - np. XTREE dla poczciwego DOS-a. Niektóre z tych programów potrafiły nawet dość długo utrzymywać się także w przyjaźniejszym świecie graficznym (jak Norton Commander). Jednak większa motywacja dla nowych systemów operacyjnych rodzi się z pojawiania się nowych rodzajów sprzętu. Zacznijmy od procesorów. Ich rozwój pociąga za sobą rozwój systemów operacyjnych, ale dynamika pojawiania się kolejnych generacji jest mniejsza niż dotycząca gęstości upakowania elementów w układzie scalonym (prawo Moore'a). Jeśli pominąć krótki okres funkcjonowania na rynku mikroprocesorów 4-bitowych, to można przyjąć, że lata 70. były czasem generacji 8-bitowej (procesory większych maszyn miały własną linię rozwojową i mogły operować dłuższym słowem), 80. - 16-bitowej, 90. - 32-bitowej, zaś obecna dekada to okres procesorów 64-bitowych (Itanium), choć te pojawiały się już wcześniej (Alpha RISC firmy DEC w pierwszej połowie lat 90.).

Dodajmy jedynie, że sama "bitowość" procesora, określana jedną liczbą, nie oddaje złożoności jego architektury, która często ma charakter mieszany (rejestry, szyny, cykl rozkazowy). Wspomnijmy tylko, że np. PowerPC 620, wykonujący 6 instrukcji w cyklu zegarowym, zaliczany jest do procesorów 64-bitowych i posiada 128-bitową szynę danych oraz 40-bitową szynę adresową. Z kolei popularny Pentium-4 posiada 64-bitową szynę systemową, ale z uwagi na zdolność wykonywania instrukcji SIMD (Single Instruction Multiple Data) może jedną operacją "połknąć" 128 bitów, choć de facto mamy tu do czynienia z czterema ich "paczkami", po 32 w każdej.

Kompuwizory i teleputery

W każdym razie raczej nie powinniśmy się spodziewać masowego pochodu procesorów 128-bitowych czy z dłuższym słowem w najbliższych latach. Wydłużanie słowa procesora (zwiększanie szerokości szyn) powoduje wzrost złożoności sterowania układem, co nie zawsze musi być od razu opłacalne. Dodatkowo tryumfy święci przetwarzanie rozproszone i konfiguracje wieloprocesorowe. Tak właśnie dzieje się wśród superkomputerów budowanych już nawet z dziesiątków czy wręcz setek tysięcy mikroprocesorów - sercem BlueGene/L jest 131072 procesorów PowerPC 440, osiągających na liście TOP500 współczynniki RMAX/RPEAK na poziomie 281/367 teraflopów. Z kolei Internet stwarza możliwości dla stosowania konfiguracji wielokomputerowych. Wymieńmy tu tylko projekty, takie jak: [email protected] (badanie sygnałów z nasłuchu kosmosu), [email protected] (badania struktury białek), GIMPS (Great Internet Mersenne Prime Search - poszukiwanie liczb pierwszych postaci Mersenne'a), MoneyBee (prognozowanie kursów giełdowych). Alternatywą są także komputery sieciowe NC (Network Computer) korzystające z mocy wielu serwerów.

Oczywiście wzrastająca sieciowość informatyki stwarza presję na sieciowe systemy operacyjne nowego typu, a magicznym słowem w tym obszarze i wręcz megatrendem jest (który to temat został podjęty na łamach Computerworld w artykule "Nowy wirtualny świat", opublikowanym 2 listopada 2005 r.). Rośnie również znaczenie urządzeń mobilnych, w tym telefonów komórkowych, a wraz z nimi pojawia się nowe . Zupełnie świeże rozdanie kart czeka nas na rynku domowej elektroniki. Ten, kto zaproponuje najlepszy system operacyjny dla takich urządzeń, będących hybrydą dzisiejszych komputerów i urządzeń elektroniki użytkowej, będzie miał do dyspozycji planetarny rynek miliardów użytkowników.


TOP 200