Kartkówka
Pojęcia związane z SO
Przerwania w systemie komputerowym
Źródła przerwań
Źródła przerwań
Źródła przerwań
Przerwanie zegarowe
Zasady ochrony pamięci
Dualny tryb pracy procesora - Teoria
Tryb Chroniony / Rzeczywisty
Tryb Chroniony / Rzeczywisty
Składniki Systemu Operacyjnego
Podstawowy interfejs użytkownika: Powłoki i Interpretery
GUI nie jest częścią SO!!!
Co uruchamia i czym zarządza SO?
Gdzie jest przechowywany SO?
Bezpieczeństwo!
Poziomy Uprawnień Użytkowników
Architektury SO
Architektura Jednolita
Architektura Warstwowa
Architektura Warstwowa – unix
Architektura Klient-serwer
Architektura Hybrydowa
Procesy
Definicje: elementy składowe procesu
Definicje: Blok kontrolny procesu
Definicje: Stan procesu
Definicje: Operacje na procesach
Zarządzanie procesami
Planowanie przydziału procesora -Planiści
Planowanie przydziału procesora -Planiści
Planiści w szczegółach
Planiści: Definicje
Pierwszy zgłoszony pierwszy obsłużony
Najpierw najkrótsze zadanie
Planowanie priorytetowe
Planowanie rotacyjne (RR - round-robin)
Wątek Definicja
Wątki
Wątki w SO Solaris
Przykład tworzenia procesu w SO Unix
Tworzenie procesu w SO Windows
Synchronizacja zadań - Problem ucztujących filozofów
Urządzenia wejścia-wyjścia
Kategorie urządzeń We/Wy
Punkty komunikacyjne / pośredniczące
Szyna komunikacyjna – „rdzeń kręgowy komputera“?
Typy szyn komunikacyjnych
Typy szyn komunikacyjnych
Komunikacja synchroniczna i asynchroniczna
Proces komunikacji z urządzeniem?
Komunikacja za pomocą rejestrów
Przykładowy przydział portów w komputerach zgodnych z PC
Bezpośredni dostęp do pamięci: DMA
Sprawdzanie gotowości danych do odczytu-zapisu
Odpytywanie – mało wydajne
Przerwania – bardziej wydajne
Przerwania
Klasy przerwań
Struktura pamięci
Pamięć podręczna (cache)
Przestrzeń adresowa
Segmentacja pamięci
Segmentacja pamięci
Stronicowanie i Wymiatanie

Pojęcia związane z SO. Przerwania w systemie komputerowym

1. Kartkówka


Przedstaw model systemu komputerowego Andrew
Tanenbauma
Z którą generacją komputerów związane jest pojęcie
„BUG”? W jakim komputerze znaleziono pierwszy „bug”
komputerowy?
Na czym polega superskalarność, na czym polega
hiperwątkowość
Wymień znane Ci osiągnięcia (nazwa/data/parametry)
dotyczące rozwoju techniki komputerowej w Polsce

2. Pojęcia związane z SO

Komunikacja z systemem operacyjnym
Odwołania do jądra systemu przez system przerwań lub
specjalne instrukcje (przerwanie programowe)
Sprzętowa ochrona pamięci
Dualny tryb pracy — tryb użytkownika (ang. user mode) i tryb
systemowy (tryb jądra, ang. system mode)
Wyróżnienie instrukcji uprzywilejowanych, wykonywanych
tylko w trybie systemowy
Uprzywilejowanie instrukcji wejścia-wyjścia
Przerwanie zegarowe

3. Przerwania w systemie komputerowym

Przerwanie jest reakcją na asynchroniczne zdarzenie,
polegającą na automatycznym zapamiętaniu bieżącego
stanu procesora w celu późniejszego odtworzenia oraz
przekazaniu sterowania do ustalonej procedury obsługi
przerwania.
–System
przerwań umożliwia niesekwencyjne (współbieżne)
wykonywanie programów.
–Zmiana
sekwencji wykonywania instrukcji polega na tym,
że w reakcji na przerwanie następuje zapamiętanie
bieżącego stanu przetwarzania (najważniejszych rejestrów
procesora), przekazanie sterowania do ustalonej procedury
obsługi i rozpoczęcie wykonywania instrukcji tej procedury.

4. Źródła przerwań

Przerwania
a) zewnętrzne — sygnał przerwania pochodzi z
zewnętrznego układu obsługującego przerwania
sprzętowe; przerwania te służą do komunikacji z
urządzeniami zewnętrznymi, np. z klawiaturą, napędami
dysków itp.
b) wewnętrzne, nazywane wyjątkami (ang. exceptions) –
zgłaszane przez procesor dla sygnalizowania sytuacji
wyjątkowych (np. dzielenie przez zero); dzielą się na trzy
grupy:

5. Źródła przerwań

faults (niepowodzenie) – sytuacje, w których aktualnie
wykonywana instrukcja powoduje błąd; gdy procesor
powraca do wykonywania przerwanego kodu wykonuje
tę samą instrukcję która wywołała wyjątek;
traps (pułapki) – sytuacja, która nie jest błędem, jej
wystąpienie ma na celu wykonanie określonego kodu;
wykorzystywane przede wszystkim w debugerach; gdy
procesor powraca do wykonywania przerwanego kodu,
wykonuje następną, po tej która wywołała wyjątek,
instrukcję;
aborts (nienaprawialne) – błędy, których nie można
naprawić.

6. Źródła przerwań

Przerwania programowe — wykonanie specjalnej instrukcji
z kodu programu wywoływana jest procedura obsługi
przerwania; najczęściej wykorzystywane do komunikacji
z systemem operacyjnym, który w procedurze obsługi
przerwania (np. w DOS 21h, 2fh, Windows 2fh, Linux x86
przerwanie 80h) umieszcza kod wywołujący odpowiednie
funkcje systemowe w zależności od zawartości rejestrów
ustawionych przez program wywołujący lub
oprogramowaniem wbudowanym jak procedury BIOS lub
firmware.
Przerwania diagnostyczne — pułapki, błędy programowe i
sprzętowe

7. Przerwanie zegarowe

Przerwanie zegarowe generowane jest przez czasomierz (ang. timer) po
wyznaczonym okresie czasu.
Obsługa przerwania zegarowego oznacza przekazanie sterowania do jądra
systemu operacyjnego, umożliwiając w ten sposób wykonanie pewnych
zdań okresowych.

8. Zasady ochrony pamięci

W wyniku wykonywania programu
następuje odwołanie do komórek
pamięci o określonych adresach
Dostępne obszary pamięci opisane
są przez dwa parametry: bazę
(ang. base) i granicę (ang. limit)

9. Dualny tryb pracy procesora - Teoria

Sprzęt (procesor) musi udostępniać co najmniej dwa podstawowe tryby pracy:
–Tryb
użytkownika (user mode)
–Tryb
nadzorcy, monitora (supervisor mode), uprzywilejowany
Sprzęt posiada przełącznik bitowy: monitor (1), użytkownik (0).
Instrukcje uprzywilejowane mogą być uruchamiane tylko w trybie monitora
(nadzorcy).

10. Tryb Chroniony / Rzeczywisty

Mikroprocesor(y) Intela potrafią pracować w trybie
–Chronionym
– z zabezpieczeniami
–Rzeczywistym
– bez zabezpieczeń
- (specjalny tryb pracy procesorów o architekturze IA-32, dostępny w
trybie chronionym, który umożliwia uruchamianie programów przeznaczonych dla
trybu rzeczywistego)
–Wirtualny
Tryb chroniony (ang. protected mode)
–To
tryb pracy mikroprocesorów serii x86 wprowadzony w mikroprocesorze Intel
80286. Tryb chroniony umożliwia adresowanie pamięci w większym zakresie niż 1
MiB (tryb rzeczywisty), wprowadza udogodnienia wspierające wielozadaniowość,

11. Tryb Chroniony / Rzeczywisty

W trybie chronionym:
–ochrona
zasobów komputera (przerwania, porty)
–ochrona
pamięci (I/O permission bitmaps) oraz pamięć wirtualna
(stronicowanie)
–wywłaszczanie
procesów (wielozadaniowość, dzięki wsparciu przełączania
kontekstu)
Po uruchomieniu komputera w architekturze intel’a procesor
znajduje się w trybie rzeczywistym. Dopiero system
operacyjny przełącza procesor do trybu chronionego.

12. Składniki Systemu Operacyjnego

System plików (lub kilka
systemów) pozwalający
logicznie organizować pliki.
Podstawowy interfejs
użytkownika:
–CLI
–GUI
– command line interface lub
– graphical user interface.
Centralną częścią systemu jest
JĄDRO (kernel)
odpowiedzialne za
przydzielanie oraz
synchronizację wykorzystania
zasobów między
uruchomionymi procesami.
Warstwa techniczna kontrolująca
urządzenia za pomocą
sterowników.

13. Podstawowy interfejs użytkownika: Powłoki i Interpretery

Wszystkie współczesne SO udostępniają interfejs graficzny (GUI, Graphical
User Interface), który umożliwia wykonanie większości zadań.
–Większość,
czyli tylko te przewidziane przez programistów.
Każdy współczesny system posiada również powłokę tekstową
udostępniającą większą wolność dla administratorów.
–W
powłokach możemy 'wygodnie' automatyzować zadania za pomocą skryptów lub plików
wsadowych.
Wiele badań nad użytecznością wskazuje, że praca w trybie tekstowym JEST
BARDZIEJ EFEKTYWNA!
„Użyteczność” rozróżnia trzy zasadnicze kategorie użytkowników:
początkujących – najlepszy GUI
zaawansowanych – najlepsze połączenie GUI + tryb tekstowy
ekspertów – najlepszy tryb tekstowy

14. GUI nie jest częścią SO!!!

Interfejs graficzny nie jest ani systemem operacyjnym, ani jego integralną
częścią!
Systemy z rodziny MS Windows a zwłaszcza Windows NT 3.5 oraz Mac OS,
które posiadały praktycznie wyłącznie interfejs graficzny rozpropagowały
ten pogląd. Jednym z głównych celów tych systemów była prostota
obsługi.
System Operacyjny: zarządza zasobami i jest funkcjonalny dla użytkownika.
SO może posiadać wiele różnych interfejsów użytkownika i przede wszystkim
nie koniecznie pochodzących od jedynego „właściwego“ dostawcy
oprogramowania.
Najlepszym przykładem jest Linux:
KDE, Gnome, XFCE, fvwm, twm, tryb tekstowy, i wiele innych.

15. Co uruchamia i czym zarządza SO?

1. Programy dla użytkowników.
–przetwarzanie
interaktywne - wymaga ingerencji w trakcie wykonywania zadania, architektura
oparta na zdarzeniach (GUI), urządzenia wejścia-wyjścia,
wsadowe – wymaga jedynie parametrów startowych (wykorzystywane przy
przetwarzaniu potokowym), podawanych zazwyczaj jako argumenty linii komend, poprzez
tekstowe pliki konfiguracyjne lub poprze tekstowe strumienie danych
–przetwarzanie
2. Serwisy (homonimy: demony, usługi) dla lokalnych lub zdalnych
użytkowników, oraz inne usługi pozwalające tworzyć rozproszone
architektury.
Ponieważ SO zarządza zasobami, wszystkie do nich odwołania powinny
odbywać się za jego pośrednictwem.

16. Gdzie jest przechowywany SO?

Dyskietka (MsDOS), lub CD/DVD
Twardy dysk
Pamięć nieulotna (ROM, EPROM)
Live-CD (pionier: Knoppix)
Dysk Twardy + Pamięć Nieulotna (stary MacOS)
Pamięć USB (Pendrive)
Terminal sieciowy (X Window, Terminal Server)
Start bezdyskowy

17. Bezpieczeństwo!

Rozwój komputerów osobistych wyprzedził o kilka lat rozwój sieci. Pierwsze
systemy operacyjne zupełnie zignorowały problem bezpieczeństwa: DOS,
Windows (3.x, 95/98/Milenium), Amiga-OS, MacIntosh.
–No
limits
Unix oraz Windows NT były projektowane z uwzględnieniem wielu
użytkowników oraz sieci komputerowej.
Bezpieczeństwo bezwzględne jest nieosiągalnym ideałem i w rzeczywistości
jest rozważane w kategoriach poziomu ryzyka.

18. Poziomy Uprawnień Użytkowników

Konto uprzywilejowane:
–Unix:
root (ma automatycznie dostęp do absolutnie wszystkiego)
–Windows:
Administrator (musi mieć udostępnione prawo do danego obiektu, całe szczęście
Administrator może udostępniać prawa do absolutnie wszystkich obiektów)
Konta uprzywilejowane
NIGDY nie powinny
być używane podczas
normalnej pracy
użytkownika.
–W
Windows Vista
Microsoft wprowadził
technologię UAC –
User Account Control,
aby zmniejszyć liczbę
programów
wymagających
uprawnień
administratora.
Aspekty socjologiczne.
Liczba programów wymagających uprawnień administratora:

19. Architektury SO

Jednolita (monolityczna)
Warstwowa
Klient-Serwer
Hybrydowa

20. Architektura Jednolita

21. Architektura Warstwowa

22. Architektura Warstwowa – unix

23. Architektura Klient-serwer

24. Architektura Hybrydowa

Stanowi połączenie
architektury jednolitej z
architekturą typu klientserwer
(z mikrojądrem).
Architektura systemu
Windows NT.

25. Procesy


Proces jest elementarną jednostką pracy (aktywności)
zarządzaną przez system operacyjny, która ubiega się o zasoby
systemu komputerowego w celu wykonania programu.
Proces – jest to program w trakcie wykonywania, który do
wykonania określonego zadania potrzebuje pewnych zasobów:
procesor, pamięć, pliki, urządzenia wejścia-wyjścia (klawiatura,
ekran, skaner, karta sieciowa, port szeregowy lub równoległy itp.)
Synonimami procesu, które są stosowane w literaturze są: praca
(job) lub zadanie (task).

Zadanie – odnosi sie zazwyczaj do systemów wsadowych, w danej chwili może być
wykonywane tylko jedno,

Praca - systemy z podziałem czasu (czas wykorzystania zasobów w tym procesora) jest
dzielony na wiele prac (multitasking).

26. Definicje: elementy składowe procesu


program — definiuje zachowanie procesu, („Proces jest czymś
więcej niż samym kodem programu (sekcją tekstu - text section)“).

Program jest obiektem pasywnym, natomiast proces jest
obiektem aktywnym.
dane — zbiór wartości przetwarzanych oraz wyniki,

stos procesu (przechowuje dane tymczasowe).

sterta - Sekcja danych (zawiera zmienne globalne).
zbiór zasobów tworzących środowisko wykonawcze, (np. zawartość
rejestrów procesora, kontekst procesora)
blok kontrolny procesu (PCB, deskryptor) — opis
bieżąca czynność reprezentowana przez wartość licznika rozkazów.
(rejestr PC – program counter).

27. Definicje: Blok kontrolny procesu


Struktura przechowująca informację o
procesie.
Blok kontrolny procesu przechowuje
następujące informacje:

Stan procesu

Licznik rozkazów (pozycja aktualnie
wykonywanej instrukcji)

Rejestry procesora (akumulatory, rejestry
indeksowe, wskaźniki stosu) Informacje o
planowaniu przydziału procesora (np. priorytet
procesu)

Informacje o zarządzaniu pamięcią (rejestry
graniczne, tablice stron, lub tablice
segmentów)

Informacje do rozliczeń (ilość zużytego
procesora i czasu rzeczywistego,
ograniczenia czasowe, numery kont, numery
zadań, numery procesów)

Informacje o stanie wejścia-wyjścia
Stan
procesu
Wskaźnik
Numer procesu (PID)
Licznik rozkazów (PC)
Rejestry
Ograniczenia pamięci
Wykaz otwartych plików
...
...
...

28. Definicje: Stan procesu

29. Definicje: Operacje na procesach

Każdy system operacyjny udostępnia następujące
podstawowe operacje:
Załadowanie, wykonanie
Zakończenie, zaniechanie
Utworzenie procesu, zakończenie
Pobranie atrybutów, określenie atrybutów,
Czekanie czasowe, (np. CTRL+D – czyli
zawieszenie)
Oczekiwanie na zdarzenie,
Przydział i zwolnienie pamięci

30. Zarządzanie procesami


System operacyjny zarządza procesami szeregując je w
odpowiednich kolejkach procesów.
System zarządza kolejnością procesów w kolejkach.

31. Planowanie przydziału procesora -Planiści


Planista - Algorytm szeregowania (ang.
scheduler - planista) to algorytm rozwiązujący
jedno z najważniejszych zagadnień informatyki
- jak rozdzielić czas procesora i dostęp do
innych zasobów pomiędzy zadania, które w
praktyce zwykle o te zasoby konkurują.
Planista zajmuje się przenoszeniem procesów
między kolejkami oraz szereguje procesy w
samych kolejkach.

32. Planowanie przydziału procesora -Planiści


Planiści przykładowi:

Planista długoterminowy (ang. long term scheduler)

Planista krótkoterminowy (ang. short term scheduler)

Kryteria planowania: wykorzystanie procesora, przepustowość, czas
cyklu przetwarzania, czas oczekiwania, czas odpowiedzi
Przykładowe algorytmy planowania:

Pierwszy zgłoszony pierwszy obsłużony (FCFS – first come first serve)

Najpierw najkrótsze zadanie (SJF - Shortest Job First)

Planowanie priorytetowe

Planowanie rotacyjne (RR – round-robin)

33. Planiści w szczegółach


Planista krótkoterminowy, planista przydziału procesora (ang.
CPU scheduler) — zajmuje się wyborem procesu z kolejki
procesów gotowych, dla którego ma być przydzielony
aktualnie procesor.
Planista średnioterminowy (ang. medium-term scheduler) —
zajmuje się wymianą procesów pomiędzy pamięcią główną a
pamięcią zewnętrzną (np. Dyskiem). Wykorzystywany we
wszystkich systemach z pamięcią wirtualną.
Planista długoterminowy, planista zadań (ang. long-term
scheduler, job scheduler) — zajmuje się ładowaniem nowych
programów do pamięci i kontrolą liczby zadań w systemie oraz
ich odpowiednim doborem w celu zrównoważenia
wykorzystania zasobów.

34. Planiści: Definicje


Kwant czasu - minimalny przedział czasu, który jest
wyznaczany przerwaniem zegara, ang. timer)
Opóźnienie ekspedycji (dispatch latency) – czas od momentu
zgłoszenia do momentu rozpoczęcia wykonywania zadania.
Czas oczekiwania – całkowity czas od momentu zgłoszenia,
do momentu zakończenia procesu NIE użytkowany przez
dany proces.
Czas wykonania zadania – całkowity czas od momentu
zgłoszenia zadania do jego zakończenia.

35. Pierwszy zgłoszony pierwszy obsłużony


Załóżmy że procesy P1, P2, P3, nadejdą (zostanie zgłoszone żądanie wykonania) w tym
samym momencie (czyli w tej samej chwili) w kolejności P1,P2,P3.

Załóżmy niezbędny czas użycia procesora dla procesów:

P1 - 24
[kwanty czasu], P2 – 3
[kwanty czasu], P3 – 3
[kwanty czasu]

36. Najpierw najkrótsze zadanie


Załóżmy cztery procesy o czasach użycia procesora w kwantach czasu:
P1 – 6,
P2 – 8,
P3 – 7,
P4 - 3

37. Planowanie priorytetowe


Sam algorytm nie ma dużego wpływu na średni czas oczekiwania, ale odpowiedni
dobór priorytetów pozwala osiągnąć odpowiedni wynik.
Załóżmy następujący przypadek procesów:
Proces
P1
P2
P3
P4
P5
Czas trwania
10
1
2
1
5
Priorytet
3
1
3
4
2

38. Planowanie rotacyjne (RR - round-robin)


Planowanie „sprawiedliwe” z wywłaszczaniem. Wymaga specjalnej architektury
sprzętowej. Wykorzystywane we wszystkich współczesnych systemach
wielozadaniowych, oczywiście z pewnymi modyfikacjami (Gang Scheduling).
Dla ustalonego kwantu czasu: 4ms, oraz dla założonych procesów:
P1 – 24, P2 - 3, P3 - 3
Planowanie tylko dla systemów z podziałem czasu! (Wymagane jest
wywłaszczanie.)

39. Wątek Definicja


Wątek (ang. thread) - jest innym
rodzajem procesu,
wykonywanego współbieżnie w
obrębie jednego zadania (programu).
W jednym procesie może być
wiele wątków.
Wątki tego samego procesu korzystają ze
wspólnego kodu i danych, mają jednak oddzielne stosy.
W systemach wieloprocesorowych, a także w systemach z
wywłaszczaniem, wątki mogą być wykonywane równocześnie
(współbieżnie). Równoczesny dostęp do wspólnych danych grozi jednak
utratą spójności danych i w konsekwencji błędem działania programu.
Do zapobiegania takim sytuacjom wykorzystuje się mechanizmy
synchronizacji wątków: semafory, muteksy, sekcje krytyczne.

40. Wątki


Wątek (inaczej zwany procesem lekkim)
jest to jednostka wykorzystania
procesora w skład której wchodzą:

własny licznik rozkazów,

własny zbiór rejestrów,

własny obszar stosu.
Proces
Dane
(Sterta)
sekcję kodu,

sekcję danych,

zasoby systemu
Poziom na którym następuje
zarządzanie wątkami:

Wątki ma poziomie jądra systemu operacyjnego

Wątki zewnętrzne, (w zewnętrznych bibliotekach)
Licznik
Rozkazów
Rejestry
Stos
Danych
Zasoby Systemu
Wątek 4
Licznik
Rozkazów
Wątek 1
Wątki uruchamiane są w ramach
jednego procesu oraz współużytkują:

Kod
Rejestry
Wątek 2
Licznik
Rozkazów
Rejestry
Stos
Danych
Stos
Danych
Wątek 3
Licznik
Rozkazów
Rejestry
Stos
Danych

41. Wątki w SO Solaris


Trzywarstwowa struktura:

wątki użytkownika

procesy lekkie

wątki poziomu jądra

42. Przykład tworzenia procesu w SO Unix


W unix tworzenie procesów jest efektywne i mało kosztowne obliczeniowo.
Funkcja tworząca
kopię procesu
macierzystego.
#include <stdio.h>
void main()
{
int fork_return;
int count = 0;
fork_return = fork();
system("ps");
if( fork_return > 0)
{
printf("Utworzylem proces potomny o pid=%d.\n",
fork_return);
}
else
{
sleep(200);
printf(“Jestem procesem potomnym.\n”);
}
}

43. Tworzenie procesu w SO Windows


W Windows
tworzenie
procesów jest
kosztowne
czasowo,
#include <windows.h>
#include <stdio.h>
void main( VOID )
{
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory( &si, sizeof(si) );
si.cb = sizeof(si);
ZeroMemory( &pi, sizeof(pi) );
// Start the child process.
if( !CreateProcess( NULL,
// No module name (use command line).
TEXT("MyChildProcess"), // Command line.
NULL,
// Process handle not inheritable.
NULL,
// Thread handle not inheritable.
FALSE,
// Set handle inheritance to FALSE.
0,
// No creation flags.
NULL,
// Use parent's environment block.
NULL,
// Use parent's starting directory.
&si,
// Pointer to STARTUPINFO structure.
&pi )
// Pointer to PROCESS_INFORMATION structure.
)
{
printf( "CreateProcess failed (%d).\n", GetLastError() );
return;
}
// Wait until child process exits.
WaitForSingleObject( pi.hProcess, INFINITE );
dlatego bardzo
intensywnie
wykorzystywane
są wątki.
// Close process and thread handles.
CloseHandle( pi.hProcess );
CloseHandle( pi.hThread );
}

44. Synchronizacja zadań - Problem ucztujących filozofów


Problem ucztujących filozofów (znany też jako problem
pięciu filozofów) to informatyczny problem synchronizacji,
przedstawiony przez E. Dijkstrę w 1965 roku, o następującej
treści:
Przy okrągłym stole siedzi pięciu filozofów. Na stole, przed
każdym z ucztujących, znajduje się talerz oraz pomiędzy
każdymi dwoma sąsiadami - widelec. Oprócz tego na środku
stołu znajduje się miska z makaronem (różne wersje tego
problemu mówią o rybie lub ryżu i pałeczkach). Aby
przystąpić do konsumpcji makaronu filozof musi zaopatrzyć
się w dwa, dobierane pojedynczo, widelce. Po spożyciu
pokarmu filozof odkłada oba widelce i oddaje się własnym
rozważaniom, aż do czasu gdy ponownie zgłodnieje.
Problem polega na opracowaniu takiego algorytmu działań
uczestników uczty, aby żaden z nich nie został zagłodzony
oraz aby nie doszło do blokady całego systemu (w sytuacji,
gdy każdy z filozofów ma po jednym widelcu).
Problem ucztujących filozofów jest prezentacją problemu
synchronizacji pracujących współbieżnie procesów. Istnieje
kilka możliwych rozwiązań tego problemu, między innymi
wykorzystujące arbitrów lub grupy semaforów.

45. Urządzenia wejścia-wyjścia

urządzenia pamięci (dyski,
taśmy, pamięci trwałe)
urządzenia przesyłania
danych (karty sieciowe, modemy)
urządzenia interfejsu człowieka
(monitory, klawiatury, myszki,
drukarki)
urządzenia specjalne (dane pomiarowe,
sterowanie robotami)
urządzenia multimedialne (karty dźwiękowe,
mikrofony, karty TV, kamery)

46. Kategorie urządzeń We/Wy

Urządzenia dzielimy ze względu na:
tryb przesyłania danych:
znakowy – przesyłane jest po kolei bajt po bajcie (przykład
klawiatura, często występuje bufor)
blokowy – przesyłane całe bloki danych (przykład sektor dysku
twardego, ramka komuniatu w karcie sieciowej)
sposób dostępu do danych:
sekwencyjny – dostęp do danych w określonej kolejności, aby
odczytać ostatni bajt musimy wczytać cały strumień danych
(przykład taśma z backupem)
swobodny – mamy dostęp do wolnej informacji poprzez pozycję
w strumieniu danych (przykład: sektor dysku twardego)
organizację przesyłania:
synchroniczna – dane przekazywane są z góry znanym czasie
asynchroniczna– dane moga pojawić się w dowolnym momencie.

47. Punkty komunikacyjne / pośredniczące

Czyli to co łączy system operacyjny z urządzeniami.
Port - jedno urządzenie wykorzystuje
fizyczną wiązkę przewodów
(FireWire, RS 232 – port szeregowy,
LPT – port równoległy, BlueTooth)
Magistrala (szyna komunikacyjna)
do jednej wiązki przewodów
dołączonych jest kilka urządzeń.
skomplikowana praca
wymaga specjalnego układu
zarządzającego komunikacją
USB

48. Szyna komunikacyjna – „rdzeń kręgowy komputera“?

49. Typy szyn komunikacyjnych

Szyna komunikacyjna ISA lub AT BUS - (ang. Industry Standard
Architecture)
Prędkość: 1.5-1.8 MB/s (MB - megabity), Słowo: 16bitów, Zegar:
16MHz
Szyna PCI (ang. Peripheral Component Interconnect - Wprowadzona
w 1993r), Prędkość: 133 MB/s, Słowo: 32bity, Zegar 33MHz,
Zasilanie,
AGP (ang. Accelerated Graphics Port) - Interfejs umożliwia karcie
graficznej używać wyodrębnionego obszaru pamięci operacyjnej w
takiej postaci jakby karta graficzna korzystała z niego jak z pamięci
podręcznej.
AGP - przepustowość: 266 MB/s
AGP 2 - przepustowość: 533 MB/s
AGP 4 - przepustowość: 1066 MB/s

50. Typy szyn komunikacyjnych

PCI Express – NIE jest szyną komunikacyjną
PCI-Express stanowi magistralę lokalną typu szeregowego, łączącą dwa punkty
(Point-to-Point). Nie jest to więc magistrala w tradycyjnym rozumieniu, i nie jest
rozwinięciem koncepcji "zwykłego" PCI w związku z czym nie jest z nim
kompatybilne. Taka konstrukcja eliminuje konieczność dzielenia pasma pomiędzy
kilka urządzeń - każde urządzenie PCI-Express jest połączone bezpośrednio z
kontrolerem. Sygnał przekazywany jest za pomocą dwóch linii, po jednej w
każdym kierunku.
Gniazdo PCI-E 4x, , przepustowość 250 MB/s
Gniazdo PCI-E 16x , przepustowość 4000 MB/s
Gniazdo PCI-E 1x , przepustowość 1000 MB/s
Gniazdo PCI-E 16x , przepustowość 4000 MB/s
Gniazdo PCI , przepustowość 133 MB/s

51. Komunikacja synchroniczna i asynchroniczna

Synchroniczny
Po rozpoczęciu procedury
We/Wy program użytkownika
odzyskuje kontrolę po zakończeniu
wymiany informacji We/Wy.
Asynchroniczny
Po rozpoczęciu procedury We/Wy
program użytkownika odzyskuje
natychmiast kontrolę.
System komputerowy musi
posiadać tablicę urządzeń, która
będzie przechowywać aktualny
stan (idle-wolny lub busy-zajęty).

52. Proces komunikacji z urządzeniem?

Komunikacja za pomocą portów
rejestry sterownika (porty) widoczne
są w przestrzeni adresowej
wejścia-wyjścia systemu komputerowego
i dostępne są przez specjalne rozkazy
(np. in i out w procesorach firmy Intel).
(Dla magistral ISA 16 bitów)
Komunikacja tylko za pośrednictwem
procesora!
odwzorowanie w przestrzeni adresowej pamięci — rejestry sterownika widoczne są w
przestrzeni adresowej pamięci fizycznej i dostępne są pod odpowiednimi adresami tak
samo, jak inne komórki pamięci.
Bezpośredni dostęp do pamięci (DMA – Direct Memory Access)
Używane dla urządzeń o dużej prędkości transferu danych (prędkość zbliżona do
prędkości dostępu do pamięci)
Kontroler urządzenia po inicjalizacji wykonanej przez procesor , samodzielnie wykonuje
transfer bloku danych z bufora bezpośrednio do pamięci.
Przerwanie, które służy do poinformowania o zakończeniu transferu, jest generowane co
przesłany blok danych a nie co każdy bajt.

53. Komunikacja za pomocą rejestrów

Sterownik – kontroler,
bufor – rejestr
(dla ISA 16bitów)
Rejestry urządzeń są 'zmapowane'
(klonowane) pod specjalnymi
adresami w ściśle określonym obszarze pamięci – te obszary
nazywane są portami We/Wy.
System operacyjny może przesłać informację do urządzenia czyli do
portów We/Wy za pośrednictwem specjalnych instrukcji
mikroprocesora:
OUT DX,AX
OUT DX, 220h

54. Przykładowy przydział portów w komputerach zgodnych z PC

Urządzenie
Przedział Adresów wejścia-wyjścia
Sterownik DMA
000 - 00F
Sterownik Przerwań
020 - 021
Czasomierz
040 - 043
Sterownik gier
200 - 20F
Port szeregowy
378 - 37F
IDE
320 - 32F
Port równoległy
378 - 37F
Sterownik graficzny
3D0 - 3DF
Sterownik napędu dyskietek
3F0 - 3F7
Port szeregowy
3F8 – 3FF
UWAGA! Komunikacja z urządzeniami poprzez
porty bardzo obciąża procesor.

55. Bezpośredni dostęp do pamięci: DMA

źródło przesyłania (sterownik urządzenia czy bufor w pamięci)
wskaźnik do miejsca w pamięci (bufor)
liczba bajtów do przesłania

56. Sprawdzanie gotowości danych do odczytu-zapisu

Poprzez odpytywanie (polling) - które polega na tym, że
procesor w odstępach czasowych sprawdza odpowiednie
bity w rejestrze każdego sterownika.
metoda mało wydajna, obciążenie procesora
bufor sterownika może się zapełnić,
mało wydajny algorytm gdy odpytywanie musi być
realizowane zbyt często.
Przerwania - w momencie urządzenie posiada dane, do
odczytania przez procesor zgłasza do niego przerwanie.
przerwania niemaskowalne
przerwania maskowalne (używane przez urządzenia do
zgłaszania żądań obsługi)

57. Odpytywanie – mało wydajne

58. Przerwania – bardziej wydajne

59. Przerwania

Przerwanie przekazuje sterowanie do procedury obsługi
przerwania, zazwyczaj poprzez tablicę wektorów przerwań.
Architektura przerwań musi zachować adres procedury w którym
nastąpiło przerwanie.
Przerwanie niemaskowalne – Pozostałe przerwania są zablokowane
podczas wykonywania procedury obsługi innego przerwania.
Wyjątek jest przerwaniem wygenerowanym przez aplikację na
skutek błędu lub życzenia użytkownika.
System operacyjny jest sterowalny za pomocą przerwań.
Schemat obsługi przerwań
zapamiętanie stanu CPU,
typ przerwania: odpytywanie lub wektor,
wykonanie procedury

60. Klasy przerwań

Programowe – przerwania generowane przez nieprawidłową
instrukcję, np. Przepełnienie wartości zmiennej, dzielenie przez zero,
odwołanie się do zabronionego fragmentu pamięci operacyjnej.
Timer (zegar) – generowane w określonych odstępach czasu
(zazwyczaj co milisekundę) przez procesor. Pozwala systemowi oper.
W określonych odstępach czasowych przejąć kontrolę nad
procesorem.
I/O (We/Wy) – Generowane przez kontroler wejścia/wyjścia, aby
zasygnalizować zakończenie jakiejś operacji przesyłania danych, lub
zakomunikować błąd.
Awaria sprzętowa – Generowane zazwyczaj przez 'chipset' płyty
głównej aby zakomunikować niekorygowalny błąd sprzętowy (np.
awaria zasilania, lub błąd parzystości pamięci).

61. Struktura pamięci

Rejestry – w procesorze.
Cache – pamięć podręczna
Pamięć główna – jedyny typ pamięci,
do której procesor ma bezpośredni
dostęp.
Dyski magnetyczne –
stanowią pamięć pomocniczą.
Taśmy magnetyczne,
dyski optyczne, itp.

62. Pamięć podręczna (cache)

Pamięć o dużej szybkości.
Zawiera kopię fragmentu pamięci oryginalnej.
Wymaga zarządzania pamięcią podręczną (staranne zarządzanie
pamięcią przez system może pozwolić na to 80-90% odwołań do
pamięci będzie w pamięci podręcznej)

63. Przestrzeń adresowa

Przestrzeń adresowa jest to zbiór wszystkich dopuszczalnych
adresów w pamięci.
W zależności od charakteru adresu definiuje się:
przestrzeń fizyczną — zbiór adresów przekazywanych do układów
pamięci głównej (fizycznej).
przestrzeń logiczną — zbiór adresów zarządzany przez procesor
w kontekście aktualnie wykonywanego procesu.
Wirtualna przestrzeń adresowa procesu – Z punktu widzenia procesu
ma on do dyspozycji pewien wirtualny obszar pamięci, którego
adresy nie mają nic wspólnego z fizycznymi adresami pamięci
fizycznej. Jest to właśnie przestrzeń logiczna.

64. Segmentacja pamięci

Segmentacja: Obszar pamięci jest oczywiście odwzorowany w
pamięci fizycznej, ale w zupełnie innej postaci niż widzi go proces
użytkownika. Ciągły obszar pamięci procesu użytkownika może
być w rzeczywistości podzielony pomiędzy różne strony pamięci
fizycznej. Każdy proces posiada dwa zasadnicze segmenty
wirtualnej pamięci:
segment jądra (KERNEL_DS) - dostęp do tego obszaru mają
jedynie procedury systemowe
segment użytkownika (USER_DS) - dostęp do tego obszaru w
sposób swobodny posiada proces użytkownika
Wparcie sprzętowe: Adres wirtualny procesu użytkownika jest
przekształcany na adres fizyczny przez procesor lub specjalny
układ elektroniczny: MMU - Memory Management Unit.

65. Segmentacja pamięci

MMU (Memory Management Unit), to zestaw układów
realizujących dostęp do pamięci fizycznej żądanej przez CPU.
Wśród zadań tych układów znajdują się funkcje translacji
pamięci wirtualnej do pamięci fizycznej, ochronę pamięci,
obsługę pamięci podręcznej, zarządzanie szynami danych oraz,
w prostszych (szczególnie 8-bitowych) systemach, przełączanie
banków pamięci.
Do zapamiętania struktury oraz adresów fizycznych wirtualnych
pamięci procesów służy tablica stron, która przechowuje: adresy
stron, użytkownika w pamięci fizycznej, flagi określające tryby
dostępu do danej strony pamięci, stany strony pamięci, atrybuty
"obecności" - wskazuje czy dana strona znajduje się pamięci
fizycznej czy jest aktualnie zapamiętana w pliku wymiany lub na
partycji wymiany.

66. Stronicowanie i Wymiatanie

Stronicowanie - pamięć wirtualna jest podzielona na równe kawałki
zwane stronami (zazwyczaj 4Kb). Stronicowanie polega na
zapamiętaniu pewnych rzadko używanych stron pamięci operacyjnej
w specjalnym pliku na dysku twardym (dysk wymiany) lub na
specjalnej partycji wymiany.
Wymiatanie polega na usuwaniu pamięci fizycznej procesów, które
aktualnie są zawieszone lub przez długi czas oczekują na jakieś
zdarzenia.
Z obydwu technologii, stronicowanie jest korzystniejsze jeśli chodzi o
zarządzanie zasobami pamięci operacyjnej, natomiast wymaga ono
większych nakładów od systemu operacyjnego do zarządzania tym
procesem. Wymiatanie w wielu przypadkach może nie zadziałać,
natomiast wymaga zdecydowanie mniejszych nakładów procesora.
Współczesne systemy operacyjne używają jedynie technologii
stronicowania.
English     Русский Правила