KOMPENDIUM I. INFORMACJE OGÓLNE

Wielkość: px
Rozpocząć pokaz od strony:

Download "KOMPENDIUM I. INFORMACJE OGÓLNE"

Transkrypt

1 I. INFORMACJE OGÓLNE KOMPENDIUM Funkcje systemu operacyjnego W interesie każdego zadania przedłożonego do wykonania w systemie leży efektywność jego wykonania - w systemie wielozadaniowym powstaje więc problem zarządzania przydziałem zasobów do zadań. Sprzęt komputerowy jest jedynie potencjalnie zdolny do wykonywania zadań. Powstaje więc konieczność istnienia pośrednictwa pomiędzy sprzętem systemu komputerowego a zadaniami użytkowników, którego funkcjami byłyby: zarządzanie (optymalizacja wykorzystania) zasobami, a tym samym optymalizacja działania całego systemu komputerowego; rozwiązywanie konfliktów powstających podczas współubiegania się różnych zadań o zasoby systemu. Są to właśnie podstawowe funkcje systemu operacyjnego. Zasoby Zarządzanie zasobami w systemie wielozadaniowym polega na takim ich rozdzieleniu pomiędzy użytkowników, aby każdy z nich miał wrażenie, że pracuje na własnym komputerze. Zasoby komputerowe to obiekty dzielone (współdzielone, współużytkowane) (shared) przez użytkowników i system operacyjny. Tradycyjnie wyróżnia się zasoby sprzętowe (procesory, urządzenia we/wy, pamięci) oraz programowe (pliki - programy i dane). Przestrzeń adresowa i przestrzeń pamięci Adresy, których używa programista w swoim programie nazywamy adresami wirtualnymi (logicznymi) a zbiór tych adresów przestrzenią adresową. Adresy rzeczywistych komórek pamięci operacyjnej nazywamy adresami fizycznymi, a ich zbiór przestrzenią pamięci. W systemach wyposażonych w mechanizm pamięci wirtualnej, przestrzeń adresowa jest większa od przestrzeni pamięci. Procesy, procesy sekwencyjne i współbieżne Proces odpowiada programowi, ale jest obiektem aktywnym, któremu przydzielono zasoby komputerowe takie jak pamięć operacyjna i procesor. System operacyjny przekształcając program w proces tworzy pewne pomocnicze struktury danych, wykorzystywane do zarządzania procesami (jak np. opis przydzielonych zasobów, stan procesu, itd.). Proces sekwencyjny jest to realizacja programu sekwencyjnego lub też wstrzymana realizacja w oczekiwaniu na zdarzenie, które umożliwi jego kontynuację. Dwa procesy są współbieżne, jeśli wykonywanie jednego z nich zaczyna się po rozpoczęciu, ale przed zakończeniem wykonywania drugiego. System monolityczny System składa się z zestawu procedur, gdzie każda z nich może wywoływać inne. Każda procedura musi mieć dobrze zdefiniowany interfejs z procedurami, z którymi się komunikuje. Przy takiej konstrukcji SO można zbudować dowolną aplikację (wersję) przez kompilowanie zbioru odpowiednich procedur. Jądro systemu jest konieczne, gdyż trzeba wyróżnić dwa tryby pracy systemu: tryb użytkownika (user mode) - wykonywane są programy użytkownika; tryb jądra (system mode) - wykonywane są funkcje jądra (funkcje SO). Wiąże się to z mechanizmem ochrony - wykonanie operacji we/wy wymaga skorzystania z funkcji systemowej. Funkcje jądra dostarczenie mechanizmów do tworzenia i usuwania procesów dostarczenie mechanizmów szeregowania procesora, zarządzania pamięcią i urządzeniami (zarządzanie zasobami) dostarczenie narzędzi do synchronizacji działań procesów dostarczenie mechanizmów komunikacji międzyprocesowej Systemy o strukturze wielopoziomowej (layered systems) Większość obecnych systemów ma strukturę wielopoziomową - modularną. System operacyjny jest podzielony na kilka poziomów, przy czym każdy z nich jest budowany na bazie poziomu poprzedniego. Najniższym poziomem jest sprzęt, a najwyższym - złącze z użytkownikiem. Każdy poziom składa się ze zbioru procedur i struktur danych; procedury danego poziomu mogą być wywoływane tylko z poziomu wyższego. Dany poziom może wykorzystywać funkcje i usługi oferowane przez poziom niższy. Taka struktura jest charakterystyczna dla sprzętu obsługującego sieci. Zaletą takiej organizacji systemu operacyjnego jest łatwiejsze śledzenie jego pracy i dokonywanie ewentualnych modyfikacji. Usługi systemu operacyjnego

2 System operacyjny tworzy środowisko, w którym są wykonywane programy. Dostarcza on pewnych usług zarówno programom, jak i użytkownikom tych programów. Poszczególne usługi różnią się między sobą - rzecz jasna - w różnych systemach operacyjnych, można jednak wyodrębnić spośród nich pewne wspólne klasy. Usługi te pomyślano dla wygody programisty, aby ułatwić jego pracę nad programem. Wykonanie programu System powinien móc załadować program do pamięci i rozpocząć jego wykonywanie. Program powinien móc zakończyć się w sposób normalny lub z przyczyn wyjątkowych. Operacje wejścia-wyjścia Wykonywany program może potrzebować wyników operacji we/wy odnoszących się do pliku lub jakiegoś urządzenia. Poszczególne urządzenia mogą wymagać specyficznych funkcji. Ponieważ program użytkownika nie może wykonywać operacji we/wy bezpośrednio, więc środki do realizacji tych czynności musi mieć system operacyjny. Manipulowanie systemem plików System plików ma znaczenie szczególne. Nie ulega wątpliwości, że programy muszą zapisywać i odczytywać pliki. Jest im również potrzebna możliwość tworzenia i usuwania plików przy użyciu ich nazw. Komunikacja Istnieje wiele sytuacji, w których procesy wymagają wzajemnego kontaktu i wymiany informacji. Są dwie podstawowe metody organizowania takiej komunikacji: pamięć dzielona i system komunikatów. Wykrywanie błędów Na wszystkie rodzaje błędów system powinien odpowiednio reagować, gwarantując poprawność i spójność obliczeń. Przydział zasobów Jeżeli wiele zadań pracuje w systemie w tym samym czasie, to każdemu z nich muszą być przydzielone zasoby. Rozliczanie Przechowywanie danych o tym, którzy użytkownicy w jakim stopniu korzystają z poszczególnych zasobów systemu, może służyć do rozliczania za możliwość korzystania z systemu lub w celach informacyjnych i statystycznych. Ochrona Właściciele informacji przechowywanej w systemie skupiającym wielu użytkowników mogą chcieć kontrolować jej wykorzystanie. System musi dostarczać mechanizmy ochrony informacji. Architektura klient-serwer Jest to najnowsza architektura systemów operacyjnych wywodząca się z organizacji wielopoziomowej. Polega ona na maksymalnym przesunięciu części kodu SO na wyższe poziomy tj. do procesów użytkownika, pozostawiając mikrojądro systemu. Z punktu widzenia systemu, serwerem nie musi być komputer - może to być jakieś oprogramowanie świadczące jakieś usługi. Serwery pracują zazwyczaj w trybie użytkownika i nie mają bezpośredniego dostępu do sprzętu. Dzięki temu zawieszenie jednego serwera nie powoduje zawieszenia całego systemu. Taka struktura SO polega na jego podziale na moduły, które spełniają jego określone zadania. Moduły te nie są rozmieszczane w warstwach ale są traktowane mniej lub bardziej równorzędnie. Wszystkie moduły w ten sam sposób muszą się ubiegać o zasoby SO. Moduły nie komunikują się przez wywoływanie procedur ale wysyłają do siebie komunikaty za pośrednictwem centralnego programu obsługi komunikatów, który stanowi podstawową cześć mikrojądra. Komunikaty mogą być wysyłane w różne strony. Moduł wysyłający początkowy komunikat nazywa się klientem natomiast moduł go odbierający i wykonujący daną usługę - serwerem. Dany moduł nie musi mieć na stałe danego statusu. Serwer może otrzymać zamówienie na usługę, która wymaga wysłania nowego zamówienia do jeszcze innego modułu i wówczas serwer staje się chwilowo klientem II. SYSTEMY PLIKÓW 1. ORGANIZACJA a) Pliki Czym jest plik? SO definiuje niezależną od fizycznych właściwości jego urządzeń pamięciowych jednostkę logiczną magazynowanej informacji - jest to plik. Plik jest zbiorem powiązanych ze sobą informacji określonych przez jego twórcę. Pliki reprezentują programy (zarówno w postaci źródłowej jak i wynikowej) oraz dane. Pliki danych mogą być liczbowe, literowe, alfanumeryczne i binarne. Mogą mieć format swobodny, jak np. pliki tekstowe, lub ściśle określony. Mówiąc ogólnie, plik jest ciągiem bitów, bajtów, wierszy lub rekordów, których znaczenie określa twórca pliku i jego użytkownik. Plik ma nazwę, za pomocą której można się do niego odwoływać oraz atrybuty (cechy) takie jak typ, czas założenia, nazwę właściciela, rozmiar, itp. Organizacje plików 1

3 System plików automatycznie upakowuje bajty plików w blokach dyskowych, które mogą mieć rozmiar sektora dyskowego. Wszystkie operacje dyskowe in/out operują jednostką, którą jest blok dyskowy (czasem nazywany rekordem fizycznym). Wszystkie bloki mają ten sam rozmiar, przy czym rozmiar ten nie musi być równy rozmiarowi rekordu logicznego. Rekordem logicznym nazywamy najmniejszą jednostką informacji, którą może operować użytkownik. Różne organizacje plików: Sekwencja bajtów. (wykorzystanie w Unix) Każdy bajt w pliku może być indywidualnie adresowany przez podanie przesunięcia względem początku pliku. W tym przypadku rekordem logicznym jest 1 bajt. Sekwencja rekordów o stałej długości. Rekord jest pewną większą jednostką informacji składającą się z kilku do kilkunastu bajtów posiadającą określoną strukturę. W tym wypadku rekordem logicznym jest właśnie rekord. Rekordy nie mogą być usuwane i wstawiane do środka pliku, mogą być tylko dodawane na koniec pliku. Drzewo bloków. Każdy blok posiada n rekordów i rekord-klucz. Klucz jest podstawą wyszukiwania informacji w bloku. Taka organizacja jest wykorzystywana w SO dla dużych komputerów. Metody dostępu do plików Dostęp sekwencyjny (read next, write next). 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 (swobodny) (read p, write n). 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. Typy plików Jednym z głównych zagadnień projektowych w ramach systemu plików jest określenie w jakim stopniu system powinien znać, rozpoznawać i ingerować w typy plików. Stosowane są dwa podejścia: SO rozpoznaje typy plików Najczęściej polega to na wprowadzeniu odpowiedniego rozszerzenia w nazwie pliku (np..txt,.exe). Zaletą jest to, że SO, znając rozszerzenia plików, może działać na nich w sensowny sposób. Pozwoli to np. zapobiec wydrukowi pliku wynikowego w postaci dwójkowej. Można także narzucić na system obowiązek sprawdzania, czy plik źródłowy programu, który chce wykonać użytkownik, został zmodyfikowany i jeśli tak, to system skompiluje program ponownie, gwarantując użytkownikowi, że uruchomi jego aktualną wersję. Podejście z rozpoznawaniem typów plików ma jednak także wady. Po pierwsze zwiększa się rozmiar systemu, gdyż jest on zmuszony posiadać kod właściwej obsługi wszystkich rozpoznawanych typów plików. W dodatku każdy plik musi dać się zakwalifikować do jednego z typów plików, z których można korzystać w systemie. Mogą więc powstać poważne kłopoty w przypadku nowych zastosowań, wymagających struktur informacji nie obsługiwanych przez system operacyjny. SO nie wyróżnia typów plików Taki schemat daje maksymalną elastyczność przy minimalnym wspomaganiu użytkownika. Każdy program użytkowy musi zawierać własny kod interpretujący plik wejściowy odpowiednio do jego struktury. W systemie Unix rozróżniane są trzy typy plików: pliki zwykłe, pliki specjalne opisujące urządzenia systemowe, katalogi. System Unix ignoruje rozszerzenia w nazwach plików. Jednak te rozszerzenia istnieją, gdyż wykorzystują je programy użytkowe. Pliki mogą być ASCII lub binarne. System Unix wykonuje tylko takie pliki, które mają określony format - opisany poniżej. Nagłówek (header) rozpoczyna się od magic number tj. od pola identyfikującego plik jako wykonywalny. Następne pola określają rozmiary różnych części pliku, adres od którego rozpoczyna się wykonywanie pliku oraz bity flag. Do PAO ładowane są segmenty Text i Data ewentualnie relokowane z wykorzystaniem bitów relokacji. Tablica symboli jest wykorzystywana przez debugger. Bity relokacji służą do zarządzania operacją przemieszczania pliku z jednego miejsca pamięci do innego. Operacje plikowe Plik jest abstrakcyjnym typem danych. Do jego właściwego zdefiniowania niezbędne jest rozważenie operacji, które można na plikach wykonywać. System operacyjny zawiera funkcje systemowe (system calls) do tworzenia, zapisywania, 2

4 czytania, ustalania stanu początkowego i usuwania plików. W systemie Unix funkcje systemowe stanowią funkcje napisane w języku C. Funkcje systemowe są wykorzystywane przez jądro SO i są realizowane wyłącznie w trybie jądra. W momencie pojawienia się funkcji systemowej w programie użytkownika jest generowana pułapka, która powoduje przejście z trybu użytkownika do trybu jądra. create - utworzenie nowego pliku. Nowo utworzony plik nie zawiera danych - jest pusty. Do utworzenia pliku niezbędne są dwa kroki. Po pierwsze na dysku musi zostać znalezione miejsce na plik. Po drugie, w katalogu należy utworzyć pozycję opisującą nowy plik oraz określić jego atrybuty. delete - usunięcie pliku. Gdy plik nie jest już dłużej potrzebny usuwa się go aby zwolnić przydzielony mu obszar pamięci. W celu usunięcia pliku odnajduje się jego nazwę w katalogu, zwalnia całą przestrzeń na dysku zajmowaną przez plik i likwiduje daną pozycją w katalogu. open - otwarcie pliku. Każdy plik, zanim będzie wykorzystywany przez jakiś proces, musi zostać otwarty. Funkcja open kopiuje do PAO (do specjalnej struktury - tablicy otwartych plików) atrybuty charakteryzujące plik wraz z adresami dyskowymi jego bloków. Jest to czynione w celu przyspieszenia dostępu do pliku w następnych odwołaniach. Niektóre systemy niejawnie otwierają plik przy pierwszym odwołaniu do niego, jednak większość systemów wymaga jawnego otwierania plików przez programistę za pomocą funkcji open, która powinna być wywołana przed pierwszym użyciem pliku. Operacja otwierania pliku pobiera nazwę pliku, przegląda katalog i kopiuje odpowiednią pozycję z katalogu do tablic otwartych plików (tablica otwartych plików jest tablicą systemową opisującą wszystkie pliki, które użytkownik wykorzystuje podczas pracy systemu). Następnie do procesu jest przekazywany wskaźnik do pozycji opisującej plik w tablicy otwartych plików, wskaźnik ten jest nazywany deskryptorem pliku (file descriptor). Wszystkie następne operacje we/wy używają tego wskaźnika zamiast faktycznej nazwy pliku, dzięki czemu unika się dalszych przeszukiwań katalogu. close - zamknięcie pliku. Jeśli wszystkie operacje na pliku zostały zakończone, atrybuty i adresy bloków nie są dalej potrzebne. Można więc zamknąć plik (jego opisy w tablicy otwartych plików są wtedy usuwane) i zwolnić miejsce w tablicy. write - pisanie do pliku. Dane są zapisywane do pliku od pozycji wskazywanej przez wskaźnik bieżącej pozycji w pliku (current file position). Jeżeli wskaźnik znajduje się na końcu pliku, to dane są dopisywane i rozmiar pliku się powiększa. Gdy wskaźnik znajduje się w środku pliku, to stare dane są nadpisywane przez nowe dane, więc stare dane są tracone na zawsze. Funkcja write otrzymuje następujące parametry: deskryptor pliku, liczba bloków (bajtów) do zapisania, nazwa (adres) obszaru w PAO, w którym są umieszczane dane, które należy zapisać. read - czytanie z pliku. Operacja czytania posługuje się tym samym wskaźnikiem co funkcja pisania. Program wywołujący tę funkcję systemową musi podać deskryptor pliku, liczbę bloków, która musi być przeczytana i adres bufora w pamięci użytkownika, do którego to bufora mają być przepisane dane z dysku. append - dopisanie do końca pliku. Funkcja umożliwia dopisanie danych wyłącznie na końcu pliku. Ponieważ jest ona w zasadzie szczególnym przypadkiem funkcji write, więc jest dostępna tylko w niektórych systemach. seek - przesunięcie wskaźnika bieżącej pozycji w pliku. Funkcja ta jest wykorzystywane przy operacji bezpośredniego dostępu do pliku i powoduje przesunięcie wskaźnika bieżącej pozycji w pliku w nowe miejsce, które jest parametrem tej funkcji. Oczywiście przesunięcie wskaźnika ma wpływ na wyniki funkcji write i read. get attributes - pobranie atrybutów pliku. Procesy często potrzebują informacji o atrybutach plików. Normalnie, użytkownik może wyświetlić atrybuty pliku z poziomu systemu, a w Unix także z poziomu programu w C. set attributes - ustawienie atrybutów pliku. Wartości niektórych atrybutów plików mogą być zmieniane przez użytkowników. Funkcja ustawia atrybuty również z poziomu programu w C, lecz może modyfikować tylko te pliki, których jest się właścicielem. rename - zmiana nazwy pliku. Funkcja ta umożliwia zmianę nazwy już istniejącego pliku, co jest szczególnie przydatne. Atrybuty plików Protection Password Creator Owner Read Only Flag Hidden Flag System Flag Archive Flag ASCII/Binary Flag Random Access Flag Temporary Flag Lock Flag Record Length Key Position Key Length Creation Time Time of Last Access Time of Last Change - kto ma jaki dostęp do pliku - hasło wymagane przy dostępie do pliku - identyfikator osoby, która założyła plik - aktualny właściciel pliku - plik tylko do odczytu - plik ukryty - plik systemowy - plik do archiwizacji - czy plik jest ciągiem znaków ASCII, czy kodem binarnym - metoda dostępu do pliku (dostęp sekwencyjny czy bezpośredni) - plik tymczasowy (do usunięcia przy wyjściu) - blokada dostępu do pliku - długość rekordu (liczba bajtów) - pozycja klucza (przesunięcie w bajtach) - długość klucza - czas utworzenia pliku - czas ostatniego dostępu - czas ostatniej modyfikacji 3

5 Current Size Maximum Size - aktualny rozmiar pliku w bajtach - maksymalny rozmiar, jaki może przyjąć plik b) Organizacja struktury katalogowej Pliki w systemie komputerowym są reprezentowane za pomocą pozycji w katalogu urządzenia lub tablicy dysku logicznego. Katalog urządzenia przechowuje informacje takie jak nazwa, położenie, rozmiar i typ - dla wszystkich plików na danym urządzeniu. W przypadku dużej liczby użytkowników w systemie rozwiązaniem jest narzucenie systemowi plików struktury katalogowej. W rzeczywistości wiele systemów utrzymuje faktycznie dwie struktury katalogowe: katalog urządzenia i katalogi plików. Katalog urządzenia jest przechowywany na każdym urządzeniu fizycznym i opisuje wszystkie pliki na danym urządzeniu. Każda pozycja w katalogu urządzenia zawiera informacje dotyczące głównie cech fizycznych pliku: położenie, rozmiar, przydział, itp. Katalogi plików stanowią logiczną organizację plików na wszystkich urządzeniach. Każda pozycja w katalogu plików dotyczy logicznych właściwości pliku: nazwy, typu, użytkownika będącego właścicielem, informacji służącej do rozliczeń, kodów ochrony, itp. W najstarszych systemach stosowana była struktura katalogu jednopoziomowego. Był to jeden katalog dla wszystkich plików wszystkich użytkowników. Było to rozwiązanie proste lecz zarazem prymitywne. Podstawowym problemem było kierowanie bacznej uwagi na to, by nazwy plików były jednoznaczne i w miarę sensowny sposób opisywały przeznaczenie pliku. Poza tym istniała kolizja między nazwami plików różnych użytkowników. W strukturze dwupoziomowej wyróżniamy główny katalog plików systemowych i katalogi plików użytkowników. Każdy użytkownik posiada własny katalog plików. Taka struktura separuje od siebie zbiory plików różnych użytkowników, co w większości przypadków ułatwia im pracę - nie ma kolizji nazw. Staje się to jednak niekorzystne, gdy użytkownicy chcą pracować wspólnie nad jakimś projektem i chcą korzystać ze wspólnych plików. W systemach złożonych, najczęściej wielodostępnych, stosuje się hierarchiczny katalog o strukturze drzewiastej. W drzewie katalogów wyróżnia się katalog główny zwany korzeniem (root). Wszystkie katalogi mają taką samą budowę wewnętrzną. Katalog zawiera zbiór plików lub katalogów (podkatalogów). Podczas pracy z systemem użytkownik dysponuje katalogiem bieżącym (current or working directory) inaczej roboczym. W większości systemów jest on oznaczony kropką, natomiast katalog nadrzędny w stosunku do niego - dwiema kropkami. Każdy plik w systemie ma jednoznaczną tzw. nazwę ścieżki (lub inaczej nazwę ścieżkową). Nazwy ścieżkowe mogą być absolutne (bezwzględne) lub względne (relatywne). Bezwzględna ścieżka jest ścieżką dostępu od katalogu korzenia, przez wszystkie katalogi pośrednie, aż do określonego pliku. Ścieżka względna rozpoczyna się od katalogu bieżącego. W systemie Unix wyróżnia się katalog osobisty (home directory), który staje się katalogiem bieżącym użytkownika podczas jego rejestrowania do systemu. Każdy użytkownik może mieć dowolnie zdefiniowany katalog osobisty. Struktura drzewiasta katalogu uniemożliwia współdzielenie plików. Katalog o strukturze grafu skierowanego umożliwia współdzielenie plików i podkatalogów. Najczęściej wprowadza się ograniczenie polegające na możliwości współdzielenia tylko plików, co zapobiega powstaniu cykli w grafie. Obecność cyklu może stwarzać problemy podczas składowania systemu a ponadto zarządzanie takim grafem jest bardziej skomplikowane. Współdzielenie plików jest możliwe dzięki mechanizmowi tworzenia dowiązań, przy czym wyróżnia się tzw. dowiązanie twarde i dowiązanie miękkie (symboliczne). Pliki dowiązane nie są indywidualnymi kopiami plików u poszczególnych użytkowników. W systemie Unix do tworzenia dowiązań używa się polecenia ln (link). Dowiązanie twarde polega na dokonaniu odpowiedniego wpisu do katalogu użytkownika, który przyłącza się do danego pliku. Polecenie dowiązania twardego w Unix tworzy nowy zapis w katalogu z nową nazwą wykorzystując i-węzeł istniejącego pliku. To rozwiązanie może być stosowane we wszystkich tych systemach, w których katalog zawiera adresy bloków dyskowych plików. W dowiązaniu miękkim, jeśli użytkownik B dołącza się do użytkownika C, to SO tworzy nowy plik typu link i wprowadza zapis o nim do katalogu użytkownika B. Ten nowy plik zawiera tylko ścieżkę dostępu do pliku dołączonego. Jeżeli chcemy korzystać z tej metody, to system faktycznie musi przeczytać dwa pliki, czyli musi wykonać dwa razy więcej pracy. Oba rodzaje dowiązań dostarczają problemów w przypadku usuwania plików. Przy dowiązaniu twardym, jeśli użytkownik C chce usunąć plik, SO musi rozstrzygnąć następujący problem. Usunięcie pliku właściciela kasuje zawartość i-węzła pliku. Użytkownik B będzie miał wskaźnik na nieważny i-węzeł pliku. System jednak może przydzielić zwolnioną strukturę do innego i-węzła co spowoduje, że użytkownik B będzie miał dostęp do zupełnie innego pliku. Zostanie więc pogwałcona zasada ochrony danych. W systemie Unix wprowadzono licznik dowiązań do pliku, który jest pamiętany w każdym i-węźle. Licznik większy od 1 oznacza, że plik jest wykorzystywany przez kilku użytkowników i nie może być usunięty. Tylko właściciel może usunąć plik, lecz nie można skasować pliku póki licznik jego dowiązań jest większy od 1. Nie sposób znaleźć we wszystkich katalogach w systemie dowiązań do danego pliku po to, aby usunąć te dowiązania i usunąć ten plik. Niemożliwe jest również utrzymywanie listy wskaźników w i-węźle. Plik więc nadal będzie istniał, a użytkownik C, nadal będący jego właścicielem, będzie za to płacił. Użytkownik C może udać się do administratora, aby zmienił właściciela tego pliku. W przypadku metody dowiązania symbolicznego problem ten nie istnieje, gdyż tylko prawdziwy właściciel ma wskaźnik do i-węzła pliku. Ten użytkownik, który się dołączył, ma tylko ścieżkę dostępu do pliku. Jeśli właściciel usunie ten plik, a może to zrobić fizycznie, to dowiązania do tego pliku pozostają wpisane do katalogu innego pliku. Jeśli użytkownik C usunie plik, to B będzie posiadał nieważne informacje o tym pliku. Jeśli użytkownik B będzie chciał ten plik gdzieś skopiować, to system zareaguje komunikatem: dostęp do tego 4

6 pliku jest zabroniony. Jest to problem w zasadzie nie do rozwiązania. Niezależnie od metody dowiązywania zawsze pojawiają się problemy przy składowaniu systemu i przy jego odczytywaniu z backup a. Najczęściej zamiast dowiązań tworzone są kopie plików. Jest to winą niedoskonałości programu składującego. Operacje na katalogach Poniżej opisano funkcje systemowe systemu Unix dostępne z poziomu języka C. create - utworzenie katalogu. Utworzony katalog jest pusty i zawiera tylko dwie informacje o samym sobie [.] i katalogu nadrzędnym [..]. delete - usunięcie katalogu. Usunięty może zostać tylko pusty katalog. opendir - otwarcie katalogu. Program listujący zawartość katalogu musi go wpierw otworzyć. closedir - zamknięcie katalogu. Gdy zakończono operacje na katalogu należy go zamknąć, by zwolnić miejsce w tablicy systemowej. rename - zmiana nazwy. readdir - odczytanie zawartości otwartego katalogu. Wyniki są wyprowadzane w standardowym formacie, niezależnie od struktury zapisu katalogu. link - dowiązanie pliku do katalogu. Technika dowiązań umożliwia współdzielenia plików przez wielu użytkowników - pliki dowiązane nie są prywatnymi kopiami. W katalogu zostaje wpisana ścieżka dostępu do dowiązywanego pliku. unlink - skasowanie dowiązania. Kasowana jest tylko pozycja w katalogu przechowująca ścieżkę do dowiązanego pliku, natomiast sam plik nie jest kasowany. 2. ZARZĄDZANIE PRZESTRZENIĄ NA DYSKU a) Budżet dyskowy Budżet dyskowy jest mechanizmem ograniczającym użytkowników przy zarządzaniu przestrzenią na dysku. Administrator systemu przydziela użytkownikom maksymalne limity dotyczące liczby plików i bloków jakie mogą oni wykorzystywać. W tablicy otwartych plików znajduje się nie tylko identyfikator użytkownika, do którego dany plik należy, ale także wskaźnik do tablicy budżetu użytkownika. W tablicy budżetu użytkownika znajdują się dwa pola: miękki limit bloku (soft block limit) i twardy limit bloku (hard block limit). Po przekroczeniu limitu miękkiego użytkownik otrzymuje ostrzeżenie, przy czym liczba ostrzeżeń jest ustawiana przez administratora. Twardy limit bloku nie może być przekroczony, gdyż próba dostępu przy przekroczonym twardym limicie jest traktowana jako błąd. Budżet jest sprawdzany przy logowaniu do systemu. Gdy został przekroczony limit miękki, to system wyświetla ostrzeżenia na ekranie użytkownika. Użytkownik może zignorować ostrzeżenie, lecz administrator określa liczbę ostrzeżeń. Liczby te, osobno dla plików i bloków, pamiętane są w tablicy budżetu (liczniki block warnings left i file warnings left). Po każdym wysłanym ostrzeżeniu odpowiedni licznik zostaje zmniejszony o 1 i gdy osiągnie 0, to użytkownik może mieć problemy przy następnym logowaniu. Użytkownik może przekroczyć limit miękki podczas sesji, ale przed jej zakończeniem powinien usunąć elementy (pliki) powodujące przekroczenie tego limitu. b) Rozmiary bloków dyskowych Dysk dzieli się na bloki o stałym rozmiarze. Problem polega na doborze rozmiaru tego bloku. Kandydatami na rozmiar bloku, z punktu widzenia budowy fizycznej, są: sektor, cylinder i ścieżka. Administrator powinien także wziąć pod uwagę organizację pamięci operacyjnej - przy pamięci stronicowanej rozmiar bloku mógłby odpowiadać rozmiarowi strony pamięci. Im rozmiar bloku większy tym zwiększa się szybkość operacji dostępu, zmniejsza się jednak stopień wykorzystania przestrzeni dyskowej (fragmentacja wewnętrzna). Rozmiar bloku należy dobrać tak, aby czas odczytu danych z bloku był możliwie mały przy jak najbardziej optymalnym wypełnieniu bloku. Wypełnienie (zajętość) bloku jest bardzo duże (bliskie 100 %) przy małym rozmiarze bloku (128, 256, 512 i 1KB). Natomiast jeżeli rozmiar bloku dyskowego zostanie zwiększony do 4 KB, to wykorzystanie może spaść nawet do 25%. Odwrotna sytuacja jest z ilością przesyłanych bajtów na sekundę. Prędkość odczytywania (wyszukiwanie i ustawianie głowicy) jest niska przy małym rozmiarze bloku i stopniowo rośnie gdy rozmiar bloku wzrasta. Biorąc pod uwagę powyższe kryteria optymalny rozmiar bloku dyskowego wynosi od 2 KB do 2.5KB. Dla takiej wartości wypełnienie jest rzędu 50 % a prędkość odczytu ok. 100 KB/s. c) Zarządzanie obszarami wolnymi Ponieważ obszar pamięci na dysku jest ograniczony, jest niezbędne zagospodarowywanie dla nowych plików przestrzeni po usuniętych plikach. Aby mieć bieżącą informację o wolnych obszarach dyskowych, system utrzymuje listę wolnych obszarów. Wbrew nazwie nie musi ona być zaimplementowana w postaci listy. Na liście wolnych obszarów są odnotowane wszystkie bloki, które są wolne, tj. nie przydzielone do żadnego pliku. W celu utworzenia pliku sprawdza się, czy lista wolnych obszarów wykazuje wymaganą ilość wolnego miejsca, po czym przydziela się taki obszar nowemu plikowi. Tym samym dany obszar zostaje usunięty z listy wolnych obszarów. Przy kasowaniu pliku, zajmowany przez niego obszar na dysku jest dodawany do listy wolnych obszarów. Metody zarządzania obszarami wolnymi: 5

7 Mapa bitowa (wektor bitowy) (bit map, bit vector) Każdy blok jest reprezentowany przez jeden bit (0 oznacza, że blok jest wolny). Zalety:- mały rozmiar - łatwość znalezienia n przylegających do siebie bloków na dysku niezbędnych do zaalokowania pliku. Wniosek: mapa bitowa jest rozwiązaniem efektywnym jeżeli jest utrzymywana w pamięci operacyjnej. Kopia mapy znajduje się na dysku - konieczne jest utrzymywanie spójności obydwu kopii. Obsługa mapy jest realizowana na niskim poziomie sprzętowym. Zakres jej stosowania to dyski małe i średnie. Lista łączona (łańcuchowa) (linked list) Polega na połączeniu wszystkich wolnych bloków razem i utrzymywaniu wskaźnika do pierwszego wolnego bloku. Każdy blok wolny zawiera wskaźnik adresowy do następnego bloku. Rozwiązanie to nie jest implementowane w praktyce ze względu na niską efektywność - aby przejrzeć listę, należy odczytać każdy blok, co wymaga znacznej ilości czasu. Grupowanie (grouping) Modyfikacją podejścia polegającego na zakładaniu listy wolnych obszarów jest przechowywanie adresów n-1 wolnych bloków w pierwszym wolnym bloku. Pierwsze n-1 adresów wskazuje na wolne bloki. Ostatni adres jest adresem dyskowym innego bloku zawierającego adresy następnych n-1 wolnych bloków. Zaletą tej implementacji jest to, że łatwo odnaleźć adresy wielkiej liczby wolnych bloków. Zliczanie (counting) Metoda ta wykorzystuje fakt, że pliki są alokowane i zwalniane w zestawie m przylegających do siebie bloków. Tak więc zamiast utrzymywać listę n wolnych bloków wystarczy przechowywać adres pierwszego wolnego bloku i licznik zawierający liczbę bloków następujących nieprzerwanie po pierwszym (m-1). Mimo, że każda pozycja na liście zajmuje więcej miejsca niż pojedynczy adres dyskowy, to, jeśli liczniki będą większe od 1, cała lista będzie krótsza. d) Metody alokacji plików Nieomal zawsze na jednym dysku przechowuje się wiele plików. Podstawową kwestią jest wybór takiego przydziału miejsca dla plików, aby obszar był zagospodarowany efektywnie, a dostęp do plików był szybki. W naszych rozważaniach możemy traktować plik jako ciąg bloków. Wszystkie podstawowe funkcje we/wy odnoszą się do bloków. Przejście od rekordów logicznych do bloków fizycznych jest stosunkowo prostym zadaniem dla oprogramowania. Alokacja ciągła (contignous) Każdy plik musi zajmować ciąg kolejnych adresów na dysku. Adresy dyskowe definiują na dysku uporządkowanie liniowe. W tym uporządkowaniu dostęp do bloku b+1 po bloku b nie wymaga na ogół ruchu głowicy. Gdy ruch głowicy będzie konieczny, wówczas będzie to przesunięcie tylko o jedną ścieżkę. Liczba operacji przeszukiwania dysku jest minimalna. Przydział ciągły jest określony za pomocą adresu dyskowego i długości pierwszego bloku. Pozycja każdego pliku w katalogu zawiera adres bloku początkowego i długość obszaru przydzielonego danemu plikowi. Metodą tą można implementować zarówno dostęp sekwencyjny, jak i swobodny. Podstawowymi problemami są: znalezienie obszaru wolnego na dysku dla nowego pliku, fragmentacja zewnętrzna wynikła po wielu operacjach przydziału, problem określania rozmiaru przestrzeni dyskowej potrzebnej dla pliku (plik może się przecież rozrastać). Alokacja łączona (linked) Metoda ta usuwa kłopoty związane z wymogiem ciągłości przydzielonego obszaru. Każdy plik stanowi listę powiązanych ze sobą bloków dyskowych; bloki te mogą znajdować się gdziekolwiek na dysku. Katalog zawiera wskaźnik do pierwszego i ostatniego bloku pliku. Każdy blok zawiera wskaźnik do następnego bloku. Ważną zaletą tej metody jest brak fragmentacji zewnętrznej. Nie ma potrzeby deklarowania rozmiaru pliku w momencie jego tworzenia - każdy blok z listy wolnych bloków może zostać użyty. Podstawowym ograniczeniem tego typu przydziału jest ograniczenie jego efektywności jedynie do plików o dostępie sekwencyjnym - realizacja dostępu swobodnego jest niewydajna. Innym problemem jest przestrzeń zajmowana przez wskaźniki - każdy plik potrzebuje nieco więcej miejsca. O wiele poważniejszy problem stanowi niezawodność - co by było gdyby wskaźnik został utracony lub pobrany został niewłaściwy wskaźnik? Alokacja indeksowa (indexed) Problem wskaźników rozrzuconych po całym dysku uniemożliwiał realizację dostępu swobodnego w przydziale łączonym. Przydział indeksowy rozwiązuje problem przez skupienie wskaźników w jednym miejscu - w bloku indeksowym. Każdy plik ma swój własny blok indeksowy, będący tablicą adresów bloków dyskowych. Pozycja o numerze i w bloku indeksowym wskazuje na blok i danego pliku. Katalog zawiera adres bloku indeksowego. Aby przeczytać blok i, używa się wskaźnika z pozycji o numerze i w bloku indeksowym, za pomocą którego znajduje się odpowiedni blok do czytania - przypomina to schemat stronicowania. Niewątpliwymi zaletami tej metody są: możliwość efektywnego wykonywania dostępu bezpośredniego oraz łatwe dodawanie nowych bloków do pliku. Wadą jednak jest marnotrawienie przestrzeni dysku w przypadku małych plików, gdyż dużo miejsca zajmą bloki indeksowe. Możliwe jest łączenie metod. Np. spotyka się kombinację alokacji ciągłej i indeksowej, przy czym alokację ciągłą stosuje się do plików o małych rozmiarach, a gdy pojawią się pliki o większych rozmiarach następuje automatyczne przełączenie na alokację indeksową. 6

8 e) Algorytmy szeregowania głowic Biorąc pod uwagę dysproporcje w szybkości działania procesora i dysku, opłaca się dodać kilka tysięcy instrukcji kodu systemu operacyjnego, aby tylko zaoszczędzić kilka ruchów głowic. System operacyjny może skrócić średni czas obsługi dysku dzięki planowaniu wykonywania zamówień na dostęp do dysku. Prędkość dysku zależy od trzech czynników. Aby dotrzeć do bloku na dysku, system musi najpierw przesunąć głowicę do odpowiedniej ścieżki lub cylindra. Ruch głowicy nazywa się przeszukiwaniem, a czas potrzebny na jego ukończenie zwie się czasem przeszukiwania (seek time). Gdy głowica czytająco-pisząca znajdzie się nad właściwą ścieżką, wówczas musi zaczekać, aż przemieści się pod nią potrzebny blok danych. To opóźnienie nazywa się czasem oczekiwania (latency time). W końcu może nastąpić właściwe przesyłanie danych między dyskiem a pamięcią główną. Tę ostatnią część określa czas przesyłania (transfer time). Z każdym urządzeniem we/wy, w tym także z dyskiem, związana jest kolejka żądań, która w systemie wielozadaniowym rzadko bywa pusta. Toteż gdy zamówienie zostaje spełnione, wówczas należy wybrać i obsłużyć nowe zamówienie z kolejki. Zakładamy, że z każdym z tych żądań wiąże się konieczność ruchu głowic. Mówimy, że kolejka żądań może być przedmiotem szeregowania, tzn. żądania można ustawiać w tej kolejce na wiele różnych sposobów z wykorzystaniem różnych algorytmów. Podane poniżej algorytmy będziemy analizować dla następującej kolejki żądań: 98, 183, 37, 122, 14, 124, 65, 67; głowica znajduje się nad 53. FCFS (First Come First Served) Jest to najprostszy algorytm, w którym zamówienia są obsługiwane w kolejności przybycia. Jest on poprawny i łatwy do zaprogramowania lecz zarazem, w wielu przypadkach, mało efektywny. Wynik algorytmu: 53, 98, 183, 37, 122, 14, 124, 65, 67; głowica przeszła nad 640 ścieżkami. SSTF (Shortest Seek Time First) Wydaje się uzasadnione, aby dążyć do łącznej obsługi wszystkich zamówień sąsiadujących z bieżącym położeniem głowicy, zanim nastąpi jej przemieszczenie w odleglejszy region w celu realizacji innego zamówienia. To założenie jest podstawą dla algorytmu najpierw najkrótszy czas przeszukiwania. Algorytm wybiera zamówienie z minimalnym czasem przeszukiwania względem bieżącej pozycji głowicy, czyli najpierw obsługiwane są wszystkie żądania bliskie aktualnemu. Wadą algorytmu jest to, że niektóre żądania, wymagające przesunięcia głowicy daleko od aktualnej jej pozycji, mogą bardzo długo oczekiwać na obsługę. Algorytm ten nie daje rozwiązań optymalnych - pewne zamówienia mogą oczekiwać na obsługę w nieskończoność. Wynik algorytmu: 53, 65, 67, 37, 14, 98, 122, 124, 183; głowica przeszła nad 236 ścieżkami (1/3 tego co w FCFS). SCAN (algorytm windowy) Głowica czytająco-pisząca startuje od jednego końca dysku i przemieszcza się w kierunku przeciwległego końca, obsługując zamówienia, które napotyka przechodząc nad kolejnymi ścieżkami. Na drugim końcu zmienia się kierunek ruchu i obsługa jest kontynuowana - głowica nieprzerwanie przeszukuje dysk. Wynik algorytmu: 53, 37, 14, 65, 67, 98, 122, 24, 183; głowica, poruszając się najpierw w lewo, przeszła nad 236 ścieżkami, a później, poruszając się w prawo - nad 333 ścieżkami. W tym algorytmie każde zamówienie będzie czekać najwyżej tyle czasu ile zajmie głowicy dwukrotne przeszukanie dysku. C-SCAN Algorytm ten jest wersją SCAN, zaprojektowanym w trosce o bardziej równomierny czas oczekiwania. Różnica polega na tym, że głowica porusza się tylko w jednym kierunku (np. tylko w prawo), i gdy zostanie osiągnięty koniec dysku, to głowica wraca natychmiast na początek dysku, bez podejmowania obsługi jakiegokolwiek zamówienia w drodze powrotnej. Wynik algorytmu: 53, 65, 67, 98, 122, 124, 183, 14, 37. LOOK, C-LOOK Są to odmiany algorytmów, odpowiednio, SCAN i C-SCAN. Różnica polega na tym, że głowica nie przesuwa się do między końcami dysku, lecz między skrajnymi zamówieniami. C-LOOK jest najczęściej stosowanym algorytmem w praktyce. Podsumowanie: Algorytmy powinny być samodzielnymi modułami programowymi które można wymieniać w miarę potrzeb. Gdy w kolejce żądań nie ma wielu odstających żądań, to wszystkie algorytmy są dobre. W systemach, w których dyski są bardzo obciążone stosuje się algorytmy windowe. 3. BUDOWA SYSTEMU PLIKÓW System plików ma budowę wielopoziomową, a programy żądające wykonania operacji dyskowej komunikują się z poziomem najwyższym. Na najwyższym poziomie znajduje się logiczny system plików (Logical File System). Wykorzystuje on strukturę katalogową do dostarczenia modułowi, znajdującemu się w warstwie niższej, informacji wydobytych z nazwy ścieżkowej pliku. 7

9 Moduł organizacji pliku (File Organization Module) zajmuje się interpretacją plików i bloków dyskowych. Moduł ten może generować adresy bloków przeznaczonych do czytania przez podstawowy system plików. Moduł ten zajmuje się również przekształceniem bloku plikowego w blok fizyczny. Podstawowy system plików (Basic File System). Oprogramowanie na tym poziomie wykorzystuje informacje przekazywane przez poziom niższy. Głównym zadaniem jest określenie adresu na dysku, składającego się z kilku elementów: numerów cylindra, powierzchni i sektora. Sterownik operacji we/wy (I/O Control) - składa się z programów obsługi urządzeń (drivers) i procedur obsługi przerwań. Zadaniem tego poziomu jest przesyłanie danych z dysku do PAO. Urządzenia (Devices) - dyski. Pierwsze odniesienie do pliku (na ogół otwarcie) powoduje przeszukanie struktury katalogowej i skopiowanie pozycji danego pliku do tablicy otwartych plików. Do programu użytkownika jest przekazywany wskaźnik do tej tablicy i wszystkie dalsze odniesienia do pliku są wykonywane za pośrednictwem tego wskaźnika (deskryptora pliku) a nie za pomocą nazwy symbolicznej pliku. Wszystkie zmiany dotyczące pozycji w katalogu są wykonywane na tej kopii w tablicy otwartych plików. Gdy plik zostanie zamknięty, wówczas uaktualniona pozycja będzie skopiowana z powrotem do znajdującej się na dysku struktury katalogowej. Jednakże w przypadku awarii z reguły ginie tablica otwartych plików, a wraz z nią giną informacje o wszystkich zmianach w katalogach otwartych plików. Może to spowodować niespójność systemu plików - stan bieżący pewnych plików jest inny od opisanego w strukturze katalogowej. a) Niezawodność systemu plików Zarządzanie uszkodzonymi blokami W chwili obecnej są wykorzystywane dwa rozwiązania: sprzętowe. Polega na przypisaniu uszkodzonego sektora do listy uszkodzonych bloków. Podczas inicjacji systemu sterowniki czytają tę listę i następuje zastąpienie bloków uszkodzonych blokami zapasowymi. Odwzorowanie to jest pamiętane w liście wolnych bloków. programowe. Polega na utworzeniu jednego pliku, który zawiera wszystkie uszkodzone bloki. Bloki te są usuwane z listy bloków wolnych i nigdy nie będą wykorzystywane na potrzeby innych plików. W tym rozwiązaniu problem pojawia się podczas tworzenia kopii zapasowej dysku - trzeba zagwarantować, że nie zostanie podjęta próba przeczytania pliku z uszkodzonymi sektorami. Wykonywanie kopii zapasowej - składowanie (backup) Każdy system może posiadać ochronę informacji, które są tam zapisane. Podstawowym rozwiązaniem jest tworzenie kopii plików, lecz konieczne jest utrzymanie spójności między kopią danych a ich oryginałem. Jednym ze sposobów jest utworzenie tzw. dysku lustrzanego (Disk Mirroring System). W systemie takim są dwa takie same dyski, a każdy z nich podzielony jest na dwa obszary. Jeden obszar służy do przechowywania własnych plików, a drugi do przechowywania zapasowej kopii plików znajdujących się na drugim dysku. Jest to jednak rozwiązanie bardzo drogie i stosowane jest tam, gdzie konieczne jest szczególne zabezpieczenie. W przypadku systemów z dużymi dyskami stałymi, gdzie wykorzystanie dysków lustrzanych byłoby nieekonomiczne, stosuje się składowanie systemu plików na taśmie magnetycznej. Operacja składowania dużej ilości danych na taśmie jest jednak operacją czasochłonną. Stąd wyróżnia się różne metody składowania. Składanie okresowe polega na okresowym wykonywaniu kopii systemu plików. Ma ono dwie wady: system plików nie może podczas składowania pracować normalnie, a składowanie plików może być wykonywane najczęściej w trybie pracy jednego użytkownika. Tej operacji nie można wykonywać zbyt często ze względu na czasochłonność. Wynika stąd, że dane znajdujące się na taśmie mogą być nieaktualne, co ma poważne następstwa w przypadku awarii. Alternatywnym rozwiązaniem jest składowanie przyrostowe. Polega ono na wykonywaniu operacji okresowego składowania całego systemu (np. raz w miesiącu) oraz codziennym składowaniu plików modyfikowanych. Przy wykonywaniu składowania tą metodą konieczne jest porównywanie dat i czasów ostatnich kopii, co dodatkowo wydłuża czas składowania. W różnych systemach wprowadza się więc różne udogodnienia przyspieszające te operację. W systemie MS-DOS wykorzystuje się bit archiwizacji (A), który oznakowuje plik zmodyfikowany i wymagający składowania. Gdy system plików jest archiwizowany, to bity archiwizacji są zerowane. Aby proces składowania nie musiał sprawdzać wszystkich pozycji katalogowych, w niektórych systemach, w każdym katalogu użytkownika, przechowuje się tzw. wskaźnik zmian. Wskazuje on pliki, które były modyfikowane i wymagają składowania. Z reguły proces wykonujący składowanie jest procesem drugoplanowym o niskim priorytecie. Wadą składowania przyrostowego jest złożoność procedur odtwarzania informacji w przypadku awarii. System regeneruje się do stanu, w którym się znajdował podczas ostatniego składowania okresowego przy uwzględnieniu zmian archiwizowanych podczas składowania przyrostowego. W systemie Unix dostępne są dwa rodzaje składowania: systematyczne i niesystematyczne. Składowanie systematyczne plików jest przeprowadzane zgodnie z wcześniej ustalonym planem przez administratora w pliku konfiguracyjnym. Składowanie niesystematyczne jest przeprowadzane w miarę potrzeb np. przy wymianie wersji systemu. 8

10 b) Spójność systemu plików Podstawowymi działaniami są: modyfikacja bloków plików i ponowny zapis ich na dysk. Jeśli system się załamie, zanim wszystkie modyfikowane bloki zostaną zapisane na dysk, to system plików znajdzie się w stanie niespójności. Problem niespójności jest bardzo poważny, szczególnie wtedy, gdy chodzi o bloki i-węzłów, katalogów, czy listy bloków wolnych. Niespójność może także wyniknąć z uszkodzenia pewnych bloków pliku. Większość systemów jest wyposażona w oprogramowanie sprawdzające spójność systemu plików po awarii systemu. W systemie Unix sprawdza się spójność dwojakiego rodzaju: - bloków Wszystkie bloki w całym systemie mają swoje identyfikatory (numery). W celu sprawdzenia spójności bloków program konstruuje tablicę zawierającą dwa liczniki na blok. Wstępnie, oba liczniki są zerowane. Pierwszy licznik wskazuje ile razy dany blok występuje w pliku, drugi zaś - ile razy dany blok występuje na liście bloków wolnych. Program czyta wszystkie i-węzły pliku i buduje listę wszystkich numerów bloków wykorzystywanych w określonym pliku. Po odczytaniu numeru bloku pierwszy licznik jest zwiększany o jeden. Następnie program bada listę bloków wolnych. Każde wystąpienie bloku na tej liście powoduje zwiększenie drugiego licznika o jeden. System plików znajduje się w stanie spójnym jeśli dla każdego bloku licznik pierwszy ma wartość 1 a licznik drugi ma wartość 0 lub na odwrót. Przypadki, w których jest niespójność: Dla pewnego bloku oba liczniki mają wartość 0, więc, z punktu widzenia systemu, jest to blok zagubiony. Jest to co prawda stan niespójny, lecz nie jest niebezpieczny. Blok wystarczy dopisać do listy bloków wolnych. Blok, w którym licznik pierwszy ma wartość 0 a drugi ma wartość większą od 1 nie jest wykorzystany przez żaden z plików lecz pojawił się kilkakrotnie na liście bloków wolnych. Aby to zlikwidować należy zmodyfikować listę bloków wolnych. Należy usunąć nadmiarowe wystąpienia tego bloku pozostawiając go tylko w jednym miejscu. Jeśli licznik pierwszy ma wartość większą od 1 a licznik drugi wartość 0 oznacza to, że dany blok pojawił się w różnych plikach. Jest to sytuacja bardzo niebezpieczna z punktu widzenia użyteczności systemu. W tym przypadku program sprawdzający kopiuje zawartość tego bloku do jednego z bloków wolnych i dołącza kopię do jednego z plików. Operacja ta jest powtarzana dopóty każdy z plików będzie posiadał własną kopię w osobnym bloku. W ten sposób zawartość informacyjna plików nie ulega zmianie. Powyższy błąd jest sygnalizowany użytkownikowi tak, aby mógł sprawdzić ewentualne szkody. - plików W tej części programu sprawdzany jest każdy katalog i wszystkie zawarte w nim pliki. Tworzona jest podobna lista z licznikami dla każdego i-węzła. Każdy licznik pokazuje ile razy dany i-wezeł jest wykorzystywany przez pliki. Po sprawdzeniu wszystkich katalogów, otrzymujemy informacje ile katalogów lub plików jest dowiązanych do danego i- węzła. Informacja ta jest porównywana z licznikiem dowiązań przechowywanych w samym i-węźle. Jeśli oba liczniki będą równe, to system plików jest w stanie spójnym. Gdy licznik dowiązań i-węzła jest większy niż liczba plików, to nawet jeśli wszystkie pliki zostaną usunięte, licznik ciągle pozostanie niezerowy, w konsekwencji czego, i-węzła nie będzie można usunąć. Jest to drobny błąd, powodujący tylko marnowanie obszaru na dysku. Licznik dowiązań można po prostu zmodyfikować (poprawić). Natomiast jeśli licznik dowiązań i-węzła jest mniejszy niż licznik dowiązań plików, to sytuacja może być bardzo niebezpieczna. Załóżmy, że plik jest dowiązany do dwóch katalogów lecz jego i-węzeł wskazuje, że tylko do jednego. Jeśli zapis do pliku w jednym z katalogów zostanie usunięty to licznik dowiązań zostanie wyzerowany, system stwierdzi, że plik został usunięty i w konsekwencji zwolni jego wszystkie bloki. Bloki te mogą być zatem przydzielone do innych plików. Program sprawdzający powinien uaktualnić licznik dowiązań w i-węźle. Sprawdzenie spójności plików jest bardzo czasochłonne, każdorazowo musi być przeanalizowana całość systemu plików. Sprawdzenie spójności systemu plików w Unix zostało wprowadzone, gdyż brak spójności systemu pliku powoduje pogorszenie efektywności systemu. Sprawdzenie spójności odbywa się poprzez wprowadzenie systemu w stan pracy jednego użytkownika, odłączenie badanego systemu plików i uruchomienie programu fsck. Etapy pracy tego programu obejmują sprawdzenie: bloków i ich rozmiarów; ścieżek dostępu; połączeń; zgodności licznika łączników do pliku dla każdego zapisu w katalogu; listy bloków wolnych; odtwarzania listy bloków wolnych. c) Sprawność systemu plików Przeczytanie słowa pamięci zajmuje kilka nanosekund, a przeczytanie bloku dyskowego wynosi kilkanaście milisekund. Jest to znaczna różnica w prędkości, dlatego dąży się do redukcji operacji dyskowych poprzez stosowanie pamięci buforowej - specjalnie wydzielonej części pamięci operacyjnej. W pamięci buforowej są pamiętane bloki dyskowe, które są aktualnie wykorzystywane - zamiast odwoływać się do wolnego dysku można przeczytać dane z szybkiej pamięci. Buforowanie operacji dyskowych podnosi więc sprawność systemu. Bloki dyskowe aktualnie wykorzystywane są utrzymywane w pamięci buffer cache. Obsługa żądania odczytu bloku polega najpierw na sprawdzeniu czy dany blok znajduje się w pamięci cache. Jeśli blok nie znajduje się w pamięci cache, to jest on czytany dysku do tej pamięci i stamtąd jest kopiowany do pamięci operacyjnej. Jeśli pamięć cache jest zapełniona, to jeden z bloków musi zostać usunięty. Stosuje się tu algorytm FIFO lub LRU (algorytmy te opisano go przy omawianiu algorytmów zastępowania stron w pamięci wirtualnej). Uporządkowanie bloków według LRU jest implementowane w postaci listy łączonej. 9

11 Buforem, w przypadku systemów rozproszonych, może być także dysk lokalny. Algorytm LRU w czystej postaci nie jest w zasadzie stosowany. Powodem jest możliwość zajścia następującej sytuacji. Jeśli blok i-węzła został wczytany do pamięci buforowej i był modyfikowany, lecz nie został zapisany na dysk, to awaria systemu spowoduje, że system plików znajdzie się w stanie niespójnym. Blok i-węzła nie został zapisany na dysku bo znalazł się na końcu łańcucha LRU i chwilę musiało potrwać zanim zostałby zapisany. Modyfikacje listy bloków w pamięci buffer cache mogą być różne w zależności od rodzaju bloków, przy czym bierze się pod uwagę dwa współczynniki: czy blok będzie potrzebny za chwilę ponownie? czy blok jest ważny z punktu widzenia spójności systemów plików? Istnieje także problem zapisu na dysk bloków ważnych z punktu widzenia spójności systemów plików. W Unix zajmuje się tym proces drugoplanowy update. Pracuje on w nieskończonej pętli wywołując co 30s funkcję systemową sync, która powoduje zapisanie modyfikacji bloków znajdujących się w pamięci buforowej na dysk. W systemie Unix ważna jest także alokacja i-węzła na dysku. Dostęp do bloków pliku wymaga wykonania operacji dostępu do bloku i-węzła i następnie do bloków pliku. Jeśli bloki i-węzłów będą umiejscowione na krawędzi dysku to średni czas dostępu do nich będzie równy połowie najdłuższego skoku głowicy. Można ten średni czas skrócić umiejscawiając i-węzły w połowie talerza dysku. W systemie MS-DOS zapis modyfikowanego bloku na dysk następuje tak szybko jak to jest tylko możliwe. Metoda ta nosi nazwę write-through cache - zapis następuje natychmiast po wykonaniu modyfikacji i dotyczy całego bloku. III. ZARZĄDZANIE PAMIĘCIĄ OPERACYJNĄ 1. PROBLEM WIĄZANIA ADRESÓW (address binding) Procesy mogą rezydować w dowolnej części pamięci fizycznej przeznaczonej na programy użytkownika. Proces użytkownika, zanim zostanie wykonany, może przechodzić przez różne fazy. W tych fazach reprezentacja adresów może ulegać zmianie. W programie źródłowym operuje się adresami symbolicznymi: K:=A+B;. Kompilator wiąże adresy symboliczne z adresami względnymi (relokowalnymi): 14 bajtów od początku programu. Program łączący (linker) wiąże adresy względne z adresami bezwzględnymi (absolutnymi) konkretnych komórek pamięci: Te kolejne fazy odwzorowują jedną przestrzeń adresową w drugą - następują wiązania adresów. Powiązanie adresów rozkazów i danych programu z adresami komórek pamięci może być, przy spełnionych określonych warunkach, wykonane w dowolnym etapie odwzorowywania adresów: Faza kompilacji (compile time) - jeżeli podczas kompilacji wiadomo, gdzie proces będzie rezydował w pamięci, wówczas może być wygenerowany kod (adres) bezwzględny - wystarczy znajomość miejsca, od którego zaczyna się obszar przeznaczony dla danego programu; - rozwiązanie to jest tylko możliwe dla wybranych organizacji pamięci, tj. przydział jednego spójnego obszaru lub przydział stref stałych; - jeśli lokalizacja programu ulegnie zmianie, niezbędna jest rekompilacja programu. Faza ładowania (load time) - jeśli nie wiadomo, gdzie program będzie umiejscowiony w pamięci to kompilator musi generować kod relokowalny (relocatable); - ostateczne określanie (wiązanie) adresów jest realizowane dopiero na etapie ładowania (rozwiązanie bardziej elastyczne). Faza wykonywania (run time) - jeśli proces może być przemieszczany z jednego miejsca w pamięci w inne podczas swojego wykonywania, to wiązanie adresów może być realizowane dopiero na etapie wykonywania instrukcji programu. Metody przemieszczania procesów w trakcie realizacji: a) Relokacja statyczna. Wiązanie następuje na etapie kompilacji, ładowania lub przemieszczania programu z jednego miejsca pamięci w inne. Program łączący dołącza do programu binarnego listę (lub mapę bitową) określającą, które słowa programu powinny być relokowalne (dane), a które nie (kody rozkazów). Z każdym programem związane są dwa rejestry graniczne pamiętające początek i koniec strefy zajmowanej przez program. Generowane adresy muszą mieścić się w tych granicach. Przy każdym odwołaniu do pamięci adres jest porównywany z rejestrami granicznymi, co spowalnia wykonywanie rozkazu. b) Relokacja dynamiczna. Wiąże się ona z metodą wiązania adresów na etapie wykonywania. Wykorzystuje się dwa rejestry: limit - zawiera długość strefy adresów logicznych, którymi operuje program; base - zawiera wartość minimalnego adresu fizycznego obszaru, do którego zadanie zostało załadowane. W celu lepszego wykorzystania pamięci stosuje się metodę dynamicznego ładowania podprogramów. Do pamięci operacyjnej wprowadza się tylko niezbędny segment główny. Pozostałe podprogramy są przechowywane na dysku w 10

12 postaci kodu relokowalnego, a do pamięci operacyjnej są wprowadzane dopiero wtedy, kiedy zostaną wywołane. Zaletą takiego rozwiązania jest to, że nigdy nie zostanie załadowany podprogram, którego się nie używa. Relokacja dynamiczna jest wykonywana w prosty sposób przez zmianę wartości rejestru base - pozostałe adresy są generowane dynamicznie na jego podstawie (dynamicznie - podczas pracy programu). Podczas operacji dostępu do pamięci najpierw sprawdzane jest, czy adres logiczny wygenerowany przez procesor jest mniejszy od limit. Jeśli tak, to dodaje się jego wartość do zawartości rejestru base otrzymując adres fizyczny. Jeśli nie, to generowana jest pułapka. 2. PROBLEM WYMIATANIA (swapping) Technika wymiatania polega na przesyłaniu procesu między pamięcią operacyjną a dyskową. Procesy są wymiatane na dysk, gdy w PAO brakuje miejsca do załadowania nowego procesu. Wymiatanie pozostaje w ścisłym związku z zastosowaną techniką wiązania adresów. Wyróżnia się dwie klasy organizacji pamięci: z wymiataniem i bez wymiatania. Podstawowym celem wymiatania jest zwiększenie liczby zadań, które jednocześnie mogą być przetwarzane w systemie. Wymiatanie jest stosowane w powiązaniu z rotacyjnym lub priorytetowym algorytmem szeregowania przydziału procesora. Jak już wspomniano istnieje silny związek techniki wymiatania z zastosowaną techniką wiązania adresów: jeśli wiązanie adresów jest wykonywane w fazie kompilacji lub ładowania do pamięci operacyjnej, to proces wymieciony musi powrócić w to samo miejsce pamięci, w którym przebywał - jest to bardzo trudne do zapewnienia, wiec przy takich technikach wiązania nie stosuje się wymiatania, jeśli wiązanie jest wykonywane w fazie wykonywania, to proces wymieciony może być sprowadzony do innego obszaru pamięci. Podstawową wadą tej jest to, że czas przełączania kontekstu w systemie, w którym stosuje się wymiatanie, jest stosunkowo długi. Stąd wniosek: aby wykorzystanie procesora mogło być wydajne, czas wykonywania (np. kwant czasu w algorytmie rotacyjnym) każdego procesu powinien być porównywalny z czasem wymiany. Wymianie nie mogą podlegać procesy bezczynne, w szczególności nie można wymiatać procesów, które czekają z powodu operacji we/wy, gdyż operacje te mogą mieć asynchroniczny dostęp w obszarze pamięci użytkownika. Istnieją dwie możliwości rozwiązania tego problemu: - nigdy nie wymiatać procesów, które wykonują operacje we/wy lub - wykonywać operacje we/wy tylko za pośrednictwem bufora systemowego; układ DMA prześle wyniki funkcji systemowej do tego bufora, w którym poczekają one na swój proces - przesyłanie danych pomiędzy jądrem systemu operacyjnego a pamięcią procesu nastąpi po powtórnym wprowadzeniu procesu do pamięci. Np. załóżmy, że proces użytkownika ma 100KB. Dysk charakteryzuje się szybkością 1MB/s, stąd przesłanie procesu z PAO na dysk zabierze 100ms. Dodatkowo wystąpi jakiś czas oczekiwania, np. 10ms. Na dysku znajduje się proces P 2, a w PAO proces P 1 i P 3. Proces P 1 powinien zostać wymieciony na dysk, a w jego miejsce powinien zostać załadowany proces P 2. Łączny czas transferu obu procesów wyniesie 220ms (2*110ms), stąd kwant czasu wykonywania procesu P 3 powinien trwać 220ms. Standardowe wymiatanie stosuje się w niewielu systemach, najczęściej stosuje się ograniczenia. Np. w systemie Unix wymiatanie stosuje się tylko wtedy, gdy brakuje miejsca w pamięci operacyjnej. O tym, który proces ma zostać wymieciony, decyduje proces o numerze 0 - swapper. W pierwszej kolejności wymiatane są procesy najdłużej przebywające w pamięci lub procesy bardzo duże. Bezpośrednio z modułem zarządzającym wymiataniem jest związany moduł do zarządzania pamięcią dla wymiatania. Gdy w systemie uruchamiany jest pierwszy proces, to na dysku w obszarze do wymiatania (swap area) jest mu przydzielana porcja równa rozmiarowi procesu. Po zakończeniu procesu obszar ten jest zwalniany. Cały obszar do wymiatania jest zarządzany jako lista wolnych porcji. Z każdym procesem związany jest adres dyskowy swap do wymiatania danego procesu. Adres ten jest przechowywany w tablicy procesów. Obliczenie adresu w celu zapisu strony na dysk jest bardzo proste - do adresu dyskowego dodaje się przesunięcie wynikające z adresu wirtualnego. Ta prostota jest zaletą tej metody. Zanim proces zostanie uruchomiony jego swap area musi zostać zainicjowany. Stosowane są dwa rozwiązania: skopiowanie obrazu całego procesu do swap area i sprowadzanie odpowiednich stron do pamięci w miarę potrzeb; załadowanie całego procesu do pamięci operacyjnej i wymiatanie odpowiednich stron do swap area w miarę potrzeb. Wadą takiego modelu jest to, że przecież rozmiary procesów mogą rosnąć w trakcie realizacji. Najczęściej stosuje się więc osobne obszary do wymiatania tekstu programu, danych i stosu, przy czym dwa ostatnie obszary mogą dysponować więcej niż jedną porcją na dysku. Innym rozwiązaniem jest nie alokowanie niczego na zapas. Przestrzeń na dysku jest alokowana osobno dla każdej strony i to dopiero wtedy, gdy jest ona wymiatana. Gdy strona jest wprowadzana do PAO, to przydzielony jej obszar na dysku jest zwalniany. Wadą takiego podejścia jest konieczność przechowywania dla każdej strony adresu dyskowego jej obszaru swap area. Mechanizmy wyszukiwania miejsca na dysku dla wymiatanego procesu są podobne do mechanizmów wyszukiwania wolnych miejsc w pamięci (First Fit, Best Fit, itp.). 11

13 3. ORGANIZACJE PAMIĘCI W SYSTEMACH OPERACYJNYCH a) Przydział jednego, spójnego obszaru Jest to najprostszy schemat organizacji pamięci. Najczęściej stosuje się kompilatory generujące kod relokowalny, tzn. wiązanie adresów opóźnia się do czasu ładowania. Wykorzystuje się tutaj dwa rejestry: bazowy i graniczny. Bazowy jest nazywany rejestrem przemieszczenia lub relokacji; wartość tego rejestru jest dodawana do każdego adresu generowanego przez proces użytkownika w chwili odwoływania się do pamięci. Proces użytkownika nigdy nie ma do czynienia z adresami fizycznymi. Podstawową wadą tej organizacji jest to, że adres bazowy może być zmieniany tylko wtedy, gdy nie jest wykonywany żaden program użytkownika (statyczna wartość adresu bazowego podczas wykonywania programu). Innym problemem jest sprawa kodu przejściowego systemu operacyjnego. W celu umożliwienia dynamicznych zmian rozmiaru systemu operacyjnego można stosować dwa rozwiązania: - załadować program użytkownika do pamięci górnej; - dokonać wiązania adresów dopiero w fazie wykonywania. Podział pamięci na strefy statyczne i dynamiczne (Multiprogramming with Fixed and Variable Partition) Pamięć jest podzielona na obszary (strefy, partycje). Jest to najprostsza organizacja pamięci umożliwiająca realizację systemu wieloprogramowego. Jednym z podstawowych problemów przy organizacji pamięci jest tzw. fragmentacja pamięci. Istnieją dwa rodzaje fragmentacji: - wewnętrzna - część strefy nie jest wykorzystywana przez zajmujący ją proces; - zewnętrzna - strefy są niewykorzystane gdyż są za małe dla potrzeb procesu. strefy statyczne Strefy mogą mieć równe lub różne rozmiary, każda strefa może zawierać dokładnie jeden proces. Przydział stref może odbywać się na dwa sposoby: - z pojedynczą kolejką FIFO - wszystkie zadania trafiają do jednej kolejki; wadą tutaj jest to, że niektóre zadania, oczekując na wprowadzenie do pamięci, mogą blokować inne zadania; - z wielokrotną kolejką - istnieje kilka kolejek FIFO - jedna dla każdej strefy; Wadą metody jest fragmentacja wewnętrzna. Metoda może być stosowana, gdy znane są rozmiary zadań (np. w systemach wsadowych) - szerokość stref odpowiada rozmiarom najczęściej spotykanych zadań. strefy dynamiczne W przypadku stref dynamicznych zakłada się, że na początku cała pamięć dostępna dla procesów użytkowych traktowana jest jako tzw. dziura. W przypadku zgłoszenia zadania poszukuje się wolnego obszaru, który mógłby je pomieścić - stąd przydzielane obszary mają dynamicznie określane rozmiary. W metodzie tej nie występuje fragmentacja wewnętrzna, problemem jest natomiast fragmentacja zewnętrzna. Można ją minimalizować przez scalanie pamięci (compact), lecz może to być stosowane tylko wtedy, gdy stosuje się wiązanie adresów na etapie wykonywnania. Scalanie polega na takim poprzesuwaniu procesów w pamięci, aby utworzyły one zwarty obszar - reszta pamięci utworzy wtedy jedną wolną dziurę, co znacznie ułatwi operację alokowania następnych procesów. Scalanie jest procesem czasochłonnym, więc jest wykonywane w dużych systemach i to dla procesów o wysokich priorytetach. Proces scalania można połączyć z wymiataniem niektórych procesów na dysk. Wyszukiwanie wolnych miejsc w pamięci Algorytmy wyszukiwania wolnych miejsc w pamięci wykorzystują dwie struktury danych opisujące wolne miejsca (dziury) w pamięci: mapę bitową i listę łączoną. W niektórych organizacjach pamięci wyróżnia się tzw. jednostki alokacji pamięci. Jeśli pamięć jest stronicowana, to jednostką alokacji pamięci jest strona. W przypadku organizacji podziału na strefy problemem jest dobór rozmiaru jednej jednostki. Im mniejsza jednostka alokacji tym większa musi być mapa bitowa, którą trudniej się operuje. Jeśli jednostka alokacji jest większa, to mapa bitowa jest mała, lecz rozmiar procesu może nie być wielokrotnością jednostki alokacji i pamięć zostanie zmarnowana (fragmentacja wewnętrzna). Dynamiczny przydział pamięci wiąże się z przeszukiwaniem mapy bitowej lub listy łączonej. Jak na podstawie struktury opisującej dziury w pamięci spełnić żądanie przydziału obszaru pamięci o rozmiarze n jednostek alokacji?. Stosując mapę bitową, chcąc wprowadzić obszar o rozmiarze k jednostek alokacji, należy na mapie bitowej znaleźć k kolejnych zer. W przypadku listy łączonej należy przeszukać ją i znaleźć element opisujący dziurę o długości odpowiadającej długości procesu (większej lub równej). Strefa jest tu rozumiana jako ciąg sąsiadujących jednostek alokacji przydzielonych do procesu albo wolnych. Każdy element listy zawiera cztery pola: znacznik, czy strefa jest wolna czy zajęta (P - proces, H - dziura) 12

14 numer jednostki alokacji, od której zaczyna się strefa długość strefy (w jednostkach alokacji) wskaźnik na następny element listy. Posortowanie listy według adresów posiada tą zaletę, że w przypadku wymiecenia lub ukończenia procesu aktualizacja listy jest bardzo prosta - zmienia się znacznik zajętości obszaru na znacznik dziury. Algorytmy wyszukiwania wolnych miejsc: pierwsza pasująca (First Fit) - lista dziur jest przeszukiwana aż do znalezienia pierwszej dziury wystarczająco dużej do pomieszczenia procesu. Wówczas dziura dzielona jest na dwie części - jedna zostaje zajęta przez dany proces, druga na dziurę. W przypadku równości rozmiarów procesu i dziury, dana dziura jest zapełniona w całości przez proces. Jest to algorytm bardzo szybki. Odmianą tego algorytmu jest następna pasująca (Next Fit) - działa on podobnie z tą różnicą, że po każdym przebiegu pamiętane jest miejsce, w którym algorytm skończył przeszukiwanie. Następne przeszukiwanie rozpocznie się od tego miejsca. Założeniem tego algorytmu jest to, że wszystkie procesy mają podobny rozmiar. najlepiej pasująca (Best Fit) - przeszukiwana jest cała lista dziur i wybierana jest dziura najmniejsza, najlepiej pasująca do danego procesu. Jest to algorytm prowadzący do lepszego wykorzystania pamięci, lecz wiąże się to z wydłużeniem czasu wyszukiwania. W niektórych przypadkach algorytm ten powoduje większe marnotrawstwo pamięci niż First Fit, gdyż starając się maksymalnie wykorzystać dziury zostawia bardzo małe obszary nie nadające się do niczego. Dziury generowane przez First Fit można zwykle wykorzystać. najgorzej pasująca (Worst Fit) - algorytm ten tworzy możliwie jak największe dziury, które można jeszcze wykorzystać. Jest to algorytm przeciwny do Best Fit. W praktyce nie stosowany. Metody poprawy efektywności ww algorytmów: utrzymywanie osobnych list dla obszarów zajętych i wolnych; posortowanie listy dziur wg rozmiarów, co może przyspieszyć działanie algorytmu Best Fit; algorytm Quick Fit - utrzymywanie osobnych list dla wybranych, najczęściej żądanych rozmiarów dziur. Podobnymi mechanizmami musimy dysponować przy wymiataniu procesów na dysk, tzn. dla znalezienia wolnego miejsca dla wymiatanego procesu. b) Pamięć stronicowana Przestrzeń adresowa dzielona jest na równe części - strony (page), a pamięć fizyczna na ramki (frame), przy czym rozmiar strony równa się rozmiarowi ramki. Dowolną stronę można umieścić w dowolnej ramce stosując odpowiednią metodę odwzorowywania. Strony są spójne i przylegają do siebie (ramki nie muszą). Przy stronicowaniu występuje jednostka MMU (jednostka zarządzania pamięcią), która przekształca adres wirtualny na adres fizyczny. Korzysta ona z pewnych struktur danych odwzorowania tzn. z tablicy stron. Użytkownik nie widzi tego odwzorowania. Program użytkownika generuje adres logiczny, który jest kierowany do jednostki MMU, gdzie następuje jego translacja. Dopiero adres fizyczny jest wysyłany szyną adresową do jednostki pamięci. Wykorzystanie jednostki MMU Każdy adres wygenerowany przez procesor dzieli się na dwie części: numer strony (4 najstarsze bity) i odległość na stronie (12 pozostałych bitów). Numer strony jest używany jako indeks w tablicy stron. Tablica stron zawiera adresy bazowe wszystkich stron w pamięci operacyjnej. W połączeniu z odległością na stronie, adres bazowy definiuje adres fizyczny pamięci - posyłany do jednostki pamięci. Adres przesunięcia jest kopiowany z wejścia MMU na wyjście i dodawany do adresu ramki. Przestrzeń adresowa wynosi 2 4 =16 stron, rozmiar strony wynosi 2 12 =4096B. Dodatkowa kolumna (bit) w tablicy stron oznacza, czy strona znajduje się w pamięci (1) czy nie (0) - jest to tzw. bit ważności strony. Pamięć fizyczna jest mniejsza od pamięci adresowej, gdyż w adresie wirtualnym mamy 4 bity na stronę a w adresie fizycznym mamy 3 bity na ramkę. Strony współdzielone Zaletą stronicowania pamięci jest możliwość współdzielenia kodu programu - jest to konieczne w systemach wielodostępnych. Mimo to każdy proces w systemie ma własną tablicę stron. Kod współdzielony jest nazywany kodem współdzielonym lub kodem współużywanym. Tablice stron Tablica stron jest to struktura danych służąca do odwzorowania przestrzeni adresowej użytkownika w przestrzeń pamięci operacyjnej. Typowy zapis w tablicy stron - najważniejsze pole - page frame number - numer ramki; - bit referenced jest ustawiany automatycznie, gdy następuje odwołanie do strony; 13

15 - pole protection określa dozwolony sposób dostępu do strony (3 bity: zapis, odczyt, wykonywanie); - jeśli strona była modyfikowana, to MMU ustawia bit modified - strona musi być przed wymieceniem zapisana na dysk; - pole caching disabled pozwala na zablokowanie mechanizmu buforowania aby uniknąć sytuacji korzystania z nieaktualnej wersji strony znajdującej się w pamięci cache. Procesor korzysta wtedy z pamięci operacyjnej a nie z pamięci cache. - bit obecności strony; W niektórych tablicach stron są pamiętane adresy dyskowe stron przy wymiataniu, lecz przeważnie są one przechowywane w osobnych tablicach. W tablicy stron muszą być informacje niezbędne tylko do translacji adresu (ze względu na szybkość). Implementacja tablicy stron Jest to poważny problem projektowy: tablice stron mogą mieć duży rozmiar Weźmy np. procesor z adresem 32-bitowym. Przy rozmiarze strony 4KB otrzymujemy 1mln stron wirtualnej pamięci adresowej. Tablica stron każdego procesu miałaby milion pozycji! odwzorowanie adresów musi odbywać się bardzo szybko Typowa instrukcja składa się z dwóch części: kodu i argumentów. Każde odwołanie do pamięci wiąże się z odwołaniem do pamięci stron. Aby mechanizm odwzorowywania adresów nie stał się wąskim gardłem systemu, to operacja przeglądania tablicy stron powinna być wykonana w ciągu kilku nanosekund. Szybkość odwzorowywania adresów Biorąc pod uwagę powyższe problemy najprostszym rozwiązaniem implementacji tablicy jest pojedyncza tablica z zestawem szybkich rejestrów (po jednym na stronę), gdzie numer strony jest indeksem do tej tablicy. Gdy proces jest uruchamiany, to system ładuje do tych rejestrów tablicę stron procesu pobraną z PAO. Przy wykonywaniu procesu nie ma już dalszych odwołań do PAO lecz tylko do rejestrów. Ograniczenie - rejestrów może być maksymalnie 256. Przy przełączaniu procesora konieczna jest wymiana tablicy stron (czas!). Innym rozwiązaniem jest przechowywanie tablicy stron w całości w PAO. Rejestr bazowy wskazuje na początek tablicy w PAO. Przy przełączaniu procesora na inne zadanie następuje wymiana zawartości tego rejestru na adres początku tablicy stron nowego zadania. Translacja adresu nie różni się niczym od rozwiązania poprzedniego, trzeba tylko na początku dodać do numeru strony zawartość rejestru bazowego. Wadą tego rozwiązania jest to, że dla każdej wykonywanej instrukcji musi być wykonywana co najmniej jedna operacja dostępu do pamięci w celu odczytania numeru ramki. Spowalnia to pracę całego systemu ponieważ wymaga jednego kompletnego cyklu pamięci, a cykl ten jest znacznie dłuższy od cyklu maszynowego. Dostęp do danego słowa pamięci wymaga wpierw dostępu do tablicy stron (także umieszczonej w pamięci) przy pomocy rejestru bazowego, a dopiero potem można wykonać właściwą operację dostępu do pamięci. Rozwiązanie to nie jest stosowane samodzielnie. W przypadku zdecydowanej liczby programów widać tendencję do odwoływania się do małej liczby stron w trakcie realizacji programu. Odwołania do pamięci skupiają się wokół kilku stron. W tablicy stron przechowywało się dotychczas alokacje wszystkich stron, z czego wykorzystywana była tylko część. W związku z tym zaproponowano, aby do implementacji tablicy stron użyć tzw. pamięci asocjacyjnej (pamięci adresowanej zawartością). Dostęp do tej pamięci jest znacznie szybszy niż do PAO. W tej pamięci przechowuje się opisy stron aktywnych tzn. aktualnie wykorzystywanych przez program. Przeszukiwanie komórek pamięci asocjacyjnej nie jest wykonywane sekwencyjnie lecz równolegle na wszystkich adresach. Zbiorowi rejestrów asocjacyjnych jest przedstawiany klucz, który jest porównywany ze wszystkimi komórkami w tej samej operacji. Gdy argument zostanie znaleziony, to w wierszu, gdzie on się znajduje pojawia się bit zgodności. Gdy szukany numer strony nie znajduje się w pamięci asocjacyjnej, go generowany jest sygnał braku zgodności i wykonywana jest operacja dostępu do tablicy stron w PAO. Pobrany stamtąd numer ramki (oraz opis strony) jest zapamiętywany w jednym z rejestrów pamięci asocjacyjnej i może być wykorzystywany do dalszych instrukcji. O stopniu wykorzystania pamięci asocjacyjnej świadczy współczynnik trafień hit rate określający stosunek odwołań zrealizowanych przy pomocy pam. asocjacyjnej do ogólnej liczby odwołań do pamięci. Im większa wartość tego współczynnika tym wyższa sprawność systemu. Współczynnik trafień można zwiększyć przez zwiększenie pojemności pam. asocjacyjnej, która jest jednak bardzo droga. Pamięć asocjacyjna w systemie wieloprogramowym Nowy proces nie może korzystać z zapisów należących do poprzednio wykonywanego procesu. Konieczna jest zmiana zawartości pam. asocjacyjnej. Stosuje się dwa rozwiązania: Prostsze. Wykonuje się instrukcje maszynowe zerujące bity ważności stron w pam. asocjacyjnej - unieważnia się stare opisy stron. Następnie do pam. asocjacyjnej ładowane są opisy wykorzystywane przez nowy proces. W pam. asocjacyjnej wydzielone jest pole, w którym pamiętany jest identyfikator procesu wykorzystującego dane strony. Konieczne jest tu dołożenie dodatkowego rejestru (z którego korzysta system operacyjny), w którym przechowywany jest identyfikator procesu aktualnie wykonywanego. Podczas translacji adresu porównuje się nie tylko numer strony lecz także identyfikator procesu. Problem rozmiaru tablic stron W nowoczesnych systemach numery stron są 32-bitowe, na przesunięcie przeznaczone jest 12 bitów - można mieć więc milion ramek. Tak dużymi strukturami nie da się manipulować, więc w takich systemach wykorzystuje się wielopoziomowe tablice stron. Sekret tej metody polega na tym, że aby uniknąć przechowywania w PAO wszystkich tablic stron jednocześnie, w PAO przechowuje się tylko te tablice stron, które są aktualnie wykorzystywane. Tablicę stron 14

16 każdego procesu dzieli się na dwa poziomy: pierwotny i wtórny. W adresie logicznym wyróżnia się trzy pola: PT1, PT2 i Offset. 10-bitowe pole PT1 stanowi indeks do tablicy stron do górnego poziomu, w której są przechowywane adresy do tablic drugiego poziomu. Bit ważności mówi tu, czy tablica stron poziomu wtórnego znajduje się w PAO. 10-bitowy PT2 stanowi indeks do tablicy poziomu wtórnego. 12-bitowy Offset to przesunięcie na stronie. Np. w systemach z procesorami SPARC wykorzystuje się trójpoziomowe tablice stron. Odwrócone tablice stron Dla procesorów 64-bitowych sprawa jest trudniejsza. Rozmiar strony jest 4KB a adres jest 64-bitowy (w tym przesunięcie ma 12 bitów). Wynika stąd, że stron może być Konstrukcja tablicy o tylu szczelinach jest oczywiście technicznie nie do zrealizowania. Stosuje się tu inne podejście - odwrócone tablice stron (zawsze implementowane w postaci pamięci asocjacyjnej). Mechanizm odwzorowania adresu jest teraz zorganizowany wokół pamięci fizycznej a nie wirtualnej. W tablicy stron jest tyle zapisów ile jest ramek w pamięci fizycznej. c) Pamięć segmentowana Jest to metoda zarządzania pamięcią w sposób jaki widziana jest ona przez programistę. Każdy segment tworzy liniową sekwencję komórek pamięci rozpoczynających się od 0 do pewnego maksimum. Długość segmentu może się zmieniać podczas wykonywania programu (np. stos). Generalnie segmenty mogą się zmieniać niezależnie jeden od drugiego. Ma to duże znaczenie w fazie kompilacji i konsolidacji procedur, z których każda zaczyna się od adresu 0. Wywołanie procedury która stanowi n-ty segment programu polega na podaniu dwuczęściowego adresu (n,0) - rozpoczęcie procedury n od słowa 0. Każdy segment ma własną nazwę i długość. Często, dla uproszczenia, stosuje się zamiast nazw numery segmentów. Adres logiczny składa się z dwóch części: s - numeru segmentu i d - przesunięcie w segmencie. Każdy segment może być załadowany w dowolne miejsce PAO, niezbędny jest więc mechanizm odwzorowania adresów. Zmiana dwuczęściowego adresu logicznego na adres liniowy w PAO odbywa się dynamicznie podczas wykonywania programu i proces ten może być połączony z ochroną segmentów. Numer segmentu jest wykorzystywany jako indeks do tablicy segmentów. Każda tablica zawiera adresy bazowe segmentów (base) i ich długości (limit). Przesunięcie musi zawierać się między 0 a limit. Tablica segmentów może być implementowana za pomocą szybkich rejestrów lub jako tablica w pamięci z rejestrem bazowym wskazującym na jej początek. Przy segmentacji ochrona w systemie jest łatwiejsza i bardziej elastyczna (ze względu na podział na segmenty). Dla każdego z segmentów możemy inaczej zdefiniować prawa dostępu. Możliwe jest współdzielenie segmentów; segment może być jednostką wymiataną na dysk. Segmentacja w czystej postaci może prowadzić do fragmentacji pamięci ponieważ jest to metoda bardzo podobna do podziału pamięci na obszary dynamiczne. Z tego powodu metoda fragmentacji w czystej postaci jest rzadko stosowana. Porównanie stronicowania i segmentacji Stronicowanie Segmentacja Czy użytkownik jest świadomy, że taka technika jest w systemie stosowana? Nie Tak Ile jest liniowych przestrzeni adresowych? 1 Wiele Czy przestrzeń adresowa może przekroczyć rozmiar pamięci fizycznej? Tak Tak Czy kod i dane w pamięci mogą być w łatwy sposób chronione osobno? Nie Tak Czy łatwo zarządzać tablicami o zmiennym rozmiarze? Nie Tak Czy łatwo jest współdzielić fragmenty kodu? Tak Tak Segmentacja stronicowana Zarówno segmentacja jak i stronicowanie mają swoje wady i zalety. Połączenie obydwu tych technik daje dobre rezultaty - uzyskuje się korzyści płynące z segmentacji a zarazem, dzięki stronicowaniu, usuwana jest wada zewnętrznej fragmentacji występująca w czystej pamięci segmentowanej. Zamiast traktować segment jako jeden obiekt każdy z nich można podzielić na strony. Manipulując stronami, zamiast całymi segmentami, unika się problemów scalania i fragmentacji pamięci. Technikę przedstawiono na przykładzie systemu Multics (wersji systemu Unix dla dużych komputerów): Pozycja w tablicy segmentów zawiera nie adres segmentu, lecz adres bazowy tablicy stron tego segmentu. Odległość w segmencie jest podzielona na 6-bitowy numer strony i 10-bitową odległość na stronie. Numer strony jest indeksem w tablicy stron, z której uzyskuje się numer ramki. Wreszcie numer ramki, w połączeniu z odległością na stronie, tworzy adres fizyczny. Dodatkowo system ten stronicuje tablicę segmentów. d) Pamięć wirtualna Jest to taka organizacja pamięci, w której można osiągnąć ponad 100% wykorzystania PAO, tzn. suma wielkości przestrzeni adresowych wszystkich zadań wykonywanych w trybie wieloprogramowym może przekroczyć wielkość fizycznej pamięci operacyjnej. Podstawą jest odrzucenie wymagania, aby cała przestrzeń adresowa zadania znajdowała się naraz w pamięci operacyjnej i ograniczenie się do umieszczania tam jedynie jej części (wystarczy jedna strona lecz w praktyce umieszcza się kilka stron). Dzięki temu rozwiązaniu użytkownik ma wrażenie wykorzystywania nieograniczonej 15

17 PAO i stąd nazwa wirtualna. Ograniczeniem wirtualnej pamięci adresowej jest pojemność dysku (zadanie do PAO pobierane jest z dysku). Podstawowe założenia: oddzielenie wirtualnej przestrzeni adresowej od przestrzeni pamięci fizycznej; stronicowanie przestrzeni adresowej; mechanizm odwzorowania adresów (MMU, tablice stron); odpowiednie moduły systemu operacyjnego obsługujące wymianę części zadań pomiędzy PAO a dyskiem. Takie podejście ma na celu załadowanie do PAO tylko istotnych części zadań (najważniejszych i najczęściej wykonywanych procedur programów), reszta jest ładowana w miarę potrzeb. Pamięć wirtualna jest najczęściej implementowana w postaci stronicowania na żadanie. Stronicowanie na żądanie Procesy rezydują w pamięci pomocniczej (zwykle na dysku). Proces, który należy wykonać, zostaje wprowadzony do pamięci głównej. Program zmieniania stron zgaduje, które strony będą w użyciu. Zamiast dokonywać wymiany całego procesu, do PAO są sprowadzane tylko strony niezbędne. Unika się w ten sposób czytania do pamięci stron, które nigdy nie będą użyte, skracając czas wymiany i zmniejszając zapotrzebowanie na pamięć fizyczną. Postępowanie takie wymaga korzystania z odpowiednich środków sprzętowych. Każda pozycja w tablicy stron jest uzupełniona o dodatkowy bit poprawności odniesienia. Gdy bit ma wartość poprawny, wówczas strona znajduje się w PAO, a gdy niepoprawny - strona znajduje się na dysku. Dopóki proces odwołuje się do stron, które są załadowane do PAO, dopóty jego wykonanie przebiega prawidłowo. Gdy proces spróbuje użyć strony nieobecnej w pamięci, to powstanie pułapka zwana błędem strony. Sprzęt stronicujący wykryje, że wartością bitu poprawności jest niepoprawny. Postępowanie w takim przypadku jest dość proste: 1. Sprawdzenie wewnętrznej tablicy, aby określić, czy odwołanie do pamięci było dozwolone czy nie. Jeśli odwołanie było niedozwolone, to proces jest zakańczany. 2. Jeśli odwołanie było dozwolone, lecz zabrakło właściwej strony w pamięci, to potrzebna strona jest sprowadzana do pamięci. 3. Odnajduje się wolną ramkę. 4. Wystosowuje się zamówienie na przeczytanie z dysku potrzebnej strony do nowo przydzielonej ramki. 5. Po zakończeniu czytania z dysku następuje modyfikacja przyporządkowanej procesowi tablicy wewnętrznej oraz tablicy stron, odnotowując, że strona jest już w pamięci. 6. Następuje wznowienie wykonania instrukcji, która została przerwana wskutek odwołania się do niedozwolonego adresu. Proces może teraz sięgnąć do strony tak, jakby była ona zawsze w pamięci. Dzięki przechowywaniu stanu przerwanego procesu (rejestry, kody warunków, licznik rozkazów) w chwili wystąpienia błędu strony, jest możliwe wznowienie procesu dokładnie w tym samym miejscu i stanie, w którym został on przerwany, przy czym żądana strona znajduje się już w pamięci i jest dostępna. Jednym słowem, gdy proces spróbuje odnieść się do adresu komórki, której nie ma w pamięci, to sprzęt uruchomi odpowiednią pułapkę systemową, system operacyjny przeczyta odpowiednią stronę do pamięci i wznowi proces. W czystym stronicowaniu na żądanie proces rozpoczyna pracę bez żadnej strony w pamięci. Będzie on zatem przerywany dopóki wszystkie brakujące strony nie znajdą się w pamięci. Ideą jest nie sprowadzanie strony do pamięci, zanim nie zostanie zgłoszone zapotrzebowanie na nią. Restartowanie zadań nie jest proste, ponieważ przerwane instrukcje mogą być bardzo złożone. Oprócz wyposażenia sprzętowego jest jeszcze potrzebne odpowiednie oprogramowanie. W celu restartowania instrukcji system musi wiedzieć, gdzie znajduje się jej pierwszy bajt. Wartość licznika rozkazów podczas błędu strony zależy od tego, przy którym operandzie wystąpił błąd oraz od sposobu implementacji mikrokodu procesora. Niestety, często system nie jest w stanie określić, gdzie zaczyna się instrukcja. Problem ten jest jeszcze bardziej złożony w przypadku instrukcji autoinkrementalnych lub instrukcji typu MVC. W zależności od szczegółów mikrokodu zwiększenie licznika rozkazów może być wykonywane przed lub po wykonaniu operacji odwołania do pamięci. W tym pierwszym przypadku system musi zmniejszyć wartość licznika rozkazów przed wykonaniem instrukcji, w drugim przypadku nie musi robić nic. Często można spotkać różne rozwiązania implementacji mikrokodu dla różnych instrukcji i modeli procesorów, dlatego np. stronicowanie w procesorach Motorola nie było możliwe. Rozwiązano to poprzez dodatkowy rejestr, do którego kopiowany jest licznik rozkazów tuż przed wykonaniem instrukcji, dodatkowo maszyny te posiadają drugi pomocniczy rejestr wskazujący, który rejestr roboczy jest autoinkrementowany i o ile. Inne rozwiązanie to składanie na stos przez mikrokod informacji pomocniczych, niezbędnych do restartowania instrukcji - są to czynności wykonywane wewnątrz procesora, nie przez system operacyjny. Projektanci wielu nowoczesnych maszyn w związku ze zmianą budowy procesora zrzucili problem restartowania zadań na system operacyjny. Dwoma głównymi problemami stronicowania na żądanie są: opracowanie algorytmu zastępowania stron oraz algorytmu przydziału ramek. Jeśli w pamięci znajduje się wiele procesów, to trzeba zdecydować, ile ramek zostanie przydzielonych do każdego procesu. Następnie, gdy powstanie konieczność zastąpienia strony, wówczas trzeba umieć wskazać ramkę do wymiany. 16

18 Zastępowanie stron Zasada zastępowania stron jest następująca. Jeżeli wszystkie ramki są zajęte, to znajduje się taką, która nie jest bieżąco używana i zwalnia się ją. Ramkę można zwolnić przez zapisanie jej zawartości na dysku i zmianę tablicy stron. Do zwolnionej ramki sprowadza się stronę, której brak spowodował błąd w procesie. Potrzebne jest wtedy dwukrotne przesyłanie stron - jedna na dysk a druga z dysku. Konsekwencją jest wydłużony efektywny czas dostępu. Nakład ten można zmniejszyć wykorzystując bit modyfikacji, który jest ustawiany przy operacji modyfikującej zawartość strony. Gdy bit ten nie jest ustawiony, to podczas zastępowania stron nie jest konieczne przesyłanie tej strony na dysk. Przy sprowadzaniu strony z dysku musimy dysponować jej adresem fizycznym na dysku. W starszych rozwiązaniach przechowywano go w tablicy stron, obecnie jest to osobna tablica. Wprowadzenie wirtualizacji umożliwia zwiększenie wieloprogramowości systemu przy tej samej pojemności PAO, co z kolei powoduje zwiększenie równoległości pracy procesora i urządzeń I/O oraz wzrost efektywności całego systemu. W praktyce okazuje się, że takie rozumowanie nie zawsze jest prawdziwe, ponieważ nie uwzględnia ono obciążenia systemu dodatkowymi transmisjami między dyskiem a PAO, które wynikają z konieczności wymiany stron. W skrajnym przypadku dochodzi do tzw. migotania stron inaczej szamotania stron. Zjawisko to charakteryzuje się częstym zachodzeniem sytuacji, w której bezpośrednio po usunięciu strony z pamięci następuje odwołanie do niej i w konsekwencji ponowne sprowadzenie jej do pamięci. Procesy cały swój czas spędzają na stronicowaniu co doprowadza do blokady systemu. Ze względu na migotanie bardzo wiele uwagi i czasu poświęcono badaniom algorytmów wymiany stron, które określają, kiedy i jakie strony należy usunąć. Efekt szamotania można ograniczyć za pomocą lokalnego algorytmu zastępowania. Przy zastępowaniu lokalnym, gdy jakiś proces się szamocze, nie wolno mu kraść ramek innego procesu i doprowadzać do także do szamotania. Aby zapobiec szamotaniu należy dostarczyć procesowi tyle ramek ile potrzebuje. Stosuje się tu tzw. model zbioru roboczego. Algorytmy zastępowania stron Przede wszystkim zależy nam na takim algorytmie, przy którym częstotliwość błędów strony będzie najmniejsza. Algorytm FIFO Za każdym razem, gdy nowa strona zostaje sprowadzona z dysku jej numer zostaje umieszczony w kolejce FIFO na ostatnim miejscu. Gdy trzeba usunąć jakąś stronę, to usuwana jest ta najdłużej przebywająca w PAO czyli strona z początku listy. Jeśli strona, która ma być usunięta była modyfikowana, to wcześniej musi być zapisana na dysku (dotyczy to wszystkich algorytmów wymiany stron). Algorytm ten w klasycznej postaci nie jest implementowany. Algorytm optymalny Zastąp tę stronę, która najdłużej nie będzie używana. Gwarantuje on najniższą z możliwych częstotliwości błędów strony dla danej liczby ramek, lecz jest bardzo trudny w realizacji. Algorytm LRU (Least Recently Used) Stanowi on przybliżenie algorytmu optymalnego. Usuwana jest ta strona, która była najdawniej używana. Algorytm ten bazuje na obserwacji, że strona ostatnio używana podczas wykonywania instrukcji będzie prawdopodobnie wykorzystywana dalej i analogicznie - strona nieużywana od dłuższego czasu nie będzie dalej wykorzystywana. Stosuje się dwie implementacje: Liczniki: Do każdej pozycji w tablicy stron dołączany jest rejestr czasu użycia, do procesora zaś dodaje się zegar logiczny lub licznik. Wskazania zegara są zwiększane za każdym odniesieniem do pamięci. Ilekroć występuje odniesienie do pamięci, tylekroć zawartość rejestru zegara jest kopiowana do rejestru czasu użycia należącego do danej strony w tablicy stron. W ten sposób dla każdej strony dysponujemy zawsze czasem ostatniego do niej odniesienia. Zastępujemy stronę z najmniejszą wartością czasu. Stos: Numery stron, do których następują odwołania, umieszcza się na stosie. W ten sposób na szczycie stosu znajduje się numer strony ostatnio używanej, a na jego dnie - numer strony używanej najdawniej. Implementuje się to w postaci listy dwukierunkowej ze wskaźnikami do czoła i do końca listy. Algorytmy przybliżające algorytm LRU W niewielu systemach istnieje odpowiedni sprzęt do realizacji prawdziwego algorytmu LRU. Wiele systemów ma pewne ograniczone środki wspomagające w postaci bitów odniesienia. Bit odniesienia (R) jest ustawiany dla danej strony przez sprzęt zawsze wtedy, gdy następuje do niej odniesienie. Bity odniesienia znajdują się na wszystkich pozycjach tablicy stron. Na początku wszystkie bity odniesienia są zerowane przez system. Podczas wykonywania procesu podczas odwoływania do poszczególnych stron ich bity R są ustawiane. Po pewnym czasie można określić, które strony były używane a które nie. Informacja ta jest wykorzystywana przez algorytmy przybliżające algorytm LRU. - Algorytm drugiej szansy (zegarowy) Podstawą jest algorytm FIFO. Po wybraniu strony do zastąpienia sprawdza się dodatkowo jej bit odniesienia. Jeśli wartość tego bitu wynosi 0, to strona zostaje zastąpiona. Jeśli natomiast bit odniesienia jest równy 1, to dana strona dostaje drugą szansę, a pod uwagę bierze się następną stronę wynikającą z algorytmu FIFO. Bit odniesienia strony, której daje się drugą szansę, jest zerowany, a czas jej pobrania ustawia się na czas bieżący. W ten sposób strona, której dano drugą szansę, dopóty nie będzie uwzględniona przy zastępowaniu, dopóki nie zostaną zastąpione inne strony (lub otrzymają drugą szansę). W przypadku, gdy wszystkie strony miały ustawiony bit odniesienia, algorytm obiegnie całą kolejkę i wróci do pierwszej strony, którą ostatecznie zastąpi. Jednym ze sposobów na zaimplementowanie tego algorytmu jest kolejka cykliczna, przy czym stronę typowaną do zastąpienia w następnej kolejności pokazuje wskaźnik. - Algorytm LFU (Least Frequently Used) Algorytm zastępowania strony najmniej używanej prowadzi licznik odniesień do każdej strony. Zastąpieniu ulega strona z najmniejszą liczbą odniesień. Algorytm ten może być obarczony błędami wynikającymi z sytuacji, w której strona jest intensywnie użytkowana w początkowej fazie procesu, a potem przestaje być używana w ogóle. Pozostała jej jednak wysoka wartość licznika odniesień i strona nadal pozostaje w pamięci, mimo że nie jest dłużej potrzebna. Poza tym pojawia się problem migotania stron, gdyż stroną charakteryzującą się najmniejszą 17

19 częstotliwością odwołań może być strona dopiero co sprowadzona do pamięci. Algorytm ten praktycznie wyszedł z użycia. Algorytm NUR (Not Used Recently) Usuwa stronę ostatnio nieużywaną. Jest on implementowany z wykorzystaniem dwóch bitów: R (odwołań) oraz M (modyfikacji), pamiętanych w tablicy stron. Wstępnie bity te są ustawione na 0, a w miarę odwołań i modyfikacji są zmieniane na 1. W tej metodzie strony są dzielone na cztery klasy (grupy), bazujące na wartościach bitów R i M: class 1 - bez odwołań, bez modyfikacji, class 2 - bez odwołań, modyfikowana (grupa specyficzna), class 3 - było odwołanie, bez modyfikacji, class 4 - było odwołanie, modyfikowana. W trakcie pracy systemu, wcześniej czy później, wszystkie bity odwołań przyjmą w końcu wartość 1. Tak więc okresowo zeruje się wszystkie bity R (bity M nie) i efektem tego jest, bezsensowna na pierwszy rzut oka, klasa druga. Bit modyfikacji jest wykorzystywany przez procedury wymiatające strony na dysk oraz przez procedury utrzymujące spójność poprzez okresowe zapisywanie stron na dysk. Algorytm ten jest chętnie stosowany w bazach danych, ponieważ jego działanie zapewnia bardzo dobrą spójność między danymi znajdującymi się w pamięci operacyjnej i na dysku. Przydział ramek Każdy proces powinien otrzymać wystarczającą liczbę ramek aby nie zaczął migotać. Skąd jednak wiadomo jaka to liczba? Najprostszym sposobem jest danie każdemu procesowi jednakowej liczby ramek - przydział równy. Można też podejść do problemu inaczej i uznać rozmaite zapotrzebowania procesów na ramki - każdemu przydziela się dostępną pamięć odpowiednio do jego rozmiaru (przydział proporcjonalny) lub jego priorytetu. 4. ZARZĄDZANIE PAO W UNIX W systemie dostępna jest segmentacja w czystej postaci lub segmentacja ze stronicowaniem. Obecnie wszystkie wersje Unix pozwalają na utworzenie pamięci wirtualnej. Jeśli proces potrzebuje strony, która nie znajduje się w PAO, to generowany jest błąd strony, brakująca strona jest sprowadzana z dysku i alokowana w PAO, po czym następuje kontynuowanie procesu. W mapie pamięci jest tyle zapisów ile jest ramek w pamięci. Mapa pamięci systemowej nie powinna przekraczać 2% obszaru PAO, natomiast usuwanie stron z PAO przebiega w dwóch etapach. Najpierw strona jest oznaczana w tablicy stron jako nieważna (do usunięcia). Jeśli na tym etapie zostanie wygenerowany błąd strony to strona której przerwanie to dotyczy może być szybko oznaczona ponownie jako ważna i można ją wykorzystywać ponownie bez konieczności sprowadzania strony z dysku (unikamy problemu migotania stron). W systemie Unix stosuje się algorytm drugiej szansy implementowany w formie wskazówki zegara. Nazwa tego algorytmu bierze się także od nazwy programów (Clock Hand). Jeśli znaleziona strona jest oznaczona jako nieważna, to jest ona usuwana a ramka dodawana jest do listy ramek wolnych. Natomiast jeśli strona jest oznaczona jako ważna i aktualnie nie jest wykorzystywana przez operacje we/wy, to jej status jest zmieniany na nieważny i jest zostawiana w spokoju. Jeśli na danej stronie były wykonywane operacje we/wy, to nie może ona być oznaczona jako nieważna. W Unix kontroli podlega również lista stron ze statusem ważny tak, aby nie obniżyła się ona zbytnio, co mogłoby spowodować nagły wzrost żądań sprowadzenia stron z dysku. Proces Clock Hand jest identyfikowany jako część procesu z identyfikatorem 2, jest to tzw. demon stron (page daemon) - proces systemowy zarządzający stronicowaniem (zawsze ma numer 2). Proces z identyfikatorem 2 większość czasu śpi, lecz w tym czasie co kilka sekund trwa sprawdzanie czy konieczna jest jego interwencja (np. gdy liczba wolnych ramek w PAO spadnie poniżej pewnej wartości progowej) i jest on wtedy budzony. Producenci Unix zalecają bardzo dużą wartość progową, zazwyczaj 1/4 obszaru pamięci. Proces swapper obsługuje wymiatanie stron (ma identyfikator 0). Bada on czy system stronicowania nie jest przeładowany. Jeśli tak, to pewne procesy są usuwane okresowo (wymiatane na dysk). Oprócz wartości progowej brany jest również średni rozmiar dostępnej pamięci w ostatnim okresie. W Unix praca systemu jest cały czas monitorowana. Pewne procesy są usuwane (wymiatane) jeśli w systemie istnieje chroniczny brak pamięci lub istnieją procesy które próbują podjąć pracę ze względu na niedostępność pamięci. 18

20 KOMPENDIUM + IV. ZARZĄDZANIE PROCESAMI 1. MODEL PROCESU Proces jest jednostką pracy systemu. Procesy systemu operacyjnego wykonują programy systemowe natomiast procesy użytkowe działają wg programów napisanych przez użytkowników. Proces jest czymś więcej niż zakodowanym i uruchamianym programem z określoną bieżącą czynnością. Procesy mogą działać współbieżnie dzięki przełączaniu procesora do danych procesów (zwiększenie wydajności). Do procesu na ogół należą także między innymi: stos - przechowujący pewne dane tymczasowe (parametry procedur, zmienne powrotu); sekcja danych - zawierająca zmienne globalne; zestaw informacji pomocniczych. Sam program nie jest procesem. Program jest obiektem pasywnym podobnie jak zawartość pliku przechowywanego na dysku. Proces jest obiektem aktywnym z licznikiem rozkazów, zawartością odpowiednich rejestrów i zestawem innych informacji pomocniczych. Z jednym programem może być związanych wiele procesów. Wykonywany proces może tworzyć wiele nowych procesów. Model stanów procesu (bieżąca czynność procesu): running - wykorzystywany jest kod procesu - proces jest wykonywany; waiting - stan oczekiwania (zablokowania) - proces czeka na wystąpienie pewnego zdarzenia; ready - proces czeka na przydział procesora (pozostałe zasoby ma przydzielone). W każdej chwili tylko jeden proces może być aktywny, natomiast wiele może być gotowych lub oczekujących (gdy rozpatrujemy system jednoprocesorowy). Dodatkowo wprowadzany jest stan SIDL - stan pośredni wprowadzający proces do systemu (następuje przydzielenie procesowi zasobów). Występuje także stan SZOMB, będący stanem pośrednim podczas usuwania procesu (proces potomny się zakończył, ale informacja o tym nie dotarła jeszcze do jego procesu macierzystego). Implementacje Każdy proces w systemie operacyjnym może być reprezentowany przez blok kontrolny procesu (Process Control Block - PBC). Jest to blok danych zawierający zestaw informacji charakteryzujących dany proces: PROCESS STATE - informacja o bieżącym stanie procesu (wprowadzono dodatkowe stany: SIDL i SZOMB); PROCESS NUMBER - identyfikator procesu (unikalny numer wykorzystywany do zarządzania); PROGRAM COUNTER - licznik wskazujący adres kolejnej instrukcji procesu; REGISTERS - wartości rejestrów zachowywane podczas przerwań; MEMORY MANAGMENT INFORMATION - informacje do zarządzania PAO (np. tablica stron procesu lub adres tej tablicy); CPU SHEDULLING INFORMATION - informacje o planowaniu przydziału procesora (np. priorytet procesu, wskaźniki do różnego rodzaju kolejek szeregowania); ACCOUNTING INFORMATION - informacje rozliczeniowe (wykorzystany czas procesora, czas przebywania procesu w systemie, limity czasowe); I/O STATUS INFORMATION - LIST OF OPEN FILES - przekazywanie żądania wykonania operacji we/wy, wykaz urządzeń przydzielonych do procesu, adresy rejestrów tych urządzeń, lista otwartych plików lub też wskaźnik do tablicy otwartych plików; POINTER - wskaźnik do następnego procesu, który ma być wykonywany. Innym rozwiązaniem jeśli chodzi o implementację modelu procesu jest tzw. tablica procesów, która zawiera po jednym wierszu na proces. Każdy wiersz (zapis) składa się z wielu pól zawierających informacje podobne do tych, które zostały przedstawione powyżej. Realizacja n procesów na maszynie jednoprocesorowej Z każdą klasą urządzeń we/wy jest związany wektor przerwań, zawiera on adresy do odpowiednich procedur obsługi przerwań. Zakładamy, że wykonywany jest pewien proces użytkowy i pojawiło się przerwanie dyskowe (proces wykonał funkcję read lub write). Wówczas (punkty 1 i 2 są wykonywane sprzętowo a pozostałe punkty są wykonywane programowo przez odpowiednie moduły systemu operacyjnego). 1. Licznik rozkazów, słowo stanu programu i podstawowe rejestry są składowane na stosie systemowym przez sprzęt obsługujący przerwanie. 2. Następuje skok do adresu wskazywanego przez wektor przerwań. 3. Procedura obsługi przerwania rozpoczyna działanie od zapamiętania wszystkich pozostałych rejestrów w tablicy procesów. 19

ang. file) Pojęcie pliku (ang( Typy plików Atrybuty pliku Fragmentacja wewnętrzna w systemie plików Struktura pliku

ang. file) Pojęcie pliku (ang( Typy plików Atrybuty pliku Fragmentacja wewnętrzna w systemie plików Struktura pliku System plików 1. Pojęcie pliku 2. Typy i struktury plików 3. etody dostępu do plików 4. Katalogi 5. Budowa systemu plików Pojęcie pliku (ang( ang. file)! Plik jest abstrakcyjnym obrazem informacji gromadzonej

Bardziej szczegółowo

Systemy plików i zarządzanie pamięcią pomocniczą. Struktura pliku. Koncepcja pliku. Atrybuty pliku

Systemy plików i zarządzanie pamięcią pomocniczą. Struktura pliku. Koncepcja pliku. Atrybuty pliku Systemy plików i zarządzanie pamięcią pomocniczą Koncepcja pliku Metody dostępu Organizacja systemu plików Metody alokacji Struktura dysku Zarządzanie dyskiem Struktura pliku Prosta sekwencja słów lub

Bardziej szczegółowo

obszar bezpośrednio dostępny dla procesora rozkazy: load, store (PAO rejestr procesora)

obszar bezpośrednio dostępny dla procesora rozkazy: load, store (PAO rejestr procesora) Pamięć operacyjna (main memory) obszar bezpośrednio dostępny dla procesora rozkazy: load, store (PAO rejestr procesora) cykl rozkazowy: pobranie rozkazu z PAO do rejestru rozkazów dekodowanie realizacja

Bardziej szczegółowo

System plików i zarządzanie pamięcią pomocniczą. Koncepcja pliku. Atrybuty pliku. Struktura pliku. Typ pliku nazwa, rozszerzenie (extension)

System plików i zarządzanie pamięcią pomocniczą. Koncepcja pliku. Atrybuty pliku. Struktura pliku. Typ pliku nazwa, rozszerzenie (extension) System plików i zarządzanie pamięcią pomocniczą Koncepcja pliku Ciągła logiczna przestrzeń adresowa Koncepcja pliku Metody dostępu Organizacja systemu plików Metody alokacji Struktura dysku Zarządzenie

Bardziej szczegółowo

System plików warstwa fizyczna

System plików warstwa fizyczna System plików warstwa fizyczna Dariusz Wawrzyniak Plan wykładu Przydział miejsca na dysku Zarządzanie wolną przestrzenią Implementacja katalogu Przechowywanie podręczne Integralność systemu plików Semantyka

Bardziej szczegółowo

System plików warstwa fizyczna

System plików warstwa fizyczna System plików warstwa fizyczna Dariusz Wawrzyniak Przydział miejsca na dysku Zarządzanie wolną przestrzenią Implementacja katalogu Przechowywanie podręczne Integralność systemu plików Semantyka spójności

Bardziej szczegółowo

System plików warstwa fizyczna

System plików warstwa fizyczna System plików warstwa fizyczna Dariusz Wawrzyniak Przydział miejsca na dysku Przydział ciągły (ang. contiguous allocation) cały plik zajmuje ciąg kolejnych bloków Przydział listowy (łańcuchowy, ang. linked

Bardziej szczegółowo

Pliki. Operacje na plikach w Pascalu

Pliki. Operacje na plikach w Pascalu Pliki. Operacje na plikach w Pascalu ścieżka zapisu, pliki elementowe, tekstowe, operacja plikowa, etapy, assign, zmienna plikowa, skojarzenie, tryby otwarcia, reset, rewrite, append, read, write, buforowanie

Bardziej szczegółowo

System plików warstwa logiczna

System plików warstwa logiczna Dariusz Wawrzyniak Pojęcie u Plik jest abstrakcyjnym obrazem informacji gromadzonej i udostępnianej przez system komputerowy. Plik jest podstawową jednostką logiczną magazynowania informacji w systemie

Bardziej szczegółowo

Podstawowe wiadomości o systemach plików.

Podstawowe wiadomości o systemach plików. Podstawowe wiadomości o systemach plików. Komputery mogą przechowywać informacje w kilku różnych postaciach fizycznych na różnych nośnikach i urządzeniach np. w postaci zapisów na dysku twardym, płytce

Bardziej szczegółowo

System plików. Warstwowy model systemu plików

System plików. Warstwowy model systemu plików System plików System plików struktura danych organizująca i porządkująca zasoby pamięci masowych w SO. Struktura ta ma charakter hierarchiczny: urządzenia fizyczne strefy (partycje) woluminy (w UNIXie:

Bardziej szczegółowo

System plików. dr inż. Krzysztof Patan. Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski

System plików. dr inż. Krzysztof Patan. Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski System plików dr inż. Krzysztof Patan Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski k.patan@issi.uz.zgora.pl Wstęp System plików System plików jest tym komponentem systemu operacyjnego,

Bardziej szczegółowo

Tworzenie pliku Zapisywanie pliku Czytanie pliku Zmiana pozycji w pliku Usuwanie pliku Skracanie pliku

Tworzenie pliku Zapisywanie pliku Czytanie pliku Zmiana pozycji w pliku Usuwanie pliku Skracanie pliku System plików Definicje: Plik jest logiczną jednostką magazynowania informacji w pamięci nieulotnej Plik jest nazwanym zbiorem powiązanych ze sobą informacji, zapisanym w pamięci pomocniczej Plik jest

Bardziej szczegółowo

Budowa systemów komputerowych

Budowa systemów komputerowych Budowa systemów komputerowych Krzysztof Patan Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski k.patan@issi.uz.zgora.pl Współczesny system komputerowy System komputerowy składa

Bardziej szczegółowo

Działanie systemu operacyjnego

Działanie systemu operacyjnego Budowa systemu komputerowego Działanie systemu operacyjnego Jednostka centralna dysku Szyna systemowa (magistrala danych) drukarki pamięci operacyjnej I NIC sieci Pamięć operacyjna Przerwania Przerwania

Bardziej szczegółowo

SYSTEMY OPERACYJNE WYKLAD 5 - zarządzanie pamięcią pomocniczą

SYSTEMY OPERACYJNE WYKLAD 5 - zarządzanie pamięcią pomocniczą Wrocław 2007 SYSTEMY OPERACYJNE WYKLAD 5 - zarządzanie pamięcią pomocniczą Paweł Skrobanek C-3, pok. 323 e-mail: pawel.skrobanek@pwr.wroc.pl www.equus.wroc.pl/studia.html 1 PLAN: 3. Struktura katalogowa

Bardziej szczegółowo

16MB - 2GB 2MB - 128MB

16MB - 2GB 2MB - 128MB FAT Wprowadzenie Historia FAT jest jednym z najstarszych spośród obecnie jeszcze używanych systemów plików. Pierwsza wersja (FAT12) powstała w 1980 roku. Wraz z wzrostem rozmiaru dysków i nowymi wymaganiami

Bardziej szczegółowo

Działanie systemu operacyjnego

Działanie systemu operacyjnego Działanie systemu operacyjnego Budowa systemu komputerowego Jednostka centralna Sterownik dysku Sterownik drukarki Sterownik sieci Szyna systemowa (magistrala danych) Sterownik pamięci operacyjnej Pamięć

Bardziej szczegółowo

dr inż. Krzysztof Patan Instytut Sterowania i Systemów Informatycznych Uniwersytet Zielonogórski k.patan@issi.uz.zgora.pl WSTĘP 1 Struktury danych oraz algorytmy do implementacji interfejsu systemu plików

Bardziej szczegółowo

SYSTEMY OPERACYJNE: STRUKTURY I FUNKCJE (opracowano na podstawie skryptu PP: Królikowski Z., Sajkowski M. 1992: Użytkowanie systemu operacyjnego UNIX)

SYSTEMY OPERACYJNE: STRUKTURY I FUNKCJE (opracowano na podstawie skryptu PP: Królikowski Z., Sajkowski M. 1992: Użytkowanie systemu operacyjnego UNIX) (opracowano na podstawie skryptu PP: Królikowski Z., Sajkowski M. 1992: Użytkowanie systemu operacyjnego UNIX) W informatyce występują ściśle obok siebie dwa pojęcia: sprzęt (ang. hardware) i oprogramowanie

Bardziej szczegółowo

Zarządzanie pamięcią w systemie operacyjnym

Zarządzanie pamięcią w systemie operacyjnym Zarządzanie pamięcią w systemie operacyjnym Cele: przydział zasobów pamięciowych wykonywanym programom, zapewnienie bezpieczeństwa wykonywanych procesów (ochrona pamięci), efektywne wykorzystanie dostępnej

Bardziej szczegółowo

Działanie systemu operacyjnego

Działanie systemu operacyjnego Budowa systemu komputerowego Działanie systemu operacyjnego Jednostka centralna dysku Szyna systemowa (magistrala danych) drukarki pamięci operacyjnej sieci Pamięć operacyjna Przerwania Przerwania Przerwanie

Bardziej szczegółowo

Działanie systemu operacyjnego

Działanie systemu operacyjnego Działanie systemu operacyjnego Budowa systemu komputerowego I NIC Jednostka centralna Sterownik dysku Sterownik drukarki Sterownik sieci Szyna systemowa (magistrala danych) Sterownik pamięci operacyjnej

Bardziej szczegółowo

dr inż. Jarosław Forenc

dr inż. Jarosław Forenc Informatyka 2 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr III, studia stacjonarne I stopnia Rok akademicki 2010/2011 Wykład nr 7 (24.01.2011) dr inż. Jarosław Forenc Rok akademicki

Bardziej szczegółowo

Zarządzanie pamięcią operacyjną

Zarządzanie pamięcią operacyjną SOE Systemy Operacyjne Wykład 7 Zarządzanie pamięcią operacyjną dr inż. Andrzej Wielgus Instytut Mikroelektroniki i Optoelektroniki WEiTI PW Hierarchia pamięci czas dostępu Rejestry Pamięć podręczna koszt

Bardziej szczegółowo

Zarządzanie pamięcią operacyjną

Zarządzanie pamięcią operacyjną Dariusz Wawrzyniak Plan wykładu Pamięć jako zasób systemu komputerowego hierarchia pamięci przestrzeń owa Wsparcie dla zarządzania pamięcią na poziomie architektury komputera Podział i przydział pamięci

Bardziej szczegółowo

Struktura i funkcjonowanie komputera pamięć komputerowa, hierarchia pamięci pamięć podręczna. System operacyjny. Zarządzanie procesami

Struktura i funkcjonowanie komputera pamięć komputerowa, hierarchia pamięci pamięć podręczna. System operacyjny. Zarządzanie procesami Rok akademicki 2015/2016, Wykład nr 6 2/21 Plan wykładu nr 6 Informatyka 1 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr II, studia niestacjonarne I stopnia Rok akademicki 2015/2016

Bardziej szczegółowo

Pamięć. Jan Tuziemski Źródło części materiałów: os-book.com

Pamięć. Jan Tuziemski Źródło części materiałów: os-book.com Pamięć Jan Tuziemski Źródło części materiałów: os-book.com Cele wykładu Przedstawienie sposobów organizacji pamięci komputera Przedstawienie technik zarządzania pamięcią Podstawy Przed uruchomieniem program

Bardziej szczegółowo

Wykład 8. Pamięć wirtualna. Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB

Wykład 8. Pamięć wirtualna. Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB Wykład 8 Pamięć wirtualna Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB Wprowadzenie Podstawowa idea: System operacyjny pozwala na wykorzystanie pamięci o pojemności większej,

Bardziej szczegółowo

Systemy operacyjne System plików

Systemy operacyjne System plików Systemy operacyjne System plików Dr inż. Dariusz Caban mailto:dariusz.caban@pwr.wroc.pl tel.: (071)320-2823 Pamięci o bezpośrednim dostępie powierzchnia/głowica sektor cylinder/ścieżka Przykłady: HDD,

Bardziej szczegółowo

Programowanie współbieżne Wykład 2. Iwona Kochańska

Programowanie współbieżne Wykład 2. Iwona Kochańska Programowanie współbieżne Wykład 2 Iwona Kochańska Miary skalowalności algorytmu równoległego Przyspieszenie Stały rozmiar danych N T(1) - czas obliczeń dla najlepszego algorytmu sekwencyjnego T(p) - czas

Bardziej szczegółowo

4. Procesy pojęcia podstawowe

4. Procesy pojęcia podstawowe 4. Procesy pojęcia podstawowe 4.1 Czym jest proces? Proces jest czymś innym niż program. Program jest zapisem algorytmu wraz ze strukturami danych na których algorytm ten operuje. Algorytm zapisany bywa

Bardziej szczegółowo

Dodatek B. Zasady komunikacji z otoczeniem w typowych systemach komputerowych

Dodatek B. Zasady komunikacji z otoczeniem w typowych systemach komputerowych Dodatek B. Zasady komunikacji z otoczeniem w typowych systemach komputerowych B.1. Dostęp do urządzeń komunikacyjnych Sterowniki urządzeń zewnętrznych widziane są przez procesor jako zestawy rejestrów

Bardziej szczegółowo

LEKCJA TEMAT: Zasada działania komputera.

LEKCJA TEMAT: Zasada działania komputera. LEKCJA TEMAT: Zasada działania komputera. 1. Ogólna budowa komputera Rys. Ogólna budowa komputera. 2. Komputer składa się z czterech głównych składników: procesor (jednostka centralna, CPU) steruje działaniem

Bardziej szczegółowo

System plików przykłady. implementacji

System plików przykłady. implementacji Dariusz Wawrzyniak Plan wykładu CP/M MS DOS ISO 9660 UNIX NTFS System plików (2) 1 Przykłady systemu plików (1) CP/M katalog zawiera blok kontrolny pliku (FCB), identyfikujący 16 jednostek alokacji (zawierający

Bardziej szczegółowo

dr inż. Jarosław Forenc

dr inż. Jarosław Forenc Informatyka 2 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr III, studia stacjonarne I stopnia Rok akademicki 2016/2017 Wykład nr 7 (11.01.2017) Rok akademicki 2016/2017, Wykład

Bardziej szczegółowo

Lekcja 10. Uprawnienia. Dołączanie plików przy pomocy funkcji include() Sprawdzanie, czy plik istnieje przy pmocy funkcji file_exists()

Lekcja 10. Uprawnienia. Dołączanie plików przy pomocy funkcji include() Sprawdzanie, czy plik istnieje przy pmocy funkcji file_exists() Paweł Gmys PHP strona 1 Lekcja 10 Uprawnienia Aby skrypt PHP mógł odwołać się do pliku, musi mieć odpowiednie uprawnienia. Szczegóły są zależne od serwera. Najczęściej chyba skrypt ma uprawnienia takie,

Bardziej szczegółowo

2012-01-16 PLAN WYKŁADU BAZY DANYCH INDEKSY - DEFINICJE. Indeksy jednopoziomowe Indeksy wielopoziomowe Indeksy z użyciem B-drzew i B + -drzew

2012-01-16 PLAN WYKŁADU BAZY DANYCH INDEKSY - DEFINICJE. Indeksy jednopoziomowe Indeksy wielopoziomowe Indeksy z użyciem B-drzew i B + -drzew 0-0-6 PLAN WYKŁADU Indeksy jednopoziomowe Indeksy wielopoziomowe Indeksy z użyciem B-drzew i B + -drzew BAZY DANYCH Wykład 9 dr inż. Agnieszka Bołtuć INDEKSY - DEFINICJE Indeksy to pomocnicze struktury

Bardziej szczegółowo

Programowanie na poziomie sprzętu. Tryb chroniony cz. 1

Programowanie na poziomie sprzętu. Tryb chroniony cz. 1 Tryb chroniony cz. 1 Moduł zarządzania pamięcią w trybie chronionym (z ang. PM - Protected Mode) procesorów IA-32 udostępnia: - segmentację, - stronicowanie. Segmentacja mechanizm umożliwiający odizolowanie

Bardziej szczegółowo

SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE

SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE WINDOWS 1 SO i SK/WIN 006 Wydajność systemu 2 SO i SK/WIN Najprostszym sposobem na poprawienie wydajności systemu, jeżeli dysponujemy zbyt małą ilością pamięci RAM

Bardziej szczegółowo

System plików przykłady implementacji

System plików przykłady implementacji System plików przykłady implementacji Dariusz Wawrzyniak CP/M MS DOS ISO 9660 UNIX NTFS Plan wykładu System plików (2) Przykłady implementacji systemu plików (1) Przykłady implementacji systemu plików

Bardziej szczegółowo

Wykład 7. Zarządzanie pamięcią

Wykład 7. Zarządzanie pamięcią Wykład 7 Zarządzanie pamięcią -1- Świat idealny a świat rzeczywisty W idealnym świecie pamięć powinna Mieć bardzo dużą pojemność Mieć bardzo krótki czas dostępu Być nieulotna (zawartość nie jest tracona

Bardziej szczegółowo

Architektura komputerów

Architektura komputerów Architektura komputerów Tydzień 10 Pamięć zewnętrzna Dysk magnetyczny Podstawowe urządzenie pamięci zewnętrznej. Dane zapisywane i odczytywane przy użyciu głowicy magnetycznej (cewki). Dane zapisywane

Bardziej szczegółowo

Systemy operacyjne III

Systemy operacyjne III Systemy operacyjne III WYKŁAD Jan Kazimirski Pamięć wirtualna Stronicowanie Pamięć podzielona na niewielki bloki Bloki procesu to strony a bloki fizyczne to ramki System operacyjny przechowuje dla każdego

Bardziej szczegółowo

Architektura systemu komputerowego. Działanie systemu komputerowego. Przerwania. Obsługa przerwań (Interrupt Handling)

Architektura systemu komputerowego. Działanie systemu komputerowego. Przerwania. Obsługa przerwań (Interrupt Handling) Struktury systemów komputerowych Architektura systemu komputerowego Działanie systemu komputerowego Struktura we/wy Struktura pamięci Hierarchia pamięci Ochrona sprzętowa Architektura 2.1 2.2 Działanie

Bardziej szczegółowo

Wykład PASCAL - Pliki tekstowe

Wykład PASCAL - Pliki tekstowe Podstawy programowania Wykład PASCAL - Pliki tekstowe 1 dr Artur Bartoszewski - Podstawy prograowania, sem. 1- WYKŁAD Rodzaje plików Dane przechowywane w pliku mogą mieć reprezentację binarną (taką samą,

Bardziej szczegółowo

UNIX SYSTEM PLIKÓW. UNIX System plików

UNIX SYSTEM PLIKÓW. UNIX System plików UNIX SYSTEM PLIKÓW UNIX System plików UNIX SYSTEM PLIKÓW Jednym z podstawowych zadań SO jest zarządzanie zasobami danych Komputer może być wyposażony w różnego rodzaju urządzenia przechowujące dane i programy

Bardziej szczegółowo

Pliki. Funkcje tworzące pliki i operujące na nich opisane są w części 2 pomocy systemowej. Tworzenie i otwieranie plików:

Pliki. Funkcje tworzące pliki i operujące na nich opisane są w części 2 pomocy systemowej. Tworzenie i otwieranie plików: Pliki W celu wykonania jakiejkolwiek operacji na istniejącym pliku, plik ten musi zostać otwarty, natomiast jeśli plik jeszcze nie istnieje, to musi zostać utworzony. Plik może zostać otwarty w trybie:

Bardziej szczegółowo

System plików. - warstwa logiczna. - warstwa fizyczna. - przykłady implementacji. Systemy operacyjne Wykład 6 1

System plików. - warstwa logiczna. - warstwa fizyczna. - przykłady implementacji. Systemy operacyjne Wykład 6 1 System plików - warstwa logiczna - warstwa fizyczna - przykłady implementacji Systemy operacyjne Wykład 6 1 System plików warstwa logiczna Pojęcie pliku. Typy i struktury plików. Metody dostępu do plików.

Bardziej szczegółowo

Wykonać Ćwiczenie: Active Directory, konfiguracja Podstawowa

Wykonać Ćwiczenie: Active Directory, konfiguracja Podstawowa Wykonać Ćwiczenie: Active Directory, konfiguracja Podstawowa Instalacja roli kontrolera domeny, Aby zainstalować rolę kontrolera domeny, należy uruchomić Zarządzenie tym serwerem, po czym wybrać przycisk

Bardziej szczegółowo

ARCHITEKTURA PROCESORA,

ARCHITEKTURA PROCESORA, ARCHITEKTURA PROCESORA, poza blokami funkcjonalnymi, to przede wszystkim: a. formaty rozkazów, b. lista rozkazów, c. rejestry dostępne programowo, d. sposoby adresowania pamięci, e. sposoby współpracy

Bardziej szczegółowo

Zarządzanie pamięcią operacyjną zagadnienia podstawowe

Zarządzanie pamięcią operacyjną zagadnienia podstawowe Zarządzanie pamięcią operacyjną zagadnienia podstawowe Pamięć jako zasób systemu komputerowego Pamięć jest zasobem służący do przechowywania danych. Z punktu widzenia systemu pamięć jest zasobem o strukturze

Bardziej szczegółowo

Administracja i programowanie pod Microsoft SQL Server 2000

Administracja i programowanie pod Microsoft SQL Server 2000 Administracja i programowanie pod Paweł Rajba pawel@ii.uni.wroc.pl http://www.kursy24.eu/ Zawartość modułu 9 Optymalizacja zapytań Pobieranie planu wykonania Indeksy i wydajność - 1 - Zadania optymalizatora

Bardziej szczegółowo

Bazy danych. Plan wykładu. Model logiczny i fizyczny. Operacje na pliku. Dyski. Mechanizmy składowania

Bazy danych. Plan wykładu. Model logiczny i fizyczny. Operacje na pliku. Dyski. Mechanizmy składowania Plan wykładu Bazy danych Wykład 10: Fizyczna organizacja danych w bazie danych Model logiczny i model fizyczny Mechanizmy składowania plików Moduł zarządzania miejscem na dysku i moduł zarządzania buforami

Bardziej szczegółowo

Lista 5 Typy dynamiczne kolejka

Lista 5 Typy dynamiczne kolejka Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych Metody i języki programowania 1 Wprowadzenie Lista 5 Typy dynamiczne kolejka Kolejka jest jedną z podstawowych struktur umożliwiających

Bardziej szczegółowo

Architektura komputerów

Architektura komputerów Architektura komputerów Tydzień 12 Wspomaganie systemu operacyjnego: pamięć wirtualna Partycjonowanie Pamięć jest dzielona, aby mogło korzystać z niej wiele procesów. Dla jednego procesu przydzielana jest

Bardziej szczegółowo

2 INSTALACJA OPROGRAMOWANIA. 3 3 GŁÓWNE OKNO PROGRAMU 3 4 MODUŁ OBSŁUGI ARCHIWUM 7

2 INSTALACJA OPROGRAMOWANIA. 3 3 GŁÓWNE OKNO PROGRAMU 3 4 MODUŁ OBSŁUGI ARCHIWUM 7 LUBUSKIE ZAKŁADY APARATÓW ELEKTRYCZNYCH LUMEL S.A. W ZIELONEJ GÓRZE PROGRAM DO KONFIGURACJI KONCENTRATORA DANYCH TYPU PD22 PD22Wiz.exe INSTRUKCJA OBSŁUGI Zielona Góra 2007 2 SPIS TREŚCI: 1 WSTĘP. 3 2 INSTALACJA

Bardziej szczegółowo

Wykład 10 Systemy plików Interfejs i implementacja. Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB

Wykład 10 Systemy plików Interfejs i implementacja. Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB Wykład 10 Systemy plików Interfejs i implementacja Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB Systemy plików Przechowują olbrzymie ilości informacji Gigabajty => Terabajty

Bardziej szczegółowo

< K (2) = ( Adams, John ), P (2) = adres bloku 2 > < K (1) = ( Aaron, Ed ), P (1) = adres bloku 1 >

< K (2) = ( Adams, John ), P (2) = adres bloku 2 > < K (1) = ( Aaron, Ed ), P (1) = adres bloku 1 > Typy indeksów Indeks jest zakładany na atrybucie relacji atrybucie indeksowym (ang. indexing field). Indeks zawiera wartości atrybutu indeksowego wraz ze wskaźnikami do wszystkich bloków dyskowych zawierających

Bardziej szczegółowo

Architektura komputerów

Architektura komputerów Architektura komputerów Wykład 7 Jan Kazimirski 1 Pamięć podręczna 2 Pamięć komputera - charakterystyka Położenie Procesor rejestry, pamięć podręczna Pamięć wewnętrzna pamięć podręczna, główna Pamięć zewnętrzna

Bardziej szczegółowo

4. Procesy pojęcia podstawowe

4. Procesy pojęcia podstawowe 4. Procesy pojęcia podstawowe 4.1 Czym jest proces? Proces jest czymś innym niż program. Program jest zapisem algorytmu wraz ze strukturami danych na których algorytm ten operuje. Algorytm zapisany bywa

Bardziej szczegółowo

Prezentacja systemu RTLinux

Prezentacja systemu RTLinux Prezentacja systemu RTLinux Podstawowe założenia RTLinux jest system o twardych ograniczeniach czasowych (hard real-time). Inspiracją dla twórców RTLinux a była architektura systemu MERT. W zamierzeniach

Bardziej szczegółowo

Pamięć wirtualna. Przygotował: Ryszard Kijaka. Wykład 4

Pamięć wirtualna. Przygotował: Ryszard Kijaka. Wykład 4 Pamięć wirtualna Przygotował: Ryszard Kijaka Wykład 4 Wstęp główny podział to: PM- do pamięci masowych należą wszelkiego rodzaju pamięci na nośnikach magnetycznych, takie jak dyski twarde i elastyczne,

Bardziej szczegółowo

Mikroprocesor Operacje wejścia / wyjścia

Mikroprocesor Operacje wejścia / wyjścia Definicja Mikroprocesor Operacje wejścia / wyjścia Opracował: Andrzej Nowak Bibliografia: Urządzenia techniki komputerowej, K. Wojtuszkiewicz Operacjami wejścia/wyjścia nazywamy całokształt działań potrzebnych

Bardziej szczegółowo

SYSTEMY OPERACYJNE WYKLAD 4 - zarządzanie pamięcią

SYSTEMY OPERACYJNE WYKLAD 4 - zarządzanie pamięcią Wrocław 2007 SYSTEMY OPERACYJNE WYKLAD 4 - zarządzanie pamięcią Paweł Skrobanek C-3, pok. 323 e-mail: pawel.skrobanek@pwr.wroc.pl www.equus.wroc.pl/studia.html 1 PLAN: 2. Pamięć rzeczywista 3. Pamięć wirtualna

Bardziej szczegółowo

Administracja systemem Linux

Administracja systemem Linux Administracja systemem Linux mgr inż. Łukasz Kuczyński lkucz@icis.pcz.pl Instytut Informatyki Teoretycznej i Stosowanej Administracja systemem Linux p. 1 Urzadzenia Blokowe Administracja systemem Linux

Bardziej szczegółowo

Dokumentacja wstępna TIN. Rozproszone repozytorium oparte o WebDAV

Dokumentacja wstępna TIN. Rozproszone repozytorium oparte o WebDAV Piotr Jarosik, Kamil Jaworski, Dominik Olędzki, Anna Stępień Dokumentacja wstępna TIN Rozproszone repozytorium oparte o WebDAV 1. Wstęp Celem projektu jest zaimplementowanie rozproszonego repozytorium

Bardziej szczegółowo

1. Podstawy...P Polecenia podstawowe...p... 18

1. Podstawy...P Polecenia podstawowe...p... 18 Spis treści Wstęp...P... 5 1. Podstawy...P... 7 Wersje systemu MS-DOS 8 Windows NT: konsola czy DOS? 9 Jak uruchomić system MS-DOS 10 Szybkie uruchamianie 13 Okno a pełny ekran 14 Windows 2000/XP a pełnoekranowe

Bardziej szczegółowo

System plików JFS. 1 Najważniejsze informacje. Mateusz Zakrzewski. 18 stycznia JFS to skrót od Journalled File System.

System plików JFS. 1 Najważniejsze informacje. Mateusz Zakrzewski. 18 stycznia JFS to skrót od Journalled File System. System plików JFS Mateusz Zakrzewski 18 stycznia 2004 1 Najważniejsze informacje. JFS to skrót od Journalled File System. Stworzony przez firmę IBM w 1990 roku. Jest niezawodny, dzięki księgowaniu. Zamiast

Bardziej szczegółowo

Projekt dotyczy stworzenia zintegrowanego, modularnego systemu informatycznego wspomagającego zarządzanie pracownikami i projektami w firmie

Projekt dotyczy stworzenia zintegrowanego, modularnego systemu informatycznego wspomagającego zarządzanie pracownikami i projektami w firmie Projekt dotyczy stworzenia zintegrowanego, modularnego systemu informatycznego wspomagającego zarządzanie pracownikami i projektami w firmie informatycznej. Zadaniem systemu jest rejestracja i przechowywanie

Bardziej szczegółowo

Przerwania, polling, timery - wykład 9

Przerwania, polling, timery - wykład 9 SWB - Przerwania, polling, timery - wykład 9 asz 1 Przerwania, polling, timery - wykład 9 Adam Szmigielski aszmigie@pjwstk.edu.pl SWB - Przerwania, polling, timery - wykład 9 asz 2 Metody obsługi zdarzeń

Bardziej szczegółowo

VinCent Administrator

VinCent Administrator VinCent Administrator Moduł Zarządzania podatnikami Krótka instrukcja obsługi ver. 1.01 Zielona Góra, grudzień 2005 1. Przeznaczenie programu Program VinCent Administrator przeznaczony jest dla administratorów

Bardziej szczegółowo

Kolejki FIFO (łącza nazwane)

Kolejki FIFO (łącza nazwane) Kolejki FIFO (łącza nazwane) Systemy Operacyjne 2 laboratorium Mateusz Hołenko 6 listopada 2011 Plan zajęć 1 Łącza w systemie Linux kolejki FIFO vs. potoki specyfika łączy nazwanych schemat komunikacji

Bardziej szczegółowo

System plików Linuksa

System plików Linuksa Łódzka Grupa Użytkowników Linuksa Studenckie Koło Naukowe PŁ Strona 1 z 15 System plików Linuksa Bartłomiej Świercz 20 maja 2002 roku Strona 1 z 15 1. Wstęp Podstawowymi składnikami jądra Linux a są: moduł

Bardziej szczegółowo

PROGRAM RETROKONWERSJI ZDALNEJ

PROGRAM RETROKONWERSJI ZDALNEJ ul. Mołdawska 18, 61-614 Poznań tel. / fax. (-61) 656-44-10 adres do korespondencji: os. Stefana Batorego 13/27 60-969 POZNAÑ 60, skr. 40 PROGRAM RETROKONWERSJI ZDALNEJ dla systemów SOWA opracował zespół

Bardziej szczegółowo

wykład Organizacja plików Opracował: dr inż. Janusz DUDCZYK

wykład Organizacja plików Opracował: dr inż. Janusz DUDCZYK wykład Organizacja plików Opracował: dr inż. Janusz DUDCZYK 1 2 3 Pamięć zewnętrzna Pamięć zewnętrzna organizacja plikowa. Pamięć operacyjna organizacja blokowa. 4 Bufory bazy danych. STRUKTURA PROSTA

Bardziej szczegółowo

Schematy zarzadzania pamięcia

Schematy zarzadzania pamięcia Schematy zarzadzania pamięcia Segmentacja podział obszaru pamięci procesu na logiczne jednostki segmenty o dowolnej długości. Postać adresu logicznego: [nr segmentu, przesunięcie]. Zwykle przechowywana

Bardziej szczegółowo

Definicja systemu operacyjnego (1) Definicja systemu operacyjnego (2) Miejsce systemu operacyjnego w architekturze systemu komputerowego

Definicja systemu operacyjnego (1) Definicja systemu operacyjnego (2) Miejsce systemu operacyjnego w architekturze systemu komputerowego Systemy operacyjne wprowadzenie 1 Definicja systemu operacyjnego (1) Definicja systemu operacyjnego (2) System operacyjny jest zbiorem ręcznych i automatycznych procedur, które pozwalają grupie osób na

Bardziej szczegółowo

Struktura dysku. Dyski podstawowe i dynamiczne

Struktura dysku. Dyski podstawowe i dynamiczne Struktura dysku Dyski podstawowe i dynamiczne System Windows 2000 oferuje dwa rodzaje konfiguracji dysków: dysk podstawowy i dysk dynamiczny. Dysk podstawowy przypomina struktury dyskowe stosowane w systemie

Bardziej szczegółowo

Systemy wejścia-wyjścia. wyjścia

Systemy wejścia-wyjścia. wyjścia Systemy wejścia-wyjścia wyjścia RóŜnorodność urządzeń Funkcje Pamięci Przesyłania danych Interfejsu z człowiekiem Sterowanie Transmisja Znakowa Blokowa Dostęp Sekwencyjny Swobodny Tryb pracy Synchroniczny

Bardziej szczegółowo

Organizacja pamięci w procesorach graficznych

Organizacja pamięci w procesorach graficznych Organizacja pamięci w procesorach graficznych Pamięć w GPU przechowuje dane dla procesora graficznego, służące do wyświetlaniu obrazu na ekran. Pamięć przechowuje m.in. dane wektorów, pikseli, tekstury

Bardziej szczegółowo

System plików. Atrybuty pliku. Typy plików. Pojęcie pliku (ang. file) Zadania systemu operacyjnego. Struktura pliku. Dariusz Wawrzyniak 1

System plików. Atrybuty pliku. Typy plików. Pojęcie pliku (ang. file) Zadania systemu operacyjnego. Struktura pliku. Dariusz Wawrzyniak 1 1. Pojęcie pliku 2. Typy i struktury plików 3. Metody dostępu do plików 4. Katalogi 5. Budowa systemu plików 6. Przechowywanie podręczne 7. Integralność systemu plików 8. Semantyka spójności 9. Przykłady

Bardziej szczegółowo

System plików ReiserFs

System plików ReiserFs System plików ReiserFs Mateusz Zakrzewski 18 stycznia 2004 1 Najważniejsze informacje. Autor tego systemu plików: Hans Reiser oraz firma Namesys. ReiserFs to skrót od Reiser File System. Wersja 3 to najnowsza

Bardziej szczegółowo

Laboratorium Sieci Komputerowe

Laboratorium Sieci Komputerowe Laboratorium Sieci Komputerowe Adresowanie IP Mirosław Juszczak 9 października 2014 Mirosław Juszczak 1 Sieci Komputerowe Na początek: 1. Jak powstaje standard? 2. Co to są dokumenty RFC...??? (czego np.

Bardziej szczegółowo

Architektura komputera. Dane i rozkazy przechowywane są w tej samej pamięci umożliwiającej zapis i odczyt

Architektura komputera. Dane i rozkazy przechowywane są w tej samej pamięci umożliwiającej zapis i odczyt Architektura komputera Architektura von Neumanna: Dane i rozkazy przechowywane są w tej samej pamięci umożliwiającej zapis i odczyt Zawartośd tej pamięci jest adresowana przez wskazanie miejsca, bez względu

Bardziej szczegółowo

Logiczny model komputera i działanie procesora. Część 1.

Logiczny model komputera i działanie procesora. Część 1. Logiczny model komputera i działanie procesora. Część 1. Klasyczny komputer o architekturze podanej przez von Neumana składa się z trzech podstawowych bloków: procesora pamięci operacyjnej urządzeń wejścia/wyjścia.

Bardziej szczegółowo

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre) Uwagi dotyczące notacji kodu! Wyrazy drukiem prostym -- słowami języka VBA. Wyrazy drukiem pochyłym -- inne fragmenty kodu. Wyrazy w [nawiasach kwadratowych] opcjonalne fragmenty kodu (mogą być, ale nie

Bardziej szczegółowo

System plików. Systemy operacyjne System plików 1. Pojęcie pliku (ang. file)

System plików. Systemy operacyjne System plików 1. Pojęcie pliku (ang. file) 1. Pojęcie pliku 2. Typy i struktury plików 3. Metody dostępu do plików 4. Katalogi 5. Budowa systemu plików 6. Przechowywanie podręczne 7. Integralność systemu plików 8. Semantyka spójności 9. Przykłady

Bardziej szczegółowo

Wprowadzenie. Dariusz Wawrzyniak. Miejsce, rola i zadania systemu operacyjnego w oprogramowaniu komputera

Wprowadzenie. Dariusz Wawrzyniak. Miejsce, rola i zadania systemu operacyjnego w oprogramowaniu komputera Dariusz Wawrzyniak Plan wykładu Definicja, miejsce, rola i zadania systemu operacyjnego Klasyfikacja systemów operacyjnych Zasada działania systemu operacyjnego (2) Definicja systemu operacyjnego (1) Miejsce,

Bardziej szczegółowo

Struktura systemu operacyjnego. Opracował: mgr Marek Kwiatkowski

Struktura systemu operacyjnego. Opracował: mgr Marek Kwiatkowski Struktura systemu operacyjnego Schemat budowy systemu operacyjnego model warstwowy Schemat budowy systemu operacyjnego części składowe Większość systemów operacyjnych opiera się o koncepcję jądra, która

Bardziej szczegółowo

Działanie komputera i sieci komputerowej.

Działanie komputera i sieci komputerowej. Działanie komputera i sieci komputerowej. Gdy włączymy komputer wykonuje on kilka czynności, niezbędnych do rozpoczęcia właściwej pracy. Gdy włączamy komputer 1. Włączenie zasilania 2. Uruchamia

Bardziej szczegółowo

Bazy danych 2. Wykład 1

Bazy danych 2. Wykład 1 Bazy danych 2 Wykład 1 Sprawy organizacyjne Materiały i listy zadań zamieszczane będą na stronie www.math.uni.opole.pl/~ajasi E-mail: standardowy ajasi@math.uni.opole.pl Sprawy organizacyjne Program wykładu

Bardziej szczegółowo

Sesje i logowanie. 1. Wprowadzenie

Sesje i logowanie. 1. Wprowadzenie Sesje i logowanie 1. Wprowadzenie Żądania od nawet tego samego użytkownika na serwerze nie są domyślnie w żaden sposób łączone ze sobą. Każde jest w pewnym sensie nowe i serwer nie jest w stanie stwierdzić,

Bardziej szczegółowo

System plików warstwa fizyczna. Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak

System plików warstwa fizyczna. Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak System plików warstwa fizyczna Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak System plików warstwa fizyczna Celem wykładu jest prezentacja różnych podejść do implementacji systemu plików. Podejścia

Bardziej szczegółowo

PODSTAWY BAZ DANYCH Wykład 6 4. Metody Implementacji Baz Danych

PODSTAWY BAZ DANYCH Wykład 6 4. Metody Implementacji Baz Danych PODSTAWY BAZ DANYCH Wykład 6 4. Metody Implementacji Baz Danych 2005/2006 Wykład "Podstawy baz danych" 1 Statyczny model pamiętania bazy danych 1. Dane przechowywane są w pamięci zewnętrznej podzielonej

Bardziej szczegółowo

Wprowadzenie. Dariusz Wawrzyniak. Miejsce, rola i zadania systemu operacyjnego w oprogramowaniu komputera

Wprowadzenie. Dariusz Wawrzyniak. Miejsce, rola i zadania systemu operacyjnego w oprogramowaniu komputera Dariusz Wawrzyniak Plan wykładu Definicja, miejsce, rola i zadania systemu operacyjnego Klasyfikacja systemów operacyjnych Zasada działania systemu operacyjnego (2) Miejsce, rola i zadania systemu operacyjnego

Bardziej szczegółowo

Ustalanie dostępu do plików - Windows XP Home/Professional

Ustalanie dostępu do plików - Windows XP Home/Professional Ustalanie dostępu do plików - Windows XP Home/Professional Aby edytować atrybuty dostępu do plikow/ katalogow w systemie plików NTFS wpierw sprawdź czy jest Wyłączone proste udostępnianie czyli przejdź

Bardziej szczegółowo

O historycznym systemie DOS. R. Robert Gajewski omklnx.il.pw.edu.pl/~rgajewski

O historycznym systemie DOS. R. Robert Gajewski omklnx.il.pw.edu.pl/~rgajewski O historycznym systemie DOS R. Robert Gajewski omklnx.il.pw.edu.pl/~rgajewski s-rg@siwy.il.pw.edu.pl System operacyjny System operacyjny jest podstawowym pomostem między użytkownikiem komputera a językiem

Bardziej szczegółowo

Na komputerach z systemem Windows XP zdarzenia są rejestrowane w trzech następujących dziennikach: Dziennik aplikacji

Na komputerach z systemem Windows XP zdarzenia są rejestrowane w trzech następujących dziennikach: Dziennik aplikacji Podgląd zdarzeń W systemie Windows XP zdarzenie to każde istotne wystąpienie w systemie lub programie, które wymaga powiadomienia użytkownika lub dodania wpisu do dziennika. Usługa Dziennik zdarzeń rejestruje

Bardziej szczegółowo