Zbigniew S. Szewczak Podstawy Systemów Operacyjnych

Transkrypt

Zbigniew S. Szewczak Podstawy Systemów Operacyjnych
Zbigniew S. Szewczak
Podstawy Systemów
Operacyjnych
Wykład 4
Działanie systemu komputerowego
Toruń, 2004
Działanie komputera
☛Działanie komputera
☛Rozkazy
☛Cykle rozkazowe
☛Przerwania
☛Ochrona sprzętowa
☛Start systemu
System komputerowy
☛Sprzęt (ang. hardware) - zasoby o specyficznej
architekturze oraz organizacji zarządzane przez
system operacyjny
☛System operacyjny - program, który nadzoruje
i koordynuje dostęp programów do zasobów
☛Programy użytkowe - realizują potrzeby
użytkowników systemu komputerowego
(kompilatory, bazy danych, gry,....)
☛Użytkownicy - ludzie, maszyny, komputery..
Działanie komputera
Peryferia
Komputer
Jednostka
centralna
(CPU)
Komputer
Pamięć
główna
Magistrala
systemowa
WejścieWyjście
Linie komunikacyjne
Zespoły komputera
☛Koncepcja J. v. Neumanna - realizacja
☛System sprzętowy (ang. hardwired system) oparty o programowanie na poziomie sprzętu mało elastyczny
☛Sprzęt o przeznaczeniu ogólnym przejmuje dane
i sygnały sterujące i zwraca wyniki
☛Zamiast przebudowywać sprzęt dla każdego
programu wystarczy dostarczyć programiście
nowy zestaw sygnałów sterujących
Rozwiązania sprzętowe i
programowe
dane
sekwencja
funkcji
arytmetycznych
i logicznych
wyniki
sprzęt
przystosowany
do potrzeb
użytkownika
program
przystosowany
do potrzeb
użytkownika
kody rozkazów
interpreter
sygnały sterujące
dane
funkcje
arytmetyczne
i logiczne
o ogólnym
przeznaczeniu
wyniki
Co to jest program?
☛Jak dostarczyć sygnały sterujące?
☛dla każdego kroku wymagany jest nowy zestaw
sygnałów sterujących
☛przypisujemy unikalny kod każdemu z
możliwych zestawów sygnałów sterujących
☛np. ADD, MOVE
☛dodajemy do urządzenia segment, który
przyjmuje kod i generuje sygnały sterujące
☛program staje się sekwencją “kodów”
☛potrzebne jeszcze: moduły we/wy, pamięć i
mamy (prawie) komputer
Struktura komputera
pamięć
CPU
PC
MAR
MBR
IR
I/O AR
I/O BR
.
.
.
rozkaz
rozkaz
.
.
.
dane
dane
dane
.
.
.
moduł we/wy
.
.
.
bufory
PC
- licznik programu
IR
- rejestr rozkazów
MAR - rejestr adresowy pamięci
MBR - rejestr buforowy pamięci
I/O AR - rejestr adresowy we/wy
I/O BR - rejestr buforowy we/wy
Obowiązki CPU
☛CPU musi:
☛pobrać rozkaz
☛zinterpretować rozkaz
☛pobrać dane (z pamięci)
☛przetworzyć dane
☛zapisać (poprawny) wynik
status
shifter
complementer
układy
logiczne i
arytmetyczne
ALU
wewnętrzna magistrala procesora
CPU - struktura wewnętrzna
ścieżki sterowania
.
.
.
rejestry
jednostka
sterująca
Podstawowy cykl rozkazu
start
pobranie
następnego
rozkazu
wykonanie
pobranego
rozkazu
stop
cykl pobierania
cykl wykonania
Cykl pobierania
☛licznik rozkazów (PC) zawiera adres następnego
rozkazu do pobrania
☛procesor pobiera rozkaz z pamięci z pod adresu
wskazanego w PC
☛zwiększa PC
☛o ile nie otrzyma innego polecenia
☛rozkaz jest ładowany do rejestru rozkazu (IR)
☛procesor interpretuje rozkaz i przeprowadza
wymagane działania
Cykl wykonywania
☛procesor-pamięć
☛dane przenoszone między CPU i pamięcią główną
☛procesor-we/wy
☛dane przenoszone między CPU i modułem we/wy
☛przetwarzanie danych
☛wykonywanie opearcji logicznych i arytmetycznych na
danych
☛sterowanie
☛zmiana kolejności wykonania rozkazów (np. skok)
☛kombinacja powyższych
Notacja szesnastkowa
☛0000=0
☛0001=1
☛0010=2
☛0011=3
0100=4
0101=5
0110=6
0111=7
1000=8
1001=9
1010=A
1011=B
1100=C
1101=D
1110=E
1111=F
☛ 1C = 1*16^1 + 12*16^0 = 16 + 12 = 28
☛10F = 1*16^2 + 0*16^1 +15*16^0 = 271
Potęgi dwójki
☛2^0=1, 2^1=2, 2^2=4, 2^3=8, 2^4=16, 2^5=32
☛2^6=64, 2^7=128, 2^8=256, 2^9=512,2^10=1024
☛2^11=2048, 2^12=4096, 2^13=8192, 2^14=16384
☛2^15=32768, 2^16=65536, 2^17=131072
☛2^18=262144, 2^19=524228, 2^20=1048576
☛2^21=2097152, 2^22=4194304, 2^23=8388608
☛2^24=16777216, 2^25=33554432, 2^26=67108864
☛2^27=134217728, 2^28=268435456
☛2^29=536870912, 2^30=1073741824
☛2^31=2147483848, 2^32=4294967296
Potęgi dwójki - równanie
☛ 2^x=1837009112438807238772533121884291174435708
323341912320764228378921226018227792502170655178
106410031869513543422379940437515390337380888530
281490169866645096626079826324996480011020466371
840717942862831841015779916505847418342213823157
072416647461663534479944930598380943114073689972
986392578627551525322901506702543751336089638071
756926624942414956424006864043467306013288352130
115780500668180286133075305583926342690032348477
734464674557650932024654230942433470728879324537
434752626561311315466089324086086809339616248453
580582710912872142644412542122002806968460813165
484333087447260194957618384470016
☛Zad. Oblicz x.
Hipotetyczny komputer
format
rozkazu
format
liczby
0
3 4
operacja
opcode
0 1
S
15
adres
15
liczba całkowita bez znaku (S)
rejestry
procesora
licznik rozkazów (PC) = adres rozkazu
rejestr rozkazów (IR) = wykonywany rozkaz
akumulator (AC) = tymczasowe przechowanie
lista
rozkazów
0001 = ładuj AC z pamięci
0010 = zapisz AC w pamięci
0101 = dodaj z pamięci do AC
rozmiar
pamięci
A=16-4=12
N=2^A=2^12=4096 słów
Hipotetyczny program
☛Dodanie zawartości słowa pamięci pod adresem
940 do zawartości słowa pod adresem 941 i
zapisanie wyniku pod adresem 941
☛PC = 300<- 1940 5941 2941
☛disasemblacja
☛300: 1940 LOAD AC <- M(940)
☛301: 5941 ADD
AC + M(941) -> AC
☛302: 2941 STORE AC -> M(941)
Hipotetyczne wykonanie hipotetycznego
programu na hipotetycznym komputerze
pamięć
300
301
302
1940
5941
2941
...
0003
0002
940
941
CPU
3 0 0 PC
AC
1 9 4 0 IR
pamięć
300
301
302
1940
5941
2941
...
0003
0002
940
941
krok 1
pamięć
300
301
302
940
941
1940
5941
2941
...
0003
0002
CPU
3 0 1 PC
0 0 0 5 AC
5 9 4 1 IR
3+2=5
krok 4
CPU
3 0 0 PC
0 0 0 3 AC
1 9 4 0 IR
pamięć
300
301
302
940
941
1940
5941
2941
...
0003
0002
krok 2
pamięć
300
301
302
940
941
1940
5941
2941
...
0003
0002
CPU
3 0 2 PC
0 0 0 5 AC
2 9 4 1 IR
krok 3
pamięć
300
301
302
940
941
krok 5
CPU
3 0 1 PC
0 0 0 3 AC
5 9 4 1 IR
1940
5941
2941
...
0003
0005
CPU
3 0 2 PC
0 0 0 5 AC
2 9 4 1 IR
krok 6
IBM/370 - formaty rozkazów
Typ
Format maszynowy
RR
Op
0
RX
R1
78
Op
0
RS
SI
11 12 15
78
0
R1
Op
0
B1
L2
B1
B1
15 16 19 20
Op R1, R3, D2(B2)
D2
31
Op D1, B1(I2)
D1
31
D1
11 12 15 16 19 20
L
78
31
15 16 19 20
L1
78
B2
Op R1, D2(X2,B2)
D2
15 16 19 20
78
0
SS
R3
I2
Op
B2
11 12 15 16 19 20
Op
SS
X2
78
0
Op R1, R2
R2
R1
Op
Format asemblera
B2
31 32 35 36
D1
B2
31 32 35 36
Op D1(L1,B1), D2(L2,B2)
D2
47
Op D1(L,B1), D2(B2)
D2
47
IBM/370 - opis rozkazów
☛Op - kod rozkazu 8b
☛R - rejestr ogólny 4b
☛X - rejestr indeksowy 4b
☛B - rejestr bazowy 4b
☛D - przesunięcie 12b
☛L - długość danych 4b lub 8b
☛I - wartość bezpośrednia 8b
IBM/370 - typy rozkazów
☛operacje
☛operacje
☛operacje
☛operacje
☛operacje
☛operacje
☛operacje
transferu danych: L, ST, MVCL
arytmetyczne: A, S, M, D
logiczne: AL, SL
konwersji: CVD, CVB
wejścia-wyjścia: SIO
sterowania systemowego: LPSW, SVC
przekazywania sterowania: BC, EX
MVC D1(L,B1),D2(B2)
☛Transmisja L bajtów z D2(B2) do D1(B1)
☛2048..2052 <- C1C2C3C4C5C6C7C8C9CACB
☛3840..3848 <- F1F2F3F4F5F6F7F8F9
☛B1 = reg1 <- 00002048; B2 = reg2 <- 00003840
☛MVC 0(8,1), 0(2)
☛2048..2052 <- F1F2F3F4F5F6F7F8C9CACB
☛3840..3848 <- F1F2F3F4F5F6F7F8F9
☛B1 = B2 = reg11 <- 00000358
☛0358..0361 <- 00F1F2F3F4F5F6F7F8F9
☛MVC 1(8,11), 0(11)
☛???????
☛
Pentium - typy rozkazów
☛przenoszenie danych: MOV, PUSH
☛arytmetyczne: ADD, SUB, MUL, IDIV
☛logiczne: AND, BTS, SHL, SHR
☛przekazywanie sterowania: JMP, CALL
☛opercje łańcuchowe: MOVS
☛wspieranie języka wysokiego poziomu: ENTER
☛sterowanie za pomocą znaczników: STC
☛rejestr segmentowy: LDS; ochrona: LSL
☛sterowanie systemowe: HLT, WAIT
☛zarządzanie pamięcią podręczną: INVD
Stany cyklu rozkazu (1)
☛obliczanie adresu rozkazu (iac - instruction address
calculation) - adres następnej instrukcji
☛pobieranie rozkazu (if - instruction fetch) wczytanie z pamięci do CPU
☛dekodowanie operacji rozkazu (iod - instruction
operation decoding )
☛obliczanie adresu argumentu (oac - operand
address calculation)
Stany cyklu rozkazu (2)
☛pobieranie argumentu (of - operand fetch)
☛operacja na danych (do - data operation ) operacja na danych
☛przechowanie argumentu (os - operand store) zapisanie wyniku
Graf stanów cyklu rozkazu
dostęp CPU
do pamięci
lub we/wy
if
of
pobieranie
rozkazu
os
pobieranie
argumentu
zapisywanie
argumentu
wiele
wyników
wiele
argumentów
iod
dekodowanie
operacji
wewnętrzna
operacja CPU
iac
obliczenie
adresu
rozkazu
następny
rozkaz
oac
obliczenie
adresu
argumentu
od
operacja
na danych
powrót
łańcuch
lub wektor
oac
obliczenie
adresu
argumentu
We/wy
☛Procesor inicjuje operacje we/wy oraz może
wymieniać dane z modułem we/wy podobnie jak z
pamięcią główna
☛Wymiana danych pomiędzy we/wy i pamięcią może
też mieć miejsce bez udziału CPU (DMA),
☛procesor zrzuca odpowiedzialność za we/wy na moduł we/wy
Przerwania (ang. Interrupts )
☛Mechanizm za pomocą, którego inne moduły
(np. we/wy) mogą przerwać normalne
przetwarzanie danych przez procesor
☛programowe
☛np. przepełnienie arytmetyczne, dzielenie przez 0
☛zegarowe
☛generowane przez wewnętrzny zegar procesora
☛umożliwia wywłaszczanie w systemie wielozadaniowym
☛we/wy - od modułu we/wy
☛sprzętowe
☛np. błąd parzystości pamięci
Cykl przerwania
☛do cyklu rozkazu dodaje się cykl przerwania
☛procesor sprawdza czy nastąpiło przerwanie
☛obecność sygnału przerwania
☛jeśli nie ma przerwania pobiera nowy rozkaz
☛jeśli następuje przerwanie to procesor:
☛zawiesza wykonanie bieżącego programu
☛zachowuje kontekst bieżącego programu
☛ustawia licznik rozkazów (PC) na adres programu obsługi
przerwań (ang. interrupt handler routine)
☛obsługuje przerwanie
☛odtwarza kontekst i kontynuuje przerwany program
Graf stanów cyklu rozkazu z
przerwaniami
adresowanie
pośrednie
pobieranie
rozkazu
pobieranie
argumentu
zapisywanie
argumentu
wiele
argumentów
dekodowanie
operacji
obliczenie
adresu
rozkazu
następny
rozkaz
adresowanie
pośrednie
wiele
wyników
sprawdzenie
wystąpienia
przerwań
obliczenie
adresu
argumentu
operacja
na danych
powrót
łańcuch
lub wektor
obliczenie
adresu
argumentu
brak
przerwań
przerwanie
Programowy przepływ sterowania
program
użytkownika
program
we/wy
1
4
program
użytkownika
program
we/wy
1
program
użytkownika
4
rozkaz
we/wy
1
rozkaz
we/wy
pisz
5
2
stop
pisz
2a
program
obsługi
przerwań
2b
5
pisz
5
pisz
stop
3a
program
obsługi
przerwań
2
pisz
3
4
rozkaz
we/wy
pisz
program
we/wy
stop
3
3b
pisz
pisz
bez przerwań
z przerwaniami, krótkie we/wy
pisz
z przerwaniami, długie we/wy
Programowy przepływ sterowania
- porównanie czasów
czas
czas
czas
1
1
1
4
4
4
oczekiwanie
procesora
operacja
we/wy
5
2a
5
operacja
we/wy
2
oczekiwanie
procesora
operacja
we/wy
2b
5
2
4
4
oczekiwanie
procesora
5
3a
operacja
we/wy
5
4
operacja
we/wy
3b
3
operacja
we/wy
oczekiwanie
procesora
5
3
bez przerwań
z przerwaniami, krótkie we/wy
z przerwaniami, długie we/wy
Przykład - cykI pobierania
☛Zależny od architektury CPU - założenia: MAR
(rejestr adresowy), MBR (rejestr buforowy), PC
(licznik programu), IR (rejestr rozkazu)
☛licznik PC zawiera adres rozkazu do pobrania
☛zawartość PC jest przenoszona do MAR
☛adres z MAR jest umieszczony na szynie adresowwej
☛jednostka sterująca zgłasza zapotrzebowanie na odczyt z
pamięci
☛wynik umieszczony zostaje na szynie danych
☛dane te zostają skopiowane do MBR i IR
☛w tym czasie następuje przygotowanie do pobrania
następnego rozkazu t.j.: PC:=PC+1
JS
IR
MBR
szyna sterowania
MAR
szyna danych
PC
szyna adresowa
Schemat - cykl pobierania
pamięć
PC
- licznik programu
IR
- rejestr rozkazów
MAR - rejestr adresowy pamięci
MBR - rejestr buforowy pamięci
JS
- jednostka sterująca
Przykład - cykl pośredni
☛Jednostka sterująca bada IR
☛Jeśli IR oznacza wykorzystanie adresowania
pośredniego to ma miejsce cykl pośredni
☛bity z MBR zawierające odniesienie do adresu są
kopiowane do MAR
☛jednostka sterująca zgłasza zapotrzebowanie na odczyt z
pamięci
☛wynik (zawartość adresu w MAR) jest wpisany do MBR
JS
IR
MBR
szyna sterowania
MAR
szyna danych
PC
szyna adresowa
Schemat - cykl rozkazu
pamięć
PC
- licznik programu
IR
- rejestr rozkazów
MAR - rejestr adresowy pamięci
MBR - rejestr buforowy pamięci
JS
- jednostka sterująca
Przykład - cykl rozkazu
☛Może przyjmować różnorodne postaci albowiem
zależy od tego, który z całej listy rozkazów
maszynowych znalazł się w IR
☛Cykl rozkazu może więc realizować kombinacje
☛transmisję pomiędzy rejestrami
☛transmisję do/z pamięci
☛transmisję z/do modułu we/wy
☛wywołanie ALU
☛
Przykład - cykl przerwania
☛PC jest kopiowany do MBR
☛jednostka sterująca ładuje do MAR zawartość
specjalnej, zarezerwowanej do tego celu
lokalizacji pamięci (np. wskaźnik stosu)
☛MBR zostaje zapisany w pamięci
☛do PC jest ładowany adres procedury
przerwania (ang. interrupt handling routine)
☛przejście do trybu pobierania
☛pobierany jest następny rozkaz (t.j. pierwszy rozkaz
procedury obsługującej przerwanie)
JS
MBR
szyna sterowania
MAR
szyna danych
PC
szyna adresowa
Schemat - cykl przerwania
pamięć
PC
- licznik programu
MAR - rejestr adresowy pamięci
MBR - rejestr buforowy pamięci
JS
- jednostka sterująca
Przerwania wielokrotne
☛Program może otrzymywać dane z modemu
oraz od drukarki
☛przerwania zablokowane (ang. disable
interrupts)
☛procesor ignoruje inne przerwania w trakcie obsługi
☛przerwanie zostaje zawieszone do czasu zakończenia
☛przerwania obsługiwane są sekwencyjnie
☛przerwania zagnieżdżone
☛przerwanie o niższym priorytecie może zostać przerwane
☛kiedy przerwanie o wyższym priorytecie skończy procesor
wraca do obsługi przerwanego przerwania
Przerwania sekwencyjne
program użytkownika
program obsługi
przerwania X
program obsługi
przerwania Y
Przerwania zagnieżdżone
program użytkownika
program obsługi
przerwania X
program obsługi
przerwania Y
Przykład: drukarka - 2, dysk - 3,
karta sieciowa - 5
☛t=0 - początek programu
☛t=10 - przerwanie od drukarki
☛t=10 - obsługa przerwania drukarki
☛t=15 - przerwanie od karty sieciowej
☛t=15 - obsługa przerwania od karty sieciowej
☛t=20 - przerwanie od dysku
☛t=25 - koniec obsługi przerwania od karty sieciowej
☛t=25 - obsługa przerwania od dysku
☛t=35 - koniec obsługi przerwania od dysku
☛t=35 - kontynuacja obsługi przerwania od drukarki
☛t=39 - koniec obsługi przerwania od drukarki
☛t=40 - koniec programu
Wieloprogramowanie
☛Przerwanie zostało obsłużone
☛Procesor ma więcej niż dwa programy
☛Kolejność wykonania programów zależy od
wzlędnych priorytetów wykonania tych
programów oraz od tego czy czekają one na
zakończenie we/wy
☛Po zakończeniu obsługi przerwania sterowanie
może nie zostać przekazane do przerwanego
programu lecz do programu, który ma wyższy
priorytet wykonania
IBM/370 - przerwania
☛we/wy
☛ sygnalizuje CPU, że kanał we/wy jest wolny, zakończył lub
zaszło zdarzenie opisane w CSW (ang. channel status word)
☛programowe
☛operacja uprzywilejowa, protekcja, adresacja, przepełnienie
☛wywołanie supervisora
☛przejście ze stanu problem do stanu supervisor
☛zewnętrzne
☛przerwanie od zegara lub INT
☛błąd maszyny
☛złe działanie: hard - zatrzymanie CPU, soft - próba obsługi
IBM/370 - obsługa przerwań
☛Z każdym typem przerwania stowarzyszone są dwa
ustalone podwójne słowa w pamięci głównej: stare
PSW oraz nowe PSW
☛W momencie wystąpienia danego typu przerwania
☛bieżące PSW zostaje zapisane przez procesor jako stare PSW
☛nowe PSW staje dla procesora bieżącym PSW: pole adresowe
wskazuje na adres procedury obsługi przerwania
☛po zakończeniu obsługi przerwania stare PSW staje się bieżącym
☛Typy przerwań mogą być zabronione (maskowane)
☛Priorytet przerwań
☛błąd maszyny, programowe, supervisor, zewnętrzne, we/wy
operacja uprzywilejowa, protekcja, adresacja, przepełnienie
IBM/370 - PSW
☛PSW - ang. program status word
☛0-7 maska systemu (przerwania od kanałów we/wy)
☛gdy dany bit = 0 przerwanie jest zamaskowane (zabroniowe)
☛8-12 klucz ochrony
☛13 - błąd maszyny
☛14 - stan czekaj (ładowanie PSW)
☛15 - stan problem (tylko nieuprzywilejowane instrukcje)
☛16-31 - kod przewania
☛32-33 - kod długości instrukcji
☛34-35 - kod warunku
☛36-39 - maska programu (przepełnienie dziesiętne)
☛40-63 - adres instrukcji (spełnia rolę licznika rozkazów)
Pentium II - rejestr EFLAGS
☛EFLAGS opisuje stan procesora
☛CF, PF, AF, ZF, SF, OF - kody warunku
☛TF (trap flag) - ustawia przerwanie po każdej instrukcji
(debuger)
☛IF (interrupt enable flag) - zezwala na przerwania
zewnętrzne
☛NT (nested task) - task zagnieżdżony
☛VM (virtual mode) - tryb wirtualny 8086
☛VIF (virtual interrupt flag) - wieloprogramowanie
☛VIP (virtual interrupt pending) - wieloprogramowanie
Pentium II - rejestry sterowania
☛Cztery rejestry (CR1 - nieużywany) określające
sposób funkcjonowania procesora
☛PE (protected enable) - tryb pracy chroniony
☛TS (task switched) - procesor przełączył zadanie
☛WP (write protect) - strony użytkownika tylko do
odczytu mogą być zapisane jedynie w trybie
nadzorcy
☛CD (cache disable) - blokowanie cache’a
☛PG (paging) - blokowanie stronicowania
Potokowe przetwarzanie rozkazów
☛ang. instruction pipelining
nowy rozkaz
odrzucenie
przy skoku
oczekiwanie
rozkaz
pobranie
następnego
rozkazu
wykonanie
pobranego
rozkazu
wynik
nowy rozkaz
oczekiwanie
cykl pobierania
cykl wykonania
Ochrona sprzętowa
☛Dualny tryb operacji (ang. dual-mode operation)
☛Ochrona wejścia-wyjścia
☛Ochrona pamięci
☛Ochrona jednostki centralnej
Dualny tryb operacji
☛System wielozadaniowy musi chronić system
operacyjny oraz wykonywane programy przed
każdym niewłaściwie działającym programem
☛Należy wyposażyć sprzęt w środki pozwalające
na rozróżnienie przynajmniej dwóch trybów
pracy:
☛tryb użytkownika (ang. user mode) - wykonanie na
odpowiedzialność użytkownika
☛tryb monitora (ang. monitor mode) = tryb nadzorcy (ang.
supervisor mode ) = tryb systemu (ang. system mode) =
tryb uprzywilejowany (ang. privileged mode) - wykonanie
na odpowiedzialność systemu operacyjnego
Dualny tryb operacji (c.d.)
☛Bit trybu (ang. mode bit) w sprzęcie
komputerowym wskazujący na bieżący tryb
pracy : system (0), użytkownik (1)
☛Wystąpienie błędu: przejście w tryb 0
Błą d/przerwanie
monitor
użytkownik
Ustaw tryb 1
☛Rozkazy uprzywilejowane (ang. privileged) tryb systemu
Ochrona wejścia-wyjścia
☛Wszystkie instrukcje wejścia-wyjścia są
uprzywilejowane
☛Ochrona we/wy musi zapewniać, że użytkownik
nigdy nie uzyska kontroli nad komputerem w
trybie monitora (np. program użytkownika w
czasie swego wykonania zapamiętuje nowy
adres w wektorze przerwań we/wy)
Ochrona pamięci
☛Musi zapewniać ochronę pamięci (ang. memory
protection) przynajmniej dla wektora przerwań
oraz systemowych procedur ich obsługi
☛Aby mieć ochronę pamięci musimy mieć dwa
rejestry, które określają zakres dozwolonych
adresów dostępu dla programu:
☛rejestr bazowy (ang. base) - pierwszy dozwolony adres
☛rejestr graniczny (ang. limit) - rozmiar dozwolonego
obszaru
☛Pamięć poza zdefiniowanym zakresem jest
chroniona
Rejestr bazowy i graniczny
definiują przestrzeń adresową
0
monitor
256000
zadanie 1
300040
300040
zadanie 2
420940
120900
zadanie 3
880000
zadanie 4
1024000
rejestr bazowy
rejestr graniczny
Sprzętowa ochrona adresów
baza
CPU
adres
>=
nie
baza+granica
tak
<
tak
nie
przejście pod nadzór systemu operacyjnego:
błąd adresowania
pamięć
Sprzętowa ochrona adresów
☛sprzęt jednostki centralnej porównuje każdy
adresu wygenerowany w trybie użytkownika z
zawartością rejestrów bazowego i granicznego
☛zwartości rejestru bazowego i granicznego mogą
być załadowane jedynie w trybie monitora (load
jest instrukcją uprzywilejowaną)
☛przerwanie protekcja pamięci
Przykład - IBM/360
☛Słowo stanu programu (PSW) zawiera 5-bitowe
pole określające klucz ochrony stowarzyszony z
każdym 2kB blokiem pamięci
☛Klucze ochrony są przechowywane w pamięci
ochrony kluczy
☛Jeżeli procesor kontaktuje się z danym blokiem
pamięci to klucz w PSW jest porównywany z
kluczem odczytanym z pamięci ochrony kluczy
Ochrona CPU
☛Zegar jest ustawiany przez system operacyjny
przed przekazaniem sterowania do programu
użytkownika
☛w trakcie wykonywania programu zegar jest zmniejszany
☛jeśli zegar osiągnie 0 generowane jest przerwanie
☛ładuj zegar jest rozkazem uprzywilejowanym
☛zegar może być wykorzystany do realizacji
podziału czasu (ang. time sharing) - przerwanie
zegarowe następuje po wykorzystaniu kwantu
czasu przez proces
Ogólna architektura systemu
☛Jak dla danej uprzywilejowanej instrukcji we/wy
program użytkowy może ją wykonać?
☛wywołanie systemowe (ang. system call) to
sposób na zamówienie przez proces działania
systemu operacyjnego
☛zwykle przejście do określonej komórki w wektorze
przerwań
☛sterowanie zostaje przekazane do podprogramu obsługi
przerwania w trybie monitora
☛system sprawdza poprawność wywołania systemowego,
wykonuje zlecenie i oddaje sterowanie do nastepnej
instrukcji po wywołaniu systemowym
Użycie odwołania do systemu
przejście do trybu
monitora
przypadek n
rezydentny
monitor
czytaj
wykonaj
operacje we/wy
powrót do
trybu użytkownika
wywołanie
systemowe n
program
użytkownika
Start systemu - Booting
☛Rozruch systemu (ang. booting) - mały
fragment kodu, przechowywany w ROM,
określany jako program rozruchowy (ang.
bootstrap program) lub elementarny program
ładujący (ang. bootstrap loader)
☛Program ładujący jest w stanie zlokalizować kod
jądra systemu, wprowadzić go do pamięci i
rozpocząć jego wykonanie
☛dwuetapowy program ładujący sprowadza do pamięci
bardziej złożony program ładujący, który powoduje
załadowanie jądra systemu
IBM/360 - IPL
☛IPL (ang. Initial Program Load) - instrukcja
☛wczytanie (z dysku) do pamięci bootstrapu (IPL program)
☛IPL relokuje się na koniec pamięci
☛IPL wczytuje (z dysku) na początkowe adresy pamięci jądro
systemu (nucleus)
☛IPL przekazuje sterowanie do program NIP (ang. nucleus
initialization program)
☛NIP wykonuje
☛inicjowanie tablic, czasu, konsoli, kolejek systemu
☛wczytuje do pamięci rezydentne części systemu operacyjnego
☛tworzy zadanie Master Scheduler
☛przekazuje sterowanie do procesu Master Scheduler
☛
Start jądra systemu - Unix
☛Pierwszy sektor na dysku (ang. Master Boot
record, MBR) zawiera program boot, który
zostaje wczytany do pamięci
☛Uruchomiony zostaje program boot, który
☛relokuje się aby zwolnić początkowe adresy pamięci na
jądro systemu
☛czyta katalog root na dysku
☛wczytuje jądro systemu
☛przekazuje sterowanie jądru systemu
☛asemblerowy kod inicjujący jądra systemu
Start systemu - Windows 2000
☛Pierwszy sektor na dysku (ang. Master Boot Record,
MBR) zawiera program boot, który zostaje wczytany
do pamięci
☛Uruchomiony zostaje program boot, który:
☛relokuje się aby zwolnić początkowe adresy pamięci na jądro
systemu
☛czyta katalog root na dysku
☛wczytuje program ntldr
☛przekazuje sterowanie programowi ntldr:
☛czyta plik konfiguracyjny Boot.ini
☛wczytuje pliki: hal.dll, ntoskrnl.exe, bootvid.dll
☛wczytuje drivery (myszy,...)
☛przekazuje sterowanie programowi ntoskrnl.exe
Co dalej ?
☛Mamy komputer wyposażony w niezbędny do
funkcjonowania programów sprzęt
☛Mamy załadowane do pamięci głównej jądro
systemu
☛Przyjrzymy się działaniu systemu operacyjnego
☛zarządzanie zadaniami (procesami)
☛zarządzanie pamięcią
☛zarządzani wejściem/wyjściem
☛sterowanie tym wszystkim
Działanie systemu
Komputer
Peryferia
Pamięć
Procesy
System
Sterowanie
WejścieWyjście
Linie komunikacyjne
Literatura
☛zapoznaliśmy się z architekturą i organizacją
systemu komputerowego jedynie
fragmentarycznie
☛tzn. w takim zakresie jaki jest niezbędny aby zrozumieć
funkcjonowanie systemów operacyjnych
☛W. Stallings - Architektura i organizacja systemu
komputerowego, WNT, 2000
☛ http://William.Stallings.com/COA5e.html
Literatura (c.d.)
☛H. Katzan - Operating systems, Van Nostrand,
1973
☛H. Katzan - Computer Organization and the
System/370, Van Nostrand, 1971
☛J. Stańko - Programowanie w języku Assembler
Jednolitego Systemu Elektronicznych Maszyn
Cyfrowych, cz. I, Architektura EMC R-32,
Politechnika Wrocławska, Wrocław 1977
Strony WWW
☛www.pcguide.com
☛WWW Computer Architecture Home Page
☛CPU Info Center
☛ACM Special Interest Group on Computer
Architecture
☛IEEE Technical Committee on Computer
Architecture
☛Intel Technology Journal
☛Strony domowe producentów komputerów
☛Intel, IBM, etc.
Grupy dyskusyjne (Usenet)
☛comp.arch
☛comp.arch.arithmetic
☛comp.arch.storage
Podsumowanie
☛działanie komputera
☛cykl pobrania, wykonania i przerwania
☛ochrona sprzętowa
☛dualny tryb operacji: monitora i użytkownika
☛uprzywilejowane rozkazy we/wy
☛rejestr bazowy i graniczny
☛machanizm przerwań zegarowych
☛wywołania systemowe w procesie użytkownika