Systop1

background image

Systemy operacyjne

© Jerzy Skurczyński

Instytut Informatyki Stosowanej

Państwowa Wyższa Szkoła Zawodowa w

Elblągu

Elbląg, 2002 r.

background image

Literatura:

1. M.J. Bach, Budowa systemu operacyjnego UNIX, WNT, 1995.

2. D.P. Bovet, M. Cesati, Linux kernel, RM, 2001.

3. L. Bułhak i in., DOS 5 od środka, HELP, 1997.

4. A. Silberschatz i in., Podstawy systemów operacyjnych, WNT, 1993.

5. A.S. Tanenbaum, Rozproszone systemy operacyjne, PWN, 1997.

6. ................... Windows ... od środka, Help, .......

background image

1. CELE ISTNIENIA SYSTEMÓW OPERACYJNYCH

Zarys historii rozwoju systemów operacyjnych

Najwcześniejsze komputery (konstruowane w latach 40-tych i na początku 50-

tych) nie miały

żadnego stałego oprogramowania. Programy użytkowników były pisane w

kodzie maszynowym

i bezpośrednio (w postaci ciągu bitów) wprowadzane do pamięci operacyjnej

komputera.

Wyniki działania programów również były odczytywane bezpośrednio z

pamięci. Takie

programowanie „surowej maszyny” było bardzo niedogodne dla

użytkowników.

Aby ułatwić używanie komputera, zaczęto do niego przyłączać dodatkowe

urządzenia służące do

przyspieszenia wprowadzania programów i danych do pamięci komputera

oraz odczytywania

wyników. Zostały one nazwane urządzeniami zewnętrznymi komputera

(dawniej nazywano je

też urządzeniami peryferyjnymi lub peryferałami

(peripheral)

).

background image

Rodzaje najwcześniejszych urządzeń zewnętrznych:

1) urządzenie typu „dalekopis” (sterowana elektryczna maszyna do pisania)
pełniące rolę konsoli

operatorskiej, to jest służące do wprowadzania i odczytywania niewielkich
porcji informacji

w postaci znakowej;

2) czytniki nośników papierowych (taśmy i karty perforowane) umożliwiające
dość szybkie

wprowadzenie większych programów i danych przygotowanych na
oddzielnych urządzeniach

(perforatorach);

3) drukarki (wierszowe i głowicowe) umożliwiające dość szybki wydruk
wyników.

Nieco później pojawiły się przewijaki taśm magnetycznych, umożliwiające
wielokrotny zapis

i odczyt większych ilości danych przeznaczonych do czasowego przechowania
(na przykład

pośrednich wyników obliczeń lub wyników kompilacji programów).

Programowanie obsługi przez komputer urządzeń zewnętrznych (czyli
prawidłowego

komunikowania się komputera z nimi) należało do najtrudniejszych i
najbardziej

skomplikowanych zadań programistycznych - i tak jest po dzień dzisiejszy.

background image

W początkowym okresie komputery były bardzo drogimi urządzeniami. Czas
ich pracy był

wyceniany bardzo wysoko i w związku z tym zaczęły pojawiać się koncepcje
mające na celu

zaoszczędzenie czasu ich używania przez poszczególnych użytkowników.

Podstawowe koncepcje to:

1) zatrudnianie zawodowych operatorów, którzy szybko i bezbłędnie
komunikowali się

z komputerem za pośrednictwem konsoli;

2) przygotowywanie na oddzielnych urządzeniach większej liczby tekstów
programów i zestawów

danych dla nich i łączenie ich we wsady

(batch)

, które umożliwiają

natychmiastowe rozpoczęcie

wykonywania następnego programu po zakończeniu poprzedniego (lub
odrzuceniu go z powodu

błędów);

3) uruchamianie na początku pracy komputera specjalnego programu
przebywającego w jego

pamięci przez cały czas i zawiadującego współpracą komputera z
urządzeniami zewnętrznymi

oraz kolejnością uruchamiania innych programów.

background image

Trzecia z powyższych koncepcji doprowadziła do powstania systemów
operacyjnych
, których

pierwotną postacią był tak zwany monitor rezydujący. Był to program
przebywający przez cały

czas w pamięci operacyjnej komputera i wprowadzający do pamięci i nadzorujący
wykonywanie

innych programów (przekazanie im sterowania i przejęcie go z powrotem po ich
zakończeniu).

O kolejności wprowadzania programów decydował operator podając odpowiednie
polecenia

z konsoli, mogło to być też zautomatyzowane poprzez użycie tak zwanych kart
sterujących

poprzedzających karty z zapisem treści programu.

Jedną z podstawowych funkcji operatora systemu komputerowego (poza fizyczną
obsługą urządzeń

wejścia/wyjścia - wkładaniem i wyjmowaniem nośników papierowych,
zakładaniem i zdejmowaniem

taśm magnetycznych) było zainicjowanie pracy komputera po włączeniu zasilania.
Ponieważ

komputery nie posiadały pierwotnie pamięci trwałych (ROM) umożliwiających
automatyczny start,

operator musiał ręcznie (przy użyciu kluczy) wprowadzić do pamięci kilka
rozkazów maszynowych

umożliwiających wczytanie z nośnika papierowego bardziej złożonego programu
(odpowiednika

dzisiejszego BIOS-u), który z kolei umożliwiał wczytanie systemu operacyjnego z
taśmy

magnetycznej.

background image

Rozwój systemów operacyjnych miał na celu jak najefektywniejsze
wykorzystanie możliwości

sprzętu komputerowego i zawsze był nierozłącznie związany z rozwojem samego
sprzętu.

Ponieważ urządzenia zewnętrzne zawsze działają znacznie wolniej od samego
komputera (jego

procesora), dążono do jak największego uniezależnienia pracy procesora od
czasu wprowadzania

danych i wyprowadzania wyników. Uzyskiwano to poprzez:

1) odchodzenie od współpracy procesora bezpośrednio z urządzeniami
operującymi na nośniku

papierowym (są zdecydowanie najwolniejsze) poprzez przepisywanie danych i
wyników na/z

taśmy magnetyczne przy użyciu wyspecjalizowanych urządzeń lub mniejszych,
pomocniczych

komputerów (tak zwane przetwarzanie satelitarne);

2) buforowanie, czyli wydzielenie fragmentu pamięci operacyjnej do celów
komunikacyjnych

i umożliwienie urządzeniom zewnętrznym (po zainicjowaniu transmisji przez
procesor) niezależny

(autonomiczny) zapis/odczyt do/z tego fragmentu;

3) spooling, związany z zastępowaniem taśm magnetycznych dyskami
magnetycznymi (szybszy

dostęp do danych), będący w istocie buforowaniem na dysku większej ilości
zarówno danych, jak

i programów, i umożliwiający wykonywanie programów i wykorzystywanie
zestawów danych

w innej kolejności, niż były wczytane.

background image

Wspólną ideą powyższych rozwiązań było dążenie do zrównoleglenia pracy
procesora i urządzeń

zewnętrznych poprzez zapewnienie im jak największej niezależności czasowej od
siebie (czyli

spowodowanie, aby mogły one pracować asynchronicznie). Oczywiście nawet
przy pełnym

zrównolegleniu nie można oczekiwać, że łączny czas pracy urządzeń
zewnętrznych oraz pracy

procesora będą sobie równe - zadania obliczeniowe wymagające istotnie
większego nakładu czasu

procesora nazywamy zadaniami zorientowanymi na przetwarzanie (typowe
przykłady - duże

obliczenia naukowe i inżynierskie), zaś wymagające głównie pracy urządzeń
zewnętrznych -

zadaniami zorientowanymi na operacje wejścia/wyjścia (typowy przykład -
drukowanie

rachunków).

Uwaga

Istotną cechą architektury współczesnych komputerów jest wyposażenie prawie
wszystkich urządzeń

zewnętrznych (oraz komunikujących się z nimi układów elektronicznych
wewnątrz komputera)

w wyspecjalizowane mikroprocesory zawiadujące ich pracą i komunikacją. W
tym sensie prawie

każdy współczesny system komputerowy jest maszyną równoległą, w której
jeden (lub więcej)

procesorów ogólnego użytku oraz pewna liczba procesorów wyspecjalizowanych
pracują w dużym

stopniu współbieżnie.

background image

Po utworzeniu ośrodków obliczeniowych i zatrudnieniu w nich
wykwalifikowanego personelu (a tym

samym uniemożliwieniu użytkownikom bezpośredniej styczności z komputerem)
podstawowym

problemem stał się długi łączny czas przetwarzania zadania z punktu widzenia
pojedynczego

użytkownika (zaniesienie danych i programu, odebranie następnego dnia
wydruków komunikatów

o błędach, dostarczenie skorygowanych danych ...). Użytkownicy byli zmuszeni
do bardzo dużej

koncentracji przy przygotowywaniu tekstów programów i danych, jak również
musieli przygotowy-

wać dla operatorów komputerów szczegółowe instrukcje postępowania,
uwzględniające wszystkie

możliwe scenariusze rozwoju sytuacji w trakcie przetwarzania.

Pierwszym krokiem w kierunku rozwiązania problemu stało się wprowadzenie
wielozadaniowości

(wieloprogramowości) systemów komputerowych. Systemy operacyjne zaczęto
konstruować tak,

aby mogły ładować do różnych fragmentów pamięci komputera wiele programów
jednocześnie

i wykonywać je kawałkami, przerzucając sterowanie od jednego programu do
drugiego wtedy, kiedy

wykonywany program musi na coś zaczekać (na przykład na transmisję
większego bloku danych):

program A program B program A program C program B

Wiązało się to z zaprojektowaniem systemu operacyjnego tak, aby skutecznie
radził sobie z:

a) zarządzaniem przydziałem pamięci; b) planowaniem przydziału
procesora
programom.

background image

Wielozadaniowość zmniejszyła średni czas przetwarzania pojedynczego zadania,
ale w dalszym

ciągu nie umożliwiła użytkownikom bezpośredniej współpracy z komputerem.
Rozwiązaniem

okazało się dopiero:

1) rozwinięcie technologii monitorów ekranowych (oszczędność ogromnej
ilości papieru);

2) konstrukcja systemów operacyjnych z podziałem czasu, czyli takich, w
których wielu

użytkowników może współpracować z jednym komputerem pozornie
jednocześnie w trybie

interakcyjnym (czyli w trybie wymiany komunikatów: polecenie
użytkownika - odpowiedź

systemu) korzystając z wielu podłączonych do komputera terminali
składających się z monitora

ekranowego i klawiatury (nieco później również myszy).

Konstrukcja dobrze działających systemów operacyjnych z podziałem czasu
okazała się bardzo

trudna. Tylko w najprostszych przypadkach można było stosować cykliczny
przydział równych

kwantów czasu wszystkim użytkownikom. Na ogół stosowany jest system
priorytetów
zadań

i zmienna długość oraz kolejność przydzielanych odcinków czasu.

background image

Współczesne rozwiązania i tendencje rozwojowe

1) Wielodostęp vs. komputery indywidualne

Ogromny rozwój technologii półprzewodnikowych i związany z nim gwałtowny
spadek cen

sprzętu komputerowego umożliwił pod koniec lat 70-tych produkcję małych
komputerów

dostępnych dla dużej liczby indywidualnych nabywców

(personal computer)

.

Początkowo były

one wyposażane w bardzo proste, jednozadaniowe systemy operacyjne
umożliwiające

gospodarowanie niewielkimi zasobami komputera. W następnych latach
komputery osobiste

zrobiły nieoczekiwanie dużą karierę, zaspokajając część zapotrzebowania na
moc obliczeniową

małych firm i prywatnych osób. Współczesne PC-ty mają moc obliczeniową i
pojemność pamięci

operacyjnej oraz zewnętrznej wielokrotnie przewyższającą zasoby większości
dużych komputerów

sprzed 20 lat.

Przeciwieństwem komputerów osobistych są teraz naprawdę duże
(wieloprocesorowe, o pojem-

ności pamięci operacyjnej rzędu gigabajtów) komputery wielodostępne

(mainframe)

. Oferują one

swoim użytkownikom czasowy dostęp do zasobów znacznie większych, niż w
PC-tach.

background image

2) Systemy skupione vs. systemy rozproszone

We współczesnych dużych komputerach coraz częściej instalowanych jest wiele
procesorów, co

umożliwia: a) rzeczywiste (nie pozorne) wykonywanie zadań wielu użytkowników
jednocześnie;

b) realizację rzeczywistej (nie pozornej) współbieżności procesów wspólnie
pracujących nad

zadaniem obliczeniowym jednego użytkownika. Systemy komputerowe
wieloprocesorowe ogólnie

dzielimy na:

a) systemy skupione (ściśle powiązane) - procesory mają wspólną pamięć
operacyjną i zegar,

odległości pomiędzy elementami są niewielkie (wspólna obudowa);

b) systemy rozproszone (luźno powiązane) - procesory mają odrębne pamięci
operacyjne i są

taktowane oddzielnymi zegarami (czyli pracują asynchronicznie), mogą być
zarówno zbiorem

oddzielnych płyt umieszczonych we wspólnej obudowie

(cluster)

, jak i zbiorem

oddzielnych

komputerów połączonych kablami lub łączami telekomunikacyjnymi w sieć.

Konstrukcja zarówno systemów operacyjnych przeznaczonych dla
wieloprocesorów, jak i rozproszo-

nych systemów operacyjnych jest zadaniem bardzo trudnym i jest obecnie
przedmiotem wielu prac

naukowych.

background image

Wskutek gwałtownego rozwoju technologii cyfrowych łącz telekomunikacyjnych w
ostatnich latach,

model sieciowy systemu komputerowego bardzo się rozpowszechnił i
prawdopodobnie jego znaczenie

będzie nadal rosło. Obecne komputery indywidualne często pełnią rolę terminali
inteligentnych
, czyli

same przetwarzają takie zadania, które nie przekraczają ich możliwości, a w
przypadku zapotrzebowania

na większą moc obliczeniową lub pojemność pamięci komunikują się przez sieć
lokalną lub Internet

z dużymi komputerami, często zgrupowanymi w farmie serwerów. Terminale
mogą komunikować się

z serwerami w trybie tekstowym, ale coraz częściej komunikują się w trybie
graficznym
- są wtedy

określane jako graficzne stacje robocze.

Zaletą systemów sieciowych jest zarówno lepsze wykorzystanie sprzętu, jak i
informacji przechowy-

wanych w pamięciach komputerów. Istotne są też aspekty niezawodnościowe i
komunikacyjne.

background image

Podział systemów operacyjnych ze względu na czas reakcji

Systemy operacyjne pracujące w trybie wsadowym (bardziej ogólnie: programy
komputerowe,

których czas reakcji na podanie danych może być dowolnie długi) nazywamy też
systemami

pracującymi

off-line

. Ich przeciwieństwem są systemy, których czas reakcji musi

zmieścić się

w z góry określonych granicach (zazwyczaj systemy interakcyjne) - nazywamy je
pracującymi

on-line

. Szczególnym przypadkiem tych drugich są systemy, od których

wymagana jest praktycznie

natychmiastowa reakcja na dane (w każdym razie przed nadejściem następnych)
- nazywamy je

systemami czasu rzeczywistego

(real-time)

. Typowymi przykładami systemów

czasu rzeczywistego

są systemy sterujące procesami technologicznymi w zakładach przemysłowych.

background image

Podsumowanie

Głównymi celami tworzenia systemów operacyjnych są:

1) wygoda użytkowników komputerów;

2) efektywność wykorzystania sprzętu komputerowego;

3) niezawodność pracy systemów komputerowych.


Document Outline


Wyszukiwarka

Podobne podstrony:
Systop2
Systop11
Systop14
Systop13
Systop8
Systop3
Systop5
Systop10
Systop9
Systop7
Systop2
Systop12
SystOper

więcej podobnych podstron