- ...
uniksowy.1
- Zgodnie z lansowaną w polskiej literaturze
konwencją, nazwa systemu Linux jest pisana w mianowniku przez
x (tj. Linux), natomiast w pozostałych przypadkach użyto formy
spolszczonej, np. Linuksa, Linuksie, itd. Zasada ta
dotyczy także nazwy Unix.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...
uniksowy.2
- Zgodnie z lansowaną w polskiej literaturze
konwencją, nazwa systemu Linux jest pisana w mianowniku przez
x (tj. Linux), natomiast w pozostałych przypadkach użyto formy
spolszczonej, np. Linuksa, Linuksie, itd. Zasada ta
dotyczy także nazwy Unix.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...
uniksowy.3
- Zgodnie z lansowaną w polskiej literaturze
konwencją, nazwa systemu Linux jest pisana w mianowniku przez
x (tj. Linux), natomiast w pozostałych przypadkach użyto formy
spolszczonej, np. Linuksa, Linuksie, itd. Zasada ta
dotyczy także nazwy Unix.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...
uniksowy.4
- Zgodnie z lansowaną w polskiej literaturze
konwencją, nazwa systemu Linux jest pisana w mianowniku przez
x (tj. Linux), natomiast w pozostałych przypadkach użyto formy
spolszczonej, np. Linuksa, Linuksie, itd. Zasada ta
dotyczy także nazwy Unix.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...
uniksowy.5
- Zgodnie z lansowaną w polskiej literaturze
konwencją, nazwa systemu Linux jest pisana w mianowniku przez
x (tj. Linux), natomiast w pozostałych przypadkach użyto formy
spolszczonej, np. Linuksa, Linuksie, itd. Zasada ta
dotyczy także nazwy Unix.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... operacyjnej1.1
- W pamięci operacyjnej musi być przechowywany zawsze co najmniej
blok kontrolny procesu, natomiast część lub całość zawartości jego
przestrzeni adresowej może zostać usunięta na urządzenie wymiany.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... operacyjnej2.1
- W pamięci operacyjnej musi być przechowywany zawsze co najmniej
blok kontrolny procesu, natomiast część lub całość zawartości jego
przestrzeni adresowej może zostać usunięta na urządzenie wymiany.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...idle.2.2
-
Zob. serwer http://www.linuxhq.com/
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... uśpienia.2.3
- W [1] dodany jest jeszcze czas, jaki proces
spędza w oczekiwaniu na załadowanie do pamięci, jednak czas ten dotyczy
algorytmu szeregowania długoterminowego, którego tutaj nie rozpatruje się.
Zob. rozdział 1.1.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... priorytet.
-
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... priorytet.4.1
- <
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... priorytet.5.1
- W klasycznym Uniksie jest
odwrotnie -- niższe wartości oznaczają wyższy priorytet. Wartości
priorytetów od 0 do 49 są przeznaczone dla procesów w trybie jądra, a od 50
do 119 dla procesów w trybie użytkownika. Wartość upri jest z
zakresu od -20 dla procesów o najwyższym priorytecie do 19 dla procesów
o najniższym priorytecie. Opis został "`przeskalowany'', aby można było
łatwiej porównywać opisy z rozdziałów 2.1-2.4.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...
sposób.5.2
- Nagradzane są tylko procesy śpiące.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... procesów:5.3
- W Linuksie proces budzony musi
mieć priorytet o 3 większy niż proces bieżący, aby nastąpiło
przeszeregowanie. Uzasadnione jest to tym, że wybieranie procesu
oraz przełączanie kontekstu są operacjami czasochłonnymi.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... plików.5.4
- Oznacza to, że na poziomie, na którym odbywały się
zmiany (niezależnym od systemu plików) nie można dobrze odróżnić danych
przychodzących z myszki od danych czytanych z pliku na dysku.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... 1 sek.9.1
- Czyli co 1 s
wywołuje się funkcję pokazywaną przez zmienną ts_tick.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...
procesora,9.2
- Moduły zostały zaprojektowane tak, aby można było je także
implementować dla architektur SMP. W pracy właściwość ta nie była używana.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...procfs9.3
- procfs
to system plików, który udostępnia m. in. dane
o jądrze poprzez pliki specjalne. Z procfs korzysta np. program
top, który wyświetla bieżące statystyki systemu.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...procfs.10.1
- Zob. przyp. na str.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...
demony10.2
- Procesy systemowe o specjalnych uprawnieniach.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ....10.3
- Z dobrą dokładnością.
Z lektury treści jądra wynika, że
1 takt Linuksa to 104 taktów fizycznego
zegara tykającego 106+20 (a nie 106) razy na sekundę. Błąd
wynosi zatem teoretycznie około
.
W praktyce niedokładności
fizycznego zegara są dużo większe.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...procfs.11.1
- Zob. przyp. na str.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...
demony11.2
- Procesy systemowe o specjalnych uprawnieniach.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ....11.3
- Z dobrą dokładnością.
Z lektury treści jądra wynika, że
1 takt Linuksa to 104 taktów fizycznego
zegara tykającego 106+20 (a nie 106) razy na sekundę. Błąd
wynosi zatem teoretycznie około
.
W praktyce niedokładności
fizycznego zegara są dużo większe.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... gotowości11.4
- Czas, który proces spędził w kolejce procesów gotowych oczekując
na przydzielenie procesora.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... spełniona.11.5
-
W przeprowadzonych testach miało to miejsce tylko w kilku przypadkach na
kilkanaście tysięcy prób.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...
procesora.13.1
- Parametry w tabelach dobrane są tak, aby nie nastąpiło
zagłodzenie. Każdy proces dostanie w końcu procesor, ale w tym przypadku
procesy działające w tle dostają jeden kwant czasu (10 taktów) co kilka
sekund, więc prawie nie działają.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...
procesora.13.2
- Parametry w tabelach dobrane są tak, aby nie nastąpiło
zagłodzenie. Każdy proces dostanie w końcu procesor, ale w tym przypadku
procesy działające w tle dostają jeden kwant czasu (10 taktów) co kilka
sekund, więc prawie nie działają.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...
ramek14.1
- Ramka to kawałek pamięci fizycznej o ustalonym rozmiarze,
np. na x86 ramki mają 4KB.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... LRU;14.2
- Ang. least recently
used -- najmniej ostatnio używany.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...
ramek15.1
- Ramka to kawałek pamięci fizycznej o ustalonym rozmiarze,
np. na x86 ramki mają 4KB.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... LRU;15.2
- Ang. least recently
used -- najmniej ostatnio używany.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... sprzęt.15.3
- Na przykład procesory x86 mają 4 poziomy
uprzywilejowania, a Linux korzysta tylko z dwóch: najwyższego i
najniższego.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...
fizyczne.15.4
- Istnieją od tej reguły wyjątki -- na przykład mechanizm
pamięci dzielonej pozwala kilku procesom współdzielić tą samą część pamięci
operacyjnej komputera.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... procesów.15.5
-
To jest tablice translacji adresów w trybie jądra są wspólne
dla wszystkich procesów.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... użytkownika.15.6
- W istocie sprawdzenie
samego adresu może
w niektórych architekturach odbywać się sprzętowo, ale np. w x86 nie można
sprawdzić praw dostępu do obszaru pamięci.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... końcowych.15.7
- Potrzebną operacją jest
także znalezienie kolejnego elementu, stąd uporządkowanie list.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...
obszarów.15.8
- Do 1GB przestrzeni wirtualnej można np. zamapować
4-kilobajtowe kawałki pliku, co daje około 256000 obszarów.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... danych16.1
- Tak, aby dominował czas
wyszukiwania obszaru pamięci, a nie czas potrzebny na fizyczne skopiowanie
danych.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...
procesu.16.2
- Informację tę można było przechowywać także
w strukturze mm_struct (gromadzącej dane o przestrzeni adresowej
procesu), gdyż żaden badany tu program nie
współdzielił przestrzeni adresowej z innymi procesami.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... mm_struct16.3
- Struktura ta opisuje przestrzeń
adresową procesu w trybie użytkownika. Zawiera m. in. wskaźnik na korzeń
drzewa AVL.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... pierwszego.16.4
- Uzasadnia się to tym, że
pierwsze uruchomienie aplikacji może, choć nie musi, wiązać się z większym
narzutem systemowym, np. wczytaniem kodu programu z dysku do pamięci
operacyjnej. Kolejne uruchomienia dają zwykle nieco krótszy czas wykonania,
gdyż kod programu znajduje się już w pamięci operacyjnej.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... znikoma16.5
- W porównaniu z liczbą wywołań
potrzebną do stwierdzenia różnicy czasu wykonania. Zob. dalej.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...tex2html_verb_mark16.6
- Program map nie wywołuje funkcji
find_vma() bezpośrednio, ale pośrednio poprzez próbę pobrania
danych z obszaru w swojej przestrzeni adresowej.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... starych,16.7
- Spośród
dziesięciu, które każdy program ma przydzielone standardowo.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... deterministycznie.16.8
- Winę
za to ponosi najprawdopodobniej kod standardowej biblioteki języka C
lub powłoka systemowa (program bash):
nowy proces używa przez krótki czas kodu powłoki zanim wywoła funkcję
systemową execv i tym samym przejdzie do wykonania kodu właściwego
programu.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...węzłów16.9
- Różnica dla lin-avl i lin-lst, por. tab. 8.2.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... szybsze16.10
- Czytaj: program
map wykonuje się szybciej w tym jądrze.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ...
aplikacji.16.11
- Model nieco wyolbrzymiony. Żadna aplikacja nie powoduje
tylu wołań funkcji find_vma() w tak krótkim przedziale czasu.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
- ... komputera.16.12
- Co nie ominęło także
autora niniejszej pracy.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.