SYSTEM OPERACYJNY jest programem, który działa jako pośrednik miedzy użytkownikiem a sprzętem komputerowym. Cele systemu operacyjnego? -Tworzenie środowiska, w którym użytkownik może wykonywać programy - zapewnienie wygody użycia - Wydajna eksploatacja sprzętu komputerowego Zadania systemu operacyjnego Nadzór i koordynacja posługiwania się sprzętem komputerowym przez różne programy użytkowe, Tworzenie środowiska pracy dla innych programów, Rozdzielanie zasobów systemu komputerowego,Zapobieganie konfliktom, Nadzorowanie programów użytkowych, Obsługa błędów Zapobieganie niewłaściwemu użyciu komputera. FUNKCJE SYSTEMOWE a) Tworzą interfejs miedzy wykonywanym programem a systemem operacyjnym b)Dostępne są trzy ogólne sposoby przekazania parametrów z programu do funkcji systemowej: Poprzez rejestry; Poprzez umieszczenie w tablicy w pamięci, i adres tablicy w rejestrze; Umieszczenie na stosie przez program i pobranie ze stosu przez SO np. program czytający zawartość jednego pliku i kopiujący ją do drugiego. Funkcje systemowe dzielimy na: Nadzorowanie procesów: Zakończenie (end)- zaniechanie (abort), Załadowanie (load)- wykonanie (execute), Utworzenie (create)- zakończenie (terminate), Pobranie atrybutów (get process atribute)- określenie atrybutów (set process atribute), Czekanie czasowe (wait for time), Oczekiwanie na zdarzenie (wait for event)- sygnalizacja zdarzenia (signal event), Przydział i zwolnienie pamięci (allocate and frez memory ) Operacje na plikach: utworzenie pliku - usuniecie pliku, otwarcie pliku - zamkniecie, czytanie - zapisywanie - „przewijanie” pobranie atrybutów - ustawienie atrybutów Operacje na urządzeniach: zamówienie - zwolnienie urządzenia, czytanie - pisanie - „przewijanie”, pobranie atrybutów urządzenia - określenie atrybutów urządzenia, logiczne przyłączenie lub odłączenie urządzenia Utrzymywanie informacji: Pobranie czasu, daty, określenie czasu, daty; Pobieranie informacji o systemie (np. wersja); Pobranie danych systemowych, ustawienie; Pobranie atrybutów procesu, pliku, urządzenia; Określenie atrybutów procesu, pliku, urządzenia Komunikacja: Utworzenie połączenia komunikacyjnego- usuniecie, Nadanie- odebranie komunikatu, Przekazanie informacji o stanie, Przyłączenie lub odłączenie urządzeń zdalnych PROGRAMY SYSTEMOWE Manipulowanie plikami, Informowanie o stanie systemu, Tworzenie i zmienianie zawartości plików, Translatory języków programowania, Ładowanie i wykonywanie programów, Komunikacja Programy dostarczane wraz z systemem, to przede wszystkim interpreter poleceń a także m.in. procesory tekstu, arkusze kalkulacyjne, itp. Wykonują one zadania bardziej rozbudowane niż te przypadające funkcjom. Zbiór programów systemowych tworzy interfejs użytkownika i decyduje o sposobie, w jaki użytkownik widzi system. Programy systemowe dzieli się na programy zarządzające zasobami i przygotowujące inne programy do wykonania. STRUKTURA SYSTEMU Prosta struktura (system monolityczny) - program złożony z wielu procedur, każda może wołać każdą, ograniczona strukturalizacja (np.OS/360, MS-DOS, Unix), makrojądro - wszystkie funkcje SO umieszczone w jądrze i wykonywane trybem uprzywilejowanym (np. OS/360), ądro - część funkcji PLANOWANIE W CZASIE RZECZYWISTYM Szeregowanie w systemach czasu rzeczywistego: Systemy czasu rzeczywistego ze „sztywnymi” wymaganiami - zadania krytyczne muszą się zakończyć w zadanym czasie; Systemy czasu rzeczywistego z „łagodnymi” wymaganiami - zadania krytyczne są obsługiwane z wyższym priorytetem niż pozostałe. SYNCHRONIZACJA PROCESÓW- problem synchronizacji procesów dotyczy tylko procesów współpracujących w systemie z algorytmem pełnego wywłaszczania. Procesy w systemie konkurują o dostęp do zasobów współdzielonych oraz wymagają wzajemnej komunikacji (IPC). Np. w systemie Unix wiele procesów korzysta ze współdzielonej PAO co pozwala procesom korzystać z jednego obszary danych ZARZĄDZANIE PAMIĘCIĄ Pamieć- jest tablicą oznaczonych adresami słów lub bajtów. Do pamięci dociera ciąg adresów, na których należy wykonać operację- nie docierają informacje o sposobie wytworzenia danego adresu (licznik rozkazów, adresowanie pośrednie czy bezpośrednie) ani o tym czego rozkazy dotyczą (kodu programu/dane) Wykonywać można jedynie program umieszczony w pamięci głównej. Wiązanie instrukcji i danych z adresami w pamięci może się odbywać w czasie: 1) kompilacji: jeśli są znane a priori adresy w pamięci, to generuje się kod absolutny; zmiana położenia kodu w pamięci wymaga jego rekompilacji 2) ładowania: trzeba generować kod przemieszczalny 3) wykonania: jeśli proces może się przemieszczać w pamięci podczas wykonania, to trzeba wiązać dynamicznie; wymaga specjalnego sprzętu Dynamiczne ładowanie - podprogram ładuje się do pamięci dopiero po wywołaniu cel: lepsze wykorzystanie obszaru pamięci Dynamiczne łączenie - łączenie opóźnione do czasu wykonania; zazwyczaj dotyczy bibliotek systemowych cel: lepsze wykorzystanie obszaru pamięci oraz łatwiejsza zmiana bibliotek Nakładki - w pamięci przechowuje się tylko te części przestrzeni adresowej, które są niezbędne w danej chwili; umożliwia wykonywanie programów większych od przydzielonego im obszaru pamięci; implem. przez użytk ADRESOWANIE FIZYCZNE I LOGICZNE Logiczna i fizyczna przestrzeń adresowa:1) adresy logiczne (wirtualne): generowane przez CPU 2) adresy fizyczne: widziane przez jednostkę pamięci (MMU); 3) adresy logiczne i fizyczne są:takie same, gdy adresy wiąże się w czasie kompilacji i ładowania ; różne, gdy adresy wiąże się w czasie wykonania Jednostka zarządzająca pamięci (MMU): urządzenie sprzętowe, które odwzorowuje adresy wirtualne na fizyczne. Program użytkownika używa tylko adresów logicznych. WYMIANA PROCESÓW (swapping) 1) Proces może zostać czasowo wysłany z pamięci głównej do zewnętrznej, a po jakimś czasie sprowadzony ponownie do pamięci głównej; 2) Jako pamięć zewnętrzna na potrzeby wymiany służy duży szybki dysk z dostępem bezpośrednim; 3) Główny narzut: czas transmisji; 4)Różne wersje wymiany są realizowane w wielu systemach, np. w Unixie czy Microsoft Windows Główne problemy: kiedy proces wymieniać (różne algorytmy- planiści średnioterminowi), które procesy wymieniać (czekające na transmisję), czas transferu a czas wykonywania procesów (kwant czasu) PRZYDZIAŁ CIAGŁY Przydział pojedynczego obszaru 1.Pamięć podzielona na dwa
|
przeniesiona z jądra na poziom użytkownika (np.Unix: jądro i programy systemowe) Struktura warstwowa - każda warstwa spełnia funkcje zależne tylko od warstwy poniżej (T.H.E., RC-4000, VMS); w Multicsie odmiana struktury warstwowej - zespół koncentrycznych pierścieni. Makrojądro - wszystkie warstwy są uprzywilejowane Struktura warstwowa systemu T.H.E.: poziom 5: programy użytkowników, 4: buforowanie urządzeń wejścia-wyjścia, 3: program obsługi konsoli operatora, 2: zarządzanie pamięcią,1: planowanie przydziału procesora, 0: sprzęt Struktura mikrojądra - mikrojądro obejmuje jedynie tworzenie procesów, komunikację międzyprocesową, mechanizmy (ale nie strategie), zarządzanie pamięcią, procesorem i urządzeniami (na najniższym poziomie), np. Mach Struktura typu klient-serwer - moduły pełnią wyodrębnione zadania, komunikują się poprzez wysyłanie komunikatów. Serwer - dostarcza usługę, klient - żąda usługi. Prosta adaptacja do systemów Rozproszonych. MS - DOS a) Zaprojektowany jako mały system, zapewniający maksymalna funkcjonalność przy znacznych ograniczeniach sprzętowych b) jednozadaniowy c) Nie został podzielony w sposób wyraźny na moduły ani warstwy; mimo ze posiada pewna strukturę, to nie została ona wyraźnie podzielona na poziomy i funkcjonalność UNIX a) Oryginalny UNIX także ograniczony przez cechy sprzętu - Jądro (Interfejsy, programy obsługi urządzeń - dodawane wraz z rozwojem systemu) - Programy systemowe Podejście warstwowe - Przy lepszym sprzęcie można podzielić system na mniejsze, lepiej dobrane fragmenty - System taki ma większa kontrole nad komputerem użytkownika programami użytkownika - Warstwa N może korzystać tylko z usług warstw niższych - Nie jest istotne jak usługi warstw niższych są faktycznie realizowane - Łatwiej się taki system projektuje, zmienia, rozwija, testuje. MASZYNY WIRTUALNE Każdy proces otrzymuje (wirtualną) kopię komp. będącego podstawą systemu. Każda wirtualna maszyna jest identyczna z rzeczywistym sprzętem, więc każda może wykonywać dowolny system operacyjny np. VM dla dużych komputerów firmy IBM. Korzyści: dzięki pełnemu oddzieleniu realizacji wieloprogramowości od realizacji „maszyny rozszerzonej” każda cześć systemu jest dużo mniejsza, bardziej elastyczna i łatwiejsza w utrzymaniu. KONCEPCJA PROCESU Proces-program użytkownika lub systemu, którego instrukcje są aktualnie wykonywane (ew. załadowany do pamięci- oczekujący lub w gotowości).Wykonywanie programu przebiega sekwencyjnie (rozkaz po rozkazie), jednocześnie wykonywany jest tylko jeden rozkaz programu (systemy jednoprocesowe). Proces składa się z: programu, liczniku rozkazów, stosu, sekcji danych. Procesy wykonują się współbieżnie (niekoniecznie równolegle). Stan procesu: nowy- proces został utworzony, wykonywalny- są wykonywane instrukcje procesu, oczekujący- proces czeka na zajście jakiegoś zdarzenia, gotowy- proces czeka na przydzielenie procesora, zakończony- proces zakończył wykonanie. obszary: dla rezydującego systemu operacyjnego i dla użytkownika 2. Rejestr bazowy (relokacji) i graniczny służą do ochrony oraz do dynamicznej translacji adresów logicznych na fizyczne Np. IBM PC: BIOS (programy sterujące urządzeń) w ROMie (górne adresy), SO w RAMie (dolne adresy) Przydział wielu obszarów W systemach wieloprogramowych w pamięci równocześnie przebywa wiele programów, każdy we własnym obszarze Metoda stref statycznych: pamięć jest na stałe podzielona na obszary o ustalonej wielkości (np. IBM OS/360 MFT) Metoda stref dynamicznych: liczb i wielkość stref zmienia się dynamicznie (np. IBM OS/360 MVT) Dziura: wolny obszar pamięci; dziury różnych rozmiarów są rozrzucone po pamięci. Strategia wyboru wolnego obszaru: 1) Pierwszy pasujący (first fit): przydziela się pierwszy obszar o wystarczającej wielkości (następny pasujący: szukanie rozpoczyna się od miejsca, w którym ostatnio zakończono szukanie); z reguły krótszy czas szukania 2) Najlepiej pasujący (best fit): przydziela się namniejszy z dostatecznie dużych obszarów; wymaga przeszukania całej listy (o ile nie jest uporządkowana wg rozmiaru); pozostająca część obszaru jest najmniejsza 3) Najgorzej pasujący (worst fit): przydziela się największy obszar; wymaga przeszukania całej listy; pozostająca część obszaru jest największa 4) Pierwszy pasujący i najlepszy pasujący lepsze w terminach czasu i wykorzystania pamięci Fragmentacja zewnętrzna: suma wolnych obszarów w pamięci wystarcza na spełnienie żądania, lecz nie stanowi spójnego obszaru Fragmentacja wewnętrzna: przydzielona pamięć może być nieco większa niż żądana. Różnica między tymi wielkościami znajduje się wewnątrz przydzielonego obszaru, lecz nie jest wykorzystywana Redukowanie fragmentacji zewnętrznej poprzez kompresję: umieszczenie całej wolnej pamięci w jednym bloku; możliwe tylko w przypadku, gdy adresy są wiązane w czasie wykonania; różne strategie kompresji; kompresja a operacje wejścia-wyjścia. STRONICOWANIE 1) Pamięć fizyczna jest podzielona na bloki jednakowego rozmiaru, zwane ramkami; 2) Logiczna przestrzeń adresowa procesu jest podzielona na bloki o rozmiarze takim jak ramki, zwane stronami 3) Strony przebywają w pamięci pomocniczej, są sprowadzane do pamięci głównej i umieszczane w wolnych ramkach (program o n stronach potrzebuje n ramek); strony nie muszą zajmować ciągłego obszaru fizycznego; 4) Fragmentacja wewnętrzna, brak fragmentacji zewnętrznej (małe ramki to mniejsza fragmentacja wewnętrzna, ale większy narzut na tablice stron); 5) System przechowuje informacje o wolnych ramkach; 6) Tablica stron procesu służy do odwzorowywania adresów logicznych w adresy fizyczne; 7) Adres logiczny składa się z dwóch części: numer strony (p) - służy jako indeks w tablicy stron przesunięcie w stronie (d) - numer bajtu w stronie Implementacja tablicy stron: 1) Tablica stron jest przechowywana w pamięci głównej; 2)Rejestr bazowy tablicy stron wskazuje jej początek. Każdy dostęp do danych/instrukcji programu wymaga dwóch dostępów do pamięci głównej 3) Odwrotna tablica stron.Posiada po jednej pozycji dla każdej ramki;
|
Blok kontrolny procesu (PCB) zawiera informacje związane z procesem: stan procesu, licznik rozkazów, rejestry procesora, informacje o szeregowaniu przez procesor, informacje o pamięci zajętej przez proces, informacje rozliczeniowe, informacje o stanie wejścia- wyjścia Celem planowania procesów w systemie: wielozadaniowym- jak najefektowniejsze wykorzystanie procesora, podziałem czasu- tak częste przełączanie procesów by możliwa była praca interakcyjna każdego z użytkowników z jego programami. Kolejki planowania procesów: kolejka zadań- zbiór wszystkich procesów w systemie, kolejka gotowych- zbiór wszystkich procesów umieszczonych w pamięci głównej, gotowych i czekających na wykonanie, kolejki do urządzeń- zbiór procesów czekających na określone urządzenie wejścia- wyjścia Szeregowanie procesów: długoterminowe- wybór procesów, które przejdą do kolejki gotowych; wykonywane rzadko (sekundy, minuty); może być wolne; określa poziom wieloprogramowości, krótkoterminowe- wybór następnego procesu do wykonania i przedział CPU; wykonywane często (milisekundy); musi być szybkie, średnioterminowe- wymiana (swapping), czyli czasowe usuwanie zadania w całości z pamięci głównej do pomocniczej Procesy określamy jako zorientowane- na wejście- wyjście- spędzają więcej czasu wykonując wejście- wyjście niż obliczenia; wiele krótkich odcinków czasu zapotrzebowania CPU, na obliczenia- spędzają więcej czasu wykonując obliczenia; kilka bardzo długich odcinków czasu zapotrzebowania na CPU Przełączanie kontekstu: przełączanie procesora do innego procesu wymaga przechowania stanu starego procesu i załadowanie przechowanego stanu nowego procesu, czas przełączenia kontekstu jest narzutem na działanie systemu, czas przełączenia kontekstu zależy od wsparcia ze strony sprzętu Tworzenie procesów (działanie): proces macierzysty tworzy procesy potomne, które z kolei tworzą inne procesy- powstaje w ten sposób drzewo procesów, współdzielenie zasobów: proces potomny i macierzysty współdzielą wszystkie zasoby; potomkowie dzielą część zasobów przodka; przodek i potomkowie nie dzielą żadnych zasobów, wykonanie: współbieżnie lub przodek czeka na zakończenie potomków, przestrzeń adresowa: potomek jest kopią przodka lub potomek ładuje nowy program, Unix: fork, exec Kończenie procesów: - Proces wykonuje ostatnią instrukcję i prosi system operacyjny o usunięcie (exit); przekazanie danych z procesu potomnego do macierzystego (wait); zwolnienie przydzielonych zasobów - Przodek może przerwać wykonanie potomka: potomek przekroczyć przydzielone zasoby; zlecone potomkowi zadanienie jest już potrzebne; przodek kończy działanie Obsługą procesów zajmuje się jądro systemu operacyjnego WĄTKI (lekkie procesy) Wątek jest podstawową jednostką wykorzystania CPU; posiada własny licznik rozkazów, zbiór rejestrów, stos, stan, wątki potomne; Wątek współdzieli z innymi wątkami tego samego zadania: przestrzeń adresową, zmienne globalne, zasoby systemow; Tradycyjny proces (ciężki) jest równoważny zadaniu z jednym wątkiem. Jeśli pozycja zawiera adres wirtualny strony umieszczonej w ramce oraz identyfikator procesu będącego właścicielem strony A) w porównaniu z tradycyjną tablicą stron zmniejsza zużycie pamięci, ale wydłuża czas potrzebny na znalezienie adresu B) użycie tablicy mieszającej pozwala skrócić czas wyszukiwania 4) Stronicowanie umożliwia dzielenie wspólnego kodu (taki kod musi być wielowejściowy, ang. reentrant, czyli nie może modyfikować sam siebie); edytory, kompilatory itp. 5) Do ochrony pamięci służą bity ochrony przypisane każdej ramce i zwykle umieszczone w tablicy stron. SEGMENTACJA Schemat zarządzania pamięcią zgodny ze sposobem widzenia pamięci przez użytkownika 1) Program jest zbiorem segmentów. Segment jest jednostką logiczną, taką jak: program główny, procedura, funkcja, stos, tablica symboli, tablice, zmienne lokalne i globalne; 2) Adres logiczny: <numer_segmentu, przesunięcie> 3) Tablica segmentów: każda pozycja zawiera fizyczny adres początku segmentu i rozmiar segmentu; 4) Rejestr bazowy tablicy segmentów zawiera adres tablicy 5) Ochrona: z każdą pozycja w tablicy segmentów są związane bity ochrony; 6) Dzielenie: na poziomie segmentów jest bardziej naturalne niż na poziomie stron, ten sam adresów w różnych pozycjach tablic segmentów różnych procesów 7) Przydział pamięci: pierwszy /najlepszy pasujący,fragmentacja zewnętrzna Segmentacja ze stronicowaniem Multics: każdy segment ma swoją tablicę stron, znika problem fragmentacji zewnętrznej; deskryptor segmentu zawiera adres tablicy stron segmentu (w pamięci), długość segmentu i pomocnicze bity; tablica segmentów też jest stronicowana Intel 386: segmentacja z dwoma poziomami stronicowania. PAMIEĆ WIRTUALNA Jest to technika, która umożliwia wykonanie procesów pomimo tego, że nie są w całości przechowywane w pamięci operacyjnej. Nie ma problemu ograniczenia pamięci. Każdy program zajmuje mniej pamięci, zatem można jednocześnie zwiększyć wielozadaniowość. Pamięć wirtualna stanowi magazyn, w którym przechowuje się procesy (rozkazy i dane) i znajduje się ona poza pamięcią operacyjną. Programy często zawierają fragmenty, które będą niezbędne przy wystąpieniu wyjątku i przechowywanie go w pamięci jest nieekonomiczne. Realizacja pamięci wirtualnej: 1) Stronicowanie na żądanie: Strona jest sprowadzana do pamięci dopiero wtedy, gdy jest potrzebna: mniej wejścia-wyjścia, mniejsze zapotrzebowanie na pamięć, więcej użytkowników. Strona jest potrzebna, gdy pojawia się do niej odwołanie. Z każdą pozycją w tablicy stron jest związany bit poprawności odwołania (1 - strona w pamięci, 0 - stronapoza pamięcią); 2).System segmentacji. 3).Stronicowanie segmentowani.; 4).Segmentowanie na żądanie: Używana w sytuacji, gdy brak sprzętu do implementacji stronicowania na żądanie. Problem umieszczania jest poważniejszy od problemu wymiany. OS/2 przydziela pamięć segmentami, które są opisane za pomocą deskryptorów segmentów. Deskryptor segmentu zawiera bit poprawności wskazujący, czy segment znajduje się w pamięci (gdy nie, to pojawia się błąd braku segmentu) SYSTEM PLIKÓW- Sposób, w jaki komputer organizuje pliki i katalogi |
zadanie składa się z wielu wątków, to w czasie, gdy jeden wątek jest zablokowany, może się wykonywać inny wątek tego zadania; współpraca wielu wątków w jednym zadaniu pozwala zwiększyć przepustowość i poprawiæ wydajność; Implementacja wątków: a) na poziomie użytkownika (projekt Andrew z CMU); dobra wydajność, potrzebny system czasu wykonania wspomagający wątki; b) wspierana przez jądro systemu (Mach, OS/2); gorsza wydajność, ale implementacja nie wymaga „sztuczek”; c) podejście hybrydowe (Solaris 2); Tworzenie wątków i przełączanie procesora między wątkami tego samego procesu są dużo tańsze niż tworzenie procesów i przełączanie kontekstu między procesami. Wątki umożliwiają połączenie równoległości z sekwencyjnym wykonaniem i blokującymi funkcjami. PLANOWANIE PRZYDZIAŁU PROCESORA- Poziomy: wysoki-szeregowanie zdań, określa się kolejkę zadań, do których mają być przydzielone zasoby systemu. pośredni- obsługiwane są procesy będące na etapie gotowy- zawieszony, jest on buforem przed przydzieleniem procesora; niski- określa, któremu procesorowi będącemu w stanie gotowości ma być przydzielony procesor. Wybór procesów z odpowiednich kolejek dokonują moduły szeregujące (planiści): długoterminowy-moduł wybierający kolejne zadania do załadowania do PAO (wysoki poziom szeregowania); krótkoterminowy-moduł wybierający proces gotowości i przydzielający mu procesor spośród procesów znajdujących się w stanie (niski poziom szeregowania). Kryteria a) Wykorzystanie CPU - procent czasu zajętości CPU (max); b) Przepustowość - liczba procesów, które zakończyły wykonanie w jednostce czasu (max); c) Czas obrotu - czas potrzebny na wykonanie procesu (min); d) Czas oczekiwania - czas spędzony przez proces w kolejce procesów gotowych (min); e)Czas reakcji - czas liczony od chwili dostarczenia żądania do chwili uzyskania odpowiedzi (w systemie z podziałem czasu) Algorytmy Dzielą się na: z wywłaszczaniem- procesor może być odebrany procesowi w trakcie jego wykonywania, bez wywłaszczenia- proces utrzymuje procesor aż do zakończenia pracy Algorytm FCFS- wolny procesor przydziela się procesowi znajdującemu się na pierwszej pozycji w kolejce procesów gotowych. Implementację uzyskujemy za pomocą kolejki FIFO- blok kontrolny wchodzącego do kolejki procesów gotowych jest dołączony na końcu kolejki. Procesy są wykonywane w kolejności przybywania. Brak wywłaszczania. Efekt konwoju: krótkie procesy wstrzymane przez długie. Zalety: sprawiedliwy, niski narzut systemowy. Wady: długi średni czas oczekiwania i wariancja czasu oczekiwania, nieakceptowany w systemach z podziałem czasu Algorytm SJF- Procesor przydziela się temu procesowi, który ma najkrótszą najbliższą fazę zapotrzebowania na CPU, (gdy równe, to FCFS) Z wywłaszczaniem (SRTF) lub bez. Zalety: optymalny Wady: wymaga określenia długości przyszłej fazy CPU. Algorytmy priorytetowe- Z każdym procesem jest związany priorytet (liczba całkowita) CPU przydziela się procesowi z najwyższym priorytetem, FCFS gdy na nośniku danych o swobodnym dostępie. Określa, jak informacje są zapisywane i odczytywane. Definiuje także wielkość klastrów, możliwe do użycia atrybuty plików i system poprawnych nazw plików i katalogów. Popularne systemy plików: DOS i Windows ( FAT16, FAT32, NTFS). Linux (Ext2, Ext3). POJECIE PLIKU- Zbiór powiązanych ze sobą informacji określonych przez twórcę. Najczęściej pliki reprezentują programy lub dane do programów. Pliki mogą być: alfanumeryczne, dwójkowe. Plik jest ciągiem bitów, bajtów, wierszy, rekordów, których znaczenie określa twórca. Plik ma określoną strukturę zależną od typu pliku (plik tekstowy, źródłowy, wykonywalny). Cechy pliku- nazwa (system operacyjny określa długość nazwy i stosowane znaki),typ (system operacyjny może rozpoznawać typy plików (pliki muszą być zawsze z zakresu plików zarejestrowanych) lub nie), czas założenia, nazwa twórcy lub inny jego identyfikator, długość i in. METODY DOSTĘPU 1) sekwencyjny-zawartość pliku jest przetwarzana po kolei- jeden rekord logiczny za drugim. Odczytanie informacji o pliku jest możliwy w takiej kolejności, w jakiej została zapisana. Wskaźnik bieżącej pozycji w pliku- rekord logiczny, na którym w danej chwili są wykonywane operacje. 2) bezpośredni-jest przeciwieństwem do dostępu sekwencyjnego i jest oparta na dyskowym modelu pliku. Plik traktowany jest jako ciąg ponumerowanych bloków lub rekordów. Metoda ta pozwala na czytanie lub zapisywanie dowolnych bloków. 3) z wykorzystaniem indeksów-podstawą tej metody jest dostęp bezpośredni. Z plikiem związana jest dodatkowa struktura- indeks pliku. Indeks zawiera wskaźnik do różnych bloków pliku, aby znaleźć jakąś pozycje w pliku musi najpierw przeszukać indeks, a później używa się znalezionego tam wskaźnika w celu bezpośredniego dostępu do pliku i odnalezienia potrzebnej pozycji. STRUKTURA KATALOGOWA Katalog jednopoziomowy: jeden katalog dla całego dysku, wydziela się specjalny obszar dysku na przechowanie katalogu, nazwy plików muszą być jednoznaczne, różni użytkownicy nie mogą używać tych samych nazw. Katalog dwupoziomowy: Każdy użytkownik ma swój katalog plików użytkownika. Jeżeli użytkownik zarejestruje się w systemie, przeszukuje się wówczas główny katalog indeksowany nazwami użytkownika, by odnaleźć katalog użytkownika. Przy tworzeniu, usuwaniu plików przeszukuje się tylko lokalne katalogi użytkowników. Problemy: Użytkownicy nie mogą współpracować - nie mogą nawzajem widzieć swoich katalogów.- Rozwiązanie: stosowanie ścieżek dostępu - pozwala na jednoznaczne nazywanie pliku: Pliki systemowe mają być dostępne dla wszystkich użytkowników. Należałoby w katalogu każdego użytkownika trzymać kopie.- Rozwiązanie: ścieżka dostępu do wspólnego katalogu specjalnego użytkownika (sys). Katalogi o strukturze drzewa: Jest to uogólnienie katalogu dwupoziomowego i pozwala użytkownikowi na tworzenie własnych podkatalogów. MS-DOS ma strukturę drzewa. Katalog lub podkatalog zawiera zbiór plików lub podkatalogów. Każda pozycja w podkatalogu posiada bit odróżnienia |
priorytety równe (zwykle mała liczba = wysoki priorytet) Z wywłaszczaniem lub bez wywłaszczania SJN jest strategią szeregowania priorytetowego (priorytet = przewidywana długość następnej fazy CPU) Problem: zagłodzenie. Rozwiązanie: wzrost priorytetu z upływem czasu (proces się starzeje) Algorytm planowania rotacyjnego (karuzelowy) Round Robin- Każdy proces otrzymuje kwant czasu CPU, zwykle 10 - 100 milisekund. Po upływie kwantu proces zostaje wywłaszczony i idzie na koniec kolejki procesów gotowych. Jeśli w kolejce procesów gotowych jest n procesów, a q to wielkość kwantu, to każdy proces dostaje 1/n czasu procesora w odcinkach długości, co najwyżej q. Żaden proces nie czeka na następny kwant dłużej niż (n-1)×q jednostek czasu. Wydajność: q duże => FIFO; q małe => q musi być duże w porównaniu z czasem przełączenia kontekstu, wpp narzut systemowy jest zbyt wysoki; reguła: 80% faz CPU powinno być krótszych niż kwant czasu. PS (processor sharing, czyli dzielenie procesora): gdy kwant bardzo mały, to wydaje się, że każdy z procesów ma własny procesor działający z 1/n prędkości rzeczywistego procesora. Cechy: zwykle wyższy średni czas obrotu niż dla SRTF, lecz lepszy czas reakcji. Algorytm wielopoziomowego planowania: Kolejki wielopoziomowe-Kolejka procesów gotowych jest podzielona na odrębne kolejki. przykład: procesy piewszoplanowe (interakcyjne), procesy drugoplanowe (wsadowe). Każda kolejka ma własny algorytm szeregowania. przykład: procesy piewszoplanowe - strategia karuzelowa, procesy drugoplanowe - kolejka prosta. Szeregowanie pomiędzy kolejkami: Stały priorytet, np. obsługuj najpierw wszystkie procesy pierwszoplanowe, potem drugoplanowe; możliwość zagłodzenia, Kwant czasu - każda kolejka otrzymuje ustaloną część czasu CPU do podziału pomiędzy swoje pocesy, np. 80% dla pierwszoplanowych z RR, 20% dla drugoplanowych z FCFS. Kolejki wielopoziomowe ze sprzężeniem zwrotnym- procesy mogą się przemieszczać pomiędzy kolejkami. Parametry metody: liczba kolejek, algorytm szeregowania dla każdej kolejki, metoda przemieszczania procesów do „wyższych” kolejek, metoda przemieszczania procesów do „niższych” kolejek, metoda wybierania kolejki dla nowego procesu Przykład: proces zużywający dużo czasu procesora (np. cały kwant w RR) przechodzi do kolejki o niższym priorytecie, ale dłuższym kwancie. Na najniższym poziomie: FCFS. Procesy interakcyjne i zorientowane na wejście-wyjście będą pozostawać w kolejkach o wyższym priorytecie, a procesy zorientowane obliczeniowo - w kolejkach o niższym priorytecie. Zalety: bardziej elastyczna niż zwykłe kolejki wielopoziomowe, umożliwia implementację „starzenia się” procesów. Wady: dużo parametrów wymagających dostrajania, wysoki koszt implementacji. Szeregowanie w systemach wieloprocesorowych Systemy heterogeniczne: każdy procesor ma własną kolejkę i własny algorytm szeregowania Systemy homogeniczne: dzielenie obciążenia (osobna kolejka dla każdego procesora); wspólna kolejka - każdy procesor sam wybiera proces do wykonania, - jeden procesor przydziela procesy do procesorów (wieloprzetwarzanie asymetryczne). pliku od podkatalogu. Katalogi o strukturze grafu: Szczególnie przydatny przy pracy zespołowej. Nie tworzy się kopii pliku, ale plik jest współdzielony przez użytkowników. Fizycznie istnieje jeden plik. Metody implementowania katalogów i plików współdzielonych: tworzenie dowiązań - linków: jako dowiązanie może służyć, bezwzględna lub względna ścieżka (link symboliczny); podwojenie informacji w obu katalogach dzielonych: oryginał i kopia są nierozróżnialne; problemem jest utrzymanie spójności przy modyfikacji pliku. Problemy: przeszukiwanie katalogu powinno unikać wielokrotnego przeszukiwania struktur dzielonych, usuwanie pliku. Przy analizie struktury katalogu trzeba pamiętać o głównych operacjach do wykonania na nim: przeszukiwania katalogu, tworzenie pliku, usuwanie pliku, wyprowadzanie katalogu, tworzenie wykazu plików z danego katalogu.
|