dobrucki,systemy operacyjne, op Nieznany

background image

1. STRUKTURY SYSTEMÓW OPERACYJNYCH


Zadania systemów operacyjnych


W odniesieniu do zarządzania procesami system operacyjny odpowiada za następujące
czynności:

tworzenie i usuwanie zarówno procesów użytkowych, jak i systemowych;

wstrzymywanie i wznawianie procesów;

dostarczanie mechanizmów synchronizacji procesów;

dostarczanie mechanizmów komunikacji procesów;

dostarczanie mechanizmów obsługi zakleszczeń.



W odniesieniu do zarządzania pamięcią system operacyjny odpowiada za:

utrzymywanie ewidencji aktualnie zajętych części pamięci wraz z informacją, w
czyim są władaniu;

decydowanie o tym, które procesy mają być załadowane do zwolnionych obszarów
pamięci;

przydzielanie i zwalnianie obszarów pamięci stosownie do potrzeb.



W związku z zarządzaniem plikami system operacyjny odpowiada za:

o

tworzenie i usuwanie plików;

o

tworzenie i usuwanie katalogów;

o

dostarczanie elementarnych operacji do manipulowania plikami i katalogami;

o

odwzorowywanie plików na obszary pamięci pomocniczej;

o

składowanie plików na trwałych nośnikach pamięci (na których informacja nie znika).


Warstwowa struktura systemu MS-DOS
















background image

Struktura warstw systemu OS/2



















Struktura systemu UNIX


















Struktura klient-serwer systemu Windows NT










background image

2. PROCESY



Proces to wykonujący się program. Wykonanie instrukcji jednego procesu musi być
sekwencyjne. Każdy proces ma licznik instrukcji (wskazuje następną instrukcję do
wykonania), stos (m. in. na wywołania podprogramów), segment kodu i segment danych.
Można też spotkać termin zadanie, który będziemy tu uważać za synonim procesu.

Blok kontrolny procesu


Blok kontrolny procesu (ang. Process Control Block – PCB) to zestaw informacji o stanie
procesu. Jest elementem realizacji planowania procesów. Służy do odtworzenia stanu
procesora przy wybraniu tego procesu do wykonywania oraz do zapisu stanu obliczenia przy
usuwaniu go z procesora. Zawiera następujące informacje:

stan procesu,

licznik instrukcji,

wartość rejestrów procesora,

informacje związane z planowaniem,

informacje związane z zarządzaniem pamięcią,

informacje rozliczeniowe,

informacje o stanie wejścia-wyjścia.


Gdy proces przechodzi do stanu aktywny, jego blok kontrolny służy do odtworzenia stanu
obliczenia. Gdy proces opuszcza stan aktywny, w owym bloku zapisuje się stan obliczenia,
ż

eby można je było potem odtworzyć.


Planowanie rotacyjne


RR (Round-Robin), czyli planowanie rotacyjne to strategia, w której każdy proces po kolei
otrzymuje kwant czasu do wykorzystania na procesorze. Zwykle jest to około 100 milisekund.
Ż

aden proces nie czeka więc dłużej niż długość kwantu przemnożona przez liczbę procesów.

Planowanie rotacyjne powoduje znacznie więcej przełączeń kontekstu, jest więc dość
kosztowną strategią, ponieważ wiąże się z dużymi narzutami. Kwant czasu musi być co
najmniej o rząd wielkości większy niż czas przełączenia kontekstu. W przeciwnym przypadku
prace administracyjne (biurokracja systemowa) zduszą rzeczywistą pracę wykonywaną przez
system dla użytkowników.


3. PLANOWANIE PRZYDZIAŁU PROCESORA



Planowanie (ang. scheduling) przydziału procesora leży u podstaw wieloprogramowych
systemów operacyjnych. Dzięki przełączaniu procesora do procesów, system operacyjny
może zwiększyć wydajność komputera.

background image

Cykl faz procesora i wejścia-wyjścia


Sukces w planowaniu przydziału procesora zależy od pewnej, dającej się zaobserwować
właściwości procesów. Otóż wykonanie procesu składa się z następujących po sobie cykli
działania procesora i oczekiwania na urządzenia zewnętrzne. Procesy naprzemiennie
przechodzą od jednego do drugiego z tych dwu stanów. Wykonanie procesu zaczyna się od
fazy procesora (ang. CPU burst). Po niej następuje faza wejścia-wyjścia (ang. I/O burst), po
której proces znów przechodzi do fazy procesora, po czym ponownie – do fazy wejścia-
wyjścia itd. W końcu, w ostatniej fazie procesora, proces – zamiast przejść do następnej fazy
wejścia-wyjścia – wysyła do systemu żądanie zakończenia swojego działania.

Planista przydziału procesora


Gdy tylko procesor zaczyna być bezczynny, system operacyjny musi wybrać do
wykonywania jakiś proces z kolejki procesów gotowych. Wyboru dokonuje planista
krótkoterminowy
(ang. short-term scheduler) czyli planista przydziału procesora. Planista
ten wybiera jeden proces spośród przebywających w pamięci procesów gotowych do
wykonania i przydziela mu procesor.
Kolejka procesów gotowych niekoniecznie musi być kolejką typu „pierwszy na wejściu –
pierwszy na wyjściu” (ang. first-in, first-out – FIFO). Podczas omawiania różnych
algorytmów planowania przekonamy się, że kolejka procesów gotowych może być
zrealizowana jako kolejka FIFO, kolejka priorytetowa, drzewo lub nawet nieuporządkowana
lista. Jednakże teoretycznie w kolejce procesów gotowych wszystkie procesy oczekują w
szeregu na szansę przydzielenia im procesora. Elementami kolejek są na ogół bloki kontrolne
procesów (PCB).

Planowanie wywłaszczające


Decyzje o przydziale procesora mogą zapadać w następujących czterech sytuacjach:

1.

Proces przyszedł od stanu aktywności do stanu czekania (np. z powodu zamówienia na
wejście-wyjście lub rozpoczęcia czekania na zakończenie działania któregoś z
procesów potomnych)

2.

Proces przeszedł od stanu aktywności do stanu gotowości (np. wskutek wystąpienia
przerwania).

3.

Proces przeszedł od stanu czekania do stanu gotowości (np. po zakończeniu operacji
wejścia-wyjścia).

4.

Proces kończy działanie.


W sytuacjach 1 i 4 nie ma możliwości wyboru w kategoriach planowania. Kandydatem do
przydziału procesora musi zostać nowy proces (jeśli taki istnieje w kolejce procesów
gotowych). Natomiast w sytuacjach 2 i 3 można dokonać wyboru.





background image

4. ZAKLESZCZENIA



W środowisku wieloprogramowym kilka procesów może rywalizować o skończoną liczbę
zasobów. Proces zamawia zasoby i jeśli nie są one dostępne w danym czasie, wchodzi w stan
oczekiwania. Istnieje możliwość, że oczekujące procesy nigdy już nie zmienią swego stanu,
ponieważ zamawiane przez nie zasoby są przetrzymywane przez inne czekające procesy.
Sytuację taką nazywa się zakleszczeniem (ang. deadlock).
Większość współczesnych systemów operacyjnych nie rozporządza środkami zapobiegania
zakleszczeniom, prawdopodobnie jednak zostaną one wkrótce we właściwości takie
wyposażone. Problemy zakleszczeń mogą pojawiać się coraz częściej, zważywszy na
aktualne tendencje, w tym coraz większe liczby procesów, programy wielowątkowe, znacznie
więcej zasobów w systemie i większy nacisk kładziony na długowieczne serwery plików i baz
danych aniżeli na systemy wsadowe.

Charakterystyka zakleszczenia


Będąc w stanie zakleszczenia procesy nigdy nie skończą swoich działań, wiążąc zasoby
systemowe i uniemożliwiając rozpoczęcie wykonywania innych zadań.

Warunki konieczne


Do zakleszczeń może dochodzić wtedy, kiedy w systemie zachodzą jednocześnie cztery
warunki:

1.

Wzajemne wykluczanie: Przynajmniej jeden zasób musi być niepodzielny; to
znaczy, że zasobu tego nie może używać w danym czasie tylko jeden proces. Jeśli
inny proces zamawia dany zasób, to musi być opóźniany do czasu, aż zasób zostanie
zwolniony.

2.

Przetrzymywanie i oczekiwanie: Musi istnieć proces, któremu przydzielono co
najmniej jeden zasób i który oczekuje na przydział dodatkowego zasobu,
przetrzymywanego właśnie przez inny proces.

3.

Brak wywłaszczeń: Zasoby nie podlegają wywłaszczaniu, co oznacza, że zasób może
zostać zwolniony tylko z inicjatywy przetrzymującego go procesu, po zakończeniu
pracy tego procesu.

4.

Czekanie cykliczne: Musi istnieć zbiór {P

0

, P

1

, …, P

n

} czekających procesów, takich

ż

e P

0

czeka na zasób przetrzymywany przez proces P

1

, P

1

czeka na zasób

przetrzymywany przez proces P

2

, …, P

n-1

czeka na zasób przetrzymywany przez

proces P

n

, a P

n

czeka na zasób przetrzymywany przez proces P

0

.


Metody postępowania z zakleszczeniami


Zasadniczo mamy trzy różne metody radzenia sobie z problemem zakleszczeń:

Można zastosować protokół gwarantujący, że system nigdy nie wejdzie w stan
zakleszczenia.

background image

Pozwala się systemowi na zakleszczenia, po czym podejmuje się działania
zmierzające do ich wykrycia i usunięcia.

Można też zlekceważyć ten problem zupełnie, uważając, że zakleszczenia nigdy nie
pojawią się w systemie. Takie rozwiązanie stosuje się w większości systemów, m. in.
w systemie UNIX.



5. ZARZĄDZANIE PAMIĘCIĄ



Pamięć

dynamiczna, DRAM (ang. Dynamic

Random

Access

Memory)

rodzaj

ulotnej pamięci półprzewodnikowej RAM, która przechowuje każdy bit danych w
oddzielnym kondensatorze wewnątrz

układu

scalonego.

Poszczególne

jej

elementy

zbudowane są z tranzystorów MOS, z których jeden pełni funkcję kondensatora, a drugi
elementu separującego.
W przeciwieństwie do pamięci statycznych wymagają okresowego odświeżania zawartości
(ze względu na rozładowywanie się kondensatorów). Jednocześnie pojedyncza komórka
pamięci dynamicznej składa się z mniejszej liczby elementów niż analogiczna komórka
pamięci statycznej. Powyższe cechy pozwalają na większe upakowanie elementów
w układach scalonych, co daje efekt w postaci niższych kosztów produkcji i pozwala na
budowę tańszych układów pamięci o danych pojemnościach.
Odświeżanie musi następować w regularnych odstępach czasu i wewnętrznie polega na
ponownym zapisie odczytanej wartości w tych samych komórkach pamięci. Za odświeżanie
odpowiedzialne są układy pamięci, specjalizowane układy wspomagające (kontroler pamięci
– obecnie najczęściej stanowi on integralną część chipsetu) bądź sam procesor (np. Z80).
Pamięci dynamiczne najczęściej łączone są w dwuwymiarowe tablice adresowane numerem
wiersza i kolumny, co pozwala ograniczyć liczbę wymaganych linii adresowych i przyspiesza
sekwencyjny odczyt danych umieszczonych w kolejnych komórkach tego samego wiersza
pamięci.

Pamięci dynamiczne są obecnie szeroko wykorzystywane jako pamięć operacyjna w
urządzeniach, z wyjątkiem układów wymagających niezbyt dużych ilości pamięci (np.
sterowniki) oraz wymagających szybkiego dostępu do pamięci (np. specjalizowany sprzęt
sieciowy).

Popularne odmiany pamięci DRAM


FPM – Fast Page Mode DRAM
EDO – Extended Data Out DRAM
SDRAM – Synchronous DRAM
SDR SDRAM Single Data Rate Synchronous DRAM
DDR SDRAM – Dual Data Rate Synchronous DRAM
DDR2 SDRAM – Dual Data Rate Synchronous DRAM (wersja druga)
DDR3 SDRAM – Dual Data Rate Synchronous DRAM (wersja trzecia)
RAMBUS (RDRAM)


background image

Stronicowanie


Stronicowanie (ang. paging) to schemat zarządzania pamięcią zezwalający na nieciągłość
fizycznej przestrzeni adresowej procesu. Stosując stronicowanie, omija się niebagatelny
problem dopasowywania kawałków pamięci o zmiennych rozmiarach do miejsca w pamięci
pomocniczej, co jest bolączką większości uprzednio omówionych schematów zarządzania
pamięcią. Gdy trzeba wymienić pewne fragmenty kodu lub danych pozostających w pamięci
operacyjnej, wówczas należy znaleźć miejsce w pamięci pomocniczej. Problemy fragmentacji
omówione w odniesieniu do pamięci operacyjnej dotyczą w tym samym stopniu pamięci
pomocniczej, z tym że dostęp do niej jest znacznie powolniejszy co uniemożliwia
upakowanie. Rozmaite formy stronicowania, dzięki ich zaletom w porównaniu z poprzednimi
metodami są w powszechnym użyciu w większości systemów operacyjnych.
Organizacja stronicowania z reguły należała do obowiązków sprzętu. Wszelako w ostatnich
opracowaniach spotyka się stronicowanie zrealizowane na zasadzie bliskich powiązań sprzętu
z systemem operacyjnym, zwłaszcza w mikroprocesorach 64-bitowych.

Stronicowanie hierarchiczne


Większość współczesnych systemów komputerowych umożliwia stosowanie bardzo wielkich
przestrzeni adresów logicznych (od 2

32

do 2

64

). W takim środowisku tablica stron staje się

zbyt duża. Rozważmy na przykład system, w którym logiczna przestrzeń adresowa jest 32-
bitowa. Jeśli rozmiar strony w takim systemie wyniesie 4 KB (2

12

), to tablica stron może

zawierać do miliona wpisów (2

32

/2

12

). Zakładając, że każda pozycja w tablicy ma 4B, każdy

proces może potrzebować do 4 MB fizycznej przestrzeni adresowej na samą tablicę stron. Jest
zrozumiałe, że nie chcielibyśmy przydzielać na taką tablicę ciągłego obszaru w pamięci
operacyjnej. Jednym z prostszych rozwiązań jest tutaj podzielenie tablicy stron na mniejsze
części. Można to wykonać na kilka sposobów.
Jeden sposób polega na zastosowaniu algorytmu stronicowania dwupoziomowego, w którym
sama tablica stron jest podzielona na strony. Aby to zilustrować, powróćmy do naszego
przykładu z 32-bitową maszyną o stronach wielkości 4 KB. Adres logiczny dzieli się na 20-
bitowy numer strony i 12-bitową odległość na stronie. Ponieważ dzielimy tablicę stron na
strony, numer strony podlega więc dalszemu podziałowi na 10-bitowy numer strony i 10-
bitową odległość na stronie. Adres logiczny przyjmuje więc postać








Przy czym s

1

jest indeksem do zewnętrznej tablicy stron, a s

2

oznacza przesunięcie na stronie

tej zewnętrznej tablicy. Ponieważ tłumaczeni adresu przebiega od zewnętrznej tablicy stron
do wewnątrz, schemat ten jest również znany pod nazwą wstępnie odwzorowanej tablicy
stron
(ang. Forward-mapped page table). Architekturę tę zastosowano w procesorze
Pentium-II.


background image

6. SEGMENTACJA PAMIĘCI



Segmentacją (ang. segmentation) nazywa się schemat zarządzania pamięcią, który pomaga w
urzeczywistnieniu opisanego sposobu widzenia pamięci przez użytkownika. Przestrzeń
adresów logicznych jest zbiorem segmentów. Każdy segment ma nazwę i długość. Adresy
określają zarówno nazwę segmentu jak i odległość wewnątrz segmentu. Użytkownik określa
więc każdy adres za pomocą dwóch wielkości: nazwy segmentu i odległości (zestawmy ten
schemat ze stronicowaniem, w którym użytkownik określał tylko pojedynczy adres, dzielony
następnie przez sprzęt na numer strony i odległość – w sposób niewidoczny dla osoby
programującej).
W celu ułatwienia implementacji segmenty są numerowane, a w odwołaniach do nich zamiast
nazw segmentów, używa się numerów segmentów. Adres logiczny tworzy więc parę (krotkę
dwuelementową – ang. two tuple):

<numer-segmentu, odległość>.


Program użytkownika jest zazwyczaj tłumaczony za pomocą kompilatora, przy czym
kompilator automatycznie konstruuje segmenty odpowiadające programowi wejściowemu.
Kompilator Pascala może wytwarzać osobne segmenty dla:

(1)

zmiennych globalnych;

(2)

stosu wywołań procedur, przeznaczonego na przechowanie parametrów i adresów
powrotnych;

(3)

porcji kodu poszczególnych procedur lub funkcji;

(4)

lokalnych zmiennych każdej procedury lub funkcji.


Choć użytkownik może teraz odwoływać się do obiektów w programie za pomoc adresu
dwuwymiarowego, rzeczywista pamięć fizyczna jest wciąż – rzecz jasna –
jednowymiarowym

ciągiem

bajtów.

Należy

zatem

zdefiniować

implementację

odwzorowującą dwuwymiarowe adresy określone przez użytkownika na jednowymiarowe
adresy fizyczne. Odwzorowanie to daje tablica segmentów (ang. segment table). Każda
pozycja w tablicy segmentów składa się z bazy segmentu i granicy segmentu. Baza segmentu
zawiera początkowy adres fizyczny segmentu w pamięci operacyjnej, a granica segmentu
określa jego długość.














background image

7. WINDOWS VISTA


Warstwa programowania systemu Windows



















Na rysunku 11.2 pokazano warstwy systemu operacyjnego Windows. Pod warstwami apletów
i graficznego interfejsu użytkownika (GUI) znajdują się interfejsy programowe
wykorzystywane przez aplikacje. Jak w większości systemów operacyjnych, wspomniane
warstwy składają się w dużej mierze z bibliotek kodu (DLL), które są dynamicznie dołączane
do programów żądających dostępu do odpowiednich funkcji systemu. System Windows
obejmuje też wiele interfejsów programowania, które zaimplementowano w formie usług
działających jako odrębne procesy. Aplikacje komunikują się z usługami trybu użytkownika
za pośrednictwem zdalnych wywołań procedur (ang. Remote Procedure Calls – RPC).

Organizacja trybu jądra systemu Windows

















Wyszukiwarka

Podobne podstrony:
dobrucki,systemy operacyjne, Rodzaje pamięci
,systemy operacyjne,koordynacja Nieznany (2)
,systemy operacyjne, procesy i Nieznany (2)
dobrucki,systemy operacyjne, Pytania
dobrucki,systemy operacyjne, Rodzaje pamięci
Systemy Operacyjne Wykład 2, UŁ WMiI, Wykłady SYS OP, W 2
Podstawy systemow operacyjnych Nieznany
Systemy Operacyjne Ćw 2, UŁ WMiI, Ćwiczenia SYS OP, Ćw 2
,systemy operacyjne, system ope Nieznany (2)
Systemy operacyjne
Planowanie systemow projekt 053 Nieznany
5 Systemy Operacyjne 23 11 2010 Zarządzanie procesami
zasady grupy, java, javascript, oprogramowanie biurowe, programowanie, programowanie 2, UTK, systemy
Systemy Operacyjne lab4, Politechnika Wrocławska, Systemy Operacyjne
format[1], Szkoła, Systemy Operacyjnie i sieci komputerowe, systemy, semestr I

więcej podobnych podstron