Neurokomputery to nowoczesne systemy obliczeniowe, które potrafią przetwarzać informacje podobnie jak mózg człowieka. Informacje mają charakter danych numerycznych i na ich podstawie sieć neuronowa służy jako model obiektu o jakiejś charakterystyce. Neurokomputery stosujemy dla rozpoznawania różnych obrazów, analizy i kompresji obrazów, klasyfikacji, przyjmowania decyzji oraz generowania wiedzy.
Neuron to komórka, czyli podstawowy element systemu nerwowego Można w niej wyróżnić ciało oraz wypustki (dendryty-wprowadzają informacje, akson- wyprowadza informacje). Jeden neuron otrzymuje wartości od tysiąca innych poprzez synapsy. Synapsy albo przekazują wzmocnienie albo osłabienie. Neuron to zlicza i gdy przekroczy wynik pewną wartość to przesyła dalej.
Perceptron to model jednokierunkowej sieci neuronowej. Składa się z receptorów, łączy i aktywatorów.
Sieć rekurencyjna to sieć w której mogą występować różne rodzaje połączeń takie jak wsteczne, sprzężenia zwrotnego oraz połączenia pomiędzy neuronami nie znajdującymi się w warstwach sąsiednich.
Sieć z połączeniami lateralnymi pozwala zwiększać kontrast, co polepsza rozpoznawanie obrazów.
Sieć dyskretna Hopfielda – każdy z neuronów sieci sumuje sygnały odbierane od innych neuronów i wynik staje się sygnałem wejściowym, następnie wysyła odpowiedź która jest nieliniową transformacją. Takie sieci stosowane są do rozwiązania problemów optymalizacyjnych i do konstruowania pamięci skojarzeniowych.
Uczenie sieci może odbywać się z nauczycielem( sieci podaje się przykłady poprawnego działania, które potem naśladuje. Podaje się jej dane wejściowe i wyjściowe), bądź bez nauczyciela ( sieci podaje się na wejście przykładowe dane i nic na wyjście. Sieć na podstawie obserwacji sygnałów wejściowych buduje algorytm działania. Później sieć ma etap normalnego działania.
Schemat klasyfikacji Flynna – klasyfikacja architektury komputerów na bazie strumieni rozkazów i strumieni danych, które mogą być przetwarzane równolegle. Są 4 klasy:
SISD (pojedynczy strumień rozkazów - pojedynczy strumień danych, gdzie klasa opisuje architektury typu von Neumanna gdzie szeregowo pobierany jest pojedynczy zestaw rozkazów operujący na pojedynczych danych)
SIMD (pojedynczy strumień rozkazów- wiele strumieni danych, klasa opisuje systemy typu procesy wektorowe, gdzie przez jeden procesor sterujący generowany jest pojedynczy strumień rozkazów przekazywany do wielu oddzielnych procesorów arytmetycznych, które na różnych danych wykonują te same rozkazy jednocześnie).
MIMD (wiele strumieni rozkazów – wiele strumieni danych Jest dla systemów wieloprocesorowych, w których co najmniej dwa procesory wykonują oddzielne strumienie rozkazów operujące na różnych danych).
MISD (wiele strumieni rozkazów – pojedynczy strumień danych – nie ma przykładów takiej architektury
Schemat klasyfikacji Duncana – bazuje na schemacie Flynna ale wprowadza rozróżnienie architektur, które wykonują operacje równoległe synchroniczne (wektorowe, SIMD, systoliczne) i asynchroniczne (MIMD)
Procesy wektorowe SIMD - wykonuje obliczenia na dużych danych, które są potrzebne przy obliczeniach naukowych np. przetwarzanie obrazów. Procesor ma kilka identycznych elementów przetwarzających, gdzie każdy ma pamięć. Główny element sterujący pobiera rozkazy z pamięci głównej i je dekoduje. Jeśli są to rozkazy wektorowe to przekazuje je do wszystkich elementów przetwarzających. Każdy z nich wykonuje te same obliczenia na swoich lokalnych danych.
Komputery z przepływem danych (sterowane danymi) nie mają licznika rozkazów więc wykonują je wtedy gdy ich argumenty stają się dostępne. Reprezentują je grafy.
Systemy MIMD – są uniwersalne, wieloprocesorowe, mają niezależne procesory, które działają na oddzielnych strumieniach danych i oddzielne strumienie rozkazów. Modele takiej architektury:
Silnie powiązany- procesory uzyskują dostęp do rozkazów i danych za pośrednictwem pamięci głównej
Luźno powiązany – każdy procesor ma swoją pamięć lokalną, której może używać przy dostępie do rozkazów i danych
Z rozproszoną pamięcią wspólną
Systemy MIMD z pamięcią wspólną - Procesory komunikują się, czytając i zapisując dane w pamięci współdzielonej. Istnieją różne sposoby łączenia procesorów z tą pamięcią i różne mechanizmy zapewniania wzajemnego wykluczania. Jedną z najprostszych i najpopularniejszych metod łączenia procesorów jest magistrala z podziałem czasu.
Magistrala z podziałem czasu - Każdy procesor ma oddzielną lokalną pamięć podręczną do przechowywania rozkazów i danych. Jedna wspólna magistrala jest używana przez procesory do uzyskania dostępu do pamięci. Jeśli procesor chce uzyskać dostęp do pamięci, to zanim przejmie kontrolę nad magistralą i zacznie przesyłanie, najpierw musi sprawdzić, czy magistrala jest dostępna. Kiedy jeden z procesorów używa magistrali, pozostałe mogą używać tylko swoich lokalnych pamięci podręcznych i muszą czekać, aż zwolni on magistralę, zanim będą mogły dostać się do wspólnej pamięci. Wspólna magistrala jest więc źródłem konfliktów.
Przełącznik krzyżowy n x n – jest to skomplikowane urządzenie które łączy magistrale danych adresową i sterującą procesor z jednym z modułów pamięci. Zawiera układ do rozstrzygania jednoczesnych prób dostępu do tego samego modułu. Dzięki niemu problem konfliktu o magistralę jest ograniczony pojedynczych konfliktów o magistralę pamięci. Zwiększa szybkość przesyłania danych bo procesory mogą używać pamięci równolegle. Można dynamicznie rekonfigurować sieć lecz sprzęt jest bardzo drogi.
Skalowanie systemów z pamięcią wspólną - Architektury z pamięcią wspólną są ograniczone przez liczbę procesorów, które mogą być dołączone do pamięci. Próbując zwiększyć przepustowość przez dodawanie kolejnych procesorów zwiększamy współzawodnictwo o pamięć i następuje spadek wydajności.
Systemy MIMD z pamięcią rozproszoną (systemy wielokomputerowe) mają liniową skalowalność bo każdy procesor ma lokalną pamięć i nie współdzielą zmiennych. Wymieniają dane przez komunikaty wysyłane przez sieć komunikacyjną. Każdy węzeł zawiera procesor, pamięć lokalną i kilka łączy komunikacyjnych.
Transputer – zaprojektowane do budowania systemów wieloprocesorowych z przesyłaniem komunikatów. Każdy z nich w jednym układzie VLSI ma procesor, pamięć lokalną i szybkie, dwukierunkowe, bitowo-szeregowe łącza komunikacyjne.
Topologie połączeń transputerów:
Potokowa – często wykorzystywana bo działa dla różnych rodzajów algorytmów. Można je wykorzystać do zmniejszenia narzutu związanego z przesyłem danych. Jej wadą jesy że dla n-węzłowego potoku 2n połączeń pozostaje nieużywanych
Dwuwymiarowe tablice – wykorzystywane przy algorytmach m.in. takich jak przetwarzanie obrazów. Jednak może doprowadzić do obniżenia wydajności bo niektóre komunikaty muszą przechodzić przez 2(n-1) połączeń
Całkowicie połączona sieć likwiduje problemy komunikacyjne między procesorami pracującymi na różnych węzłach ale z czterema łączami na węzeł maksymalna ilość węzłów jest ograniczona do pięcu.
Hipersześcian – najlepszy sposób skalowania systemów z pamięcią rozproszoną, gdzie n procesorów jest zorganizowany w K-wymiarowy sześcian i N=2k Każdy węzeł ma procesor, pamięć lokalną i kilka łączy komunikacyjnych. Liczba łączy na węzeł zamienia się w zależności od użytego rozmiaru. Redukuje maksymalną długość ścieżki komunikatu do log2n
Systemy z rozproszoną pamięcią wspólną zapewniają wirtualną abstrakcję pamięci współdzielonej realizowanej na bazie systemu z pamięcią rozproszoną i przesyłania komunikatów. Umożliwia przenoszenie i kompilowanie kodu dla języków C i FORTRAN dając szansę na przyspieszenie i pozwalając wykorzystać skalowalność oferowaną przez rozproszoną organizację pamięci. Węzły są związane w pierścień bądź inny rodzaj sieci. Każdy składa się z minimum jednego procesora połączonego z lokalną pamięcią za pośrednictwem magistrali z podziałem czasu, przełącznika krzyżowego bądź innej sieci lokalnej. Dane są współdzielone między węzłami a adresy wirtualne są tłumaczone sprzętowo bądź programowo na adresy fizyczne konieczne do zlokalizowania danych. Jeśli dane znajdują się poza węzłem, to adres wirtualny musi być przekształcony na komunikat, który jest wysyłany siecią do odległego węzła. Sposób rozproszenia współdzielonych danych między węzły (struktura) i jednostka współdzielenia (granulacja) są ściśle związane ze sposobem implementacji systemu DSM. Jeśli jest on na przykład zaimplementowany z intensywnym wykorzystaniem pamięci podręcznych, to jednostka współdzielenia jest zwykle rozmiarem wiersza pamięci podręcznej. Jeśli natomiast jest on zaimplementowany z wykorzystaniem sprzętu zarządzającego pamięcią wirtualną, to wymieniane są zwykle strony. To, czy dane są „własnością" węzłów, czy mogą migrować swobodnie między węzłami (redystrybucja dynamiczna), także zależy od implementacji i odzwierciedla techniki użyte do lokalizacji i realizacji dostępu do danych.
Prawo Amdahla - Przyspieszenie S , jakie możemy uzyskać, używając platformy wieloprocesorowej składającej się z n procesorów, możemy zdefiniować jako: Czas wykonania zadania w systemie jednoprocesorowym / Czas wykonania zadania w systemie wieloprocesorowym. W przypadku idealnym S jest liniową funkcją n, ale w praktyce rzadko tak jest. Dzieje się tak dlatego, że oprócz opóźnień, powodowanych przez rywalizację o dostęp do pamięci i przesyłanie komunikatów, zadania obliczeniowe zawierają zwykle część instrukcji szeregowych, które nie mogą skorzystać z dodatkowej mocy obliczeniowej. Dowód opublikowany w 1967 r. przez Gene'a Amdahla [Amdahl 67] pokazał, że nawet w przypadku dużej liczby procesorów, maksymalne osiągalne przyspieszenie jest zdominowane przez szeregowe części dowolnego problemu. Załóżmy, że zadanie obliczeniowe realizowane jest przez n procesorów. Jeśli s jest czasem spędzanym przez procesor w części szeregowej programu, a p jest czasem spędzanym w części programu, która może być podzielona między n procesorów i wykonana równolegle, to prawo Amdahla mówi, że przyspieszenie S jest dane wzorem: S = (s + p) / (s + p/n)
Typy algorytmów – szeregowe, szeregowo – grupowe, luźno powiązany, silnie powiązany
Systemy czasu rzeczywistego - to urządzenie techniczne, którego wynik i efekt działania jest zależny od chwili wypracowania tego wyniku. Wspólną cechą jest równoległość w czasie zmian w środowisku oraz obliczeń realizowanych na podstawie stanu środowiska. Z dwóch stanów: zewnętrznego i wewnętrznego, wynikają kryteria ograniczające czas wypracowywania wyniku. Systemy czasu rzeczywistego najczęściej buduje się w oparciu o komputery.
Funkcja zysku - Funkcja zysku jest funkcją zależną przede wszystkim od czasu i określa korzyść ze zrealizowania zadania przez system. Korzyść niekoniecznie jest wielkością wymiarowaną. Zadanie zostało przez system zrealizowane poprawnie, jeśli z chwilą zakończenia tego zadania wartość funkcji zysku jest większa od zera.:
Twarda
Stała
Miękka
Termin reakcji - W systemie czasu rzeczywistego przekształcanie danych przesyłanych do lub z zewnętrznego środowiska zachodzi w deterministycznie określonym czasie. Stosuje się pojęcie terminu (deadline), oznaczające najdłuższy dopuszczalny czas reakcji systemu na wystąpienie zdarzenia. System czasu rzeczywistego nie musi być szybki - istotne jest jedynie, aby jego działania spełniały narzucone ograniczenia czasowe.
Skład systemu rzeczywistego - Pod pojęciem "system czasu rzeczywistego" rozumie się systemy zbudowane z wykorzystaniem komputera, pracującego pod kontrolą systemu operacyjnego czasu rzeczywistego. W skład takiego systemu włącza się także jego niezbędne otoczenie, takie jak deterministyczne sieci transmisyjne, układy wejściowe i wyjściowe oraz urządzenia kontrolowane przez komputer (roboty).Aby system składający się z komponentów był systemem czasu rzeczywistego, konieczne jest spełnianie wymogów systemu czasu rzeczywistego przez każdy z komponentów. W przypadku systemów informatycznych zarówno sprzęt, system operacyjny, jak i oprogramowanie aplikacyjne muszą gwarantować dotrzymanie zdefiniowanych ograniczeń czasowych. W realizacji oprogramowania działającego w czasie rzeczywistym niezbędna jest analiza wydajności działania aplikacji.
Praktyczny podział systemów czasu rzeczywistego wynika z charakterystycznych funkcji zysku:
systemy o ostrych ograniczeniach czasowych (ang. hard real-time) - gdy przekroczenie terminu powoduje poważne, a nawet katastrofalne skutki, jak np. zagrożenie życia lub zdrowia ludzi, uszkodzenie lub zniszczenie urządzeń, przy czym nie jest istotna wielkość przekroczenia terminu a jedynie sam fakt jego przekroczenia,
systemy o mocnych ograniczeniach czasowych (ang. firm real-time) - gdy fakt przekroczenia terminu powoduje całkowitą nieprzydatność wypracowanego przez system wyniku, jednakże nie oznacza to zagrożenia dla ludzi lub sprzętu;
systemy o miękkich lub łagodnych ograniczeniach czasowych (ang. soft real-time) - gdy przekroczenie pewnego czasu powoduje negatywne skutki tym poważniejsze, im bardziej ten czas został przekroczony; w tym przypadku przez "negatywne skutki" rozumie się spadek funkcji zysku aż do osiągnięcia wartości zero w chwili .
Zastosowanie systemów czasu rzeczywistego: w przemyśle do nadzorowania procesów technologicznych; do nadzorowania eksperymentów naukowych; w urządzeniach powszechnego użytku, jak sterowniki układów wtrysku paliwa do silników samochodowych, urządzenia gospodarstwa domowego; w medycynie; w lotnictwie, zastosowaniach wojskowych i kosmicznych; w kasach biletowych, oprogramowaniu bibliotek i podobnych usługach realizowanych w wielodostępnych systemach rozproszonych.
Systemy operacyjne czasu rzeczywistego - System operacyjny czasu rzeczywistego (Real-Time Operating System - RTOS) - to komputerowy system operacyjny, który został opracowany tak, by spełnić wymagania narzucone na czas wykonywania zadanych operacji. Systemy takie stosuje się jako elementy komputerowych systemów sterowania pracujących w reżimie czasu rzeczywistego. Zadaniem systemu operacyjnego czasu rzeczywistego oraz oprogramowania pracującego pod jego kontrolą i całego sterownika komputerowego jest wypracowywanie odpowiedzi (np. sygnałów sterujących kontrolowanym obiektem) na skutek wystąpienia pewnych zdarzeń (zmianie sygnałów z czujników sterownika). Podstawowym wymaganiem dla systemu operacyjnego czasu rzeczywistego jest określenie najgorszego (najdłuższego) czasu, po jakim urządzenie komputerowe wypracuje odpowiedź po wystąpieniu zdarzenia. Rodzaje systemów operacyjnych czasu rzeczywistego: Ze względu na kryterium, systemy operacyjne czasu rzeczywistego dzielą się na dwa rodzaje:
Twarde - takie, dla których znany jest najgorszy (najdłuższy) czas odpowiedzi, oraz wiadomo jest, że nie zostanie on przekroczony.
Miękkie - takie, które starają się odpowiedzieć najszybciej jak to możliwe, ale nie wiadomo jest, jaki może być najgorszy czas odpowiedzi.
Szeregowania czasu - Problemem w tego typu systemach operacyjnych jest algorytm szeregowania oraz podziału czasu. W systemie operacyjnym czasu rzeczywistego trzeba określić, któremu z procesów należy przydzielić procesor oraz na jak długi czas, aby wszystkie wykonywane procesy spełniały zdefiniowane dla nich ograniczenia czasowe. Pojawienie się systemów operacyjnych tego typu wiąże się z m.in. zapotrzebowaniem techniki wojskowej na precyzyjne w czasie sterowanie rakietami. Obecnie systemy operacyjne tego typu są wykorzystywane powszechnie w przemyśle cywilnym, sterują urządzeniami takimi jak na przykład: centrale telefoniczne, marsjańskie lądowniki NASA oraz samochodowy ABS.
Systemem wbudowanym jest system komputerowy składający się z odpowiednio dobranych komponentów sprzętowych i programowych, często zaprojektowany pod kątem określonej aplikacji programowej. Odpowiada ona za realizację jego funkcji i wpływa na sposób komunikacji z użytkownikiem. system komputerowy specjalnego przeznaczenia, który staje się integralną częścią obsługiwanego przez niego sprzętu. System wbudowany spełnia określone wymagania, zdefiniowane do zadań które ma wykonywać. Każdy system wbudowany oparty jest na mikroprocesorze (lub mikrokontrolerze), zaprogramowanym do wykonywania ograniczonej ilości zadań lub nawet tylko do jednego.
Na projektowanie systemu wbudowanego składa się:
- opracowywanie warstwy sprzętowej,
- opracowywanie odpowiedniego oprogramowania
(w tym wydzielić można obszar systemowy i aplikacyjny).
Warstwa systemowa tworzy środowisko wykonania dla aplikacji wbudowanej i, w zależności od obszaru zastosowań, cechuje się różnym stopniem skomplikowania. W przypadku prostych systemów wbudowanych o zamkniętej, nieskalowalnej architekturze, warstwa systemowa nie jest ściśle wyodrębniona i nie zawiera mechanizmów wspierających tworzenie aplikacji.
Oprogramowanie systemu wbudowanego - System wbudowany może zawierać oprogramowanie:
- dedykowane wyłącznie temu urządzeniu (firmware);
- może to być system operacyjny wraz ze specjalizowanym oprogramowaniem.
Może o tym decydować też stopień niezawodności jakie ma oferować dany system wbudowany. Ogólną zasadą jest, że im mniej złożone i specjalizowane jest oprogramowanie, tym bardziej system jest niezawodny oraz może szybciej reagować na zdarzenia krytyczne.
Niezawodność systemu może być zwiększona, przez rozdzielenie zadań na mniejsze podsystemy, albo np. przez zastosowanie do jednego zadania dwóch identycznych urządzeń, które mogą przejąć zadania drugiego, w przypadku awarii jednego z nich. Systemy wbudowane znajdują zastosowanie we wszystkich dziedzinach, gdyż w obecnych czasach dąży się aby wszystkie urządzenia były inteligentne i zdolne do pracy autonomicznej oraz wykonywały coraz bardziej złożone zadania.
Zastosowanie systemów wbudowanych: sprzęt sterujący samolotami, rakietami, pociskami rakietowymi; sprzęt medyczny; bankomaty i podobne urządzenia ATM; termostaty, klimatyzatory; kuchenki mikrofalowe, zmywarki; sterowniki stosowane w przemyśle do sterowania
i kontroli procesów i maszyn produkcyjnych; sterowniki do wszelkiego rodzaju robotów mechanicznych, telefony komórkowe, drukarki, kserokopiarki; kalkulatory; sprzęt komputerowy: dyski twarde, napędy optyczne, routery;
System on a Chip - SoC - mianem tym określa się układ scalony zawierający kompletny system elektroniczny, w tym układy cyfrowe, analogowe oraz cyfrowo-analogowe. Poszczególne moduły tego systemu, pochodzą zwykle od różnych dostawców. Przykładowo jednostka centralna pochodzi od jednego dostawcy, a porty komunikacji szeregowej od innego. Typowym obszarem zastosowań SoC są systemy wbudowane. W przypadku, gdy niemożliwe jest zintegrowanie wszystkich obwodów na jednym podłożu półprzewodnikowym, poszczególne moduły wykonuje się na oddzielnych kryształach, a całość zamyka się w jednej obudowie. Rozwiązanie takie określane jest mianem SiP (System-in-a-package). W odróżnieniu od mikrokontrolerów SoC są wyposażone w CPU o stosunkowo dużej mocy obliczeniowej (pozwalającej uruchamiać systemy operacyjne takie jak Linux i Windows CE) oraz bardziej specjalizowane peryferia.
System operacyjny (Operating System, OS) – oprogramowanie zarządzające systemem komputerowym, tworzące środowisko do uruchamiania i kontroli zadań użytkownika. Celem tworzenia systemów operacyjnych jest zastąpienie zapisywania w programie użytkownika sekwencji działań, łatwymi w użyciu opisami funkcjonalnymi i zapewnienie bezpiecznego wykonania programu. Funkcje systemu operacyjnego udostępniane jako usługi tworzą maszynę wirtualną.
Zadania systemu operacyjnego:
Wykonanie programów wymaga kontroli przydziału i ochrony zasobów systemu: czas procesora, przestrzeń pamięci, urządzenia wejścia/wyjścia (peryferia).
Najważniejsze z funkcji wspomagających te działania to: synchronizacja procesów (process synchronization) , obsługa wyjątków (exception handling) ,zarządzanie pamięcią (memory management), obsługa wejścia i wyjścia (I/O handling).
W celu uruchamiania i kontroli zadań użytkownika system operacyjny zajmuje się: planowaniem oraz przydziałem czasu procesora poszczególnym zadaniom, kontrolą i przydziałem pamięci operacyjnej dla uruchomionych zadań, dostarcza mechanizmy do synchronizacji zadań i komunikacji pomiędzy zadaniami, obsługuje sprzęt oraz zapewnia równolegle wykonywanym zadaniom jednolity, wolny od interferencji dostęp do sprzętu.
Dodatkowe zadania, którymi może ale nie musi zajmować się system operacyjny to: ustalanie połączeń sieciowych, zarządzanie plikami. Wiele systemów operacyjnych posiada środowiska graficzne ułatwiające komunikacje maszyny z użytkownikiem.
Klasyfikacja systemów operacyjnych:
Systemy operacyjne ogólnego przeznaczenia można podzielić na cztery zasadnicze typy:
systemy wsadowe (serial batch), - W systemie wsadowym programy są wykonywane kolejno i w całości, a wszystkie działania nadzoruje procesor. Jest możliwe buforowanie wejścia i wyjścia podczas wykonania zadania wsadowego, które umożliwia przyspieszenie transmisji i niezależne od procesora przesłanie danych między buforem i urządzeniem zewnętrznym wtedy, gdy procesor przetwarza dane
systemy wieloprogramowe (multi-programming), - System wieloprogramowy współbieżnie (równolegle) wykonuje program i realizuje obsługę we/wy. W czasie, gdy w przetwarzaniu szeregowym procesor oczekiwałby na obsługę we/wy, jest wykonywany inny program, którego nie blokuje komunikacja we/wy. Transmisję we/wy realizują procesory komunikacyjne zwane kanałami. Dzięki temu operacje we/wy nie wymagają bezpośredniego angażowania czasu procesora. Separację zadań użytkowników zapewnia przydzielanie poszczególnym zadaniom rozłącznych obszarów pamięci głównej. systemy z podziałem czasu (time-sharing), - System z podziałem czasu naprzemiennie wykonuje fragmenty różnych programów. Jednocześnie użytkownik ma możliwość komunikacji z własnym programem. Metoda jest skuteczna, jeśli zasoby systemu (szybkość procesora, rozmiar pamięci i pojemność buforów peryferiów) wystarczają do zapewnienia krótkiego czasu reakcji wszystkim użytkownikom. Przetwarzanie w trybie podziału czasu wymaga zapewnienia prywatności i bezpieczeństwa programów i danych użytkownika. W tym celu wykorzystywane są mechanizmy pamięci wirtualnej. System z podziałem czasu nazywa się też systemem wieloprocesowym.
systemy rozproszone (distributed). - W rozproszonym systemie poszczególne funkcje są wykonywane współbieżnie przez różne procesory. W celu zapewnienia dużej niezawodności przetwarzania kod zasadniczej części systemu, zwanej jądrem (systemu, wykonują niezależnie wszystkie procesory. Pozostałe funkcje systemu mogą być wykonywane przez różne procesory. Funkcje te mają priorytet przed zadaniami użytkowników.
System operacyjny jako interfejs pomiędzy maszyną a człowiekiem - System operacyjny udostępnia zestaw funkcji zwanych API (Application Programming Interface) lub wywołań systemowych. Programista może skorzystać z tych funkcji w celu uzyskania żądanego efektu, przykładowo odczytu danych z pliku dyskowego. Jakąkolwiek czynność na sprzęcie chcą wykonać zadania użytkownika, korzysta zawsze z interfejsu systemu. Ma to tę zaletę, że o szczegółach obsługi sprzętu jest poinformowany tylko i wyłącznie system operacyjny a same zadania nie muszą znać specyfiki obsługi urządzeń. Dzięki interfejsu użytkownika możliwa jest bezpośrednia interakcja użytkownika z komputerem.
Architektura systemu operacyjnego - Ttrzy główne elementy budowy SO :
Jądro systemu wykonujące i kontrolujące we-wy. Jądro składa się z następujących elementów planisty (algorytm szeregowania) czasu procesora, ustalającego które zadanie i jak długo będzie wykonywane, przełącznika zadań, odpowiedzialnego za przełączanie pomiędzy uruchomionymi zadaniami. Dodatkowo: modułu zapewniającego synchronizacje i komunikację pomiędzy zadaniami, modułu obsługi przerwań i zarządzania urządzeniami, modułu obsługi pamięci. innych zależnie od funkcji i przeznaczenia systemu.
Powłoka – program komunikujący użytkownika SO,
System plików – sposób zapisu struktury danych na nośniku.
Rodzaje systemów operacyjnych - Podział systemów operacyjnych:
czasu rzeczywistego,
czasowo niedeterministyczne.
Inny rodzaj podziału:
otwarte systemy operacyjne Systemy otwarte można uruchomić na dowolnej maszynie wskazanego rodzaju np. PC. Jako otwarte systemy operacyjne spotyka się systemy w pełni programowe, czasowo niedeterministyczne stosujące wywłaszczenie przy przełączaniu zadań.
wbudowane systemy operacyjne. Systemy wbudowane są zaszyte (wbudowane) wewnątrz urządzeń użytkowych, maszyn pojazdów itp. Wbudowane systemy operacyjne są najczęściej czasowo deterministyczne, zazwyczaj nie stosują wywłaszczenia zadań.
Pod względem środowiska użytego do implementacji systemu można wprowadzić podział na:
programowe,
sprzętowe. Sprzętowe systemy operacyjne to: sprzętowo programowe rozwiązania integrowane z wybraną architekturą procesora. Sprzętowa część systemu przyśpiesza wybrany zakres czynności wykonywanych przez system.
Funkcje systemu operacyjnego:
Funkcje użytkowe wspomagają działania użytkownika w środowisku programowym maszyny wirtualnej, gdyż ułatwiają dostęp do zasobów środowiska, w którym są wykonywane procesy, i uwalniają użytkownika od nadzoru nad przetwarzaniem programów. Umożliwia to uruchamianie programu na różnych maszynach, jeśli utrzymane są pewne standardy obsługi.
Funkcje użytkowe dzielą się na trzy grupy:
sterowanie i kontrola wykonania programu (program control) — zapewnienie pełnej kontroli użytkownika nad kompilacją i wykonaniem programu,
obsługa we/wy (HO handling) - udostępnienie komunikacji z urządzeniami wejścia i wyjścia na poziomie przesyłania danych bez konieczności znajomości szczegółów obsługi tych urządzeń,
obsługa zbioru plików (file system manipulation) - umożliwienie przetwarzania plików bez konieczności znajomości szczegółów obsługi pamięci wtórnej.
Funkcje systemowe służą do zapewnienia poprawnego i bezkonfliktowego przetwarzania programów użytkowników. wykonują zadania niezbędne do przetwarzania programów użytkowych oraz bezkonfliktowej współpracy procesów współbieżnych:
zarządzanie pamięcią (memory management) - odwzorowanie w rzeczywistej fizycznej przestrzeni adresowej przestrzeni logicznej, adresowanej w programie, oraz wirtualnej przestrzeni adresowej przydzielonej procesom,
ochronę zasobów (resource protection) - wzajemną separację programów w celu zapewnienia ich prywatności, ale z możliwością kontrolowania ich komunikacji,
przydział zasobów systemu (resource allocation) poszczególnym programom,
obsługę wyjątków (exception handling) — reagowanie na zdarzenia zagrażające spójności systemu lub poprawnemu wykonaniu programów i podejmowanie rozstrzygnięć powstałych problemów,
harmonogramowanie (scheduling) - ustalenie porządku wykonania programów współbieżnych w celu optymalnego wykorzystania zasobów,
raportowanie (accounting) - tworzenie statystyk wykorzystania zasobów.
Zarządzanie zasobami: W przypadku środowiska wielozadaniowego, w którym wiele zadań wykonywanych jest w tym samym czasie, może dość do interferencji procesów. Aby zapobiec temu zjawisku organizuje się dostęp do sprzętu, plików, pamięci itp. poprzez ustanowienie zasobów systemowych. Zadania (procesy) użytkownika nie sięgają samodzielnie do sprzętu lub pliku ale używają systemu operacyjnego jako strażnika zarządcy zasobów. Dzięki takiej organizacji dostępu do zasobów, zadania "mają wrażenie", że każde z nich pracuje na własnym komputerze. O realny porządek dostępu do rzeczywistego urządzenia, pamięci lub pliku dba system operacyjny. Zadania systemu operacyjnego podczas zarządzania zasobami systemu komputerowego:
tworzenie deskryptora zasobu, - Deskryptor – identyfikator. Descriptor (Latin describo - opisać) - jednostką leksykalną (słowo, zdanie) język wyszukiwania informacji, który jest używany do opisania jego podstawowych treści semantycznej dokumentów.
usuwanie deskryptora zasobu,
realizacja żądania przydziału,
zwolnienie i odzyskiwanie zasobu.
Zarządzanie zasobami systemu komputerowego:
przydział zasobów,
synchronizacja dostępu do zasobów (zapobieganie interferencji),
ochrona i autoryzacja dostępu do zasobów,
odzyskiwanie zasobów,
rozliczanie – gromadzenie danych o wykorzystaniu zasobów.
Zarządzanie procesem - Proces - to program w stanie uruchomionym. Każdy proces wymaga przydziału pewnych zasobów, włączając w to czas procesora, pamięć, pliki oraz urządzenia wejścia/wyjścia, aby w pełni wykonać swoje zadanie.
System operacyjny jest odpowiedzialny w fazie zarządzania procesami za:
tworzenie i usuwanie procesu,
wstrzymywanie i przywracanie procesu,
zapewnienie mechanizmów pozwalających na synchronizację procesów oraz komunikację między procesami.
Zarządzanie pamięcią operacyjną - Pamięć - to duża tablica słów lub bajtów, każda z własnym adresem, pamięć jest szybko dostępna i dzielona jest pomiędzy procesor oraz urządzenia wejścia/wyjścia. Pamięć główna jest ulotnym miejscem przechowywania danych, traci swoją zawartość w czasie awarii systemu. System operacyjny jest odpowiedzialny w fazie zarządzania pamięcią za:
utrzymywanie informacji, która część pamięci jest aktualnie używana i przez kogo,
decydowania, który proces powinien zostać wczytany do pamięci, jeżeli pamięć jest wolna,
przydzielanie i zwalnianie pamięci.
Zarządzanie plikami - Plik jest zbiorem informacji zdefiniowanym przez twórcę pliku. Pliki reprezentują programy oraz dane. System operacyjny jest odpowiedzialny w fazie zarządzania plikami za:
tworzenie i kasowanie plików,
tworzenie i kasowanie katalogów,
wsparcie dla użytkowników końcowych przy operacjach na plikach,
mapowanie plików na nośniku danych,
tworzenie kopii plików.
Zarządzanie wejściem/wyjściem - System wejścia/wyjścia składa się z:
systemu buforowania,
interfejsu urządzeń głównych,
sterowników (kontrolerów) dla specyficznych urządzeń.
Zarządzenie nośnikami danych- Pamięć główna jest ulotna i często za mała aby obsłużyć wszystkie programy i dane, dlatego stosuje się nośniki danych (najczęściej dysk twardy) do powiększania tej pamięci tak zwanej pamięć drugiego rzędu. Na napędach tych mapuje się pamięć główną. System operacyjny jest odpowiedzialny w fazie zarządzania nośnikami danych za:
zarządzanie wolną pamięcią,
alokacją zapisu,
planowaniem dysku.
Licznik zliczający interwały czasowe - Jedynym dodatkowym urządzeniem koniecznym do uruchomienia wielozadaniowego systemu operacyjnego jest licznik zliczający interwały czasowe. Każdy system operacyjny musi być taktowany, aby mógł odliczać czas pozostały do zakończenia jednego a rozpoczęcia innego zadania.
Zaplecze sprzętowe systemów operacyjnych:
W celu uzyskania systemu o dużym stopniu niezawodności procesory posiadają cechy wspierające działanie systemów operacyjnych. Cechy te to:
tryby pracy:
uprzywilejowany (kerel/supervisor mode).
chroniony (protected mode). W chronionym trybie pracy niektóre potencjalnie niebezpieczne instrukcje procesora są niedostępne, a próba wywołania ich spowoduje wystąpienie przerwania. Wszelka aktywność zadań (aplikacji) użytkownika oraz powłoki odbywa się w chronionym trybie pracy.
jednostki zarządzania i ochrony pamięci, pozwalające definiować obszary pamięci np. tylko do odczytu lub tylko do zapisu przez wybrany proces.
kontrolery przerwań, gdy licznik taktujący system operacyjny wyliczy żądany interwał czasowy informacja o tym zdarzeniu przekazywana jest do procesora przy pomocy przerwania.
specjalistyczne akceleratory sprzętowe służące do przyśpieszania pewnych typowych czynności wykonywanych przez systemy operacyjne. Ta funkcjonalność jest rzadko spotykana i zazwyczaj spotyka się ją we wbudowanych systemach.
Ochrona i zarządzanie pamięcią - Działanie mechanizmów zarządzania i ochrony pamięci opiera się na wsparciu sprzętowym dostarczanym przez kontrolery pamięci wbudowane w procesor (lub chipset). Ogólna zasada polega na wydzielaniu poszczególnym procesom obszarów pamięci do wyłącznego użytku. Tylko dany proces może pisać lub czytać tylko do/z danego obszaru. Technicznie ochrona realizowana jest poprzez podział obszaru pamięci na segmenty i strony. Zadanie użytkownika, które jest aktywowane w danej chwili przywraca swój kontekst poprzez ustawienie odpowiednich rejestrów CPU jak i rejestrów kontrolnych jednostki zarządzania pamięcią. Dzięki ochronie pamięci awaria jednego zadania i próba błędnego nadpisana przestrzeni adresowej innych zadań jest niemożliwa.
Język maszynowy (kod maszynowy) – język programowania, w którym zapis programu wymaga instrukcji bezpośrednio jako liczb, które są rozkazami i danymi bezpośrednio pobieranymi przez procesor wykonujący ten program. Był to jedyny język programowania komputerów zerowej generacji, i pierwszej generacji. Postać i treść kodu maszynowego zależy nie tylko od kodu źródłowego programu, ale też od translatora, systemu operacyjnego, wersji bibliotek, typu procesora i jego języka maszynowego. Języki wysokiego poziomu wraz z odpowiednimi bibliotekami i kompilatorami umożliwiającą użycie tego samego programu źródłowego do budowy programu pracującego na różnych systemach operacyjnych, różnych procesorach, itd. Kod maszynowy jest generowany za pomocą translatora, który przekształca czytelny dla programisty zapis w języku programowania w odpowiadające mu kody instrukcji maszynowych.
Kod maszynowy może być generowany w procesie kompilacji (z języków wysokiego poziomu) lub asemblacji (z asemblera). W trakcie procesu tworzenia kodu maszynowego tworzony jest często kod pośredni. Każdy typ procesora ma swój własny język maszynowy. Kod maszynowy to postać programu komputerowego (zwana postacią wykonywalną lub binarną) przeznaczona do bezpośredniego wykonania przez procesor. Jest ona dopasowana do konkretnego typu procesora i wyrażona w postaci rozumianych przez niego kodów rozkazów i ich argumentów. Jest to postać trudna do analizy przez człowieka. Kod maszynowy nie może być wykonywany przez procesory innego typu, niż ten, dla którego zostały napisane. Niesie to za sobą wiele problemów związanych z przenośnością programów.
Kod pośredni poddawany jest linkowaniu, które wygeneruje ostateczny obraz programu w taki sposób, że system operacyjny będzie mógł go wczytać, z ewentualnym dostosowaniem argumentów będących adresami do adresów odpowiednich bloków programu w pamięci, i wykonać zawarte w nim instrukcje.
Asembler – termin informatyczny związany z programowaniem i tworzeniem kodu maszynowego dla procesorów. W języku polskim oznacza on program tworzący kod maszynowy na podstawie kodu źródłowego (tzw. asemblacja) wykonanego w niskopoziomowym języku programowania bazującym na podstawowych operacjach procesora zwanym językiem asemblera, popularnie nazywanym również asemblerem. Język programowania nazywany będzie językiem asemblera, a program tłumaczący – asemblerem. Języki asemblera to rodzina języków programowania niskiego poziomu, których jedno polecenie odpowiada zasadniczo jednemu rozkazowi procesora. Powstały na bazie języków maszynowych danego procesora poprzez zastąpienie kodów operacji ich mnemonikami. Dzięki stosowaniu skrótów poleceń zrozumiałych dla człowieka pozwala to na tworzenie oprogramowania. Dodatkowo bezpośrednia odpowiedniość mnemoników oraz kodu maszynowego umożliwia zachowanie wysokiego stopnia kontroli programisty nad działaniem procesora. Składnia języka asemblera zależy od architektury procesora, ale i używanego asemblera.
Główne rozkazy assemblera -
Mov (mov - move - przesuń), służy do kopiowania wartości między pamięcią a rejestrami, lub między rejestrami wyłącznie. Mov używa się do nadawania rejestrom określonych wartości. Składnia: MOV cel, źródło. Zarówno źródło jak i cel mogą być rejestrem, lub komórką pamięci, ale równocześnie tylko jeden z operatorów może być pamięcią Mov kopiuje a nie przenosi wartości, czyli po wykonaniu polecenia wartość „źródło" nie zostaje zmieniona ani wyzerowana.
Stos - instrukcje push, pop, pusha, popa, pushf i popf Istnieją dwie instrukcje, które służą do obsługi stosu:
PUSH - powoduje wrzucenie wartości lub zawartości rejestru na stos,
POP - pobranie wartości ze stosu i wrzucenie jej do rejestru
Składnia: PUSH REJ16 , PUSH WAR16 ,POP REJ16
"REJ16" i "WAR16" - oznaczają odpowiednio rejestr i wartość 16-bitową – tzn. nie można wrzucać ani pobierać ze stosu wartości 8-bitowych;
PUSH i POP operują jedynie na słowach: danych 2-bajtowych.
Instrukcje PUSHA i POPA powodują wrzucenie na stos wszystkich rejestrów - nie trzeba wywoływać kilkakrotnie instrukcji PUSH i POP – wpływa to więc na skrócenie programu. Parą instrukcji jest PUSHF i POPF, których działanie jest identyczne do PUSHA i POPA, lecz ogranicza się wyłącznie do flag - push flags... Składnia: PUSHF, POPF
INT - wywołanie przerwania INT jest instrukcją uruchamiającą przerwanie programowe.
Składnia instrukcji: INT numer_przerwania Numer_przerwania to liczba z zakresu 0-255,
musi być podana konkretna wartość;
Przerwanie 21H funkcja 2CH - pobierz czas AH = 2CH
Przerwanie zwraca:
CH = godzina (0-23)
CL = minuta (0-59)
DH = sekunda (0-59)
DL = setne sekundy (0-99) Znaczy to, że aby otrzymać czas korzystając z usługi przerwania 21H, należy: 1. Ustawić rejestr AH na wartość 2CH (MOV AH,2CH) 2. Wywołać przerwanie 21H (INT 21H). I rejestry CH, CL, DH i DL zawierać będą aktualny czas.
Funkcja 4CH przerwania 21H. Przerwanie 21H funkcja 4CH - zakończ program i zwróć kod errorlevel
AH=4CH
AL = kod wyjścia (errorlevel dla plików .bat)
Nie zwraca nic. Tutaj postępujemy analogicznie jak w poprzednim przypadku - ustawiamy rejestry AH i AL a następnie wywołujemy przerwanie.
JMP - jump - skok Instrukcja jmp powoduje bezwarunkowy przeskok do innej części programu.
JMP etykieta Etykieta - to ciąg znaków zakończony dwukropkiem - identyfikujący miejsce w programie np.: "Start:", "Petla:" itp. Czasem można się spotkać z instrukcjami "JMP FAR" czy "JMP SHORT’’: "FAR" (daleki) odnosi się do skoków dłuższych niż 128 bajtów a "SHORT" (krótki) - dotyczy skoków nie większych niż 128 bajtów.
Podprocedury instrukcje “CALL”i “RET” Instrukcje CALL (wołaj) i RET (return, powrót) służą do tworzenia podprocedur: - części programu, które będą używane częściej niż raz.
Składnia:
CALL ETYKIETA
RET
CALL - zapamiętuje na stosie adres następnej instrukcji programu
a następnie przeskakuje do etykiety "etykieta" tak, jak to robiła instrukcja JMP.
Po napotkaniu instrukcji RET procesor pobiera ze stosu adres zapamiętany
tam przez CALL i przeskakuje pod ten właśnie adres czyli "wraca" do programu nadrzędnego.
Mnożenie Do mnożenia służy w Assemblerze instrukcja MUL (multiply - mnóż).
Składnia:
MUL A MUL powoduje pomnożenie wartości A razy zawartość rejestru AX.Inaczej, gdy A jest wartością typu word (słowo - 2 bajty) lub byte (bajt).Gdy A jest 1 bajt, wykonywane jest mnożenie a*AL (AL jest to młodszy bajt rejestru AX) i wynik mnożenia zostaje wrzucany do AX.
Dzielenie Instrukcją dzielącą jest w Assemblerze DIV (divide - dziel).
Składnia:
DIV A Tutaj ma znaczenie czy A jest bajtem (np. BH, BL), czy słowem (NP. BX). Jeśli A jest bajtem, AX jest dzielony przez A; iloraz zostaje wrzucony do AL, reszta do AH. Gdy A jest słowem (2 bajty), DX:AX zostaje podzielony przez A; po dzieleniu AX zawiera iloraz a DX resztę z dzielenia
LOOP- Pętla
Składnia:
LOOP ETYKIETA LOOP zmniejsza wartość CX o jeden (DEC CX), i - jeśli CX jest większe 0 powoduje bezwarunkowy przeskok do "ETYKIETA". LOOP umożliwia tylko budowę pętli typu "downto" czy - "step -1" - pętli, w której licznik maleje a nie rośnie.
Typowa hierarchia pamięci
Hierarchia pamięci składa się z poziomów przechowywania. Każdy poziom charakteryzuje się inną szybkością działania i pojemnością. Do wytworzenia elementów pamięci wykorzystuje się różne technologie: umożliwiającą szybki dostęp do danych technologię półprzewodnikową dla elementów wewnętrznych bliskich procesorowi oraz technologie wykorzystywane do wytworzenia powierzchni magnetycznych i optycznych dla elementów zewnętrznych, oddalonych od procesora.
Pamięć procesora, zaimplementowana jako zbiór szybkich rejestrów. Zbiór rejestrów zapewnia bardzo ograniczoną pojemność i służy jedynie jako tymczasowe miejsce przechowywania rozkazów i argumentów.
Pamięć operacyjna lub główna (ang. main memory) jest największym obszarem pamięci, dostępnym bezpośrednio dla procesora. W celu obniżenia kosztu pamięć operacyjna jest realizowana z wykorzystaniem układów pamięci dynamicznej (ang. Dynamie Random Access Memory; DRAM). Ponieważ pamięć dynamiczna pracuje ok. dziesięć razy wolniej od układów logicznych procesora, więc staje się wąskim gardłem systemu komputerowego, ograniczając szybkość, z jaką procesor może pobierać i wykonywać rozkazy. Aby skompensować ten efekt, wiele systemów zawiera małą, szybką pamięć podręczną.
Pamięć podręczna (ang. cache memory) umiejscowiona jest między procesorem a pamięcią operacyjną, a do jej realizacji używa się droższych układów pamięci statycznej (ang. Static Random Access Memory; SRAM). Pamięć jest używana do przechowywania często wykorzystywanych fragmentów programu.
Pamięć, która nie jest bezpośrednio dostępna dla procesora, jest nazywana pamięcią zewnętrzną. Pamięć zewnętrzna jest dostępna w postaci dodatkowych urządzeń, takich jak dyski magnetyczne, taśmy i urządzenia optyczne (napędy CD-ROM). Urządzenia te są dostępne poprzez układy wejścia-wyjścia (I0) i są najwolniejszym elementem hierarchii pamięci. Są one bardzo pojemnymi miejscami przechowywania programów i danych, które nie muszą być natychmiast dostępne dla procesora.
Klasyfikacja pamięci półprzewodnikowych
Pamięć o dostępie swobodnym (RAM) - Istnieją dwa główne rodzaje półprzewodnikowych pamięci RAM: pamięć statyczna (SRAM) i dynamiczna (DRAM). Komórki SRAM są uporządkowane jako matryca zbudowana z wierszy i kolumn. Adres podawany na linie adresowe Ao, ... , A9 jest używany do wybrania wiersza, w którym każda komórka jest podłączona do oddzielnej linii kolumny. Komórki są zgrupowane po 8, co jest określane jako organizacja bajtowa. Linie kolumn są używane do przesyłania bajtów danych między zaadresowanym wierszem a liniami danych Do, ... , D7, łączącymi układ z magistralą danych.
Statyczna pamięć – SRAM Komórki pamięci SRAM przechowują dane wykorzystując, działające jako przerzutniki, pary układów tranzystorowych z wyjściami połączonymi skrośnie do wejść. Do realizacji jednej komórki układu SRAM koniecznych jest sześć tranzystorów, więc pamięci statyczne mogą przechować mniej bitów na mm2 krzemu niż pamięci dynamiczne. Są one także droższe, licząc koszt przechowania jednego bitu. Główną przewagą pamięci statycznych nad dynamicznymi jest krótszy czas dostępu.
Dynamiczna pamięć – DRAM - W pamięciach dynamicznych do przechowywania informacji jest używany jeden tranzystor na komórkę pamięci. Dzięki temu pamięci te zapewniają obecnie najbardziej zwartą i tanią formę pamięci półprzewodnikowej. Każda jednostka pamięci to kondensator (element do przechowywania ładunku), połączony z tranzystorem używanym do realizacji odczytu i zapisu.
Pamięć stała (ROM-Read Only Memory) - Pamięci ROM są używane do zapisywania programów i tablic z danymi, które muszą być obecne w komputerze po włączeniu zasilania. Pamięci ROM dzielą się na dwie klasy: stałe i programowalne. Stała lub programowalna maskami pamięć ROM zawiera wzorce bitowe umieszczone w matrycy pamięci podczas produkcji. Przy użyciu masek fotograficznych na skrzyżowaniach wybranych wierszy i kolumn tworzone są tranzystory, Wymazywalne programowalne pamięci EPROM (Erasable Programmable ROM) mogą być programowane, wymazywane i powtórnie programowane kilka razy.
Pamięć podręczna - Półprzewodnikowa pamięć podręczna jest niewielką (dla obniżenia kosztu), szybką pamięcią, pełniącą funkcję bufora między procesorem a pamięcią główną. Pamięć podręczna poszerza wąskie gardło powstające w wyniku różnic szybkości działania jednostki centralnej i pamięci głównej, korzystając z własności zachowania programu zwanej zasadą lokalności. Z powodu natury programów i sposobu organizowania danych odwołania do pamięci w czasie wykonywania programu nie są losowe, lecz dają się przewidywać. Programy mają na przykład tendencję do ponownego używania danych i rozkazów, które były niedawno używane (lokalność tymczasowa). Rozkazy i dane używane w krótkim odstępie czasu są zwykle także blisko siebie w pamięci (lokalność przestrzenna). Systemy pamięci podręcznej wykorzystują tę właściwość zachowania programów i zwiększają wydajność systemu, przechowując aktualnie aktywne fragmenty programu w szybkim buforze.
Zasada działania pamięci podręcznej - Półprzewodnikowa pamięć podręczna zawiera ograniczoną liczbę obszarów (ang. slot) albo wierszy służących do przechowywania bloków (ang. block) z pamięci głównej. Każdy blok ma typowo wielkość od czterech do szesnastu słów. W czasie wykonywania programu procesor zamiast czytać rozkazy czy dane bezpośrednio z pamięci głównej, szuka ich najpierw w pamięci podręcznej. Jeśli słowo zostaje znalezione, to sygnalizowane jest „trafienie" i słowo przesyłane jest do procesora. Jeśli słowa nie ma w pamięci podręcznej, to jest ono pobierane z pamięci głównej, a pamięć podręczna jest uaktualniana blokiem zawierającym to słowo.
Pamięć dodatkowa - W urządzeniach do przechowywania danych wykorzystywane są dwie technologie:
technologia powierzchni magnetycznych
technologia optyczna.
Dyskowa pamięć magnetyczna - Powszechnie wykorzystywaną formą pamięci dodatkowej jest dysk twardy. Dane są zapisywane magnetycznie na okrągłych ścieżkach (ang. track). Głowica jest ustawiana przez ramię nastawiające, co pozwala na krokowe przechodzenie od ścieżki do ścieżki wzdłuż promienia nad powierzchnią dysku. Ścieżki są podzielone na sektory. Każdy sektor służy do zapisania bloku danych. W systemie wielodyskowym, dla każdej powierzchni jest stosowana oddzielna głowica odczytująco-zapisująca. Głowice są przymocowane do jednego ramienia nastawiającego, które przestawia je na tę samą ścieżkę na każdej powierzchni. Zbiór odpowiadających sobie ścieżek nazywany jest cylindrem. Zapisywanie i odczytywanie danych na dysku realizowane jest w sposób szeregowy. Każdy sektor zawiera oprócz danych także adres (ścieżka, głowica, sektor), bajty synchronizujące i informacje do kontroli błędów. Aby dostać się do konkretnego sektora, głowica musi najpierw zostać przestawiona do właściwej ścieżki i poczekać, aż wybrany sektor będzie się pod nią przesuwał. Czas potrzebny na wykonanie tych operacji jest nazywany czasem dostępu (ang. access time) i zależy w oczywisty sposób od pozycji głowicy, ścieżki i sektora w czasie rozpoczęcia operacji. Przy podawaniu czasu dostępu do dysku używana jest zwykle wartość średnia, która zależy od średniego czasu dojścia do ścieżki (czas wyszukiwania, ang. seek time) i czasu potrzebnego na dojście sektora do głowicy (opóźnienie rotacyjne, ang. rotational latency).
Dyski twarde Oceniając wydajność dysku, uwzględnia się różne parametry: czas wyszukiwania - czas przemieszczenia głowic dysku z jednej ścieżki na drugą; opóźnienie obrotowe - połowa czasu potrzebnego na pełen obrót dysku; jest to zarazem średni czas oczekiwania na to, aby potrzebne dane znalazły się pod głowicą dysku po jej uprzednim ustawieniu na właściwą ścieżkę; czas dostępu - suma czasu wyszukiwania i opóźnienia obrotowego; szybkość przesyłania - szybkość transmisji danych z dysku lub do niego. Dyski twarde mają w ogólności znacznie lepsze charakterystyki niż dyskietki elastyczne (jeśli chodzi o szybkość). Ponieważ systemy dyskowe zawierają ruchome elementy mechaniczne, które poruszają się przy uzyskiwaniu dostępu do danych, zarówno dyski twarde, jak i dyski elastyczne są wyraźnie wolniejsze niż układy elektroniczne. Opóźnienia w układach elektronicznych mierzy się w nanosekundach (bilionowych częściach sekundy), a nawet w jednostkach mniejszych, podczas gdy czas wyszukiwania, opóźnienie obrotowe i czas dostępu w systemach dyskowych osiągają wielkości rzędu milisekund (tysięcznych części sekundy). Czas potrzebny na pobranie informacji z dysku może wydawać się zatem wiecznością oczekującemu na nią układowi elektronicznemu.
Pamięć optyczna - W optycznych dynamicznych systemach pamięciowych dane są zapisywane w postaci serii wgłębień (ang. pit) o zmiennej długości, umieszczonych wzdłuż spiralnej ścieżki na powierzchni dysku twardego. W celu odczytania danych na dysku jest skupiane światło półprzewodnikowego lasera małej mocy. Różnice w intensywności odbitego światła, spowodowane odbijaniem światła od wgłębień, a nie rozpraszaniem od powierzchni (ang. land) między wgłębieniami, są wykorzystywane do odczytania zakodowanych danych. Dyski CD-ROM są produkowane masowo przez tłoczenie wgłębień na podłożu poliwęglowym specjalną niklowaną matrycą. Podłoże jest następnie pokrywane cienką odblaskową warstwą i na koniec zabezpieczane lakierem przed zadrapaniem. Produkcja i testowanie matryc są kosztowne, ale jedna wystarczy do wytłoczenia do 10 000 dysków, dlatego masowa produkcja pamięci CD-ROM jest opłacalna.
Dyski CD-ROM Dane są zapisane wzdłuż spiralnej ścieżki w sektorach, które są liczone od środka na zewnątrz. Każdy sektor zawiera 3234 bajty, z których 882 są używane jako kod wykrywania błędów/kod poprawiania błędów, EDC/ECC, oraz do zapewnienia informacji sterującej. W porównaniu z magnetycznym sposobem zapisywania informacji, zapis optyczny ma wiele zalet. Gęstość zapisu jest około pięć razy większa niż na dysku magnetycznym. System optyczny używany do odczytywania danych nie ma kontaktu z powierzchnią dysku, gdyż jest oddalony od niej zwykle o ok. 1 mm. Eliminuje to problem z zanieczyszczeniami, które dostają się na powierzchnię dysku i umożliwia wyjmowanie dysków z napędu, kiedy dane nie są potrzebne. Dla porównania, głowice w systemach dysków twardych, takich jak Winchester, poruszają się niezwykle blisko powierzchni, co oznacza, że jakikolwiek pyłek czy brud na dysku może być przyczyną uderzenia głowicy w powierzchnię i jej zniszczenia. Dlatego dyski twarde są produkowane w sterylnych warunkach, po czym szczelnie zamykane, tak że nie można ich wyjąć. Dzięki kodom wykrywania i korekcji błędów wykorzystywanym na dyskach optycznych, mniejsze są wymagania jakościowe przy ich produkcji niż przy produkcji dysków twardych, co sprawia, że są to nośniki bardziej ekonomiczne.
Nośniki WORM Optyczne pamięci typu Write-Once-Read-Many (WORM) umożliwiają archiwizowanie danych przez zapisanie ich na czystym pierwotnie dysku optycznym albo taśmie. Popularnym typem dysków WORM są zapisywalne dyski kompaktowe (CD-R - jednokrotny zapis i wielokrotny odczyt)), mające warstwę odbijającą, która może być użyta do trwałego zapisania danych. Napędy CD-R zawierają dwa lasery półprzewodnikowe: jeden do zapisu, a drugi do odczytu danych. Laser używany do zapisu ma zwykle moc ok. 10 mW, co oznacza, że może wypalać w powierzchni dysku zagłębienia, tworzyć pęcherzyki albo w jeszcze inny sposób wpływać na współczynnik odbicia wierzchniej warstwy dysku. Laser używany do odczytu ma mniejszą moc i nie może wpływać na zapisane dane.
Nośniki WREM Optyczne pamięci typu Write-Read-Erase-Memory (CD-RW – wielokrotny zapis i odczyt), zwane także pamięciami magnetooptycznymi, są optycznymi odpowiednikami magnetycznych dysków twardych umożliwiającymi wielokrotne zapisywanie, odczytywanie, kasowanie i powtórne zapisywanie danych. Typowy dysk zawiera cienką warstwę magnetooptyczną umieszczoną pomiędzy kilkoma innymi warstwami. Dane są zapisywane jako seria pionowo namagnesowanych plamek na warstwie magnetooptycznej. Dane są zapisywane przez skierowanie światła laserowego dużej mocy na plamkę.
Pamięć taśmowa - Strimer Strimer jest pamięcią wykorzystującą taśmę magnetyczna i służy do archiwizacji bardzo dużych ilości danych np. dysku obsługującego wielu użytkowników sieci komputerowej. Strimery dzielą taśmę na segmenty, z których każdy jest oznaczany (magnetycznie) podczas formatowania przypominającego czynność wykonywaną w urządzeniach dyskowych. Każdy z tych segmentów zawiera kilka ścieżek, które biegną równolegle do siebie wzdłuż całej taśmy. Dostęp do ścieżek jest niezależny, co oznacza, że taśmę, podobnie jak sektory na dysku, można traktować jako kilka ciągów bitów. Główną wadą urządzeń taśmowych jest to, że przemieszczenie się między dwiema pozycjami na taśmie może trwać bardzo długo, gdy trzeba przewinąć duży fragment taśmy. Z tego powodu systemy taśmowe charakteryzują się znacznie dłuższym czasem dostępu niż systemy dyskowe, w których dostęp do różnych sektorów uzyskuje się za pomocą niewielkich ruchów głowicy zapisująco-odczytującej. W efekcie urządzenia taśmowe nie są powszechnie stosowane do przechowywania danych on-line. Gdy jednak celem jest gromadzenie danych off-line w celu ich archiwizowania, to wysoka niezawodność, duża pojemność i relatywnie niewielki koszt takich urządzeń sprawia, że są one najlepszym wyborem spośród współczesnych systemów przechowywania danych.
System komputerowy (ang. computer system) – układ współdziałania dwóch składowych:
- sprzętu komputerowego oraz
- oprogramowania,
działających coraz częściej również w ramach sieci komputerowej.
Można mówić o następujących poziomach takiego systemu:
- sprzęt komputerowy,
- system operacyjny (oprogramowanie systemowe),
- oprogramowanie użytkowe (aplikacje).
W pełni zautomatyzowany system komputerowy działa bez udziału człowieka.Organizacja systemu komputerowego to opis zależności sprzętowych, przedstawienie poszczególnych podzespołów komputera, który funkcjonuje według pewnych reguł i zasad, współpracuje ze sobą – by osiągnąć określony cel. Organizacja systemu komputerowego określa zasady, reguły, cele oraz sposób wspomagania działań poszczególnych podzespołów.
Struktura systemu komputerowego składa się z pięciu zasadniczych warstw tj.
- warstwa sprzętowa,
- system operacyjny,
- programy narzędziowe,
- programy użytkowe i
- użytkownicy.
Sprzęt – zapewnia podstawowe możliwości obliczeniowe (procesor, pamięć, urządzenia wejścia/wyjścia) – podstawowe zasoby systemu komputerowego.
Oprogramowanie systemowe – kontroluje i koordynuje działanie zasobów sprzętowych przez zastosowanie różnych programów użytkowych dla różnych użytkowników. Warstwa tworzona przez twórców systemu operacyjnego – są to zazwyczaj wysoko wyspecjalizowani specjaliści.
Oprogramowanie narzędziowe – dogodne interfejsy użytkowe wspomagające zarządzanie zasobami sprzętowymi oraz usprawniające, modyfikujące oprogramowanie systemowe, zazwyczaj pisane przez niezależnych programistów, którzy mają na celu usprawnienia wykonywania programów w bardziej wygodny i wydajny sposób, a przy tym często eliminują błędy czy też niedociągnięcia oprogramowania systemowego.
Oprogramowanie użytkowe – określają sposoby użycia zasobów systemowych do rozwiązywania problemów obliczeniowych zadanych przez użytkownika (kompilatory, systemy baz danych, gry, oprogramowanie biurowe), tworzone przez programistów.
Użytkownicy – ludzie, maszyny, inne komputery, mający bezpośredni kontakt z oprogramowaniem użytkowym.
Bazowa architektura komputera
Mikroprocesor to układ scalony o bardzo dużym stopniu upakowania, zawierający nawet do kilku setek milionów tranzystorów. Jest on podstawowym urządzeniem przetwarzającym i sterującym komputera. Wykonuje większość arytmetycznych i logicznych operacji przetwarzania danych. Architektura mikroprocesora powinna spełniać trzy podstawowe warunki.Musi być funkcjonalnie elastyczna, co pozwoli rozszerzyć krąg potencjalnych użytkowników. Osiągana jest zazwyczaj poprzez zastosowanie sterowania mikroprogramowego i wykorzystanie dużej liczby rejestrów. Powinien charakteryzować się wystarczająco dużą szybkością pracy. Krótkie linie połączeniowe pozwalają zastosować wysokie częstotliwości pracy układu. W szeregu mikroprocesorów zwielokrotnianie szybkości przetwarzania osiągane jest poprzez zrównoleglenie obliczeń. Musi gwarantować technologiczną prostotę budowy urządzeń na jego bazie. Prostota powinna obejmować łatwość montażu, opracowania programów zarządzających itp. Mikroprocesor jest odpowiednikiem procesora, wykonanym w postaci układu scalonego, w którym wszystkie elementy wraz z ich połączeniami są wytworzone w jednym cyklu technologicznym wewnątrz lub na powierzchni wspólnego podłoża. Miarą złożoności układu scalonego jest tzw. stopień scalenia, określający liczbę elementów w pojedynczej strukturze układu Układy o małym stopniu scalenia SSI (Smali Scalę Integration ) zawierają w jednej strukturze do kilkudziesięciu elementów, Układy o średnim stopniu scalenia MSI (Medium Scalę Integration) – od kilkudziesięciu do kilkuset elementów, Układy o dużym stopniu scalenia LSI (Large Scalę Integration) - od kilkuset do kilkudziesięciu tysięcy elementów, Układy o bardzo dużym stopniu scalenia VLSI (Very Large Scalę Integration) - powyżej kilkudziesięciu tysięcy elementów. Układy zawierające powyżej miliona elementów są określane jako układy o superdużym lub ultradużym stopniu scalenia: SLSI (Super Large Scalę Integration), ULSI (Ultra Large Scalę Integration). Współczesne mikroprocesory zaliczają się do układów SLSI (ULSI). SOC - System on Chip, NOC – Network on Chip.
Pamięć stała ROM (Read Only Memory) jest elementem przeznaczonym do przechowywania niezmiennych komponentów oprogramowania systemu informatycznego pomiędzy seansami pracy komputera. W pamięci stałej umieszczane są tylko te spośród nich, do których dostęp jest niezbędny dla funkcjonowania systemu. Pamięć ta posiada niewielki rozmiar i jest przeznaczona do przechowywania wybranych fragmentów systemu operacyjnego. W komputerze personalnym takim wybranym fragmentem jest tzw. bazowy system wejścia-wyjścia BIOS, do zadań którego należy ładowanie systemu operacyjnego. W mainframe czy superkomputerze pamięć stała dodatkowo znajduje zastosowanie do przechowywania niezmiennych wartości liczbowych, niezbędnych w procesie obliczeń naukowo-technicznych, wartości niektórych funkcji, jak również do wykonania złożonych działań arytmetycznych,. Cechą charakterystyczną pamięci stałych jest niezmienność ich zawartości przez cały czas eksploatacji.
Pamięć o dostępie swobodnym RAM (Random Access Memory) przeznaczona jest do przechowywania danych i programów sterujących, wykonywanych w chwili obecnej przez komputer. Pozwala na praktycznie nieograniczoną liczbę zapisów i odczytów informacji. Wyłączenie zasilania pamięci tego typu jest jednak równoznaczne z utratą zapisanych w niej informacji. Parametry pamięci o dostępie swobodnym w znacznym stopniu określają możliwości komputera - im jest ona większa, tym większe możliwości przetwarzania ma komputer. Rozmiar pamięci o dostępie swobodnym jest zawsze wielokrotnie większy od rozmiaru pamięci stałej.
Interfejsy sterujące to specjalizowane procesory przeznaczone do zarządzania urządzeniami wejścia-wyjścia. Ponieważ natura operacji wejścia-wyjścia i operacji obliczeniowych jest zupełnie różna, trudne byłoby skonstruowanie mikroprocesora, który z jednakową efektywnością wykonywałby operacje obliczeniowe i przetwarzanie danych w celu dostosowania ich postaci do formy akceptowanej przez urządzenie wejścia-wyjścia. Współczesne mikroprocesory ukierunkowane zostały na wykonywanie operacji obliczeniowych. Dlatego do celów przetwarzania wprowadzanych lub wyprowadzanych danych skonstruowano wysoko specjalizowane mikroprocesory przetwarzania informacji (procesory obrazu, procesory sygnałów, teleprocesory itp.). Z tego powodu rola głównego mikroprocesora ogranicza się do prowadzenia obliczeń i inicjalizacji przetwarzania wejścia-wyjścia.
Urządzenia wejścia-wyjścia to w większości konstrukcje elektromechaniczne, wyposażone w sterowanie mikroprocesorowe, których zadaniem jest przedstawianie użytkownikowi informacji przetworzonej w komputerze oraz przyjmowanie informacji od użytkownika i wprowadzanie jej do komputera. Urządzenia wejścia-wyjścia należą do najdroższych elementów maszyny informatycznej.
Blok sterowania ma za zadanie wytwarzanie impulsów synchronizujących pracę całego komputera. Dzięki niemu rozpoczynanie i zakańczanie przetwarzania w poszczególnych blokach komputera będzie zsynchronizowane. Blok ten określa również sekwencję elementarnych działań wykonywanych przez pozostałe bloki komputera.
Harwardzka alternatywa koncepcji komputera z programem pamiętanym Alternatywą koncepcji von Neumanna jest idea Howarda Aikena (Harvard, 1948), aby rozdzielić pamięć główną na osobne pamięci danych i rozkazów. Umożliwia to nie tylko jednoczesne pobranie kodu rozkazu i argumentów, lecz także zabezpieczenie kodu przed przypadkowym zniszczeniem.