Wielu użytkowników siadając do klawiatury nie zastanawia się, jak pracuje ich ukochany komputer. Doświadczeni programiści twierdzą, że to nie krasnoludki zmuszają komputer do pracy, ale samo stwierdzenie nie wystarczy, trzeba je udowodnić.
Przedstawiamy cykl opisujący programowe serce komputera, czyli system operacyjny. Rozpoczynamy krótkim zarysem historii powstawania kolejnych generacji. W następnych odcinkach pokażemy, jak zwiększające się potrzeby wymuszały zmiany i rozwinięcia systemów operacyjnych. Czytelników zaś zainteresowanych prehistorią komputera zapraszamy do Klubu Mistrzów Komputera (w tym i w poprzednich numerach).
Od uruchomienia pierwszej maszyny cyfrowej nie minęło jeszcze 40 lat, a wprowadzone w tym czasie udoskonalenia zarówno samych maszyn, jak i sposobu ich programowania i współpracy z użytkownikiem, czyli systemów operacyjnych, dzielimy na generacje odległe pozornie o całe epoki.
System operacyjny to, najkrócej mówiąc, zbiór programów tworzących łącznik między sprzętem a użytkownikiem, zapewniających łatwe uruchamianie programów i sterowanie zasobami systemu komputerowego.
Dobry system operacyjny powinien:
- działać poprawnie (a o to wcale niełatwo) i szybko;
- być łatwy do opanowania i prosty w obsłudze;
- być odporny na uszkodzenia sprzętu i błędy w programach użytkowych;
- zajmować jak najmniej pamięci;
- sprawiedliwie dzielić zasoby między użytkowników systemu;
- być podatny na zmiany konfiguracji sprzętowej, rozszerzenia i modyfikacje;
- zapewniać możliwość przenoszenia na inne maszyny o podobnej strukturze.
Realizując te zadania system operacyjny musi:
- zapewnić sprawną komunikację między swymi modułami;
- obsługiwać zasoby sprzętowe: przerwania, urządzenia peryferyjne, zegar;
- dbać o sprawne przełączanie modułów pamięci operacyjnej;
- wykrywać i obsługiwać sytuacje awaryjne spowodowane niesprawnością sprzętu i błędami w oprogramowaniu;
- regulować dostęp poszczególnych programów użytkowych do zasobów sprzętowych;
- przydzielać im pamięć (statystycznie i dynamicznie);
- obsługiwać katalogi, pliki i rekordy na taśmach i dyskach;
- dołączać programy biblioteczne i translatory;
- prowadzić bieżącą ewidencję pracy i stanu kont użytkowników.
GENERACJE SYSTEMÓW OPERACYJNYCH
Zmiany w sprzęcie polegały na ulepszeniu podstawowych elementów, z których zbudowane są maszyny cyfrowe. W maszynach pierwszej generacji (przełom lat czterdziestych i pięćdziesiątych) podstawowym elementem była lampa elektronowa. Wykorzystanie tranzystorów pozwoliło na konstrukcję maszyn cyfrowych drugiej generacji (1951-1960), zaś układu scalonego - maszyn trzeciej generacji (1963-1965). Kolejne generacje maszyn cyfrowych były coraz doskonalsze pod względem szybkości pobierania i przetwarzania danych, pojemności pamięci, malały ich koszty, rozmiary i zużycie energii.
Rozwijały się też systemy operacyjne. Wyróżnić można następujące generacje:
Zerowa generacja systemów operacyjnych (lata czterdzieste)
Wczesne maszyny cyfrowe w ogóle nie miały systemów operacyjnych, co uzasadnia termin "zerowa generacja". Użytkownicy programowali jedynie w języku maszynowym, ręcznie kodując wszystkie instrukcje.
Pierwsza generacja (lata pięćdziesiąte)
Systemy operacyjne lat pięćdziesiątych miały na celu skrócenie czasu traconego przy przekazywaniu sterowania z jednej pracy użytkowej do drugiej oraz wygładzenie tego przejścia (trzeba było ręcznie uruchamiać program, który "czyścił" pamięć i szykował maszynę do przyjęcia następnej pracy). W ten sposób powstały systemy przetwarzania wsadowego (ang. batch processing). Prace były zbierane w grupy - wsady. Praca aktualnie wykonywana miała pełne sterowanie nad systemem komputerowym. Gdy praca zakończyła się (poprawnie lub z powodu błędów), sterowanie było zwracane do systemu operacyjnego, aby ten przyjął następną pracę do wykonania.
Druga generacja (wczesne lata sześćdziesiąte)
Ta generacja systemów operacyjnych to przede wszystkim rozwinięcie systemów wieloprogramo-wych (ang. multiprogramming - kilka programów użytkowych równocześnie w pamięci operacyjnej) i wieloprocesowych (ang. multiprocessing - czas procesora dzielony pomiędzy różne procesy, co stwarza wrażenie równoległego ich przetwarzania).
Użytkownik przestaje być uzależniony od konkretnych urządzeń zewnętrznych. Poprzednio musiał wskazać, z którym urządzeniem chciał współpracować (podać jego numer). Teraz wystarczy, aby program użytkowy jedynie wyspecyfikował cechy, jakie urządzenie powinno posiadać, a system operacyjny zajmie się jego przydziałem.
Pojawienie się systemów z podziałem czasu (ang. time-sharing) oraz czasu rzeczywistego (ang. real-time) to duży krok w rozwoju systemów operacyjnych. Systemy z podziałem czasu umożliwiają pracę konwersacyjną. Użytkownik wydaje zlecenia, a maszyna przetwarza je tak szybko, jak tylko jest to możliwe. Mimo wielu użytkowników korzystających z jednego komputera każdemu z nich wydaje się, że jest sam na sam z maszyną. Natomiast systemy czasu rzeczywistego obsługują w trybie bezpośrednim zewnętrzne procesy przy określonych czasach reakcji. Są one używane do sterowania procesów przemysłowych i w zastosowaniach militarnych. Pełnią podrzędną rolę w stosunku do otoczenia, którym najczęściej jest sprzęt pomiarowy i regulacyjny.
Trzecia generacja (druga połowa lat sześćdziesiątych i pierwsza lat siedemdziesiątych)
Generację tę rozpoczęło wprowadzenie w 1964 roku rodziny komputerów IBM System/360. Były to systemy ogólnego zastosowania; duże, drogie, często wolne. Zostały pomyślane jako "wszystko dla wszystkich" ("all things for all people"). Można je zaliczyć do grupy systemów wielozadaniowych (ang. multi-mode). Niektóre z nich równocześnie umożliwiały przetwarzanie wsadowe, konwersacyjne, z podziałem czasu, przetwarzanie w czasie rzeczywistym oraz wieloprocesorowe. Warstwa oprogramowania w tych komputerach całkowicie przykrywa sprzęt. Użytkownik widzi więc komputer tak, jak go kształtuje oprogramowanie.
Byt to duży krok do przodu, ale krok kosztowny i przysparzający trudności wielu użytkownikom. Potrzebowali oni bowiem komputera do konkretnego celu, a otrzymywali system ogólnego zastosowania, trudny w użyciu, którego możliwości wykorzystywali w małym stopniu. Krokiem eliminującym te trudności była czwarta generacja.
Czwarta generacja - od drugiej polowy lat siedemdziesiątych do chwili obecnej (1987 rok - przyp. admin)
Rozpowszechnienie sieci komputerowych (ang. network) i przetwarzania bezpośredniego (ang. on-line processing) spowodowało, że użytkownik poprzez różne typy terminali ma dostęp do sieci komputerów rozrzuconych geograficznie. W związku z tym poważnym problemem staje się ochrona informacji, tak, aby z zapisanych danych mogły korzystać jedynie osoby do tego upoważnione.
Wielkiego znaczenia nabierają również systemy baz danych. Obecnie społeczeństwo jest zorientowane na szybką wymianę informacji (ang. information-oriented society). Zadaniem systemów baz danych jest udostępnienie zapisanych informacji wszystkim, którzy mają prawo dostępu do nich. Dostęp do tych danych ma być łatwy, typowy, ale kontrolowany.
Powstała również idea przetwarzania danych rozproszonych (ang. distributed data processing). Polega ona na tym, że nie dane są przenoszone do głównego komputera w celu ich przetworzenia, ale moc komputerowa jest przenoszona do miejsca, w którym jest ona potrzebna.
Wprowadzenie mikroprocesorów, a co za tym idzie, stosunkowo tanich i niewielkich komputerów osobistych (ang. personal computer), było, jak się wydaje, na przestrzeni ostatnich dziesięcioleci najważniejszym krokiem o olbrzymich konsekwencjach społecznych. Użytkownik może mieć teraz swój własny system komputerowy, który może używać o każdej porze dnia i nocy. Mogą one również służyć jako terminale w sieciach komputerowych. Są łatwe w obsłudze i programowaniu (ang. users friendly) nawet przez laików w dziedzinie informatyki.
Mikrokomputery, ze względu na ich stale malejącą cenę oraz wzrost możliwości: wydłużenie słowa rozkazowego, rozszerzenie przestrzeni adresowej, jak również ze względu na niewielkie rozmiary mikroprocesora, zastępują powoli minikomputery a nawet częściowo duże komputery.
Mikrokomputerowe systemy operacyjne były początkowo proste, ułatwiały jedynie współpracę z urządzeniami zewnętrznymi. Jednak w miarę rozwoju sprzętu wymagano od nich coraz więcej. (tak są już mikrokomputerowe systemy operacyjne realizujące pracę z podziałem czasu (np. MP/M), systemy umożliwiające współbleżność (np. concurrent CP/M-86, concurrent DOS, Xenix) oraz systemy sieciowe - realizujące pracę w sieci komputerowej (np. CP/NET, CP/NOS i MP/NET).
DANUTA MAGDZIK
Komputer, luty 1987