Semafory - podstawowe definicje, wykorzystanie do synchronizacji procesów
Semafor to sposób komunikacji międzyprocesowej, na który składa się struktura programistyczna oraz zbiór procedur, używana do synchronizacji procesów w programowaniu współbieżnym. Najczęstszym zastosowaniem jest kontrola nad dostępem do zasobów systemowych współdzielonych przez kilka procesów, aby zapobiec problemom wynikającym z prób jednoczesnego dostępu i modyfikacji danego zasobu.
Semafory są implementowane nie w obszarze programów użytkowych, lecz w obszarze jądra systemu operacyjnego. Pozwala to na zaawansowaną obsługę procesów chcących uzyskać dostęp do zasobu - m. in. ich wstrzymywanie do czasu zwolnienia semafora, który monitoruje dany zasób, oraz do utrzymywania semafora nawet po zakończeniu procesu, który go utworzył.
Po "założeniu" semafora przy użyciu odpowiedniej funkcji jest on tworzony w jądrze systemu, a proces użytkowy otrzymuje identyfikator semafora, który posłuży do dalszego odwoływania się do danego semafora.
-Metody oszczędzania pamięci - ładowanie i łączenie dynamiczne
Ładowanie dynamiczne- Przy ładowaniu dynamicznym (dynamic loading) podprogram nie jest wprowadzany do pamięci dopóki nie zostanie wywołany.
Gdy jakiś podprogram chce wywołać inny podprogram, musi sprawdzić czy jest on w pamięci - jeżeli nie, to należy wywołaćprogram łączący i ładujący (relocatable linking loader).
Łączenie dynamiczne pozwala na załadowanie biblioteki DLL z programem w odpowiednim miejscu w kodzie źródłowym bez konieczności ponownej konsolidacji (linkowania) programu
Algorytmy szeregowania żądań dostępu do pamięci pomocniczej (dysku)
Jeśli programy nie mieszczą się w pamięci, to system operacyjny zaczyna gromadzić je w pamięci pomocniczej.
W systemach interakcyjnych dostępna pamięć operacyjna jest zwykle mniejsza niż suma pamięci zużywanej przez procesy. Nadmiar procesów musi być przechowywany w pamięci pomocniczej.
wymiana procesów - jeden lub wiele procesów jest przenoszonych do pamięci pomocniczej, aby zrobić miejsce procesowi, któremu planista przydzielił kolejny kwant czasu. Jeśli liczba wolnych stron pamięci spada poniżej zadanego progu, to są one usuwane lub przenoszone do pamięci pomocniczej
Wielowątkowe przetwarzanie procesów.
Przetwarzanie wielowątkowe polega na wydzieleniu różnych funkcji programu i przypisaniu im oddzielnych wątków. Dla przykładu jeden wątek może obsługiwać zdarzenia docierające do programu - np. opcje menu, wciśnięcia klawiszy. Inne wątki współbieżnie mogą wykonywać inne zadania. Efektywnym zastosowaniem wątków jest obsługa funkcji blokujących, z których sterowanie może zostać oddane po nieokreślonym czasie. Często takimi funkcjami są funkcje komunikacyjne - na przykład nawiązywanie połączenia sieciowego.
Aplikacje wielowątkowe mogą uruchamiać wątki w miarę potrzeb, dla pojawiających się na bieżąco czynności. Nie wymaga się więc, aby w aplikacji istniała przez cały czas jej działania stała ilość wątków. Zaleca się jednak, ze względów wydajnościowych, aby ilość pracujących wątków w obrębie jednego procesu nie przekraczała 16. Wątki nie muszą przebywać cały czas w stanie pracującym. Wątki można wstrzymywać lub usypiać. Wątki mogą także być wstrzymane na funkcjach blokujących.
Projektowanie, kodowanie i testowanie programów wielowątkowych jest zadaniem bardzo trudnym. Wzajemne zależności wykonywalnych współbieżnych elementów nie zawsze są deterministyczne. W dowolnym momencie może być wykonywany dowolny z pracujących wątków, powstawanie niepożądanych interakcji jest więc trudne do wykrycia. Do rozwiązania takich problemów stosuje się systemowe metody synchronizacji wątków.
Podział systemów operacyjnych
Systemy operacyjne dzielimy na:
- Systemy jednozadaniowe gdzie niedopuszczalne jest rozpoczęcie wykonywania następnego zadania użytkownika przed zakończeniem poprzedniego,
- Systemy wielozadaniowe gdzie dopuszczalne jest istnienie jednocześnie wielu zadań (procesów), którym zgodnie z pewną strategią przydzielany jest procesor.
Zadania systemu operacyjnego- Zarządzanie zasobami komputera, m.in.: procesorem (a dokładniej czasem procesora), pamięcią, urządzeniami peryferyjnymi oraz przydzielanie zasobów procesom,
- Koordynacja pracy ww. urządzeń poprzez obsługę przerwań oraz odpowiednie na nie reagowanie,
- Ochrona danych i pamięci - tak aby jeden proces, w wyniku błędu lub zamierzonego działania nie mógł zniszczyć lub pozyskać danych innego procesu,
- Automatyzacja najczęściej wykonywanych funkcji
Wyjaśnić pojęcia proces i wątek
Proces - Z definicji jest to po prostu egzemplarz wykonywanego programu. Każdy proces posiada własną przestrzeń adresową. Każdemu procesowi przydzielone zostają zasoby, takie jak: procesor, pamięć, dostęp do urządzeń wejścia-wyjścia
Wątek - to jednostka wykonawcza w obrębie jednego procesu, będąca kolejnym ciągiem instrukcji wykonywanym w obrębie tych samych danych. Wątki tego samego procesu korzystają ze wspólnego kodu i danych, mają jednak oddzielne stosy. W systemach wieloprocesorowych wątki mogą być wykonywane równocześnie.
Omówić pojęcie klastra Klaster dyskowy - jeden lub więcej sektorów na wymiennym lub stałym nośniku danych komputerowych, zarezerwowany dla danego systemu operacyjnego jako podstawowa jednostka przechowywania plików. W obszarze jednego klastra można zapisać tylko jeden plik, nawet jeśli będzie on wypełniał klaster tylko w niewielkim procencie. Większe pliki zajmują oczywiście większą liczbę klastrów.
Wirusy i ich cechy
Wirus komputerowy to najczęściej prosty program komputerowy, który w sposób celowy powiela się bez zgody użytkownika. Wirus komputerowy w przeciwieństwie do robaka komputerowego do swojej działalności wymaga nosiciela w postaci programu komputerowego, poczty elektronicznej itp. Wirusy wykorzystują słabość zabezpieczeń systemów komputerowych lub właściwości systemów oraz niedoświadczenie i beztroskę użytkowników. Niektóre wirusy mają też inne skutki uboczne: kasowanie i niszczenie danych, rozsyłanie spamu, dokonywanie ataków na serwery internetowe, kradzież danych, wyłączenie komputera, wyświetlanie grafiki lub odgrywanie dźwięków, uniemożliwienie pracy na komputerze.
System RAID
RAID ( Nadmiarowa macierz niezależnych dysków ) - polega na współpracy dwóch lub więcej dysków twardych w taki sposób, aby zapewnić dodatkowe możliwości, nieosiągalne przy użyciu jednego dysku. RAID używa się w następujących celach: zwiększenie niezawodności (odporność na awarie), przyspieszenie transmisji danych, powiększenie przestrzeni dostępnej jako jedna całość.
Przetwarzanie rozproszone
Przetwarzanie rozproszone - to wykonywanie określonych zadań użytkownika z wykorzystaniem współdzielonych zasobów połączonych siecią komputerową. Najczęściej wiąże się z heterogenicznością dotyczącą architektury sprzętowej, systemu operacyjnego, platformy programistycznej. Przykładem przetwarzania rozproszonego są obliczenia rozproszone.
Metody przydziału pamięci
Metody przydziału pamięci operacyjnej:
- Brak podziału, wolna przestrzeń adresowa w danej chwili przydzielana jednemu procesowi użytkowemu. Wieloprogramowanie można realizować przez wymiatanie
- Podział pamięci, wolna przestrzeń adresowa podzielona na części przydzielane pojedynczym procesom użytkowym
- Wykorzystanie pamięci wirtualnej, istnieje jedna lub wiele wirtualnych przestrzeni adresowych przydzielanych procesom użytkowym, a mających w niewielkim stopniu pokrycie w pamięci operacyjnej.
Omówić jeden z algorytmów szeregowania procesów
Używany najczęściej:
FIFO - algorytm powszechnie stosowany, jeden z prostszych w realizacji, dający dobre efekty w systemach ogólnego przeznaczenia; zadanie wykonuje się aż nie zostanie wywłaszczone przez siebie lub inne zadanie o wyższym priorytecie
Semantyka spoistości pliku
Semantyka spoistości jest właściwością systemu określającą semantykę jednoczesnego dostępu do pliku dzielonego przez wielu użytkowników. Semantyka powinna określać warunki, przy których zmiany danych wykonywane przez jednego użytkownika są obserwowalne przez innych użytkowników. Zakłada się, że ciąg dostępów do pliku (czytanie i pisanie) jest zawsze zawarty między operacjami otwierania i zamykania pliku - taki ciąg dostępów nazywamy sesją plikową.
Opisać strukturę katalogową graf bez cykli
Graf bez cykli pozwala na umieszczanie podkatalogów i plików w katalogach dzielonych - ten sam plik lub podkatalog może występować w dwu różnych katalogach. Graf bez cykli jest naturalnym uogólnieniem koncepcji katalogu o strukturze drzewiastej. Implementacja plików i podkatalogów dzielonych polega na utworzeniu nowej pozycji w katalogu, zwanej dowiązaniem. Gdy wystąpi odniesienie do pliku, przeszukiwany jest katalog. Pozycja w katalogu jest oznaczona jako dowiązanie i zawiera nazwę rzeczywistego pliku (lub katalogu). Następuje rozwiązanie dowiązania, czyli użycie pamiętanej w nim nazwy ścieżki do zlokalizowania rzeczywistego pliku.
Przetwarzanie równoległe w klastrze
Przetwarzanie równoległe - polega na podzieleniu jednego dużego zdania na mniejsze, nie zależne od siebie podzdania, a następnie uruchomienie każdego z nich w tym samym czasie na osobnym procesorze. Nie każde zdanie można podzielić na mniejsze, niezależne od siebie podzdania, przyrost prędkości wykonania w środowisku do przetwarzania równoległego będzie niewielki
Klasy szeregowania w systemie Windows 2000
Dwie klasy priorytetów
· real-time (niezmienne priorytety),
· variable (dynamiczne priorytety).
Klasy szeregowania w systemie Linux lub Unix
Klasy priorytetów
159-100 real-time,
99-60 kernel,
59-60 time-shared.
Algorytmy szeregowania w systemach czasu rzeczywistego
Podstawowymi algorytmami szeregowania są:
1. kolejkowy bez wywłaszczeń (FIFO)
2. okrężny z wywłaszczaniem (RR)
3. priorytetowy z priorytetami statycznymi lub dynamicznymi
4. dwupoziomowy z kolejkami priorytetowymi
Informacje wykorzystywane w algorytmach szeregowania
· czas przebywania w pamięci
· czas wykorzystania procesora
· priorytet procesu
Macierz dostępu
Macierz dostępu - forma określania praw użytkowników do danego obiektu w systemie lub bazie danych.
Segmentacja pamięci
Segmentacja pamięci - metoda ochrony pamięci używana przy wielozadaniowości. Każdy proces otrzymuje swój własny obszar pamięci, realizowany poprzez rejestry segmentowe.
Stronicowanie pamięci
W systemach komputerowych podział pamięci na mniejsze obszary o ustalonej lub zmiennej wielkości przydzielanie tym blokom adresów fizycznych lub logicznych.
System plików FAT
Aktualnie istnieją trzy rodzaje FAT: FAT12, FAT16 i FAT32. Podstawowa różnica między nimi to liczba bitów, na których koduje się numery jednostek alokacji plików zwanych klastrami. FAT jest to system plików powstały pod koniec lat 70-tych, zastosowany w systemach operacyjnych: MS-DOS, Microsoft Windows 95/98/Me. Określa on rozmieszczenie plików, katalogów i wolnej przestrzeni na takich nośnikach danych jak dyskietki i twarde dyski. Najważniejszym elementem systemu jest tablica informująca o rozmieszczeniu plików na dysku (FAT) od nazwy tej tablicy pochodzi nazwa systemu.
System plików NTFS
NTFS to standardowy system plików systemu Windows NT i jego następców. NTFS pochodzi od HPFS, który został opracowany przez Microsoft i IBM dla systemu OS/2 na miejsce starszego FATu, używanego w MS-DOS. HPFS posiada kilka ulepszeń w porównaniu do FATu, takich jak wsparcie dla metadanych, użycie zaawansowanych struktur w celu polepszenia, wiarygodności i wydajności (zarówno w odniesieniu do szybkości jak i wymaganej pojemności dyskowej). NTFS zawiera wszystkie te ulepszenia oraz dodatkowo listy kontroli dostępu (ACL) i dziennik operacji dyskowych.
System plików NFS
NFS to oparty o UDP protokół zdalnego udostępniania systemu plików. NFS jest de facto standardowym sieciowym systemem plików na Uniksach. Inne protokoły udostępniające taką usługę, jak np. Coda, nie zyskały dużej popularności. NFS został opracowany przez Sun Microsystems. Z NFS wiąże się wiele problemów - przede wszystkim bardzo trudno zapewnić że dana operacja została wykonana.
Pamięć wirtualna
Pamięć wirtualna jest techniką programową a także sprzętową gospodarowania pamięcią operacyjną RAM pozwalającą na przydzielanie pamięci dla wielu procesów, zwalnianie jej i powtórne przydzielanie, w ilości większej niż rzeczywista ilość pamięci fizyczne zainstalowanej w komputerze poprzez przeniesienie danych z ostatnio nie używanej pamięci do pamięci masowej (np. twardego dysku), w sytuacji gdy procesor odwołuje się do danych z pamięci przeniesionej na dysk przesuwa się te dane do pamięci w wolne miejsce, a gdy brak wolnej pamięci zwalnia się ją przez wyżej opisane przerzucenie jej na dysk.
Cechy hasła, reaktywne i proaktywne sprawdzanie hasełDostęp do systemu komputerowego jest chroniony hasłem, również dostęp do indywidualnego pliku może wymagać znajomości hasła.
Sposób ten ma kilka wad:
- jeśli każdemu plikowi przydzielimy osobne hasło, to liczba haseł jest tak wielka, że schemat ten stanie się niepraktyczny (liczbę haseł można ograniczyć wiążąc je z całymi katalogami);
- z każdym plikiem jest związane tylko jedno hasło - ochrona ma charakter „wszystko albo nic”; wprowadzenie ochrony bardziej szczegółowej wymaga wielu haseł dla konkretnego pliku.
Przełączanie kontekstu
Przełączanie kontekstu to komputerowy proces zachowania i odtwarzania stanu procesora (kontekstu), by wiele procesów mogło dzielić zasoby pojedynczego procesora. Przełączanie kontekstu to ważna cecha wielozadaniowego systemu operacyjnego. Z reguły przełączanie kontekstu jest zadaniem intensywnym obliczeniowo i wiele czasu przy projektowaniu systemów operacyjnych poświęca się na optymalizację tego zadania.
Zakleszczenia (wzajemna blokada) procesów
Zakleszczenie procesów - jest to sytuacja, w której zablokowane procesy oczekują na niemożliwy do spełnienia warunek. Przykładem może być sytuacja, w której proces A oczekuje na rezultat wykonania procesu B, podczas gdy ten oczekuje aż zakończy swe działanie proces A.
Zarządzanie pamięcią - krótka charakterystyka podstawowych zadań i metod ich realizacji
Zarządzanie pamięcią operacyjną - pamięć to duża tablica słów lub bajtów, każda z własnym adresem, pamięć jest szybko dostępna i dzielona jest pomiędzy procesor oraz urządzenia wejścia/wyjścia. Pamięć główna jest ulotnym miejscem przechowywania danych, traci swoją zawartość w czasie awarii systemu. System operacyjny jest odpowiedzialny w fazie zarządzania pamięcią za:
- utrzymywanie informacji która część pamięci jest aktualnie używana i przez kogo,
- decydowania który proces powinien zostać wczytany do pamięci jeżeli pamięć jest wolna,
- przydzielanie i zwalnianie pamięci.
Podstawowe pojęcia związane z systemem plików - partycja, klaster, formatowanie nisko- i wysokopoziomowe, plik, katalog, kontrola udziałów
Partycja - logiczny, wydzielony obszar dysku twardego, który może być sformatowany przez system operacyjny w odpowiednim systemie plików. Partycjonowanie jest prostą techniką, którą można uznać za prekursora menadżera dysków logicznych.
Klaster dyskowy - jeden lub więcej sektorów na wymiennym lub stałym nośniku danych komputerowych, zarezerwowany dla danego systemu operacyjnego jako podstawowa jednostka przechowywania plików. W obszarze jednego klastra można zapisać tylko jeden plik, nawet jeśli będzie on wypełniał klaster tylko w niewielkim procencie. Większe pliki zajmują oczywiście większą liczbę klastrów.
Plik jest to nazwany ciąg danych (inaczej zbiór danych), o skończonej długości, posiadający szereg atrybutów i stanowiący dla systemu operacyjnego całość.
Katalog - plik interpretowany przez system plików jako lista odwołań do innych plików lub innych katalogów.
Formatowanie dysku - podzielenie fizycznego i logicznego obszaru dysku na sektory, nadanie im odpowiednich oznaczeń oraz utworzenie systemu plików. Ponieważ formatowanie wiąże się zwykle z utratą wszystkich zapisanych wcześniej danych, często proces ten błędnie kojarzony jest z kasowaniem zawartości dysku.
Tworzenie i usuwanie procesówTworzenie, usuwanie i zawieszanie procesów. Proces może utworzyć nowy proces, za pomocą funkcji systemowej fork. Jej wykonanie polega na rozwidleniu procesu wydającego to zlecenie na dwa procesy: macierzysty i potomny które mogą od tej pory pracować współbieżnie, niezależnie od siebie. Dla procesu potomnego jest inicjalizowany oddzielny obszar pamięci operacyjnej.
System plików extfs, ext2fs
Ext jest to system plików dla Linuksa, obecnie rozwinięty do wersji 2 i 3. Początkowo dla systemu Linux był dostępny tylko jeden typ systemu plików, utworzony na podstawie systemu plików Minix. System plików Miniksa miał poważne niedogodności, takie jak np. ograniczenie rozmiaru partycji i pliku do 64 MB, co spowodowało konieczność napisania dla Linuksa nowego systemu plików od podstaw. W odpowiedzi na taką sytuację Remy Card zaimplementował nowy system plików nazwany rozszerzonym systemem plików - ext. ext dopuszczał pliki i partycje o rozmiarze do 2 GB. Poważną niedogodnością ext był fakt, że po dłuższym działaniu prowadził do dużej fragmentacji.
Ext2 - drugi rozszerzony system plików dla systemu Linux. Ext2 rozwinął się z rozszerzonego systemu plików ext. Rozpoznanie uszkodzenia systemu plików (np. po załamaniu się systemu) następuje przy starcie systemu, co pozwala na automatyczne naprawianie szkód za pomocą oddzielnego programu. System plików ext2 zawiera mechanizm zapobiegający znacznej fragmentacji dysku.Ext2 przy domyślnym rozmiarze bloku (4 kB) obsługuje partycje o wielkości do 16384 GB i pliki o wielkości do 2048 GB. Nazwy plików mogą mieć 255 znaków długości. Ważnym elementem systemu ext2 są wolne pola w strukturach danych - to dzięki nim między innymi możliwa jest konwersja "w locie" do systemu ext3 - wykorzystuje on po prostu część z nich do przechowywania swoich danych.
Podstawowe pojęcia - proces, zasoby, system operacyjny, wywłaszczanie
Proces - to jedno z najbardziej podstawowych pojęć w informatyce. Z definicji jest to po prostu egzemplarz wykonywanego programu. Należy odróżnić jednak proces od wątku - każdy proces posiada własną przestrzeń adresową, natomiast wątki posiadają wspólną sekcję danych.
Wywłaszczenie - to technika używana w środowiskach wielowątkowych, w której menedżer pamięci może wstrzymać aktualnie wykonywane zadanie (np. proces lub wątek), aby umożliwić działanie innemu. Dzięki temu rozwiązaniu zawieszenie jednego procesu nie powoduje blokady całego systemu operacyjnego. W systemach bez wywłaszczenia zadania jawnie informują scheduler, w którym momencie chcą umożliwić przejście do innych zadań. Jeżeli nie zrobią tego w odpowiednim czasie, system zaczyna działać bardzo wolno. Oprócz tego wywłaszczanie umożliwia szczegółowe określanie czasu, w jakim dany proces może korzystać z procesora. Wywłaszczanie w niektórych systemach operacyjnych może dotyczyć nie tylko programów, ale także samego jądra - przykładem takiego systemu jest Linux.
System operacyjny - jest to zbiór programów pośredniczących pomiędzy aplikacjami użytkownika a sprzętem. Czasem potocznie mówi się system operacyjny mając na myśli całość oprogramowania dostarczanego z zakupionym komputerem, czasem samo jądro systemu operacyjnego, czasem z kolei chodzi o całą rodzinę systemów (np. Microsoft Windows).
Zasobem - nazywamy każdy rodzaj sprzętu komputerowego lub zbiór danych który jest niezbędny do wykonywania przez komputer postawionego przez nas zadania. Głównymi zasobami dla systemu operacyjnego są: procesor, pamięć, urządzenia I/O i dane. Podział zasobów: zasób jest nieodnawialny, jeśli jest zużywalny przez wykorzystujący go proces, w przeciwnym wypadku jest odnawialny, zasób jest nieprzywłaszczalny, jeśli nie jest możliwe zawieszenie jego wykonania przez aktywny proces, w przeciwnym wypadku jest przywłaszczalny, zasób jest niepodzielny, jeśli jego wykorzystanie w danej chwili jest możliwe jedynie przez jeden proces w przeciwnym przypadku jest podzielny.
Blok kontrolny procesu - co to jest, jakie informacje powinny się tam znaleźć i dlaczego.
Blok kontrolny procesu - jest to struktura zawierająca następujące informacje o procesie: stan aktualny procesu, unikatowy numer procesu, priorytet procesu, wskaźnik pamięci procesu (obszar pamięci przezeń zajmowanego), wskaźnik przydzielonych procesowi zasobów i stan rejestrów procesora. Tak więc blok kontrolny procesu jest środkiem, poprzez który system operacyjny wpływa na poszczególne procesy. Operacje na procesach: utworzenie procesu, zabicie procesu, uaktywnienie procesu, zmiana priorytetu procesu, blokada procesu.
Szeregowanie procesów - podstawowe algorytmy, ich wady i zalety.
Szeregowanie procesów - w przypadku gdy kilka procesów może być wykonywanych jednocześnie, należy ustalić kolejność ich wykonywania (gdy mamy jeden proces) albo przydział tych procesów do maszyn (gdy mamy wiele procesorów). Czynności prowadzone do ustalania tej kolejności (tego podziału) nazywamy szeregowaniem procesów. Wybrane algorytmy szeregowania to: FCFS, SPT, round-robin (każdemu procesowi przydziela się kwant czasu, po jego upływie proces zostaje przerwany i zostaje obsłużony następny proces z kolejki, a proces poprzednio przerwany zostaje ustawiony na koniec kolejki procesów czkających na wykonanie), szeregowanie według priorytetów.
System plików - zadania systemu operacyjnego związane z zarządzaniem systemami plików.
System plików - metoda przechowywania plików, zarządzania plikami, informacjami o tych plikach, tak by dostęp do plików i danych w nich zgromadzonych był łatwy dla użytkownika systemu. Systemy plików stosuje się dla różnych nośników danych, takich jak dyski, dyskietki, a także w strumieniach danych, sieciach komputerowych, pamięciach. We współczesnych systemach operacyjnych bezpośrednie operowanie na danych w plikach zarezerwowane jest tylko dla systemu operacyjnego, aplikacje mają dostęp tylko do operacji na plikach i mają zabroniony bezpośredni dostęp do nośnika danych.
Ochrona pamięci
Do ochrony kodu i danych systemu operacyjnego przed procesami użytkowników oraz tych procesów wzajemnie przed sobą używa się rejestru przemieszczenia oraz rejestru granicznego. Rejestr przemieszczenia zawiera wartość najmniejszego adresu fizycznego. Rejestr graniczny zawiera górny zakres adresów logicznych.
Przydział ciągły, listowy i indeksowy miejsca na dysku - wady i zalety.
Przydział ciągły pamięci - Pamięć operacyjna jest zwykle podzielona na dwie części: dla rezydującego systemu operacyjnego, zwykle pamięć dolna; dla procesów użytkownika, zwykle pamięć górna. Przydział (alokacja) pamięci: Dziura - blok dostępnej pamięci; dziury różnych rozmiarów mogą być rozproszone po całej pamięci. Kiedy przybywa proces, poszukuje się dla niego odpowiednio obszernej dziury - jeśli taka zostanie znaleziona, to z niej przydziela się mu pamięć. Jeżeli nie znajdzie się wystarczająco duża dziura, to proces musi poczekać. System operacyjny przechowuje tablicę z informacjami o przydzielonych oraz wolnych(dziury)obszarach pamięci.
Sprzętowe wspomaganie stronicowania i segmentacji
Stronicowanie - rozwiązanie problemu fragmentacji zewnętrznej, dopuszczenie do nieciągłości logicznej przestrzeni adresowej, tzn. przydzielanie procesowi dowolnych dostępnych miejsc pamięci fizycznej, ale określonymi porcjami.
Segmentacja jest schematem zarządzania pamięcią urzeczywistniającym sposób widzenia pamięci przez użytkownika. Przestrzeń adresów logicznych jest zbiorem segmentów. Segment to jednostka logiczna, taka jak:, program główny, procedury, funkcje, metody, obiekty, stosy. Dla ułatwienia implementacji segmenty są ponumerowane. Tablica segmentów: odwzorowuje dwuwymiarowe adresy logiczne w jednowymiarowe adresy fizyczne. Każda pozycja składa się z dwu części: Baza segmentu -zawiera początkowy adres fizyczny segmentu w pamięci; Granica segmentu -określa długość segmentu.
Stany procesu, przejścia między stanami.
STANY PROCESOW:
Nowy - proces został utworzony.
Gotowy - proces czeka na przydział procesora.
Aktywny - wykonywane są instrukcje procesu. W systemie z jednym procesorem w danej chwili jeden proces może być aktywny
Oczekujący - proces czeka na zdarzenie (np. Zakończenie operacji we-wy)
Zakończony - proces zakończył działanie
Przejścia pomiędzy stanami procesu:
1. (Nowy => Gotowy). Nowo utworzony proces przechodzi do kolejki procesów gotowych
2. (Gotowy => Aktywny) Proces otrzymuje przydział procesora
3. (Aktywny => Gotowy) Procesowi został odebrany procesor (i przekazany innemu procesowi)
4. (Aktywny => Oczekujący) Proces przechodzi w stan oczekiwania na zajście zdarzenia
5. (Oczekujący => Aktywny) Zdarzenie na które czekał proces nastąpiło
6. (Aktywny => Zakończony). Proces zakończył pracę (np. funkcja exit w Uniksach, błąd ochrony)
7. (Gotowy =>Zakończony oraz Oczekujący => Zakończony). Proces został zakończony przez inny proces
Unix)
Głodzenie procesów
Proces czeka w nieskończoność, pomimo że zdarzenie na które czeka występuje. (Na zdarzenie reagują inne procesy) Przykład: Jednokierunkowe przejście dla pieszych, przez które danej chwili może przechodzić co najwyżej jedna osoba.
Metody dostępu do plików
Dostęp sekwencyjny - Zawartość pliku jest przetwarzana po kolei - jeden rekord logiczny za drugim. Odczytanie informacji z pliku jest możliwe tylko w takiej kolejności w jakiej została ona zapisana. Z tą metodą wiąże się pojęcie wskaźnika bieżącej pozycji w pliku. Otóż jest nim rekord logiczny, na którym są w danej chwili wykonywane operacje. Operacja pisania umieszcza dane na końcu pliku i ustawia wskaźnik na nowo zapisaną informację. Jest to najczęściej stosowana metoda.
Dostęp bezpośredni - Metoda ta jest przeciwieństwem dostępu sekwencyjnego i jest oparta na dyskowym modelu pliku. Plik traktowany jest jako ciąg ponumerowanych bloków lub rekordów. Ta metoda pozwala na czytanie lub zapisywanie dowolnych bloków - nie ma żadnych ograniczeń. Operacje na blokach dyskowych muszą być tak zmodyfikowane aby jako parametr odczytywały numer danego bloku. Numer bloku jest przekazywany przez użytkownika (do systemu operacyjnego) jako parametr funkcji i jest to zazwyczaj numer względem początku pliku. Większość systemów operacyjnych realizuje zarówno dostęp sekwencyjny jak i swobodny. W ostateczności pierwszy z nich może być w łatwy sposób symulowany przez drugi.
Dostęp z wykorzystaniem indeksów. Podstawą tej metody jest dostęp bezpośredni. Z plikiem związana jest dodatkowa struktura - indeks pliku (skorowidz). Indeks ten zawiera wskaźniki do różnych bloków pliku (podobnie jak skorowidz książki zawiera numery stron zawierających konkretne informacje). Aby znaleźć jakąś pozycję w pliku najpierw przeszukuje się indeks, a następnie używa się znalezionego tam wskaźnika w celu bezpośredniego dostępu do pliku i odnalezienia potrzebnej pozycji.
Przechowywanie plików - rekord logiczny a rekord fizyczny.
Rekord logiczny to porcja danych, która z punktu widzenia użytkownika może być rozpatrywana jako całość. Każdy rekord może być stały lub zmiennej długości.
Rekord fizyczny - blok fizyczny; fizyczna jednostka informacji w pliku (pewna liczba bajtów); rekord fizyczny jest zazwyczaj uzależniony od typu i budowy urządzenia.
Cechy i zadania systemu czasu rzeczywistego
System czasu rzeczywistego to urządzenie techniczne, którego działanie jest ograniczone w czasie przez zjawiska zachodzące poza nim samym. Źródłem tych ograniczeń czasowych są zazwyczaj zjawiska fizyczne zachodzące w świecie rzeczywistym.
Struktury klastrów
Klaster - jednostka pamięci dysku, składająca się z jednego lub kilku sąsiadujących ze sobą sektorów. Jest to najmniejsza ilość miejsca na dysku, która może być przeznaczona do przechowywania pliku. Wszystkie systemy plików używane przez system Windows organizują przestrzeń na dyskach twardych na podstawie klastrów. Im mniejszy rozmiar klastra, tym efektywniej są przechowywane informacje na dysku. Rozmiary domyślne są wybierane w celu zredukowania ilości traconego miejsca i stopnia defragmentacji na woluminie. Klaster jest również nazywany jednostką alokacji. Rodzaje procesów
Proces - program w trakcie wykonywania.
Proces jest pojęciem aktywnym (w trakcie działania), natomiast program jest pojęciem pasywnym (zapis pewnych rozkazów na nośniku danych). Wykonywanie procesu musi przebiegać sekwencyjnie, co oznacza, że w danym momencie na zamówienie procesu może być wykonany tylko jeden rozkaz kodu programu. Proces może znajdować się w jednym z pięciu stanów działania:
- nowy - to taki który został właśnie utworzony,
- aktywny - to ten którego instrukcje są aktualnie przetwarzanie przez procesor,
- oczekiwanie - proces oczekuje na wystąpienie jakiegoś zdarzenia np. ukończenie operacji wejścia-wyjścia (wpisanie danych z klawiatury, zakończenie odczytu pliku z dysku, zakończenie wydruku), lub oczekuje pewnych danych, które będą dostępne po zakończeniu działania innego procesu np. wynik obliczeń,
- gotowy - proces który oczekuje na przydział czasu procesora,
- zakończony - to taki którego działanie zakończyło się.
Zadania systemu operacyjnego, związane z zarządzaniem procesami
Pod pojęciem zarządzania procesami rozumiemy tworzenie, usuwanie, wstrzymywanie i wznawianie procesów. System operacyjny dostarczać również musi mechanizmy umożliwiające komunikację pomiędzy poszczególnymi procesami, jak również obsługę zakleszczeń (blokad).
Ważne jest, aby pamiętać, że systemie jednoprocesorowym tylko jeden proces może być aktywny, natomiast wiele procesów może być w stanie oczekiwania lub gotowy.
W systemie jednoprocesorowym mechanizm wielozadaniowości (podział czasu procesora) uzyskuje się dzięki przełączaniu wykonywania procesów przez procesor. Przełączanie to następuje tak często, że użytkownik ma złudzenie pracy z kilkoma programami jednocześnie.
Aby maksymalnie wykorzystać czas pracy procesora, system operacyjny stara się tak zarządzać pracą procesów, aby w momencie kiedy aktywny proces (który może być tylko jeden w systemie jednoprocesorowym) musi oczekiwać na jakieś zdarzenie (np. operacje wyjścia-wejścia), przełącza się go w stan „oczekiwanie”, a aktywuje się inny proces z kolejki procesów oczekujących na przydział pracy procesora. W ten sposób nie marnuje się czasu pracy jednostki centralnej. Mechanizm ten jest podstawą wielozadaniowości i zwany jest wieloprogramowaniem.
Struktura systemu operacyjnego
Strukturę większości współczesnych systemów operacyjnych dość dobrze oddaje ogólny model warstwowy. Główną zaletą podejścia warstwowego jest modularność. Warstwy są wybrane w ten sposób, że każda z nich używa funkcji (operacji) i korzysta z usług tylko niżej położonych warstw.
Omówię krótko główne elementy struktury :
• Dolną warstwę stanowią programy bezpośrednio sterujące sprzętem. W obrębie tej warstwy można wyróżnić procedury bardzo niskiego poziomu, zwykle zapisane w pamięciachstałych i stanowiące element sprzętu.
• Jądro (ang. Kernel) systemu zawiera właściwe mechanizmy systemowe, udostępniane górnym warstwom. Zakres i rodzaj mechanizmów określa własności systemu np. system jednozadaniowy, wielozadaniowy, czasu rzeczywistego.
Ogólnie mechanizmy systemowe należą zwykle do jednej z dwóch grup :
a) zarządzania procesami (w tym zarządzania pamięcią).
b) zarządzania systemem plików (w tym zarządzania urządzeniami).
• Powłoka stanowi obecnie typowy element systemu operacyjnego. Zwykle stanowi modułwymienny; standardowo z systemu dostarczany jest co najmniej jeden program powłoki. Powłoka może spełniać w typowym systemie kilka funkcji:
a) realizuje interfejs użytkownika
b) stanowi interpretator specjalnego języka powłoki, umożliwiając użytkownikowi „programowanie” w języku wysokiego poziomu.
c) często realizuje proste polecenia systemowe (nazywane w niektórych systemach poleceniami wewnętrznymi).
• Polecenia systemowe stanowią programy dostarczane w komplecie z jądrem systemu operacyjnego.
• Z systemem operacyjnym jest zwykle mocno związane oprogramowanie narzędziowe i usługowe np.:
- edytory
- translatory
- programy łączące (konsolidatory, ang. Linkier)
- programy uruchomieniowe (debugger)
8
3