Osnova přednášky Programové prostředky řízení
n
Operační systémy II
n
Vstupy a výstupy Souborový systém
Pavel Balda Západočeská univerzita v Plzni, FAV, KKY
2
Vstupy a výstupy – principy I/O zařízení n
n n
n
Řízení vstupně-výstupních (V/V) zařízení (Input/Output, I/O devices) je jedním z hlavních úkolů OS OS posílá k zařízením příkazy, obsluhuje přerušení (interrupts) a chyby OS by měl poskytovat co „nejjednotnější“ (pokud možno stejné) rozhraní ke všem zařízením (device independence) I/O zařízení lze zhruba rozdělit do dvou typů: n
n
n
n
Každý řadič má několik registrů pro komunikaci s CPU. n n n
n
n
n
n
n
Zápisem do registrů se vydávají příkazy, co má daný řadič dělat Čtením registrů se zjišťuje stav zařízení a případné hodnoty ze zařízení Často mají řadiče vyrovnávací paměť (buffer) pro čtení a/nebo zápis
Existují dva základní způsoby komunikace CPU s I/O zařízením: I/O porty: čtení pomocí instrukcí IN REG,PORT (čte port PORT do registru REG), zápis pomocí instrukcí OUT PORT,REG (nastavuje na port PORT hodnotu z registru REG), viz obr. a) Mapování do paměti: Každému řídicímu registru je přiřazena jedinečná adresa v paměti, obr. b)
Třetím způsobem je hybridní přístup, tj. kombinace obou přístupů, obr. c) Dva adresní prostory
Toto dělení však „pokulhává“, některá zařízení nejsou ani jednoho z uvedených typů, např. : n
n
Bloková zařízení – pracují s informací organizovanou do bloků pevné délky (typicky od 512 do 32768 bytů), každý blok má svou adresu. Nejtypičtějšími zařízeními tohoto typu jsou disky (HDD, FDD, CD, DVD) Znaková zařízení – dodávají nebo přijímají posloupnost (stream) znaků, které nemají blokovou strukturu. Typickými představiteli jsou tiskárny, síťové adaptéry, myši, sériové a USB porty a většina „nediskových“ zařízení
Komunikace mezi řadičem a CPU
0xFFF…
Časovač (clock) – generují přerušení v periodických intervalech Paměť videokarty mapovaná do hlavní paměti procesoru
I/O zařízení se typicky skládá z mechanické a elektronické součásti. Elektronická část se nazývá řadič zařízení (device controller)
Paměť Paměť 3
0
Jeden adresní prostor
Dva adresní prostory
Mapovaná Mapovaná paměť paměť
Mapovaná Mapovaná paměť paměť
Paměť Paměť
Paměť Paměť
I/O I/O porty porty a)
I/O I/O porty porty b)
c)
4
1
Přímý přístup do paměti (DMA)
Paměťově mapované I/O n
Výhody paměťově mapovaných I/O: n
n
n
n
n
Není třeba speciálních instrukcí IN a OUT pro přístup k I/O portům, nemusí být proto ve vyšších programovacích jazycích užíván assembler. Registry jsou pak proměnnými. Není třeba žádný dodatečný mechanismus ochrany paměti. Je vhodné umístit registry na samostatnou stránku virtuální paměti. To umožňuje umisťovat ovladače do různých adresových prostorů (zamezí vzájemné ovlivňování) Každá instrukce procesoru pro práci s pamětí se může odkazovat na řídicí registry. Obvykle lze číst a testovat řídicí registr jednou instrukcí, což vede k mírnému zrychlení ovladače
n n n
n
n
Většina CPU podporuje práci s cacheováním paměti. Je-li užito na řídicí registry, může způsobit katastrofu. Pro zabránění tomuto problému musí být HW vybaven selektivním zakazováním cacheování, např. pro jednotlivé stránky
n n n
Rychlá sběrnice
CPU CPU
Paměť Paměť
CPU CPU
I/O I/O
Sběrnice
Paměť Paměť
I/O I/O
Přístup I/O zařízení do paměti Sběrnice 5
n
n
n
Nejčastěji se informace ukládají na zásobník Řadič interruptů
CPU CPU
1
Paměť Paměť 3
n
n
Disk
6
(1/2)
Klíčovým konceptem je tzv. nezávislost zařízení (device independence) n
Mělo by být možné psát programy, které přistupují k jakýmkoliv I/O zařízením, aniž by tato zařízení musela být specifikována dopředu Např. program, který čte vstupní soubor by měl být schopen číst soubor z floppy disku, harddisku i CD/DVD-ROM
Jednotné pojmenování (uniform naming) – všechna zařízení a soubory jsou adresována jednotně, pomocí cesty (path name), např. n n
n
"E:\temp\pokus.txt", "COM1:" (Windows) "DEV1:/file1", "/tyCo/0" (UNIX like)
Obsluha chyb (error handling) – měla by být prováděna co nejblíže hardwaru n
3 2
Disk
Sběrnice
n
1. I/O zařízení ukončí práci a generuje interrupt (za předpokladu, že jsou interrupty povoleny) signálem přivedeným do řadiče interruptů. 2. Neprobíhají-li další interrupty, zpracuje interruptní řadič signál okamžitě. Nastaví adresu specifikující zařízení, které interrupt vyvolalo a nastaví signál pro CPU. 3. Interruptní signál způsobí, že CPU pozastaví to, co právě provádí a začne dělat něco jiného: číslo na adresní sběrnici je použito jako index do tabulky nazývané interrupt vector. Touto hodnotou je naplněn program counter a je zahájeno vykonávání obslužné procedury interruptu (interrupt service routine, ISR). Někde blízko na začátku potvrdí (acknowledge) procedura interrupt zápisem do registru řadiče, že může generovat další interrupt.
Před startem obslužné procedury musí hardware uložit některé informace, minimálně program counter, maximálně všechny registry. n
Řadič DMA Řadič disku Addr 4 Buffer Count Control 5 2 1
Cíle I/O softwaru
Přerušení (Interrupt) je způsob signalizace ukončení I/O operace. Interrupt generuje řadič interruptů (interrupt controller), viz obr. n
1. CPU naprogramuje řadič DMA (co má být přeneseno a kam) a vyšle příkaz řadiči disku k přečtení dat do interního bufferu a verifikaci kontrolního součtu (checksum) 2. DMA zinicializuje přenos vysláním požadavku na čtení řadiči disku 3. Zápis do paměti (standardní cyklus sběrnice) 4. Potvrzení (acknowledge) ukončení zápisu z řadiče disku řadiči DMA 5. Inkrementace adresy paměti a dekrementace počtu bytů. Opakování kroků 2. až 4. dokud není počet bytů nulový. Pak vyslání přerušení (interrupt)
CPU CPU
Přerušení (Interrupts) n
Vyžaduje přítomnost řadiče DMA (má jej většina systémů) Řadič DMA má přístup na sběrnici nezávisle na CPU Jeho registry jsou programovány z CPU (adresní registr, registr pro počet bytů, stavové registry)
Příklad: Čtení z harddisku n
Nevýhoda: n
DMA (Direct Memory Access) je často používaný mechanismus přímého přístupu do paměti, který je nezávislý na CPU
Zjistí-li řadič např. chybu čtení, měl by se snažit ji opravit sám (je-li to možné), třeba zopakováním čtení. Teprve pokud se oprava nezdaří, měla by být informována nadřazená vrstva
Klávesnice Clock Sběrnice
7
8
2
Cíle I/O softwaru n
n
n
n
Programované (programmed) I/O je technika, kde všechnu práci dělá CPU (programově). Např. tisk řetězce na tiskárně (viz obr.)
Např. u paketu přicházejícího po síti neví OS, kam jej uložit, dokud není celý přijat a zanalyzován Některá zařízení, např. digitální audio mají velmi přísná real-time omezení, proto musí být data ukládána do výstupního bufferu v dostatečném předstihu, aby nedošlo k podtečení (underrun) bufferu
n
n
n
Po vyslání znaku se CPU cyklicky dotazuje na připravenost k přijetí dalšího znaku. Takové chování se nazývá polling nebo busy waiting
Uživatelský prostor
n
n
n
n
Tištěná stránka
Tištěná stránka
AA
Next Next
ABCD ABCD b)
Tištěná stránka
AB AB
Next Next
ABCD ABCD c)
10
I/O využívající DMA
I/O řízené interrupty signalizují dokončení každé operace vygenerováním interruptu. Jako teoretický příklad uvažujme tisk na tiskárně, která neukládá znaky do bufferu, ale tiskne každý znak tak, jak přichází. n
ABCD ABCD
a)
I/O řízené interrupty (Interrupt driven I/O)
n
Řetězec Řetězec kk vytištění vytištění
Prostor jádra
9
n
Nejprve je sestaven řetězec v uživatelském programu (a). Podaří-li se získat tiskárnu, je zavolána systémová služba „vytiskni řetězec“, která obvykle zkopíruje řetězec do bufferu v paměťovém prostoru jádra (kernel space) Je-li tiskárna pořád dostupná pošle se na ni první znak (nemusí se objevit hned, pokud tiskárna bufferuje např. celý řádek). Avšak v případě (b) se objevil. Zápisem znaku se tiskárna dostane do stavu „nepřipravena“, OS musí počkat na stav „připravena“ (pro zaslání dalšího znaku). Tato informace se získá ze stavového registru tiskárny Po dosažení stavu „připravena“ vytiskne OS další znak (c). Tak se pokračuje dokud se nevytiskne celý řetězec. Pak se předává řízení uživatelskému procesu
n
Většina zařízení je asynchronní – CPU odstartuje přenos a „jde dělat“ něco jiného, dokud nepřijde interrupt Z uživatelského hlediska je jednodušší jsou-li I/O operace blokující – po zavolání služby čtení je program automaticky suspendován, dokud se neobjeví data v bufferu OS může zajistit, že interrupty řízené operace se jeví uživateli jako blokující
Ukládání do bufferů (buffering) – často nemohou být data ukládána přímo na cílovou adresu, dokud nejsou zpracována n
Programované (programmed) I/O n
Synchronní (blokující, blocking) versus asynchronní (interrupty řízené, interrupt-driven) přenosy n
n
(2/2)
Může-li tiskárna tisknout např. 100 znaků za vteřinu, znamená to, že tisk každého znaku trvá 10 ms. To je dost dlouhá doba na to, aby ji CPU nepromarnila čekáním. Interrupty umožňují, aby CPU dělala během čekání na vytisknutí znaku něco jiného Po zavolání systémové služby „vytiskni řetězec“ se zkopíruje řetězec do bufferu v paměťovém prostoru jádra (jako v předchozím příkladu) a ihned poté co je tiskárna schopna přijmout znak je tento znak vyslán. Pak CPU zavolá plánovač, který spustí nějaký jiný proces. Proces, který volal službu pro tisk řetězce je blokován dokud není vytištěn celý řetězec Jakmile tiskárna vytiskne daný znak a je připravena tisknout další znak, vygeneruje interrupt, který přeruší daný proces, uloží jeho stav a spustí obslužnou proceduru (ISR) Jsou-li vytištěny všechny znaky, odblokuje se uživatelský proces, který zavolal tisk. Jinak se pošle na tiskárnu další znak, potvrdí se interrupt (acknowledge) a obslužná procedura se vrací do procesu, který přerušila. 11
n
Zřejmou nevýhodou I/O řízených interrupty je výskyt interruptu za každý znak n
n
n
n
n
Interrupty spotřebovávají čas CPU
Řešením je využití DMA DMA je vpodstatě programovaná I/O operace, kde veškerou práci dělá řadič DMA místo hlavního CPU Velká výhoda DMA je radikální snížení počtu generovaných interruptů z jednoho na každý znak na jeden za celý buffer
Na druhou stranu jsou DMA řadiče obvykle mnohem pomalejší než hlavní CPU n
Není-li DMA řadič schopen ovládat zařízení plnou rychlostí nebo nemá-li CPU co dělat během čekání na interrupt od DMA, můhou být lepší jak I/O řízené interrupty, tak i programované I/O.
12
3
Softwarové vrstvy pro obsluhu I/O n
Obsluha interruptů (Interrupt Handlers)
I/O software je typicky organizován do 4 vrstev (viz obr.) n
n
n
Každá vstva (layer) má přesně definovanou funkci, kterou vykonává a přesně definovaná rozhraní na sousední vrstvy Funkčnost a rozhraní však závisejí na konkrétním systému
Pro většinu I/O jsou interrupty nepříjemnou, ale nevyhnutelnou skutečností n n
n
Po výskytu HW interruptu musí SW principiálně řešit (závisí na OS) n
n n n
I/O I/O SW SW uživatelské uživatelské úrovně úrovně (User-level (User-level I/O I/O SW) SW) Software Software OS OS nezávislý nezávislý na na zařízení zařízení (Device (Device independent independent OS OS SW) SW)
n
Ovladače Ovladače zařízení zařízení (Device (Device drivers) drivers)
n n
Obsluha Obsluha interruptů interruptů (Interrupt (Interrupt handlers) handlers)
n
Hardware Hardware
n n
n
Proto je rozumné je „skrýt“ v útrobách OS Nejlépe je blokovat ovladač volající I/O službu dokud není dokončena voláním interruptu 1. Uložit všechny registry (včetně PSW – Program Status Word), které nebyly uloženy hardwarem 2. Nastavení kontextu pro ISR. Může zahrnovat nastavení MMU, tabulku stránek, apod. 3. Nastavení zásobníku pro ISR 4. Potvrzení (acknowledge) interruptu na řadiči. Není-li v systému centralizovaný řadič přerušení, pak opětné povolení (reenable) interruptů 5. Kopírování registrů z místa uložení (nejčastěji ze zásobníku) do tabulky procesu 6. Spuštění ISR. Získá informace z registrů řadiče zařízení, které vyslalo interrupt 7. Volba procesu, který má být následně spuštěn 8. Nastavení kontextu MMU pro následně spouštěný proces 9. Natažení registrů nového procesu (včetně PSW) 10. Start běhu nového procesu
Je zřejmé, že obsluha interruptů není vůbec triviální!
13
14
Ovladače zařízení (Device Drivers) (1/2) n
n
n
Každý řadič zařízení má nějaké registry pro posílání příkazů a nějaké registry pro čtení stavu. Počet registrů a jednotlivé příkazy se radikálně liší v závislosti na jednotlivých zařízeních Každé I/O zařízení potřebuje specifický kód pro svou obsluhu. Tento kód se nazývá ovladačem zařízení (device driver). n
n n
n
Ovladače jsou typicky dodávány výrobcem zařízení pro nejčastěji používané OS Ovladače jsou obvykle součástí jadra OS Příklad několika ovladačů je znázorněn na obr.
Většina OS definuje standardní rozhraní, které musí dodržet všechna bloková zařízení a druhé rozhraní, které musí dodržet všechna znaková zařízení
Uživatelský prostor
Uživatelský program
Ovladače zařízení (Device Drivers) (2/2) n
Ovladače zařízení mají několik funkcí: n
n n
Zbytek Zbytek OS OS Ovladač Ovladač tiskárny tiskárny
Ovladač Ovladač A/D A/D karty karty
Ovladač Ovladač CD-ROM CD-ROM
Řadič Řadič tiskárny tiskárny
A/D A/D karta karta
Řadič Řadič CD-ROM CD-ROM
Prostor jádra
n
Často mají ovladače podobnou obecnou strukturu: n n
n
Hardware
n
n
Zařízení
n
Nejprve zkontrolují vstupní parametry. Pokud ne, vrátí chybu Pak mohou konvertovat abstraktní parametry na konkrétní (např. pro disk mohou přepočítat lineární číslo bloku na parametry head, track, sector a cylinder Pak může ovladač otestovat, zda není zařízení právě užíváno. Pokud ano, bude požadavek zařazen do fronty, jinak může být vykonán ihned Řízení zařízení znamená posílání posloupností příkazů. Ovladač ví, které příkazy má posílat a jak zjišťovat, zda byly provedeny Po dokončení příslušných operací musí ovladač zkontrolovat, zda nedošlo k chybám
Ovladače musí být reentrantní! n
15
Musí akceptovat abstraktní požadavky na čtení (read) a zápis (write) z nadřazené vrstvy SW nezávislého na zařízení Musí inicializovat zařízení (je-li třeba) Mohou též spravovat požadavky na napájení (power management) a ukládat události (log events) do souboru nebo systémového zapisovače událostí (event logger)
Běžící ovladač musí očekávat, že bude zavolán podruhé ještě předtím, než bylo ukončeno první volání 16
4
I/O software nezávislý na zařízení n
Část I/O SW je určena daným zařízením, druhá část je nezávislá na konkrétních zařízeních n n
n
n
Přesná hranice mezi ovladači a SW nezávislém na zařízení je určena OS Některé funkce, které by mohl vykonávat SW nezávislý na zařízení může být součástí ovladačů, např. kvůli efektivitě
n
n n n n
n
n
n
n
Důležitá otázka v OS, jak zařídit, aby všechna I/O zařízení „vypadala“ víceméně stejně Mapování symbolických jmen zařízení na příslušný ovladač – přiřazení vyhrazených jmen zařízením v rámci souborového systému Ochrana přístupu (protection) k zařízení – řešena v rámci souborového systému stejně jako k souborům
Prostor jádra
a)
n n
n
n
Většina I/O SW je v operačním systému. Pro zprostředkování systémových volání existují knihovny, které se přisestaví (link) k uživatelskému programu Příklad (jazyk C): count = write(fd, buffer, nbytes); Funkce write() bude přisestavena k programu (v uživatelském prostoru) Množina všech takových funkcí je součástí I/O systému Jiný příklad – formátování a výpis hodnoty na konzolu v C# Console.WriteLine("Celková cena\t{0,8:c}", celkem);
Spooling (Simultaneous Peripheral Operation On-Line) – po dokončení dané operace (job) zjišťuje, zda není třeba provést další I/O operaci n
n
n
b)
c)
2 3
1
d)
18
I/O Systém – názorné shrnutí
Knihovny I/O funkcí
n
2 1
I/O software v uživatelské vrstvě n
Uživatelský proces
Uživatelský prostor
17
n
a) Čtení bez bufferu, každý znak je čten zavoláním systémové služby read a čekáním na interrupt v ISR. Velká režie při přepínání procesů b) Proces má buffer na n znaků. ISR vkládá přicházející znaky do bufferu, dokud jej nanaplní. Pak vzbudí uživatelský proces. Co se stane, je-li stránka bufferu odložena na disk? c) Buffer je také v jádře; po jeho zaplnění je zkopírován do bufferu v uživatelském procesu. Kam však dávat znaky, které přijdou během natahování stránky v uživ. procesu? d) Řešením je dvojité bufferování (double buffering). Zatímco jeden buffer z jádra je kopírován, do druhého se ukládají přicházející data. Tato technika se používá i rychlém měření velkého počtu dat (Data acquisition)
n
Jednotné rozhraní pro ovladače zařízení Práce s vyrovnávací pamětí (buffering) Signalizace chyb (Error reporting) Přidělování a uvolňování vyhrazených (dedicated) zařízení Práce s bloky, jejichž velikost je nezávislá na zařízeních (logická velikost)
Jednotné rozhraní pro ovladače zařízení n
Bufferování je velmi důležité jak pro bloková, tak i znaková zařízení – výrazně ovlivňuje efektivitu Příklad: proces čte data z modemu n
SW nezávislý na zařízení obvykle vykonává následující funkce: n
n
Práce s vyrovnávací pamětí (buffering)
Spooling je prováděn samostatným procesem nazývaným NT service (Windows) nebo daemon (UNIX) Příklad: Tisk souborů na tiskárně. Místo přidělení tiskárny danému uživatelskému procesu se do speciálního adresáře (spooling directory) zapíše soubor, který má být vytištěn. Jeho vytištění zařídí výše zmíněný NT service/daemon. Další příklad: přenos souboru po síti 19
Následující obrázek shrnuje funkce všech úrovní I/O systému a principiální funkci každé vrstvy
Požadavek na I/O (I/O request)
Odpověď I/O (I/O reply)
Uživatelské Uživatelské procesy procesy
Vykonání I/O volání; formátování I/O; spooling
Software Software nezávislý nezávislý na na zařízení zařízení
Pojmenování; ochrana; blokování; bufferování; přidělování zařízení
Ovladače Ovladače zařízení zařízení Obsluha Obsluha interruptů interruptů Hardware Hardware
Nastavení registrů zařízení; testování stavu Buzení ovladače po dokončení I/O operace Provádění I/O operací 20
5
Časovače (clocks, timers) – hardware n
Nejčastěji je časovač složen ze tří komponent: n
n
n
n
Časovače – software n
Krystalový oscilátor – generuje periodický signál vysoké přesnosti a frekvence (typicky stovky MHz) Čítač (counter) – dekrementuje svou hodnotu na každém pulsu. V okamžiku dosažení nuly generuje interrupt CPU Uchovávací registr (holding register) – slouží pro zavedení počáteční hodnoty do čítače
n
n n
n n n
Dva základní režimy čítání n
Hardware pouze generuje tiky s danou periodou. Všechno ostatní řeší SW:
Jednorázový (one-shot) – po dosažení hodnoty 0 čítače je vygenerován interrupt a čítání je zastaveno Periodický – po dosažení 0 čítače je čítač automaticky naplněn obsahem holding registru a běh pokračuje. Periodicky generované interrupty se nazývají tiky (clock ticks)
n
Uvedené požadavky vedou na potřebu většího počtu časovačů než kolik bývá zabudováno v hardwaru n n n
Krystalový oscilátor n
n
Uchovávací registr se užívá pro zavedení hodnoty do čítačem
Tato potřeba se řeší simulací virtuálních časovačů odvozených od 1 fyzického časovače Lze udržovat tabulku aktivních časovačů a proměnnou s časem následujícího časovače Druhou možností je uspořádaný seznam (podle času), říkající kolik tiků po předchozím časovači se má čekat na následující časovač.
Jiným principem jsou tzv. Soft-timers n
Čítač je dekrementován každým pulsem
Aktualizace času v daném dni Zabránění procesům běžet déle, než mají povoleno (volání plánovače po uplynutí přípustného kvanta) Statistika využití CPU Generování alarmu v určitém čase („budík“) nebo za určitou dobu Watchdog pro různé části systému (obsluha timeoutů)
n
Nevyužívají interrupty, ale sledují čas, kdykoliv je prováděno systémové volání a podle uplynulého času rozhodují o aktivaci procesů Nevýhoda: méně přesné než časovače ovládané interrupty Výhoda: výrazně menší režie (není třeba ukládat stav procesoru při příchodu interruptu)
21
22
Souborové systémy n
Všechny počítačové aplikace potřebují ukládat a načítat informace n
n n
n
Při běhu procesu může být omezené množství informace uloženo v adresním prostoru procesu Pro některé aplikace (např. práce s velkými databázemi) velikost paměti nestačí Navíc po ukončení běhu procesu, restartu počítače nebo „spadnutí“ programu je informace z paměti ztracena!
n n
Musí být možno ukládat velké množství informace Informace musí „přežít“ ukončení procesu, který ji používá (perzistence) Několik procesů musí mít možnost přistupovat k informaci současně
n
Soubory jsou abstrakcí jak ukládat informaci a později ji číst.
n
Pojmenovávání souborů (file naming)
n
n
n
Obvykle je problém řešen ukládáním informace na disk nebo jiné externí médium do jednotek nazývaných soubory (files) n
n
n
Ideou je odstranění závislosti mezi procesy a dlouhodobě ukládanou informací: n
n
Soubory – vlastnosti
Procesy mohou soubory číst a zapisovat. Soubor může „zmizet“ když jej jeho vlastník explicitně odstraní Soubory jsou spravovány OS. Ta část OS, která se správou souborů zabývá se nazývá souborový systém (file system) 23
n n
n
(1/2)
Uživatele odstiňují od detailů jak a kde je informace uložena a jak pracují disky
Když proces vytvoří soubor, dá mu jméno. Po ukončení procesu soubor s daným jménem stále existuje a může být dostupný jinému procesu právě prostřednictvím jména Přesná pravidla pro vytváření jmen se liší systém od systému. Všechny současné OS umožňují soubory pojmenovávat minimálně 8 písmeny. Ve jménech mohou být často i číslice. Někdy i interpunkční znaménka, oddělovače, speciální znaky a dokonce i mezery. Windows 2000/XP (v souborovém systému NTFS) umožňují používat znaky ze sady UNICODE Někdy je maximální délka jména souboru až 255 znaků, Některé systémy rozlišují malá a velká písmena (UNIX) pak jsou soubory ahoj, AHOJ a Ahoj různé. Jiné je nerozlišují (MS-DOS, Windows) Jméno se někdy skládá ze dvou částí – vlastního jména a přípony (extension) oddělené tečkou. Přípona v některých systémech určuje typ souboru (MS-DOS, Windows), jinde jde jen o mnemotechnickou konvenci (UNIX) 24
6
Soubory – vlastnosti n
Struktura souborů n
n
Atributy souborů (File attributes) n
V dnešních systémech se převážně používá nejjednodušší struktura – posloupnost bytů
Typy souborů n n
n
n
(2/2)
Kromě jména a dat udržují OS k souborům další informace souhrnně nazývané atributy n
Normální soubory (regular files) – soubory obsahující uživatelskou informaci Adresáře (directories) – systémové soubory pro udržování struktury souborového systému V systémech UNIX ještě existují tzv. Character special files (modelují seriová I/O zařízení – terminály, tiskárny, síťové adaptéry) a Block special files (modelují bloková I/O zařízení – disky)
n n
n
Přístup k souborům n
n
Sekvenční přístup (sequential access) – jediný přístup k souborům v dřívějších OS. Tento přístup byl dán používáním magnetické pásky (musela se převíjet) Libovolný přístup (random access files) – umožňuje číst jednotlivé byty v libovolném pořadí. Souvisí s využíváním disků. V současné době je vyžadován mnoha aplikacemi (např. databázovými)
n n
Příznaky (flags) – read-only, hidden, system, archive, ASCII/binary, random access flag, temporary, locked, apod. Velikosti – current size, maximum size Časové údaje – čas vytvoření, čas poslední modifikace, čas posledního otevření Identifikace uživatelů – např. creator (Identifikátor uživatele, který soubor vytvořil), owner (vlastník souboru) Ochrana souboru – password, protection Databázové údaje – např. record length, key position, key length
25
26
Operace se soubory n n n
n n n
n n n n n
Adresáře (directories, folders)
Create – vytvoření prázdného souboru Delete – zrušení souboru Open – otevření souboru. Před použitím musí proces soubor otevřít. Při otevírání souboru se čtou adresy na disku a atributy souborů do paměti Close – zavření souboru. Způsobí zápis posledního bloku na disk. Read – čtení souboru, obvykle z aktuální pozice souboru Write – zápis do souboru, obvykle na aktuální pozici. Případná data na aktuální pozici jsou přepsána Append – omezená forma zápisu. Data jsou přidána na konec souboru Seek – nastavení aktuální pozice souboru (jen pro random access files) Get attibutes – získání atributů souboru Set attributes – nastavení atributů souboru Rename – přejmenování souboru
n
Jednoúrovňové adresáře – všechny soubory byly v jedné úrovni.
n
Hierarchická struktura adresářů
n
n n
n n
n
V každé úrovni hierarchie mohou být jak soubory tak další adresáře Zpřehledňují organizaci disků, např. každý uživatel může mít svůj základní adresář a v něm si může vytvářet vlastní hierarchickou organizaci Hierarchická organizace vytváří stromovou strukturu Zobecněním stromové struktury je acyklická struktura (jeden soubor může patřit do několika adresářů)
Názvy cest (Path Names) n
n
27
Nepřehledné, často se vyskytující konflikt jmen. Dnes se používá jen výjimečně
Absolutní cesta – úplná cesta od kořenového adresáře (root) až k danému souboru. Jednotlivá patra stromu jsou oddělena znaky ‘\’ (Windows) nebo ‘/’ (UNIX) Relativní cesta – cesta od pracovního nebo aktuálního (working or current directory). n Relativní cesty usnadňují přenášení adresářových podstromů (organizace projektů, apod.) n Obvykle se zavádí speciální znaky ‘.’ a ‘..’ pro označení aktuálního adresáře a adresáře předka n Nelze je používat v systémech, které neznají pojem aktuální adresář (např. Win CE) 28
7