System operacyjny musi wiedzieć, jakie informacje znajdują się w bloku kontrolnym procesu: -identyfikator procesu - unikatowy - stan procesu - priorytet - stopień ważności procesu w stosunku do innych, w zależności od tego jest szybciej/ wolniej realizowany - licznik programu - adres następnego rozkazu w programie- znaczniki pamięci - początkowa i końcowa komórka zajęta w pamięci przez proces- dane dotyczące kontekstu (otoczenia) - kontekst i licznik programu są zachowywane gdy proces przestaje być w stanie gotowości, są pobierane, gdy gdy zaczyna się realizacja przerwania - informacja o stanie we/wy - o rodzajach i sposobach konfliktu z peryferałami - informacja ewidencyjna - dotyczy czasu procesu, ograniczeń czasowych oraz danych ewidencyjnych
Powyższe dane są tworzone jako blok kontrolny przed przejściem procesu do stanu gotowości.
Aby zapobiec monopolizacji czasu procesora przez tylko 1 proces, każdy z procesów otrzymuje tylko krótki odcinek czasu do realizacji. Przykład: Procesy A i B są gotowe do realizacji; w danej chwili wykonywany jest proces A tzn procesor wykonuje program w części pamięci przeznaczonej na A. W pewnym momencie procesor przestaje wykonywać ten proces i przechodzi do wykonywania rozkazów , przechowywanych w obszarze pamięci OS-u.
Możliwe są 3 powody:
proces A przekazuje wywołanie obsługi - np. poprzez żądanie we/wy - OS-owi. Wobec powyższegokontynuacja procesu A jest zawieszona do czasu spełnienia żądania.
Proces A wywołuje przerwanie. Jest to rozkaz realizowany sprzętowo i wówczas procesor przerywa program A i przenosi się do programu obsługi przerwań w OS-ie. Przerwanie może być wywołane przez: błąd w programie, wyczerpanie czasu przeznaczonego na relizację procesu A lub przez przyczyny zewnętrzne.
inne zdarzenie nie związane z procesem A lecz wymagające reakcji, np: zakończenie operacji we/wy.
W każdym z tych przypadków procesor zapisuje bieżące dane kontekstowe oraz licznik programu w bloku kontrolnym procesu A i przystępuje do realizacji programu operacyjnego. W następnym etapie program szeregowania krótkookresowego decyduje, który z procesów ma być realizowany jako następny i zostaje wybrany proces B. Powinien być on gotowy do realizacji. OS poleca procesorowi odnowienie kontekstu B: - podanie aktualnego czasu - zawartości kontekstu, i dalszą realizację procesu. Gdy realizowane jest przerwanie lub obsługa programu, program szeregowania krótkookresowego jest wzywany do wybrania procesu do realizacji. System operacyjny tworzy listę kolejek procesów oczekujących na pewne zasoby. Kolejka średniookresowa składa się ze wszystkich procesó w stanie gotowości. Przydział czasu następuje na ogół według cyklicznego algorytmu, czyli każdemu procesowi tyle samo czasu. Kolejka we/wy jest tworzona ze wszystkich procesów domagających się we/wy. Kolejki związane z szeregowaniem pracy procesora: Każde zapotrzebowanie na proces (zadanie wsadowe lub konwersacyjne) jest umieszczone w kolejce długookresowej. Gdy zasoby są żadane, zadanie staje się procesem i przechodzi w stan gotowości; jest umieszczane w kolejce średniookresowej. Procesor wykonuje na przemian rozkazy OS-u oraz procesów. Zawieszenie procesu może nastąpić z wielu powodów; gdy zgłosił on zapotrzebowanie na we/wy - zostaje zawieszony w kolejce we/wy; jeżeli powodem było wyczerpanie licznika czasu lub przejście procesora do innych zadań o większym priorytecie, proces jest przenoszony w stan gotowości i wówczas znajduje się w kolejce średniookresowej.
TRYBY ADRESOWANIA: Zasobami komputera są czas przeznaczony do realizacji oraz pamięć, istnieje wiele metod adresowania, wszystkie one opierają się na kompromisie między zakresem adresów i elastycznością adresowania z jednej strony a liczbą możliwych odniesień do pamięci i złożonoscią obliczania adresów z drugiej strony. A - zawartość pola adresowego w rozkazie, EA - effective address - adres rzeczywisty lokacji zawierającej argument, X - zawartość lokacji. Prawie we wszystkich maszynach stosuje się różne tryby adresowania; wybór trybu zależy od realizowanego zadania lub procesu. O tym jaki tryb jest użyty informuje jedno- lub dwubitowe w formule rozkazu.
Adr. natychmiastowe - A = Argument:
Adr. bezpośrednie - A = EA: W polu adresowym rozkazu znajduje się adres komórki pamięci, gdzie znajduje się argument.
Adr. Pośrednie: W polu adresowym adres komórki z adresem komórki z argumentem. K - długość pola w rozkazie, N - długość komórki w pamięci, K<N, Możemy zaadresować tylko 2k komórek; wada - wykonanie rozkazu wymaga 2 odniesień do pamięci - może to być zaletą w środowisku pamięci wirtualnej. (A) =EA Zdarza się w tym trybie adresowania odmiana adresowania wielopoziomowego:
(...((...(A)...))...) = EA (min. 3 odniesienia do pamięci)
Adresowanie rejestrowe Podobne do bezpośredniego z tym, że pole adresowe odnosi się do rejestru. Pole adresowe ma 3-4 bity, zatem może się odwoływać do 2^3-2^4 rejestrów roboczych. ZALETA - niewielkie pole adresowe; niepotrzebne odwołanie do pamięci głównej. Czas dostępu - znacznie krótszy. WADA: ograniczona przestrzeń adresowa.
Adresowanie z przesunięciem (displacement addressing): EA = A+(R), Wymaga 2 pól adresowych w rozkazie. Zawartość rejestru R jest dodawana do adresu A i to daje adres efektywny pamięci. Odmiany: Adr. Względne: Rejestrem domyślnym jest licznik programu (PC) - adres rozkazu, wzięt z PC jest dodawany do zawartości pola adresowego w celu otrzymania EA (pole adresowe jest traktowane tu jako liczba w notacji U2). Stosowane w koncepcji lokalności (adresy niwiele się różnią). Gdy większość odniesień do pamięci znajduje się w pobliżu rozkazu, to ten sposób oszczędza bity adresowe.
Adr. z rejestrem podstawowym: Rejestr zawiera adres w pamięci, a pole adresowe rozkazu zawiera przesunięcie w stosunku do tego adresu. Odniesienie może być jawne lub domyślne
Indeksowanie: Pole adresowe odnosi się do adresu w pam. gł., a wywołany rejestr zawiera dodatnie przesunięcie w stos. do tego adresu. Odwrotne do adr. z rejestrem podstawowym. Ponieważ pole adresowe jest traktowane jako adres w pamięci, zawiera zwykle więcej bitów niż pole adresowe w adr. z rej. podst. Umożliwia efektywne wykonywanie iteracji.Np: dana jest lista liczb od lokacji A - chcemy dodać 1 do każdego elementu - efektywne adresy: A A+1 A+2 - łatwo to uzyskać - wybrany rejestr: rejestr ideksowy, inicjowany od 0 - po każdej operacji rej. ind. jest zwiększany o 1 - R <- R+1
Adresowanie stosowe: Stos - liniowa lista lokacji, zgodna z kolejką LIFO. Ze stosem związany jest wskaźnik, którego wartością jest adres wierzchołka stosu; przechowywany w rejestrze. Odniesienia do lokacji w stosie = bezpośrednie adresy rejestru. Analogiczne do adr. pośredniego. Różnica: pole adresowe odnosi się do lokacji w rejestrze, a nie w pamięci.
KOMPUTERY RISC i CISC
Cechy RISC: ograniczony i prosty zbiór rozkazów - duża liczba rejestrów roboczych - akcent na optymalizację potoku rozkazów
Jak doszło do CISC: rozwój technologiczny - ceny sprzętu spadają - software drogi - luka semantyczna: różnica między operacjami języków wysokiego poziomu a arch. komputerów. Symptomy: nieefektywność, nadmierne rozmiary podprogramów maszynowych, złożoność kompilatorów - dla zmniejszenia luki: nowa architektura - rozbudowana lista rozkazów, wiele trybów adresowania, różne dyrektywy języków wysokiego poziomu - cele: ułatwienie zadania programistom kompilatorów, poprawienie efektywności - CISC: bogata lista rozkazów (w sensie ilości i złożonosci); miał pozwalać na uzyskanie mniejszych i szybszych programów - nie do końca; - mniejsze programy - poprawienie wydajności: mniej bajtów do pobrania, mniej stron pamięci narażonych na błędy
Właściwości arch. RISC(?): 1 rozkaz na cykl - rozkazy RISC mogą być wykonywane sprzętowo, nie ma potrzeby sięgania do mikroprog. w pamięci sterującej - szybsze - przesyłanie z rejestru do rejestru - nie poprzez pamięć. W liście rozkazów RISC - 1 - 2 rozkazy ADD, w CISC - nawet 25. - proste tryby rejestrowania, gł. adr. rejestrowe - to upraszcza listę rozkazów oraz jedn. Sterującą - proste formaty rozkazów: 1-2 formaty o ustalonej długości. Położenia pól w rozkazie stałe -> jednoczesne dekodowanie operacji i dostęp do argumentu
Charakterystyka procesorów CISC: Duża liczba rozkazów 100/300 - istnienie rozkazów specjalizowanych - duża liczba trybów adresowania: 5-20 - duży zakres rozkazów - w sensie długości i czasu wykonania - mikroprogramowalna jednostka sterująca
Char. arch. CISC (?) RISC: mało rozkazów wykonywanych w pojed. cyklu rozkazowym - niewiele trybów adresowania - łatwe do zdekodowania rozkazy o stałym formacie - dostęp do pamięci - tylko rozkazy STORE i LOAD - dużo rejestrów uniwersalnych- argumenty rozkazów - raczej w rejestrach niż pam.op. - jednostka sterująca zrealizowana układowo - intensywne wykorzystanie przetwarzania otokowego-kompilatory wykorzystują strukturę potokową - skomplikowane funkcje matematyczne realizowane sprzętowo
Komputery macierzowe: procesor macierzowy - macierz elementów przetwarzających - jednoczesne wykonywanie operacji arytmetycznych/logicznych na wielu danych - operacje wektorowe - tu liczba angażowanych elementów procesora zależy od rozmiaru wektora - wszystkie komórki wykonują ten sam rozkaz - rozróżnia się proc. macierzowy o statycznej i dynamicznej sieci połączeń - statyczny - sieć pasywna i nierekonfigurowalna - dynamiczny - wykorzystuje aktywne elementy przełączające, rekonfig.
Komputery wektorowe jeden strumień rozkazów i jeden strumień danych - wykonują rozkazy wektorowe w sposób potokowy w wielostopniowych jednostkach ALU - jeden komputer nadrzędny - przepustowość / moc obliczeniowa- mierzona w Flopsach - mogą pracować niezależnie od siebie - łańcuchowanie potoków - wyniki z jednej jednostki potokowej są danymi wejściowymi dla drugiej - kilka operacji wektorowych równocześnie
Transputery: układ scalony VLSI (very large scale integration) - zawiera procesor, RAM, układ 4 dwukierunkowych łącz umożliwiających bezpośrednie połączenie z innymi transputerami - tak apropos, T800 o którym p. Ulman gadał na wykładzie powstał w 1987 r. i miał 4k ramu :)) - wykorzystywane do akceleracji obliczeń w systemach macierzowych - w systemach graficznych, do sterowania elektrownią jądrową
Systemy wieloprocesorowe: złożone z kilku jednostek przetwarzania, sterowanych centralnie - 1 syst. op. - komunikacja i synchronizacja pracy - dostęp do wspólnej pamięci lub wysyłanie komunikatów - wspólna pamięć: powinno iść szybko, w praktyce nie działa. stosuje się pamięć lokalną i ogranicza dostęp do pamięci wspólnej - przesył komunikatów: system rozproszony; sieć tworzą procesory; węzeł sieci - procesor, pamięć i węzeł pośredni dla innych procesorów - typy: krata, gwiazda, drzewo, hipersześcian - w hipersześcianie liczba węzłów minimalna. zaleta: łatwa konfigurowalność