No Title
Systemy operacyjne - wprowadzenie
Jacek Kobus
Instytut Fizyki UMK
20010/11
Program wykładu
  1. Wprowadzenie
    • Co to jest system komputerowy?
    • Co to jest system operacyjny?
    • Historia komputerów i systemów operacyjnych
    • Architektura współczesnych komputerów
  2. Jak system komputerowy wykonuje programy?
    • Monitor prosty
    • Praca pośrednia
    • Buforowanie
    • Spooling
    • Wieloprogramowość
    • Systemy z podziałem czasu
    • Systemy rozproszone, systemy czasu rzeczywistego
  3. Struktura systemu komputerowego
    • Systemy z obsługą przerwań
    • Struktura wejścia-wyjścia
    • Dualny tryb pracy
    • Ochrona sprzętowa pamięci
  4. Procesy
    • Model procesu i jego implementacja
    • Proces z poziomu powłoki
    • Zarządzanie procesami
    • Komunikacja międzyprocesowa
    • Synchronizowanie procesów. Zakleszczenia.
  5. Zarządzanie pamięcią
    • Zarządzanie pamięcią bez wymiany i stronicowania
    • Wymiana
    • Pamięć wirtualna
    • Segmentacja
  6. Systemy plików
    • Rodzaje plików
    • Partycje i systemy plików
    • Systemy plików z kroniką, LVM, RAID
  7. Struktura systemów operacyjnych
    • Systemy monolityczne
    • Systemy warstwowe
    • Maszyny wirtualne
    • Model klient-serwer
  8. Przykłady systemów operacyjnych
    • MSDOS, Windows 95/98
    • Windows 2000/NT/XP
    • UNIX, GNU/Linux
  9. Rodzaje systemów komputerowych
  10. System operacyjny GNU/Linux
    • rozwój jądra, dystrybucje Linuksa
    • uruchamianie systemu
    • konfiguracja systemu
    • nadzorowanie pracy systemu komputerowego
Notatki do wykładu:
http://www.fizyka.umk.pl/~jkob/so.pdf
http://www.fizyka.umk.pl/~jkob/so.html, http://www.fizyka.umk.pl/~jkob/so-literatura.html
Systemy operacyjne - systemy (top500, 05/2010)
Figure


CNL - Compute Node Linux, CNK - Compute Node Kernel, SLES - SUSE Linux Enterprise System, CentOS - Community ENTerprise Operating System
Systemy operacyjne - wydajność (top500, 05/2010)
Figure


CNL - Compute Node Linux, CNK - Compute Node Kernel, SLES - SUSE Linux Enterprise System, CentOS - Community ENTerprise Operating System
System komputerowy




System komputerowy wg Tanenbauma
Banking system Airlines res. Games
Compilers Editors Command Interp.
Operating system
Machine language
Microprogramming
Physical devices
System komputerowy


Poziomy abstrakcji współczesnych systemów komputerowych
(wg Null i Lobur)


6 Użytkownik Programy wykonywalne
5 Język wysokiego poziomy C++, Java, FORTRAN, itd.
4 Asembler Kod asemblera
3 Oprogramowanie systemowe System operacyjny, biblioteki
2 Maszyna Architektura zbioru rozkazów
1 Sterowanie Mikrokod lub skonfigurowane sprzętowo
0 Logika cyfrowa Obwody, bramki, itd.

Przykład układu sterującego


NEC PD 765 floppy disk controler for IBM PC:
Dzięki systemom operacyjnym użytkownicy nie muszą zaznajamiać się ze szczegółami działania różnorodnych urządzeń przyłączanych do komputera.
Co to jest system operacyjny?


System operacyjny jest programem, który działa jako pośrednik między użytkownikiem komputera a sprzętem komputerowym. Zadaniem systemu operacyjnego jest tworzenie środowiska, w którym użytkownik może wykonywać programy.


System operacyjny nadzoruje i koordynuje posługiwanie się sprzętem przez różne programy użytkowe, które pracują na zlecenie różnych użytkowników.


System operacyjny jest odpowiedzialny za


Jądro (kernel) jest tą częścią systemu operacyjnego, która działa w komputerze nieustannie. Wszystkie pozostałe programy są programami użytkowymi.
Cechy dobrego systemu operacyjnego
Prehistoria rozwoju komputerów
Prehistoria rozwoju komputerów (cd)
Tablica różnic skończonych
f(n)=n2+n+41=f(n-1)+∆ f(n-1)+∆2f(n)


n f(n) ∆ f(n) 2 f(n)
0 41
1 43 2 2
2 47 4 2
3 53 6 2
4 61 8 2
5 71 10 2

Prehistoria rozwoju komputerów (cd)
Historia rozwoju komputerów i systemów operacyjnych
ENIAC
Electronic Numerical Integrator and Computer (elektroniczne urządzenie numeryczne całkujące i liczące), 1946-1955 (J.Mauchly, J.P.Eckert)
Park w Bletchley, Anglia, 1939-1945
Government Code and Cipher School, a w rzeczywistości siedziba wywiadu, gdzie łamano niemieckie szyfry przy pomocy ulepszonej ,,bomby" M.Rejewskiego, a następnie maszyn Heath Robinson, Mark 1 Colossus (1943) i Mark 2 Colossus (1944).


Mark 2 Colossus:
EDVAC
Electronic Discrete Variable Computer, 1946 (J. von Neumann, Institute for Advanced Studies (IAS)); pomysł pochodzi od Mauchly'ego i Eckerta
Komputery o takiej ogólnej strukturze określa się jako maszyny von Neumanna.
Jednostka sterująca uruchamia IAS, pobierając rozkaz z pamięci i wykonując go (jeden rozkaz w określonym momencie)
Cykle komputera IAS:
Wykonanie operacji mnożenia wymaga wykonania 39 podoperacji.
Lista rozkazów IAS


Kod Reprezentacja Opis
operacji symboliczna
00001010 LOAD MQ przenieś zawartość MQ do AC
00001001 LOAD MQ,M(X)przenieś zawartość komórki X do MQ
00000001 LOAD M(X) przenieś M(X) do akumulatora
00001101 JUMP M(X,0:19) pobierz następny rozkaz z lewej połowy M(X)
00001110 JUMP M(X,20:39) pobierz następny rozkaz z prawej połowy M(X)
00001111 JUMP+M(X,0:19) jeśli liczba w AC ≥ 0 pobierz nast. rozkaz z lewej połowy M(X)
00001111 JUMP+M(X,20:39)jeśli liczba w AC ≥ 0 pobierz nast. rozkaz z lewej połowy M(X)
00000101 ADD M(X) dodaj M(X) do AC i wynik umieść w AC
00000110 SUB M(X) odejmij M(X) od AC i wynik umieść w AC
00001011 MUL M(X) pomnóż M(X) przez MQ i umieść najbardziej
znaczące bity w AC, a najmniej w MQ
00001100 DIV M(X) podziel zawartość AC przez M(X), umieść iloraz w MQ, resztę w AC
00010101 LSH pomnóż AC przez 2 (przesuń w lewo o jedną pozycję)
00010001 RSH podziel AC przez 2 (przesuń w prawo o jedną pozycję)
00010010 STOR M(X,8:19) zamień lewe pole adresowe M(X) na 12 bitów AC z prawej

Pierwsze komputery komercyjne


W roku 1947 Mauchly i Eckert tworzą Eckert-Mauchly Computer Corporation. Powstaje pierwszy komputer komercyjny UNIVAC I (Universal Automatic Computer), który może realizować
UNIVAC I został wykorzystany do powszechnego spisu w 1950 r.


IBM wyprodukowł swój pierwszy komputer elektroniczny z przechowywanym programem do zastosowań naukowych w 1953 r. (model 701). Model 702 (1955) znalazł zastosowanie w biznesie.
Historia rozwoju komputerów i systemów operacyjnych (cd)
Prosty monitor wraz z językiem kontroli zadań (JCL) umożliwiał przetwarzanie wsadowe (batch processing).


Bardziej złożone jestnostki ALU oraz sterujące, ulepszone języki programowania, rozpoczęto dostarczanie oprogramowania systemowego.
Rozwój komputerów IBM z serii 700


Kanał danych jest niezależnym modułem wejścia-wyjścia z własnym procesorem i własną listą rozkazów.


Multiplekser szereguje dostęp procesora i kanałów danych do pamięci, pozwalając tym urządzeniom działać niezależnie.
Historia rozwoju komputerów i systemów operacyjnych (cd)
Zalety układów scalonych:
System IBM 360 (1964):




DEC PDP-8 (1964) - pierwszy minikomputer (magistrala Omnibus)
Historia rozwoju komputerów i systemów operacyjnych (cd)
SSI (Small Scale Integration) mała skala integracji, 10-100 elem./układ
MSI (Medium Scale Integration) średnia skala integracji, 100-1000 elem./układ
LSI (Large Scale Integration) duża skala integracji, 1000-10000 elem./układ
VLSI (Vary Large Scale Integration) bardzo duża skala integracji, powyżej 10000 elem./układ
Generacje komputerów
szybkość
generacja lata technologia (operacji/sek)
1 1946-1957 lampa próżniowa 40 000
2 1958-1964 tranzystor 200 000
3 1965-1971 mała i średnia skala scalenia 1 000 000
4 1972-1977 duża skala scalenia 10 000 000
5 1978- bardzo duża skala scalenia 100 000 000
Początki komputeryzacji w Polsce
Najważniejsze usprawnienia w organizacji i architekturze komputerów:
Figure
Ewolucja mikroprocesorów firmy Intelf
parametr 8008 8080 8086 80386 80486
rok wprowadzenia 1972 1974 1978 1985 1989
liczba rozkazów 66 111 133 154 235
szerokość szyny adresowej 816 20 32 32
szerokość szyny danych 88 1632 32
liczba rejestrów 8 8 16 8 8
adresowalność pamięci 16KB 64KB 1MB 4GB 4GB
szerokość pasma magistrali (MB/s) - 0.75 5 32 32
czas dodawania rejestr-rejestr (μs) - 1.3 0.3 0.125 0.06
Mikroprocesory firmy Intel
parametr 286 386 486 Pentium P6
początek projektowania 1978 1982 1986 1989 1990
rok wprowadzenia 1982 1985 1989 1993 1995
liczba tranzystorów 130K 275K 1.2M 3.1M 5.5M
szybkość (MIPS)1 5 20 100 150
fW.Stallings, Organizacja i architektura systemu komputerowego, WNT, Warszawa, 2000.
Prawo Moore'a (1965)


Gordon Moore - założyciel i wiceprezydent firmy Intel


Sformułowanie I:
Liczba tranzystorów, które można zmieścić na jednym calu kwadratowym płytki krzemowej podwaja się co 12 miesięcy.


Sformułowanie II:
Liczba tranzystorów (na jednostce powierzchni płytki krzemowej), która prowadzi do najmniejszych kosztów na jeden tranzystor, podwaja się w przybliżeniu co 12 miesięcy.


Sformułowanie III:
Wydajność systemów komputerów ulega podwojeniu co około 18 miesięcy.
Jack J.Dongara The Quest for Petascale Computing, Computing in Science & Engineering (2001)
Figure


Architektura współczesnego procesora


Własności procesorów CISC, RISC, superskalarnych (SS)
CISC RISC SS
(a) (b) (c) (d) (e) (f)
rok powstania 1978 1989 1988 1991 1990 1989
liczba rozkazów 303 235 51 94 184 62
rozmiar rozkazu [B] 2-57 1-11 4 32 4 4,8
tryby adresowania 22 22 3 1 2 11
liczba rejestrów 16 8 32 32 32 23-256
cache [KB] 64 8 16 128 32-64 0.5
(a) VAX 11/780, (b) Intel 80486, (c) Motorola 88000
(d) MIPS R4000, (e) IBM RS 6000, (f) Intel 80960


CISC (Complex Instruction Set Computer) komputer o pełnej liście rozkazów


RISC (Reduced Instruction Set Computer) komputer o zredukowanej liście rozkazów
Figure

Pentium II and Pentium III Processors Architecture1
Figure

Ewolucja własności procesorów i pamięci DRAM
Interfejs pomiędzy pamięcią główną a procesorem jest najbardziej krytycznym elementem całego komputera, ponieważ jest on odpowiedzialny za przepływ rozkazów i danych pomiędzy tymi układami.


Jeśli dostęp do pamięci jest niewystarczający, to cykle procesora są marnowane (głodzenie procesora).
Hierarchia pamięci:
Rodzaj dostępu do pamięci:
Rodzaje pamięci półprzewodnikowych:2
Rodzaje pamięci półprzewodnikowych (cd):
Jak organizować pamięć, aby zmniejszyć czas dostępu do danych i instrukcji?


Wydajność algorytmu (MC)SOR. 2. i 4. kolumna - czas w sec., 3. i 5. kolumna - szybkość w MFLOPS/s
system SOR MCSOR
Cray YMP 19.1 (25.7) 3.3 (149)
DEC 8400 5.3 (93.0) 12.1 (40.5)
IBM SP2a 7.3 (67.2) 8.5 (57.7)
SGI Power Challengeb 6.2 (79.1) 12.1 (40.5)
Sun Enterprise 6000c7.7 (63.7) 15.3 (32.1)
Compaq Proliant 5500d 4.3 (114) 9.5 (51.6)
PC Pentium IIIe 4.6 (107) 8.2 (59.8)
ADAX-Omegaf 1.0 (491) 1.6 (307)
Dell Power Edge 1750g 0.68 (722) 1.30 (377)
PC Pentium IVh 0.51 (963) 1.09 (450)
Intel Tigeri 0.98 (501) 1.04 (472)
Sun Fire VZ20j 0.46 (1067) 1.29 (381)
Sun Fire X4400k 0.36 (1380) 0.80 (621)
PC E8400l 0.24 (2047) 0.27 (1819)

a  RS6000/590, 66 MHz wide nodeb  R8000, 90 MHz, 4MB cachec  UltraSparc 167 MHz, 0.5 MB cache
d  550 MHz, Linux Red Hat 8.0, g77e  550 MHz, Linux Red Hat 8.0, g77f  Xeon 1.8 GHz, Linux Red Hat 8.0, g77
g  Xeon 3.06 GHz, Linux Red Hat 8.0, g77 h  Prescott 3.0 GHz, Linux, g77 i  Itanium 2 1.4 GHz, Linux, ifort
j  Opteron 250 2.4 GHz, Linux (FC3), g77k  Opteron 8380 2.5 GHz, Linux CentOS, gfortran
l   Intel E8400 3.00GHz (6 MB cache), Linux (Fedora9), gfortran
Magistrala (E)ISA


(E)ISA ((Extended) Industry Standard Architecture) rozszerzona architektura standardu przemysłowego:
Magistrala PCI


PCI (Peripheral Component Interconnect) interfejs komponentów peryferyjnych:
Uniwersalna szyna szeregowa (USB, Universal Serial Bus):


USB łączy drukarki, skanery, kamery wideo, dyski, stacje dyskietek, klawiatury, myszy, joysticki, telefony, modemy, napędy CD-ROM, napędy taśmowe, urządzenia wideo MPEG-2, data gloves, digitalizatory (digitizers), itp.
Standard USB 2.0 jest wstecznie zgodny z USB 1.1; dla użytkownika nie ulega zmianie sposób podłączania urządzeń, wzrasta jedynie dostępne pasmo.


Dzięki USB tanieje i ulega uproszczeniu sposób podłączania urządzeń generujących duże ilości danych.


Powstanie USB jest wynikiem podejścia typu locked-box przy projektowaniu komputerów. Tworzenie zestawów komputerowych musi być łatwe i tanie. Można to osiągnąć poprzez zewnętrzą rozbudowywalną architekturę, której zasadnicze elementy to:
Interfejsy dysków:


(E)IDE ((Extended)Intelligent/Integrated Drive Electronics) właściwie ATA (AT Attachement)


Ograniczenie: każdy sterownik IDE potrzebuje IRQ i może obsłużyć 2 urządzenia wewnętrzne (masterslave).
Interfejsy dysków (cd):


Szeregowy ATA (serial ATA, SATA) - najnowsza wersja IDE
SCSI (Small Computer Systems Interface)


Urządzenia EIDE i UltraDMA bardziej obciążają CPU niż urządzenia SCSI.
SCSI (Small Computer Systems Interface)
Clock Bus Max BusMax. Bus Max.
STA TermsSpeed Speed Width Lengths(m) Dev.
(MHz) (MB/s) (bits) SE LVD HVD Supp.
SCSI-1 5 5 8 6 (3) 25 8
Wide SCSI 5 10 16 3 (3) 25 8
Fast SCSI 10 10 8 3 (3) 25 8
Fast Wide SCSI 10 20 16 3 (3) 25 16
Ultra SCSI 20 20 8 1.5(3) 25 8
Ultra SCSI 20 20 8 3 - - 4
Wide Ultra SCSI 20 40 16 - (3) 25 16
Wide Ultra SCSI 20 40 16 1.5- - 8
Wide Ultra SCSI 20 40 16 3 - - 4
Ultra2 SCSI 40 40 8 (4) 12 25 8
Wide Ultra2 SCSI40 80 16 (4) 12 25 16
Ultra3 SCSI 80 160 16 (4) 12 (5)16
Ultra320 SCSI 160 320 16 (4) 12 (5)16
Jak system wykonuje zadania?
Monitor prosty


W czasie instalowania taśm jednostka centralna była bezczynna. Komputery były drogie i ich czas był cenny.


Rozwiązanie:


program ładujący
porządkowanie zadań
interpretator kart
sterujących
obsługa wej-wyj
obszar programu
użytkownika


Monitor rezydujący w pamięci
Praca pośrednia
Buforowanie
Spooling
Wieloprogramowość
Systemy z podziałem czasu
Systemy wieloprocesorowe


Rygorystyczne systemy czasu rzeczywistego


Łagodne systemy czasu rzeczywistego: działanie podlega złagodzonym rygorom czasowym. Zastosowania: techniki multimedialne, tworzenie wirtualnej rzeczywistości, urządzenia zdolne do samodzielnej eksploracji.
Systemy z obsługą przerwań


Synchroniczne i asynchroniczne operacje wej-wyj.


W systemach wieloprogramowych i z podziałem czasu operacje wej-wyj nakłada się na działanie jednostki centralnej (asynchroniczne wej-wyj).


Jak ma współdziałać jednostka centralna z urządzeniami wej-wyj?


Aktywne czekanie:
  1. sprawdź czy drukarka jest gotowa na przyjęcie następnego znaku
  2. jeśli nie jest gotowa, to idź do punktu 1
  3. jeśli drukarka jest gotowa (po wydrukowaniu znaku), to sprawdź czy jest do wydrukowania nowy znak
  4. jeśli jest nowy znak, to idź do punktu 1
  5. jeśli nie ma więcej znaków, to drukowanie zostało zakończone


Odpytywanie (polling):
  1. wybierz kolejne urządzenie wymagające obsługi
  2. sprawdź, czy to urządzenie wymaga obsługi
  3. jeśli tak, to uruchom procedurę obsługi urządzenia
  4. jeśli nie, to przejdź do punktu 1.
Jak zapewnić synchronizację działania poszczególnych elementów systemu komputerowego?


Sterownik urządzenia (device controler) związany jest z konkretnym urządzeniem i rozporządza lokalnym buforem i zbiorem rejestrów o specjalnym przeznaczeniu. Odpowiada za przesyłanie danych między urządzeniem zewnętrznym, a własnym buforem.


Moduł/program sterujący/obsługi urządzenia (driver) jest odpowiedzialny od strony systemu operacyjnego za komunikację ze sterownikiem urządzenia.
Systemy z obsługą przerwań są kierowane zdarzeniami generowanymi przez


Jak działa przerwanie?


Procedura obsługi przerwania jest częścią modułu obsługi urządzenia, czyli kodu jądra zarządzającego urządzeniem.
Przerwania (zdarzenia) dzieli się na:
Podział przerwań i wyjątków wg dokumentacji Intela


Przerwania:
Podział przerwań i wyjątków wg dokumentacji Intela (cd)


Wyjątki:
Wady sterowania przerwaniami:


Szybkie urządzenia wej-wyj oraz urządzenia przesyłające duże ilości danych wymagają bezpośredniego dostępu do pamięci (DMA, Direct Memory Access).
Bezpośredni dostęp do pamięci wymaga dodatkowego modułu na magistrali systemowej (moduł DMAC, DMA Controller).


Transfer danych wymaga przekazania przez procesor do modułu DMA rozkazu zawierającego informacje:


Procesor inicjuje przesłanie danych i kontynunuje przetwarzanie do momentu nadejścia przerwania od modułu DMAC.


Uwaga! Sterowanie zdarzeniami (przerwaniami) rodzi problem synchronizacji w dostępie do zasobów.
Struktura wejścia-wyjścia


Każde przerwanie lub wyjątek jest identyfikowane przez liczbę z zakresu od 0 do 255 (Intel nazywa tę 8-bitową liczbę bez znaku wektorem). Wektory przerwań niemaskowalnych i wyjątków są stałe.
Linux używa tylko wektora 128, czyli 0x80, za pomocą którego realizowane są wywołania systemowe. Instrukcja asemblera int 0x80 powoduje przełączenie procesora w tryb jądra i zaczyna się wykonywanie funkcji jądra system_call().
Sterownik urządzenia sprzętowego, generuje przerwanie korzystając z linii IRQ (Interrupt ReQuest, żadanie przerwania). Wszystkie linie IRQ są podłączone do pinów wejściowych układu o nazwie sterownik przerwań, który wykonuje następujące zadania:
  1. monitoruje linie IRQ sprawdzając podnoszone sygnały
  2. jeżeli na linii IRQ zdarzy się podniesienie sygnału:
    1. tłumaczy otrzymany sygnał na odpowiedni wektor
    2. zachowuje wektor w porcie I/O sterownika przerwań, co pozwala na odczytanie go przez procesor za pomocą szyny danych
    3. wysyła sygnał do pinu INTR procesora (generuje przerwanie)
    4. czeka, aż procesor potwierdzi sygnał przerwania poprzez zapisanie do jednego z portów programowalnych sterowników przerwań (ang. Programmable Interrupt Controllers, PIC).
  3. wraca do punktu 1
Przyporządkowanie IRQ do urządzeń I/O (chip 8259A)
IRQ INT urządzenie sprzetowe
0 32 zegar
1 33 klawiatura
2 34 kaskada PIC
3 35 drugi port szeregowy
4 36 pierwszy port szeregowy
5 37 karta dźwiękowa
6 38 stacja dysków
7 39 port równoległy
8 40 zegar systemowy
11 43 interfejs sieciowy
12 44 mysz PS/2
13 45 koprocesor matematyczny
14 46 pierwszy łańcuch sterownik dysków EIDE
15 47 drugi łańcuch sterownika dysków EIDE
APIC dla procesorów Intel Xeon w systemach SMP3
Figure


Przyporządkowywanie przerwań (/var/log/messages):
<Sep 22 09: ... kernel: ttyS00 at 0x03f8 (irq = 4) is a 16550A
Sep 22 09: ... kernel: PCI: Found IRQ 5 for device 00:08.0
Sep 22 09: ... kernel: maestro: Configuring ESS Maestro 2E found at IO 0xD800 IRQ 5
Sep 22 09: ... kernel: parport0: irq 7 detected
Sep 22 09: ... kernel: lp0: using parport0 (polling).
Sep 22 09: ... kernel: ttyS04 at port 0x4880 (irq = 11) is a 16550A
Sep 22 22: ... kernel: eth0: Xircom Cardbus Adapter rev 3 at 0x4800, 00:10:A4:D2:52:55, IRQ 11.
Sep 22 09: ... kernel: ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
Sep 22 09: ... kernel: ide1 at 0x170-0x177,0x376 on irq 15


Monitorowanie przerwań sprzętowych (cd)


Przykład 1: 2.6.23.17-88.fc7 i686
 
# cat /proc/interrupts
           CPU0
  0:    7813392   IO-APIC-edge      timer
  1:      53984   IO-APIC-edge      i8042
  7:          0   IO-APIC-edge      parport0
  8:          7   IO-APIC-edge      rtc
  9:         16   IO-APIC-fasteoi   acpi
 12:     573913   IO-APIC-edge      i8042
 14:     203257   IO-APIC-edge      libata
 15:    5133538   IO-APIC-edge      libata
 16:     920706   IO-APIC-fasteoi   uhci_hcd:usb1, ehci_hcd:usb5, Intel ICH6, i915@pci:0000:00:02.0
 17:          1   IO-APIC-fasteoi   yenta, uhci_hcd:usb4
 18:     481565   IO-APIC-fasteoi   uhci_hcd:usb2, ipw2200
 19:      15593   IO-APIC-fasteoi   uhci_hcd:usb3
NMI:          0
LOC:    3087801
ERR:          0
MIS:          0

Monitorowanie przerwań sprzętowych (cd)


Przykład 2: Linux 2.6.18-92.1.10.el5 x86_64
 
# cat /proc/interrupts
           CPU0       CPU1
  0:  799260896          0    IO-APIC-edge  timer
  1:        140        100    IO-APIC-edge  i8042
  6:          5          0    IO-APIC-edge  floppy
  8:          0          0    IO-APIC-edge  rtc
  9:          0          0    IO-APIC-level  acpi
 12:        115          0    IO-APIC-edge  i8042
 15:    7173047       3915    IO-APIC-edge  ide1
169:          0          0    IO-APIC-level  ohci_hcd:usb1, ohci_hcd:usb2
177:     567795     125000    IO-APIC-level  ioc0
185:    6118456      40533    IO-APIC-level  eth0
NMI:       2770       1163
LOC:  799176280  799176233
ERR:          0
MIS:          0

Ewolucja funkcjonowania wej-wyj
  1. Procesor bezpośrednio steruje urządzeniem peryferyjnym.
  2. Urządzenie peryferyjne dysponuje sterownikiem, brak przerwań.
  3. Urządzenie peryferyjne dysponuje sterownikiem, przerwania.
  4. Moduł wej-wyj ma bezpośredni dostęp do pamięci (poprzez DMA).
  5. Moduł wej-wyj staje się procesorem o wyspecjalizowanej liście rozkazów (program wykonywany jest w pamięci głównej); kanał wej-wyj.
  6. Moduł wej-wyj uzyskuje własną pamięć (staje się komputerem); procesor wej-wyj.
Pierścienie uprzywilejowania4


Figure


Dualny tryb pracy
Dualny tryb pracy (cd)
Przerwania programowe i wywołania systemowe


Z punktu widzenia programisty wywołania systemowe nie istnieją. Programista korzysta jedynie z programowego interfejsu aplikacji (API Application Programming Interface) dostarczanego przez system.5
Interfejs wywołań systemowych w Linuksie (większości Uniksów) stanowi częściowo biblioteka C.


Aplikacja: wywołanie funkcji printf()
Biblioteka C: printf() → write()
Jądro: wywołanie systemowe write()



Wywołania systemowe są niezbędne, gdyż aplikacje działające w przestrzeni użytkownika nie mogą wykonać kodu jądra. Aplikacja nie może bezpośrednio zainicjować wywołania funkcji operacji jądra, ponieważ jądro jest umieszczone i działa w chronionym obszarze pamięci operacyjnej.
Przerwania programowe i wywołania systemowe


Przerwanie programowe implementuje w procesorach rodziny x86 instrukcja int $0x80. Powoduje ona przełączenie systemu do trybu jądra i rozpoczęcie wykonywania wektora przerwania 128, który wskazuje na adres procedury obsługi wywołań systemowych system_call() (zdefiniowana w pliku entry.S).


Numer identyfikujący wywołanie systemowe jest umieszczany w rejestrze eax. Rejestry (ebx, ecx, edx, esi, edi) są (zwykle) używane do przekazywania argumentów wywołania systemowego. Przed użyciem dokonywana jest dokładna weryfikacja przekazanych argumentów.
Przerwania programowe i wywołania systemowe (cd)


Fragment pliku include/asm/unistd.h, który zawiera numery wywołań systemowych:
 
#define __NR_restart_syscall      0
#define __NR_exit		  1
#define __NR_fork		  2
#define __NR_read		  3
#define __NR_write		  4
#define __NR_open		  5
#define __NR_close		  6
#define __NR_waitpid		  7
...
#define __NR_execve		 11
#define __NR_chdir		 12
#define __NR_time		 13
#define __NR_mknod		 14
#define __NR_chmod		 15
...
#define __NR_fchmodat		306
#define __NR_faccessat		307
#define __NR_pselect6		308
#define __NR_ppoll		309

Ochrona sprzętowa

Footnotes:

1dynopt.dtc.umn.edu/documents/IA-OPTIMIZATION-Ref-Manual.pdf
2http://www.netrino.com/Publications/Glossary/MemoryTypes.html
3 Intel 64 and IA-32 Architectures Software Developer’s Manual Volume 3A: System Programming Guide, Part 1
4http://en.wikipedia.org/wiki/Ring_(computer_security).
5API Linuksa jest zgodny ze standardem POSIX (Portable Operating System Interface).


File translated from TEX by TTH, version 3.85.
On 22 Sep 2010, 13:18.