sysop we wy


Wykład nt. podstawy systemów operacyjnych -- wejście/wyjście Instytut Informatyki Politechniki Łódzkiej w Łodzi mgr inż. Bartosz Lis Wykład nt. Podstawy systemów operacyjnych dla potrzeb Studium Podyplomowego "Inżynierskie Zastosowania Informatyki" Poprzedni | Spis treści | Następny Rozdział 4: Zarządzanie wejściem-wyjściem Ogólna architektura podsystemu wejśia/wyjścia Ogólną architekturę wejścia/wyjścia przedstawiono na rys. 4.1. Na sprzęt (patrz rozdział 1 i rys. 1.1) składa się pewna ilość urządzeń wejścia wyjścia zwanych dalej urządzeniami fizycznymi (ang. phisical device), każde z tych urządzeń sterowane jest przez sterownik sprzętowy (ang. hardware controller). Do komunikacji z urządzeniami fizycznymi wykorzystuje się zasoby urządzeń t.j. rejestry we/wy, przerwania, adresowalną pamięć urządzeń i kanały DMA. Jądro systemu operacyjego zawiera pewną ilość modułów zwanych stertownikami programowymi urządzeń (ang. device driver), które potrafią sterować urządzeniami. Jeden sterownik może obsługiwać wiele urządzeń podobnego typu (np. sterownik dysków) lub uzupełniających się typów (np. sterownik terminala obsługuje klawiaturę i kartę graficzną wraz z monitorem). Sterowniki programowe tworzą dla wyższych warstw oprogramowania urządzenia logiczne (ang. logical device). Urządzenie logiczne jest obiektem będącym abstrakcją urządzenia fizycznego. Na urządzeniu logicznym można dokonywać operacji zapisu i odczytu poprzez podprogramy dostarczane przez sterownik. Wyższe warstwy oprogramowania nie muszą znać szczegółów sterowania danym urządzeniem. Wsród urządzeń logicznych można wyodrębnić następujące typy: Urządzenia znakowe lub strumieniowe (ang. character device). Z urządzenia znakwego można czytać w sposób sekwencyjny ciągi bajtów, lub w sposób sekwencyjny zapisywać ciągi bajtów. Przykłady urządzeń fizycznych dla których tworzy się logiczne urządzenia znakowe: zegar systemowy, porty szergowe i równoległe oraz widoczne przez nie drukarki, modemy, myszy i terminale, komsola, streamery itp. Urządzenia blokowe (ang. block device). Z urządzenia blokowego można odczytywać i zapisywać bloki bajtów określonej dla danego urządzenia wielkości. Dostęp do danych w urządzeniu blokowym w przeciwieństwie do urządzeń znakowych jest swobodny t.j. poprzez podanie adresu bloku. Przykłady urządzeń fizycznych dla których tworzy się logiczne urządzenia blokowe: dyski, niektóre skanery. Inne. Urządzenia te oferują funkcje, która wykraczają znacząco poza operacje odczytu/zapsu na urządzeniu znakowym lub blokowym. Przykłady urządzeń: karty sieciowe, karty graficzne. Modyły jądra odpowiedzialne za wyższe funkcje to moduły systemów plików, protokołów sieciowych, interfejsu użytkownika itp. Systemy plików mogą być zakładane na urządzeniach blokowych. System plików umożliwia przechowywanie na tym  samym urządzeniu różnych informacji w sposób pozwalający wyszukać potrzebne zbiory danych oraz zabezpieczyć dane przed niepowołanym dostępem. Wyższe funkcje we/wy dostępne są przez tzw. API (application programmer's interface - interfejs programisty aplikacji) czyli zbiory podprogramów dostępnych do wywołania przez aplikacje. Istnieją pewne złożone operacje, które nie powinny lub nie muszą być wykonywane w jądrze systemu operacyjnego ze względu np. na wydajność systemu, dążenie do zmniejszenia stopnia komplikacji jądra czy bezpieczeństwo. Do wykonania tych operacji uruchamia się przy starcie systemu programy usługowe zwane też demonami (ang. daemon). Przykłady zastosowań: zarządzanie kolejkami wydruków, implementacja części usług sieciowych czy wymiatanie buforów dyskowych. Programy usługowe i aplikacje mogą się odwoływać bezpośrednio do urządzeń logicznych, jeżeli konfiguracja systemu na to pozwala lub do odpowiednich API. Żadna warstwa oprogramowania z wyjątkiem sterowników programowych nie odwołuje się bezpośrednio do sprzętu. Zasoby urządzeń fizycznych Zasoby urządzeń fizycznych umożliwiają procesorowi i wykonywanemu się na nim oprogramowaniu komunikować się z urządzeniami fizycznymi. Wyróżnia się cztery klasy zasobów urządzeń fizycznych: rejestry we/wy (ang. I/O registers), przerwania (ang. interrupts), adresowalna pamięć sterownika, kanały DMA. Rejestry we/wy Rejestry we/wy to rejestry sterowników sprzętowych, do których procesor może wpisywać (lub odczytywać) dane podane na magistralę danych, podając na magistralę adresową adres rejestru. Wiele procesorów informuje o operacjach na rejestrach we/wy podając sygnał na specjalną ścieżkę w magistrali sterującej, co pozwala oddzielić przestrzeń adresową pamięci fizycznej od przestrzeni adresowej rejestrów we/wy. Rozwiącanie to zastosowano w procesorach Intela. Istnieją procesory, które nie rozróżniają pamięci operacyjnej i rejestrów we/wy, jak np. Motorolla 6502. Komplikuje to pracę projektantom magistral. Funkcje rejestrów we/wy mogą być różne. Zapis do pewnego rejestru może być komendą dla sterownika sprzętowego urządzenia. Inne rejestry służą jako bufory wejścia wyjścia - należy do nich wpisyswać dane wysyłane do urządzenia a odczytywać dane przychodzące z urządzenia. Jeszcze inne rejestry pozwalają odczytać status urządzenia lub ostatnio wykonanej operacji. Adresy rejestrów we/wy danego sterownika sprzętowego często mogą być modyfikowane. Nadaje się je ustawiając zworki na karcie sterownika (np. dawne modele kart sieciowych zgodnych z NE2000), konfigurując programem SETUP (np. adresy portów szeregowych) lub programem dostarczonym przez producenta urządzenia (np. karty sieciowe ISA 3Com) lub poprzez fakt włączenie karty w konkretne gniazdo magistrali (np. karty PCI). O ustawieniu adresów we/wy na sterowniku sprzętowym należy poinformować sterownik programowy (ang. driver), aby mógł się poprawnie odwoływać do danego urządzenia. Nowsze sterowniki programowe potrafią same wykryć adresy we/wy swoich sterowników fizycznych. Adresy we/wy nie muszą tworzyć spójnej przestrzeni adresowej jak to było z pamięcią fizyczną. Jeżeli adresy we/wy dwóch sterowników pokrywają się, to urządzenia te nawzajem przeszkadzają sobie w pracy. Mówimy wtedy o konflikcie adresów we/wy. Konflikt rozwiązuje się nadając jenemu z urządzeń inne adresy we/wy i informując o tym sterownik programowy danego urządzenia. Rejestry we/wy zapewniają przepływ niewielkich paczek informacji w obie strony (procesor <-> urządzenie). Inicjatorem komunikacji jest zawsze procesor. Przerwania Przerwana to sygnały jakie wysyłają sterowniki sprzętowe aby poinformować procesor o istotnym zdarzeniu, które wymaga poświęcenia przez procesor uwagi danemu urządzeniu. Przykładami takich wydarzeń może być wciśnięcie klawisza, zakończenie operacji dyskowej, nadejście pakietu informacji do karty sieciowej itp. Aby odróżnić zdarzenia pochodzące od różnych urządzeń, poszczególnym sterownikom sprzętowym przypisuje się numery przerwań w podobny sposób jak to było z adresami we/wy, przy czym zakres numerów przerwań sprzętowych jest niewielki i przykładowo wynosi od 0 do 15 dla komputerów o architekturze PC/AT. Konflikt numerów przerwań może być równie katastrofalny w skutkach jak konflikt adresów we/wy. Podobnie jak z adresami we/wy, o ustawieniu numeru przerwania w sterowniku sprzętowym należy poinformować odpowiedni sterownik programowy. Po otrzymaniu przerwania procesor przerywa aktualnie wykonywany proces, zapisuje część swego kontekstu na stosie (przynajmniej wskaźnik instrukcji i rejestr flagowy) i przechodzi do wykonania podprogramu obsługi przerwania zarejestrowanego dla danego numeru przerwania. Podprogram ten pochodzi ze sterownika programowego danego urządzenia i został zarejestrowany w trakcie inicjacji sterownika. Po zakończeniu obsługi przerwania sterowanie wraca do przerwanego procesu, który wykonuje się dalej tak jakby nie został przerwany. Istnieje hierarchia przerwań, tzn. pewne przerwania mogą być przerywane przez inne umieszczone wyżej w hierarchii. Aby zwiększyć szybkość reagowania na przerwania podprogram obsługi przerwania wykonuje się w kontekście procesu, który został przerwany, co pociąga za sobą możliwość manipulowania danymi procesu przez podprogram obsługi przerwania pochodący ze źle lub złośliwie napisanego sterownika programowego. Adresowalna pamięć Adresowalna pamięć sterownika to część pamięci RAM lub ROM sterownika sprzętowego, która jest widoczna dla procesora w przestrzeni adresów fizycznych pamięci. Przykłady zastosowań: pamięć obrazu karty graficznej, pamięć ROM zawierająca kod podprogramów wchodzących w skład sterownika programowego danego urządzenia. Kanały DMA Kanały DMA (direct memory access - bezpośredni dostęp do pamięci) są to narzędzia jakie udostępniają magistrale sterownikom sprzętowym we/wy, aby te mogły bezpośrednio czytać lub pisać do pamięci operacyjnej (bez pochłaniania uwagi procesora). Podczas gdy sterownik sprzętowy dokonuje operacji przez kanał DMA magistrala stgerująca blokuje procesorowi dostęp do całości lub części pamięci. Z kanałów DMA korzystają sterowniki urządzeń przesyłających dane z wielkimi prędkościami takich jak dyski, karty sieciowe czy kardt dźwiękowe. Kanały DMA mają swoje numery, do których przydzielania odnoszą się podobne uwagi co do przydziału adresów we/wy. Sterowniki i urządzenia logiczne Sterownik programowy (ang. device driver) to zbiór podprogramów pozwalających sterować danym urządzeniem (urządzeniami) fizycznym. Dla poprawnej pracy sterownik musi znać zasoby sterownika sprzętowego urządzenia fizycznego, poprzez które może się z nim komunikować. Jeżeli sam nie potrafi ich znaleźć, należy podać mu je podczas konfiguracji. Pojedyńczy sterownik może obsługiwać wiele urządzeń fizycznych tego samego typu (np. dysków) lub typów uzupełniających się (np. klawiatura i ekran). Wyższym warstwom oprogramowania sterownik prezentuje pewną ilość urządzeń logicznych (ang. logical device). Każde urządzenie logiczne ma swoją unikalną nazwę np. "A:", "C:", "COM1:" w MS DOS czy "/dev/fd0", "/dev/hda1", "/dev/cua0" w Linuksie (podobne nazwy są w innych systemach uniksowych). W MSDOSie nazwy urządzeń logicznych nie mogą być dłuższe niż 9 znaków łącznie z obowiązkowym końcowym znakiem dwukropka ":". W MS Windows NT nazwy urządzeń logicznych umieszczone są w drzewie nazw obiektów systemowych, dodatkowo istnieje mechanizm tłumaczenia nazw MSDOSa na nazwy obiektów MS Windows NT. W uniksie każdemu urządzeniu logicznemu udostępnionemu przez administratora odpowiada plik specjalny w katalogu "/dev", stąd nazwy urządzeń zaczynają się na "/dev/". Urządzenia logiczne reprezentują abstrakcje urządzeń fizycznych: Urządzenia logiczne mogą wprost odpowiadać urządzeniom fizycznym. Np. w MSDOS urządzenie logiczne "COM1:" odpowiada pierwszemu portowi szeregowemu i w konsekwencji przypiętej do niego myszce. W niektórych przypadkach wiele urządzeń logicznych odpowiada temu samemu urządzeniu fizycznemu. Dzieje się tak gdy urządzenie daje się na pewnym poziomie abstrakcji podzielić na kilka odrębnych fragmentów. Np. w systemie MSDOS działającym na komputerze z jednym dyskiem podzielonym na dwie partycje, urządzenia logiczne "C:" i "D:" odpowiadają poszczególnym partycjom tego samego dysku fizycznego. Inny przykład: naświetlarka t.j. urządzenie do naświetlania klisz do offsetu może być widoczna jako kilka drukarek logicznych, każda drukarka logiczna reprezentuje inne parametry naświetlania (takie jak rozdzielczość). Możliwa jest również sytuacja gdy jedno urządzenie logiczne odpowiada więcej niż jednemu rządzeniu fizycznemu, np. "/dev/console" w linuksie odpowiada konsoli znakowej, czyli klawiaturze i monitorowi. Sterownik programowy urządzenia zapewnia m.in.: podprogramy obsługi przerwań obsługujące przerwania danego urządzenia, podprogramy implementujące operacje na urządzeniach logicznych jakie dany sterownik dostarcza wyższym warstwom, podprogramy do wykonania czynności organizacyjnych zlecanych przez system operacyjny takich jak np. inicjacja urządzenia. Sterowniki programowe urządzeń mogą być dostarczne przez firmy niezależne od producenta systemu operacyjnego w szczególności przez proucentów urządzeń we/wy. Najbardziej fundamentalne sterowniki takie jak sterowniki dysków, klawiatury, karty graficznej i monitora przychodzą razem z systemem operacyjnym. System operacyjny musi dawać się rozszerzać o inne sterowniki oraz definiować i egzekwować normy, których przestrzeganie pozwoli współistnieć w jednym systemie operacyjnym sterownikom programowym pochodzącym od różnych producentów. Po zainstalowaniu, sterownik programowy staje się częścią systemu operacyjnego, w związku z czym, sterowniki nieznanego pochodzenia mogą stanowić wyłom w bezpieczeństwie systemu. Urządzenia dyskowe Budowa urządzeń dyskowych Dysk jest urządzeniem blokowym przeznaczonym do przechowywania dużych ilości danych. Najmniejszą porcję danych jaka może być odczytana/zapisana na dysk nazywamy sektorem. Obecnie budowane dyski składają się z pewnej ilości talerzy (ang. plate) na których dwustronnie zapisywana jest informacja przez kolumnę głowic (ang. head) odczytująco-zapisujących. Na każdym talerzu wyodrębnić można ścieżki (ang. track) w postaci koncentrycznych okręgów, na których przy ustalonym położeniu kolumny głowic zapisywana jest informacja. Ścieżki należące do różnych dysków odpowiadające ustalonemu położeniu kolumny głowic nazywa się cylindrem (ang. cylinder). Na każdej ścieżce wyodrębnia się pewną ilość sektorów. Bezpośredni kontroler dysku jest najczęściej zintegrowany z dyskiem. Do komputera dysk jest przyłączony poprzez magistralę dyskową i adapter - sterownik sprzętowy magistrali dyskowej. Popularnie stosowane są dwa rodzaje magistral dyskowych i związanych z nimi protokołów komunikacji z dyskami: IDE (Integrated Drive Electronics - zintegrowany kontroler dysku), którego nowsze wersje występują pod akronimami: ATA (AT Attachment Interface - interfejs przyłącza architektury AT), EIDE (Enhanced IDE - rozszerzony IDE), ATA-2, Fast-ATA, ATAPI (ATA Packet Interface - interfejs pakietowy do ATA, wzorowany na SCSI, używany do napędów CD-ROM). Do magistrali IDE można prezyłączyć 1 adapter i maksymalnie 2 dyski. Jeden z dysków pełni rolę nadrzędną (ang. master) w stosunku do drugiego (ang. slave). W wytwarzanych obecnie komputerach PC najczęściej dwa adaptery (pierwszy - primary i drugi - secondary) IDE są zintegrowane z płytą główną, pozwalając obsługiwać maksymalnie 4 dyski. Zaletą standardu IDE jest niski stopień komplikacji sterowników sprzętowych a co za tym idzie niska cena. Wadą jest mała elastyczność, rozszerzalność i wydajność. Niska wydajność (w porównaniu ze SCSI) wynika z przyjętego protokołu, który blokuje magistralę IDE, a przez to drugi dysk do czasu wykonania operacji. SCSI (small computer system interface - interfejs małych systemów komputerowych) zaprojektowany początkowo dla minikomputerów okazał się bezkonkurencyjny przy budowie serwerów i silnych stacji roboczych oraz przyłączaniu do komputera urządzeń niekoniecznie dyskowych produkujących lub konsumujących duże ilości danych (takich jak np. skanery i naświetlarki). Do magistrali SCSI można przyłączyć do 8 lub w nowszych wersjach do 16 urządzeń. Jednym z nich jest adapter komputera zarządzający magistralą (ang. host adapter). Zaletą tego rozwiązania jest jego elastyczność i duża wydajność. Protokół SCSI pozwala by adapter wysyłał zlecenia do urządzenia podczas gdy urządznie to lub inne przyłączonego do tej samej magistrali wciąż jeszcze wykonuje swoje poprzednie zlecenie. Wadą jest duży stopień komplikacji urządzeń a przez to wyskoa cena. Wydajność dysku (ang. overall disk speed) charakteryzują parametry: Prędkość transferu danych z dysku do sterownika (ang. data transfer rate) - jest to prędkość, z jaką dysk jest w stanie przesyłać dane na magistralę łączącą go z adapterem. Traci na znaczeniu, gdy odwołania do dysku następują w dużej ilości do przypadkowych miejsc. Średni czas dostępu do sektora (ang. average seek time) - jest to średni czas potrzebny głowicy na znalezienie się nad losowo wybranym sektorem. Ilość obrotów dysku na minutę (rpm - ang. reverses per minute) i związany z tym średni czas oczekiwania głowicy na odczyt/zapis sektora na tej samej ścieżce (ang. average track seek time). Ten czynnik ma duże znaczenie gdy odwołania następują w wiekszości do sąsiednich sektorów dysku, co dzieje się przy wczytywaniu dużych niepofragmentowanych plików. Ilość pamięci podręcznej na danym dysku (ang. internal disk cache size). Wewnętrzna pamięć podręczna dysku pozwala przyspieszyć operacje na dysku: zmniejszeniu ulega ilość fizycznych odczytów/zapisów dysku dzięki przechowywaniu ostatnio odczytanych/zapisanych sektorów oraz można zaimplementować mechanizm czytania sektorów z wyprzedzeniem. Organizacja logiczna dysku Dysk jest charakteryzowany przez następujące zależne od siebie parametry, od których zależy pojemność dysku: geometrię: ilość zapisywalnych stron talerzy (ang. sides) = ilość głowic (ang. heads), ilość cylindrów, ilość sektorów na ścieżce (ang. sectors per track), rozmiar sektora (ang. sector size); ilość wszystkich sektorów, rozmiar sektora; Sektory na dysku można posortować w/g numeru cylindra, numeru głowicy i numeru sektora na ścieżce a następnie w tej kolejności ponumerować. Powstaje w ten sposób płaski numer sektora. Niektóre dyski dopuszczają by do ich sektorów odwoływać się poprzez podanie płaskiego numeru sektora, inne wymagają podania tzw. parametrów geometrycznych tj. numeru głowicy, numeru cylindra i numeru sektora na ścieżce. Utworzenie na dysku ścieżek i sektorów na ścieżkach nazywamy formatowaniem niskopoziomowym. Formatowanie niskopoziomowe przeprowadzane jest najczęściej u producenta lub jako pierwsza czynność po zainstalowaniu dysku w systemie. W czasie formatowania niskopoziomowego dokonywane jest także sprawdzanie zdatności nośnika magnetycznego. Przeprowadzenie formatowania niskopoziomowego wymazuje z dysku wszelkie informacje (łącznie z tablicą partycji). Na dysku można wydzielać obszary zwne partycjami, przydzielane różnym systemom plików, być może należących do różnych systemów operacyjnych. Wiele systemów plików wymaga aby ich partycje zawierały pełne cylindry. Opis podziału dysku na partycje znajduje się w tzw. tablicy partycji umieszczonej na początku dysku. Zmiana podziału na partycje niszczy zawartość partycji, których rozmiar lub położenie uległo zmianie. Do manipulacji tablicą partycji służy program fdisk. Na każdym dysku obsługiwanym przez MSDOS, MS Windows 3.xx lub 95 może istnieć jedna partycja podstawowa FAT16 lub FAT32 oraz jedna partycja rozszerzona z pewną ilością podpartycji FAT16 lub FAT32. Po utworzeniu partycji należy na każdej z nich zapisać dane niezbędne do poprawnego funkcjonowania systemu plików. Ten proces nazywamy formatowaniem wysokopoziomowym. Formatowanie wyskokpoziomowe może zniszczyć dane zapisane na danej partycji. Jeżeli system operacyjny startuje z dysku, jedna z partycji, tzw. partycja aktywna powinna zawierać program ładujący jądro systemu operacyjnego oraz wszystkie inne pliki niezbędne do startu systemu. Program ładujący jadro bywa umieszczany w zerowym sektorze dysku, zwierającym też tablicę partycji zwanym sektorem startowym (ang. bootsector). System operacyjny łączy sektory dyskowe w większe jednostki, które traktuje nierozdzielnie przy przydzielaniu ich plikom. Jednostki te nazywają się w różnych systemach: jednostkami alokacji (ang. allocation unit), blokami (ang. block) klasterami (ang.cluster). Przykładowe rozmiary jednostek alokacji to: 512 B = 1 sektor - SCO Unix, MSDOS FAT16 dla partycji nie większych niż 32 MB 1kB = 2 sektory - Linux Ext2, MSDOS FAT16 dla partycji nie większych niż 64 MB 4kB = 8 sektorów - Novell Netware, MSDOS FAT16 dla partycji nie większych niż 256MB, MS Windows NT NTFS, MS Windows 95 FAT32. Programowe sterowniki dysków wykorzystują pamięć podręczną przy dostępie do dysków. W pamięci podręcznej przechowywane są jednostki alokacji, na których ostatnio dokonywano operacji (zapis na dysk nie następuje natychmiast) oraz te, o których sądzi się, że w niedługim czasie będą odczytywane. Przyspiesza to czas operacji na często używanych plikach, lub gdy wczytuje się dane z pliku w sposób sekwencyjny. W MSDOSie i MS Windows 3.11 rozmiar dyskowej pamięci podręcznej należało ustawić ręcznie. W nowszych systemach rozmiar ten ustalany jest automatycznie na podstawie ilości dostępnej pamięci i częstości operacji na dysku. Systemy plików Pliki Systemy plików mają zapewnić możliwość przechowywania zbiorów danych na urządzeniach zewnętrznych komputera w sposób pozwalający na późniejsze odwoływanie się do danych, ich przetwarzanie oraz łatwe wyodrębnianie, kopiowanie, przenoszenie i usuwanie do i z systemu. Plikiem lub zbiorem danych (ang. file) nazywamy ciąg bajtów określonej długości stanowiący dla systemu plików atomiczną całość, wyposażony w nazwę i inne atrybuty zależne od systemu plików takie jak daty utworzenia, ostatniej modyfikacji, dostępu, flagę archiwizacji, czy uprawnienia. Strumieniem (ang. stream) nazywamy obiekt z którego można czytać lub do którego można zapisywać dane w sposób sekwencyjny (bajt po bajcie). Strumienie stanowią ważną abstrakcję danych, wykorzystywaną m.in. przy dostępie do plików. Przykładami strumieni mogą być poza zwykłymi plikami znakowe urządzenia logiczne (w szczególności terminale). Wiekszość systemów plików zapewnia do zwykłych plików zarówno dostęp sekwencyjny (tak jak do strumienia) jak i swobodny (w dowolnym momencie można powoływać się na dowolny bajt, lub ciąg bajtów pliku podając adres pierwszego bajtu i długość ciągu). Katalogi Aby ułatwić odszukiwanie plików, tworzy się hierarchiczną strukturę zwaną drzewem katalogów. Katalogiem (ang. directory) nazywamy plik interpretowany przez system plików jako listę odwołań do innych plików. Jako synonimy katalogu stosuje się także nazwy folder i kartoteka. Wszystkie obecnie spotykane systemy plików dopuszczają aby katalogi zawierały inne katalogi (tzw. podkatalogi ang. subdirectory), przy czym wymaga się, aby graf katalogów był drzewem (ang. tree) skierowanym. Każdy katalog ma co najwyżej jeden nadkataolg (ang. updir). Istnieje dokładnie jeden katalog będący korzeniem drzewa katalogów, który nie posiada swego nadkatalogu (lub sam jest sobie nadkatalogiem, ang. root directory). Niektóre systemy plików (np. uniksowe systemy plików) dopuszczają aby ten sam plik mógł się znajdować w wielu katalogach jednocześnie lub w tym samym katalogu pod różnymi nazwami. W takich systemach plików katalogi i pliki tworzą graf acykliczny. W systemach plików FAT16 i FAT32 stosowanych w MSDOS i MS Windows 3.xx i 95 pliki i katalogi tworzą drzewo. System plików FAT16 Nazwa tego systemu plików wzięła się od najważniejszej struktury danych służącej w nim do przechowywania informacji organizującej bloki partycji w katalogi i pliki - FAT (ang. File Allocation table) - tablica alokacji plików. W systemie tym partycja jest dzielona na 4 części: bootsektor - zawiera program ładujący system operacyjny i metryczkę partycji, pierwsza kopia tablicy FAT, druga kopia tablicy FAT - jest używana, w razie fizycznego uszkodzenia sektorów wchodzących w skład pierwszej kopii, obszar bloków. Pierwsze dwa bloki z obszaru bloków są przydzielone do katalogu głównego danej partycji. Pozostałe bloki mogą być przyznawane zarówbo do plików jak i katalogów. W blokach przypisanych plikowi zapisana jest jego zawartość. Dzięki temu, że system plików FAT zapamiętuje kolejność przyznawania bloków do pliku, możliwe jest zachowanie kolejności bajtów zawartości. Bloki przyznane do katalogów zawierają tablice, których pozycje przechowują metainformacje opisujące pliki i katalogi wchodzące w skład danego katalogu: nazwę i rozszerzenie; datę i czas modyfikacji; atrybuty: tylko do oczytu, wymaga archiwizacji, ukryty, systemowy; rozmiar pliku; czy plik jest katalogiem, czy zwykłym plikiem adres pierwszego bloku w pliku. W systemie tym przewiduje się 16 bitów na adres bloku (jednostki alokacji, klastera), przy czym kilka wartości adresu jest zabronionych jako adresy aby mogły być wykorzystywane jako znaczniki. Pierwsze dwa bloki obszaru bloków (o adresach 0x0000 i 0x0001) są zawsze przeznaczone na katalog główny. Pozostałe bloki (maksymalnie 65518) są przeznaczone na pliki i katalogi. Każdemu blokowi z obszaru bloków odpowiada jadna dwubajtowa pozycja w każdej kopii tablicy FAT. Jeśli sektory dysku, w których zapisane są kopie tablicy FAT nie są fizycznie uszkodzone, to obie kopie tablicy FAT są identyczne, zatem w dalszej części wywodu tablica FAT będzie traktowana jak pojedyńczy obiekt. Pozycje tablicy FAT opisują status poszczególnych bloków systemu plików oraz ich przydział do pliku. Pozycje tablicy FAT liczą 16 bitów (2 bajty) - tyle ile adres bloku. Jeśli na pozycji FAT odpowiadającej blokowi y pojawi się wartość 0x0000, to znaczy, że blok y nie jest wykorzystany przez pliki i katalogi i można go użyć do utworzenia nowego pliku, lub powiększenia istniejącego. W czasie kasowania pliku, na pozycje FAT odpowiadające blokom kasowanego pliku wpisywana jest wartość 0x0000. Jesli na pozycji FAT odpowiadającej blokowi y pojawi się wartość 0xFFF7, to znaczy, że w skład bloku y wchodzi fizycznie uszkodzony sektor, i bloku tego nie należy przydzielać do plików. Wartości 0x0001 i 0xFFF0-0xFFF6 nigdy nie zostaną wpisane do żdnej pozycji tablicy FAT. Adres pierwzego bloku wchodzącego w skład pliku jest pamiętany w odpowiadającej mu pozycji katalogu, pozostałe adresy bloków wchodzących w skład pliku przechowywane są na pozycjach tablicy FAT odpowiadających poprzedzającym je w pliku blokom. A więc, jeśli na pozycji y FATu znajduje się wartość x z przedziału 0x0002-0xFFEF, to znaczy, że blok y należy do pewnego pliku, a następnym blokiem w tym pliku jest blok o adresie x. Wartości 0xFFF8-0xFFFF na pozycji odpowiadającej blokowi y oznaczają, że dany blok jest przydzielony do pliku i jest ostatnim blokiem w pliku. Znaczenie wartości wpisywanych do pozycji FAT podsumowuje poniższa tabelka.   x Co się znajduje pod adresem x Co oznacza wartość x wpisana do pozycji FAT y 0x0000 pierwszy blok katalgu głównego blok y jest wolny 0x0001 drugi blok katalogu głównego wartość nieużywana - zarezerwowana do przyszłych zastosowań 0x0002-0xFFEF bloki wykorzystywane przez pliki i katalogi blok y jest przypisany do pliku, adres następnego bloku w pliku to x 0xFFF0-0xFFF6 nie ma takiego adresu wartości nieużywane - zarezerwowane do przyszłych zastosowań 0xFFF7 nie ma takiego adresu blok y zawiera uszkodzony fizycznie sektor - bloku nie można używać 0xFFF8-0xFFFF nie ma takiego adresu blok y jest przydzielony do pliku i jest ostatnim blokiem w pliku Jeśli pobraliśmy z katalogu pozycję opisującą dany plik i chcemy wczytać jego zawartość, to musimy usyalić adresy bloków wchodzących w skład pliku. Adres pierwszego bloku już mamy - jest on pamiętany w pozycji katalogu. Adresy następnych oczytujemy z FATu. Na pozycji FAT odpowiadającej pierwszemu blokowi pliku znajdujemy adres drugiego bloku. Na pozycji odpowiadającej drugiemu blokowi znajdujemy adres trzeciego bloku itd. W pewnym momencie natrafiamy na wartość z przedziału 0xFFF8-0xFFFF. Znaczy to, że znaleźliśmy już wszystkie bloki wchodzące w skład pliku. Ciągi adresów bloków opisywane przez tablicę FAT nazywamy łańcuchami. W poprawnie działającym systemie plików każdemu łańcuchowi odpowiada dokładnie jeden plik, tzn. istnieje pozycja w pewnym katalogu, która powołuje się na pierwszy adres w tym łańcuchu (w przeciwnym razie mamy do czynienia z zerwanym łańcuchem) oraz pozycja taka jest dokłądnie jedna (w przeciwnym razie mamy do czynienia ze zduplikowanym łańcuchem). Zduplikowany łańcuch może powstać także wtedy, gdy dwie pozycje FATu odwołują się do tej samej trzeciej pozycji, jako pozycji następnej. Nazywanie plików Jak wcześniej stwierdzono, każdy plik posiada nazwę (ang. file name). Nazwa pliku musi być unikalna w ramach katalogu. Każdy plik w systemie plików posiada (przynajmniej jedną) pełną (bezwzględną) nazwę, unikalną w ramach całego systemu plików, tworzoną przez połączenie z nazwą pliku tzw. ścieżki bezwzględnej, t.j. nazw wszystkich katalogów, jakie należy przejść aby osiągnąć dany plik poczynając od korzenia drzewa katalogów. Jeśli pliki i katalogi tworzą drzewo to każdy plik posiada dokładnie jedną pełną nazwę. Między innymi dla uproszczenia nazewnictwa plików wprowadza się pojęcie katalogu bieżcego. Katalog bieżący może być związany z procesem (jak np. w Uniksie) lub być globalnym dla wszystkich procesów systemu (MSDOS). Nazwa utworzona z nazwy pliku i tzw. ścieżki względnej, t.j. nazw katalogów jakie należy przejść aby osiągnąć dany plik poczynając od katalogu bieżącego nosi nazwę nazwy względnej. Przejście do nadkatalogu sygnalizowane jest w ścieżce i nazwie względnej przez człon "..". Do łączenia nazw katalogów i plików w ścieżki i nazwy względne i bezwzględne używa znaku charakterystycznego dla danego systemu operacyjnego zwanego dalej znakem katalogu: "\" - w MSDOS, MS Windows XX, "/" - w systemach zgodnych z uniksem, "." - w VMSie W MSDOSie, MS Windows XX i systemach zgodnych z uniksem katalog główny nosi nazwę taką jak znak katalogu ("\" w MSDOS, "/" w uniksach), a nazwa bezwzględna różni się tym od nazwy względnej, że nazwa bezwzględna zaczyna się znakiem katalogu, np. "\Windows\Command" - ścieżka bezwzględna, "Command" - nazwa względna, (względem katalogu "\Windows"). System operacyjny z różnych powodów narzuca pewne ograniczenia na nazwy plików, np. długość - 8 znaków nazwy właściwej + 3 znaki rozszerzenia w MSDOS, 14 znaków w niektórych uniksach, 255 znaków w niektórych nowszych systemach operacyjnych. Innym ograniczeniem jest to jakie znaki można stosować w nazwach. Uniksy dopuszczają wszystkie znaki oprócz (co jest oczywiste) znaku katalogu "/" i znaku końca łańcucha (znak o kodzie 0). Systemy te rozróżniają duże/małe litery. MSDOS dopuszczał jesynie litery, cyfry, i kilka znaków nieliterowych, m.in. "_", "$" i "!". MS Windows 95 dopuszczają m.in. odstęp (czyli sację " "), "-" i wiele innych. Systemy te nie rozróżniają dużych/małych liter przy odwołaniach do plików, choć MS Windows 95 rozróżnia je przy wyświetlaniu nazw plików. Kilku słów komentarza wymaga mechanizm pozwalający korzystać z tego samego systemu plików zarówno przez MS Windows 95 (długie nazwy) jak i starsze wersje systemów Microsoftu. Mechanizm ten zwany jest Virtual FAT (vfat). Każdy plik posiada dwie nazwy, tzw. nazwę długą tworzoną zgodnie z regułami MS Windows 95 i nazwę 8+3 tworzoną zgodnie z regułami MSDOSa na podstawie nazwy długiej. MSDOS widzi w danym katalogu tylko nazwy 8+3, natomiast MS Windows 95 widzi obie nazwy, a domyślnie wyświetla nazwy długie. Systemy plików a dyski logiczne Każdej partycji odpowiada urządzenie logiczne i związana z nim nazwa dysku logicznego. Istnieją dwa podejścia do nazywania plików położonych na różnych partycjach: Globalny system plików. Takie nazewnictwo występuje w uniksach. Istnieje jeden katalog główny dla całego systemu operacyjnego. Katalog ten jest jednocześnie katalogiem głównym wyróżnionej partycji, zwanej partycją korzeniową (ang. root). Katalogi główne pozostałych partycji są montowane do liści drzewa partycji korzeniowej lub wcześniej zamontowanych partycji, rozbudowując drzewo. Rozmieszczenie poszczególnych katalogów i plików na partycjach jest przezroczyste dla użytkowników. Dołożenie nowego dysku lub przemieszczenie całych katalogów pomiędzy partycjami nie musi powodować zmiany nazwy bezwzględnej żadnego pliku. Pomaga w tym mechanizm dowiązań symbolicznych (ang. symbolic link, czyli skrót, ang. shortcut, w terminologi MS Windows ). Jawne nazwy dysków. Takie nazewnictwo wykorzystują m.in. MS DOS i MS Windows XX. Nie istnieje globalny system plików. Tworząc pełną nazwę pliku należy powołać się na nazwę dysku logicznego. Dyski logiczne mają nazwy składające się z pojedyńczej dużej litery alfabetu łacińskiego i dwukropka (np. "A:", "C:", takich nazw  może być najwyżej 26). Użytkownik musi pamiętać na którym dysku znajdują się jego pliki. Dodanie nowego dysku lub przemieszczenie katalogów między dyskami powoduje zmianę bezwzględnych nazw plików. Dla ułatwienia tworzenia nazw względnych pojawia się pojęcie dysku bieżącego. Jeżeli nazwa pliku nie zawiera nazwy dysku, to przyjmuje się że odnosi się do dysku bieżącego. Każdy dysk logiczny ma swój katalog bieżcy. Jeśli w nazwie pliku podana będzie nazwa dysku, a po niej nie nastąpi znak "\", to plik jest poszukiwany idąc po ścieżce poczynając od bieżącego katlogu podanego dysku. Typy plików Systemy operacyjne wyróżniają typy plików, które są traktowane w sposób specyficzny. Jeden spośród atrybutów pliku zwany typem pliku decyduje o sposobie traktowania pliku przez system operacyjny. Najczęściej spotykane typy plików to: Katalogi. O katalogach była już mowa. Pliki specjalne urządzeń - występują w systemach uniksopodobnych, służa do nazywania urządzeń logicznych. Kolejki FIFO, kolejki komunikatów, gniazda (ang. sockets), strumienie - pliki realizujące bardziej złożone sposoby dostępu. Występują w systemach uniksopodobnych i MS Windows NT. Dowiązania sybmoliczne (ang. symbolic link) inaczej skróty (ang. shortcut). Pliki które stanowią odwołanie do innych plików lub katalogów. Większość operacji wykonywanych na tych plikach odnosi się w rzeczywistości do plików przez nie wskazywanych. Pliki wykonywalne (ang. executables): programy, komendy, skrypty (ang. scripts), pliki wsadowe (ang. batch files) - pliki zawierające kod programu do wykonania przez procesor lub komendy do wykonania przez powłokę (lub inny interpreter). Programy mogą być wyróżnione jak w systemach uniksopodobnych przez posiadanie specjalnego uprawnienia do wykonania lub przez nadanie odpowiedniego rozszerzenia, np. ".COM", ".EXE " i ".BAT" w MSDOSie. Zwykłe pliki z danymi. Te dzielą się na podtypy, zależnie od posiadanego rozszerzenia, tj przyrostka nazwy pliku zaczyającego się zazwyczja znakiem kropki lub od tzw. liczby magicznej tj. pierwszych 2 lub 4 bajtów zawartości pliku. Interpretacją zawartości plików z danymi róznych typów zajmują się specjalizowane aplikacje (takie jak MS Word, AutoCAD itp.). System operacyjny nie próbuje interpretować tych plików, co najwyżej powłoki użytkownika dostarczają narzędzi do łatwego uruchamiania odpowiednich aplikacji, rejestrowania nowych typów plików z danymi i kojarzenia z nimi aplikacji. ASCII Na osobne omówienie zasługuje plik tekstowy ASCII. Otrzymuje on często rozszerzenia ".txt" lub ".asc". Bajty przechowywane w tym pliku interpretowane są jako znaki alfanumeryczne kodowane w ASCII (Amercan Standard Code for Information Interchange). Kod ten koduje duże i małe litery, cyfry, znaki przestankowe oraz podstawowe symbole matematyczne. Aby nadać danym przechowywanym w plikach ASCII formę podobną do dokumentów pisanych na dwuwymiarowych kartkach, pewne znaki o kodach mniejszych od 32 oraz znak o kodzie 127 otrzymują specjalne znaczenie sterujące. Na znaczenia przypisane znakom sterującym poważny wpływ miały terminale teletekstowe (ang. teletype) stosowane w początkowych fazach rozwoju informatyki. Ważniejsze znaki sterujące to: CR (dziesiętny kod znaku: 13) - Carriage Return - powrót karetki. Oznacza przesunięcie głowicy drukarki na początek wiersza. LF (dziesiętny kod znaku: 10) - Line Feed - przejście do nowego wiersza. W systemach uniksopodobnych służy do rozdzielnia wierszy pliku tekstowego. W systemach Microsoftu do tego celu służy para nastepujących po sobie znaków CR LF. FF (dziesiętny kod znaku: 12) - Form Feed - przejście do nowej strony. Powoduje wysunięcie strony z drukarki i przejście do drukowania na nowej. HT (dziesiętny kod znaku: 9) - Horizontal Tab - tabulacja pozioma. Powoduje przejście do następnej pozycji przy tworzeniu tabel, zazwyczaj przejście do najbilższej kolumny znaków o numerze podzielnym przez 8. BS (dziesiętny kod znaku: 8) - BackSpace - wymazywanie wsteczne. Nakazuje wymazanie poprzedniego znaku. ESC (dziesiętny kod znaku: 27) - Escape - kod ucieczki. Oznacza, że po nim nastąpi zakodowana komenda dla urządzenie wyświetlającego lub drukującego. W edytorach nazywany jest także metaznakiem (ang. meta, metacharacter) służącym do konstruowania znaków niedostępnych bezpośrednio z klawiatury lub komend. Znak końca pliku (kod dziesiętny różny w róznych systemach). Oznacza koniec pliku tekstowego lub transmisji tekstowej. Oryginalny kod ASCII jest siedmiobitowy. Ósmy bit bajtu używany był jako suma kontrolna. Obecnie wykorzystywane jest wszystkie osiem bitów. Tak uzyskane dodatkowe 128 znaków służy do przedstawiania semigrafiki lub znaków narodowych. Ponieważ jest to zamało do przedstawienia znaków narodowych, choćby wszystkich alfabetów łacińskich, wprowadzono strony kodowe, t.j. sposoby kodowania znaków spoza podstawowego alfabetu łacińskiego. W Polsce obowiązuje norma przemysłowa zgodna z normą międzynarodową ISO 8895-2. Popularnie stosowane oprogramowanie Microsoftu z wyjątkiem MS Windows NT stosujących unikody (ang. unicode) nie jest zgodne z powyższymi normami i wprowadza dwie własne strony kodowe CP 852 (MSDOS) i CP 1250 (MS Windows XX). Pliki ASCII ze wględu na prostotę kodowania informacji są powszechnie wykorzystywane jako pliki konfiguracyjne, dzienniki odnotowujące błedy programów, pliki przenoszące dane między różnymi aplikacjami lub przechowujące dane w sposób ułatwiający użytkownikowi ingerencję niezależnie od aplikacji. Poprzedni | Spis treści | Następny Wszelkie uwagi i komentarze: bartoszl@stud.ics.p.lodz.pl

Wyszukiwarka

Podobne podstrony:
C w7 pliki operacje we wy
sysop we
Systemy wyklad ochrona we wy
SO 11 WE WY
LINIE WE WY
Porty we wy
we,wy
uklady we wy
sysop up
sysop pa
Obudź we mnie Venus Sixteen
We wish you a Merry Christmas
ŻYCIE WE WSZECHŚWIECIE(1)
Tyszka Rodzina we współczesnym świecie
Wy pkm 14 SP II
O szukaniu diabła we wszystkich rzeczach
wspolpraca;z;we;dwoje;pl,site,3

więcej podobnych podstron