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