Podstawy Informatyki (4) Dr Anna Kwiatkowska Instytut Informatyki
Najważniejsze parametry pamięci Pojemność – określa ilość informacji, jaką można w niej przechowywać, mierzy się ją w jednostkach informacji (bity, bajty, słowa) Szybkość pracy – jest to parametr wskazujący na to jak często procesor lub inne urządzenie może z niej korzystać.
Parametry szybkości pamięci czas dostępu – jest to czas, jaki upływa od momentu zażądania informacji z pamięci do momentu, w którym ta informacja ukaże się na wyjściu z pamięci czas cyklu – najkrótszy czas, jaki musi upłynąć pomiędzy dwoma żądaniami dostępu do pamięci szybkość transmisji – mierzy się liczbą bitów (bajtów), jaka można przesłać w jednostce czasu pomiędzy pamięcią a innym urządzeniem
Adresowanie pamięci SEGMENT : OFFSET Rozróżniane są następujące rodzaje adresów: adres fizyczny – 20-bitowa liczba określająca położenie bajtu w pamięci adres logiczny – składa się z dwóch części: SEGMENT : OFFSET
Adresowanie pamięci SEGMENT jest adresem początku segmentu, gdzie segment jest to blok logiczny o długości nie większej niż 64 K adres fizyczny początku segmentu musi być podzielny przez 16 OFFSET (przesunięcie) jest to 16 bitowa liczba bez znaku, określająca przesunięcie względem początku segmentu
Adresowanie pamięci adres fizyczny - adres słowa pamięci fizycznej, pojawiający się na magistrali adresowej procesora w momencie odwoływania się do pamięci operacyjnej lub przestrzeni wejścia - wyjścia rejestr segmentowy –rejestr procesora stworzony do przechowywania adresu początkowego obszaru pamięci, w którym umieszczone są rozkazy, dane albo stos programu
Adres fizyczny ADRES FIZYCZNY = SEGMENT16 + OFFSET w przypadku procesorów zgodnych z x86, w trybie rzeczywistym procesora adres fizyczny oblicza się mnożąc SEGMENT (zawartość rejestru segmentowego) razy 16 i dodając OFFSET, czyli adres w stosunku do początku segmentu ADRES FIZYCZNY = SEGMENT16 + OFFSET
Adresowanie pamięci ponieważ adresy są zapisywane szesnastkowo, korzystanie z tego schematu jest bardzo proste - wystarczy dopisać do wartości segmentu adresowego szesnastkową cyfrę "0" i zwiększyć ją o przesunięcie w lewo segmenty nie są rozłączne, zatem wiele różnych adresów logicznych może odwoływać się do tej samej komórki pamięci
Przykład Dane są dwa adresy logiczne: A001 : F00E oraz A40E : AF3E. Który z nich jest większy? Adres1 Adres2 A 4 0 E 0 A 0 0 1 0 + A F 3 E + F 0 0 E SĄ RÓWNE!! A F 0 1 E A F 0 1 E
Podział pamięci ze względu na szybkość rejestrowa (zbiór wszystkich dostępnych rejestrów), pamięć o najszybszym dostępie, ale o najmniejszej pojemności operacyjna (mała pojemność, szybki dostęp) masowa (zwykle dyskowa) zewnętrzne (najważniejszą cechą jest możliwość wymiany nośnika)
ze względu na sposób dostępu do nośnika pamięci z dostępem bezpośrednim (swobodnym) RAM (Read Access Memory) – możliwe wielokrotny zapis i odczyt niesekwencyjny ROM (Read Only Memory) – można raz zapisać i wielokrotnie odczytywać
ze względu na sposób dostępu do nośnika pamięci z dostępem cyklicznym (pamięci dyskowe) –każda komórka pamięci jest dostępna tylko w pewnym określonym przez zegar momencie, który powtarza się okresowo pamięci masowe mogą być umieszczone: na twardym podłożu metalowym (hard disk) na podłożu elastycznym ( floppy disk)
Pamięć komputera Po wyłączeniu zasilania zapis informacji umieszczony w pamięci RAM ulega zniszczeniu, dlatego nazywa się ją pamięcią nietrwałą Pamięci dyskowe, oraz z dostępem sekwencyjnym przechowują informacje do momentu, aż użytkownik sam ją wykasuje, dlatego nazywa się pamięcią trwałą
System operacyjny UŻYTKOWNICY PROGRAMY UŻYTKOWE SYSTEM OPERACYJNY KOMPUTER
System operacyjny (Operating System) zespół programów wzajemnie ze sobą powiązanych tworzący środowisko pracy dla innych programów i systemów pierwszy po włączeniu zasilania ładowany jest do pamięci operacyjnej i znajduje się tam aż do wyłączenia komputera jest współbieżny z wszystkimi procesami, które obsługuje
System operacyjny składa się z części: wewnętrznej (rezydentnej) zewnętrznej
Zadania i funkcje systemu operacyjnego ulegały zmianie w zależności od stosowanego rodzaju przetwarzania w starszych typach było to przetwarzanie wsadowe użytkownik przygotowuje program i dane do niego na odpowiednim nośniku informacje te wprowadza się do komputera bez udziału użytkownika (przez operatora), po przetworzeniu użytkownik otrzymuje wyniki
W obecnych systemach stosuje się przetwarzanie interakcyjne, które polega na ustawicznej ingerencji użytkownika w proces przetwarzania System operacyjny jest dla użytkownika praktycznie niewidoczny, widzi on tylko interfejs do komunikowania się z nim
zarządzanie zbiorami danych pamięcią pracą innych programów odpowiada również za dialog człowieka z komputerem – umożliwia wprowadzanie danych i poleceń do komputera oraz przesyła odpowiedzi na ekran lub inne urządzenie zewnętrzne
Pod względem sposobu komunikacji z użytkownikiem systemy tekstowe komunikujące się za pomocą komend wydawanych z linii poleceń (DOS, Unix) systemy graficzne komunikujące się za pomocą graficznych okienek i symboli (ikon) (Windows)
Pod względem architektury monolityczne o najprostszej strukturze i jednozadaniowe warstwowe o hierarchicznej strukturze poleceń systemowych i wielozadaniowe klient/serwer o bardzo rozbudowanej strukturze, systemy tego typu pełnią nadzór nad podrzędnymi systemami zainstalowanymi w poszczególnych komputerach sieci, natomiast aplikacje są postrzegane przez system jako “klienci” obsługiwani przez serwery
Zarządzanie pamięcią przydzielaniu zasobów pamięciowych uruchamianym procesom, odzyskiwaniu tych zasobów, gdy proces zakończy się utrzymywanie i udostępnianie informacji o stanie zasobów w odniesieniu do pamięci zewnętrznej (pomocniczej) systemy operacyjne odpowiadają, między innymi także za przydzielanie tej pamięci i wykorzystanie obszarów wolnych
Całą pamięć operacyjną dostępną w komputerze, tak jak ją widzi system operacyjny, nazywamy pamięcią fizyczną Posługując się adresami fizycznymi mamy dostęp do całej pamięci fizycznej Pamięć, taką jak ją widzi dany proces, nazywamy pamięcią logiczną
MMU Pamięć logiczna jest realizowana przez mechanizm, który: sprawdza, czy używane przez proces adresy logiczne są poprawnymi adresami, tzn. czy odnoszą się do przydzielonej procesowi pamięci; w przypadku, gdy adres logiczny jest niepoprawny, zgłaszany jest błąd, tłumaczy adresy logiczne, na odpowiadające im adresy fizyczne. Mechanizm ten jest realizowany sprzętowo przez jednostkę zarządzania pamięcią (ang. memory management unit, w skrócie MMU).
Poniższy rysunek przedstawia schemat budowy MMU MMU zawiera dwa programowalne rejestry
Przydział pamięci jest dokonywany do momentu, gdy wszystkie procesy z kolejki dostaną odpowiednie obszary, lub gdy zabraknie wolnej pamięci i procesy muszą poczekać na jej zwolnienie Gdy jakiś proces zakończy się, pamięć jest zwalniania i jeśli graniczy ona z obszarem wolnym, wówczas jest dołączana do tego obszaru dając w wyniku jeden obszar większy
Strategie przydziału pamięci pierwsza pasująca (First Fit) - system operacyjny przydziela pamięć z pierwszego wystarczająco dużego wolnego obszaru najlepiej pasująca (Best Fit)- system operacyjny wybiera najmniejszy z dostatecznie dużych obszarów najgorzej pasująca (Worst Fit) - system operacyjny wybiera do przydziału największy wystarczający obszar
Przykład
First Fit 90 60 150 60 90 150 P1 40 110 60 90 150 P1 40 110 P2 120 P3 60 30 30 P4 70 CZEKA!!!
Best Fit 90 60 150 60 90 150 P2 120 P3 60 P1 40 30 20 30 P4 70 czeka!!
Worst Fit 90 60 150 60 90 150 P1 40 P4 70 P3 60 30 110 40 P2 120 CZEKA!!!
Problemy przydziału pamięci fragmentacja pamięci polegająca na przeplataniu się wolnych obszarów i zajętych dla dużej liczby zakończonych procesów potrzebujących niewiele pamięci operacyjnej fragmentacja może być znaczna, co utrudnia wykonywanie procesów potrzebujących większych obszarów problemy związane z fragmentacją niektóre systemy operacyjne rozwiązują poprzez stronicowanie pozwalające na przydzielanie procesowi kilku obszarów
Stronicowanie Stronicowanie umożliwia przydział wielu bloków pamięci jednemu procesowi i jest stosowane w wielu systemach operacyjnych Ogólna zasada stronicowania polega na podzieleniu pamięci fizycznej, tak operacyjnej jak i pomocniczej, na stałej długości bloki tzw. ramki
Stronicowanie Pamięć logiczna (procesu) jest także podzielona na bloki tzw. strony o identycznym rozmiarze jak rozmiar ramki Większość systemów operacyjnych dla każdego procesu tworzy tablicę stron, w której przechowywane są informacje dotyczące kolejnych stron i ramek zawierających te strony
Pamięć logiczna(proces) strona 0 strona 1 strona 2 strona 3 strona 4 Tablica stron Nr strony 1 2 3 4 Nr ramki 5 Pamięć fizyczna (system) Nr ramki 1 2 3 4 5 strona str 3 str 1 str 0 ------- str4 str2
adres_pamięci_fizycznej = d n + p Stronicowanie Tablica stron jest wykorzystywana w określaniu adresów pamięci fizycznej w czasie działania procesu Adres pamięci fizycznej jest określany wg wzoru: adres_pamięci_fizycznej = d n + p gdzie: d – długość ramki (w określonych jednostkach pamięci) n – numer ramki p – odległość na stronie
Przykład Określić adresy pamięci fizycznej dla danych adresów logicznych i danego modelu rozmieszczenia stron przedstawionego w tabeli Długość ramki (strony) wynosi 8B
Tablica stron Dane adresy pamięci logicznej: 7, 35, 40 Nr strony 1 2 3 1 2 3 4 5 Nr ramki 10 8 Dane adresy pamięci logicznej: 7, 35, 40
Rozwiązanie adres_pamięci_fizycznej = d n + p Adres logiczny A Nr strony [A/8] Odległość na stronie - p Nr ramki n Adres fizyczny 7 10 87 35 4 3 8 67 40 5 2 16
Segmentacja Użytkownik widzi pamięć swojego programu jako jeden ciągły obszar (pamięć logiczna) Pamięć fizyczna przeznaczona dla użytkownika może się składać z wielu różnie rozmieszczonych ramek widocznych dla systemu operacyjnego Użytkownik posługuje się innym schematem zależnym od stosowanego narzędzia programistycznego
Segmentacja Pamięć widziana przez użytkownika składa się z segmentów Segmentacja jest to schemat zarządzania pamięcią widziany przez użytkownika W segmentacji, podobnie jak w stronicowaniu, występuje tablica segmentów Implementacja tablicy segmentów jest bardziej złożona niż implementacja tablicy stron i jej model zależy od narzędzia programistycznego (Turbo Pascal, C++, i in.)
Pamięć wirtualna Wiele systemów operacyjnych stosuje tzw. pamięć wirtualną umożliwiającą wykonywanie procesów nie mieszczących się w pamięci operacyjnej Jest ona bardzo często implementowana w postaci stronicowania na żądanie Idea tego sposobu zarządzania pamięcią jest podobna do stronicowania, ale jej implementacja jest bardziej złożona, wykorzystuje dostępną pamięć pomocniczą i zależy od systemu operacyjnego
Pamięć dzielona W systemach wieloprocesowych (np. LINUX) występuje pojęcie pamięci dzielonej umożliwiającej przekazywanie danych między procesami Pamięć dzielona jest dostępna dla wielu procesów i może być zlokalizowana i w pamięci operacyjnej i w pamięci pomocniczej (zewnętrznej) System operacyjny z pamięcią dzieloną posiada specjalne funkcje do jej obsługi
ZARZĄDZANIE PROCESAMI
Procesy Procesem jest program umieszczony w pamięci komputera i wykonywany pod nadzorem systemu operacyjnego Proces jest ciągiem czynności, zaś program jest ciągiem instrukcji Sam program nie jest procesem, gdyż jest obiektem pasywnym Proces jest obiektem aktywnym z licznikiem rozkazów wskazującym następny rozkaz do wykonania oraz ze zbiorem przydzielonych mu zasobów
Zarządzanie procesami Do wypełnienia swojego zadania proces potrzebuje pewnych zasobów, takich, jak czas procesora, pamięć, pliki i urządzenia we/wy Zasoby są przydzielane procesowi w chwili jego tworzenia lub podczas późniejszego działania Wykonanie procesu musi przebiegać w sposób sekwencyjny, co oznacza, że w dowolnej chwili na zamówienie danego procesu może być wykonywany co najwyżej jeden rozkaz kodu programu
Zarządzanie procesami System operacyjny odpowiada za następujące działania dotyczące zarządzania procesami: tworzenie i usuwanie zarówno procesów użytkownika, jak i procesów systemowych planowanie porządku wykonywania procesów mechanizmy synchronizacji komunikacji usuwanie zakleszczeń procesów
Stany procesów Wykonujący się proces zmienia swój stan Każdy proces może znajdować się w jednym z następujących stanów: nowy (proces został utworzony) aktywny (są wykonywane instrukcje programu) oczekiwanie (proces czeka na jakieś zdarzenie) gotowy (proces czeka na przydział procesora) zakończony (proces zakończył działanie)
Blok kontrolny procesu Każdy proces jest reprezentowany w systemie operacyjnym przez blok kontrolny procesu (Process Control Block – PCB), nazywany również blokiem kontrolnym zadania Zawiera on wiele informacji związanych z danym procesem Blok kontrolny procesu służy po prostu jako magazyn przechowujący wszelkie informacje dla systemu umożliwiające zarządzanie procesem
PCB stan procesu licznik rozkazów ( wskazuje adres następnego rozkazu do wykonania w procesie) rejestry procesora – informacje dotyczące tych rejestrów i licznika rozkazów muszą być przechowywane podczas przerwań, aby proces mógł być później kontynuowany informacje o planowaniu przydziału procesora (np. priorytet procesu) informacje o zarządzaniu pamięcią informacje do rozliczeń (np. ilość zużytego czasu procesora) informacje o stanie we/wy ( np. o urządzeniach we/wy przydzielonych do procesu, wykaz otwartych plików).
Przydział czasu procesora Planowanie przydziału czasu procesora jest podstawą działania wieloprogramowych systemów operacyjnych Celem wieloprogramowania jest stałe utrzymywanie w działaniu pewnej liczby procesów
Przydział procesora może odbywać się w następujących sytuacjach: proces przeszedł od stanu aktywności do stanu czekania (np. na we/wy), proces przeszedł od stanu aktywności do stanu gotowości (np. wskutek przerwania), proces przeszedł od stanu czekania do stanu gotowości (np. po zakończeniu operacji we/wy), proces kończy działanie
Jeżeli planowanie odbywa się tylko w sytuacjach a) i d), to mówimy o planowaniu bez wywłaszczeń W tych sytuacjach proces, który otrzyma procesor zachowuje go aż do swojego zakończenia lub przejścia do stanu czekania Ta metoda planowania jest używana w środowisku Microsoft Windows W przypadku, gdy planowanie odbywa się w sytuacjach b) i c), mówimy o planowaniu wywłaszczającym
Metody szeregowania i przydziału zasobów Metoda FCFS „pierwszy zgłoszony, pierwszy obsłużony” (First Come, First Served) W metodzie tej procesy wykonywane są w kolejności przybywania Łatwą implementację tego algorytmu uzyskuje się za pomocą kolejki FIFO (First Input First Output)
1 2 3 4 5 PROCESOR
1 2 3 4 5 1 kwant PROCESOR
1 1 kwant PROCESOR
1 2 3 4 5 1 kwant PROCESOR
1 2 3 4 5 1 kwant PROCESOR
1 2 3 4 5 1 kwant PROCESOR
Metody szeregowania i przydziału zasobów Metoda SJF „najkrótsze zadanie najpierw” (Shortest Job First) Realizując tą metodę procesor przydziela sie temu procesowi, który ma najkrótszą fazę zapotrzebowania W przypadku, gdy fazy są równe, stosuje się metodę FCFS
Metody szeregowania i przydziału zasobów Szeregowanie priorytetowe Z każdym procesem jest związany priorytet, który jest liczbą naturalną W tej metodzie procesor przydziela się w pierwszej kolejności procesowi z najwyższym priorytetem
Metody szeregowania i przydziału zasobów Metoda szeregowania karuzelowego (Round Robin ) Istotą tej metody jest podzielenie czasu procesora na kwanty jeżeli po zakończeniu kwantu czasu wykonywanego procesu nie zakończono, to jest on przerywany i ustawiany na koniec kolejki a do wykonania jest pobierany następny proces według algorytmu FCFS