Osnova přednášky Programové prostředky řízení Operační systémy II Vstupy a výstupy Souborový systém Pavel Balda Západočeská univerzita v Plzni, FAV, KKY Vstupy a výstupy principy I/O zařízení Komunikace mezi řadičem a Ří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ů: Bloková zařízení pracují s informací organizovanou do bloků pevné délky (typicky od 51 do 768 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í Toto dělení však pokulhává, některá zařízení nejsou ani jednoho z uvedených typů, např. : Časovač (clock) generují přerušení v periodických intervalech 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) Každý řadič má několik registrů pro komunikaci s. 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 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) 0xFFF 0 Dva adresní prostory Jeden adresní prostor Dva adresní prostory I/O porty Mapovaná paměť Mapovaná paměť a) b) c) I/O porty 4 1
ově mapované I/O Přímý přístup do paměti (DMA) Výhody paměťově mapovaných I/O: 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 Nevýhoda: Většina 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 I/O Sběrnice Rychlá sběrnice DMA (Direct Memory Access) je často používaný mechanismus přímého přístupu do paměti, který je nezávislý na 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 Jeho registry jsou programovány z (adresní registr, registr pro počet bytů, stavové registry) Příklad: Čtení z harddisku 1. 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 bufferua verifikaci kontrolního součtu (checksum). DMA zinicializuje přenos vysláním požadavku na čtení řadiči disku. 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ů. až 4. dokud není počet bytů nulový. Pak vyslání přerušení (interrupt) Řadič DMA Řadič disku Disk I/O 1 Addr 4 Buffer Count Control 5 Přístup I/O zařízení do paměti Sběrnice 5 Sběrnice 6 Přerušení (Interrupts) Přerušení (Interrupt) je způsob signalizace ukončení I/O operace. Interrupt generuje řadič interruptů (interrupt controller), viz obr. 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ů.. 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.. Interruptní signál způsobí, že 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. Nejčastěji se informace ukládají na zásobník Řadič interruptů Disk Klávesnice 1 Clock Sběrnice 7 Cíle I/O softwaru (1/) Klíčovým konceptem je tzv. nezávislost zařízení (device independence) 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ř. "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 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 8
Cíle I/O softwaru (/) Synchronní (blokující, blocking) versus asynchronní (interrupty řízené, interrupt-driven) přenosy Většina zařízení je asynchronní 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 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 Programované (programmed) I/O Programované (programmed) I/O je technika, kde všechnu práci dělá (programově). Např. tisk řetězce na tiskárně (viz obr.) 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 Po vyslání znaku se cyklicky dotazuje na připravenost k přijetí dalšího znaku. Takové chování se nazývá polling nebo busy waiting prostor Prostor jádra Řetězec k vytištění ABCD Tištěná stránka Next ABCD Tištěná stránka A Next ABCD Tištěná stránka AB 9 a) b) c) 10 I/O řízené interrupty (Interrupt driven I/O) 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í. 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 nepromarnila čekáním. Interrupty umožňují, aby 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 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. I/O využívající DMA Zřejmou nevýhodou I/O řízených interrupty je výskyt interruptu za každý znak Interrupty spotřebovávají čas Ř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 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í Není-li DMA řadič schopen ovládat zařízení plnou rychlostí nebo nemá-li 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. 11 1
Softwarové vrstvy pro obsluhu I/O Obsluha interruptů (Interrupt Handlers) I/O software je typicky organizován do 4 vrstev (viz obr.) 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 I/O SW uživatelské úrovně (User-level I/O SW) Software OS nezávislý na zařízení (Device independent OS SW) Ovladače zařízení (Device drivers) Obsluha interruptů (Interrupt handlers) Hardware 1 Pro většinu I/O jsou interrupty nepříjemnou, ale nevyhnutelnou skutečností 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 Po výskytu HW interruptu musí SW principiálně řešit (závisí na OS) 1. Uložit všechny registry (včetně PSW Program Status Word), které nebyly uloženy hardwarem. Nastavení kontextu pro ISR. Může zahrnovat nastavení MMU, tabulku stránek, apod.. 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í! 14 Ovladače zařízení (Device Drivers) (1/) Ovladače zařízení (Device Drivers) (/) 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). 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í Ovladač tiskárny Řadič tiskárny program Zbytek OS Ovladač A/D karty A/D karta Ovladač CD-ROM Řadič CD-ROM prostor Prostor jádra Hardware Zařízení 15 Ovladače zařízení mají několik funkcí: 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) Často mají ovladače podobnou obecnou strukturu: 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í! 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í Část I/O SW je určena daným zařízením, druhá část je nezávislá na konkrétních zařízeních 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ě SW nezávislý na zařízení obvykle vykonává následující funkce: 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í 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 Práce s vyrovnávací pamětí (buffering) 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 prostor Prostor jádra 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) 1 1 proces 17 a) b) c) d) 18 I/O software v uživatelské vrstvě Knihovny I/O funkcí 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 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 I/O Systém názorné shrnutí 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) Uživatelské procesy Software nezávislý na zařízení Ovladače zařízení Obsluha interruptů Hardware Odpověď I/O (I/O reply) Vykonání I/O volání; formátování I/O; spooling Pojmenování; ochrana; blokování; bufferování; přidělování zařízení Nastavení registrů zařízení; testování stavu Buzení ovladače po dokončení I/O operace Provádění I/O operací 19 0 5
Časovače (clocks, timers) hardware Časovače software Nejčastěji je časovač složen ze tří komponent: 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 Uchovávací registr (holding register) slouží pro zavedení počáteční hodnoty do čítače Dva základní režimy čítání 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) Krystalový oscilátor Čítač je dekrementován každým pulsem Uchovávací registr se užívá pro zavedení hodnoty do čítačem 1 Hardware pouze generuje tiky s danou periodou. Všechno ostatní řeší SW: 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í Generování alarmu v určitém čase ( budík ) nebo za určitou dobu Watchdog pro různé části systému (obsluha timeoutů) Uvedené požadavky vedou na potřebu většího počtu časovačů než kolik bývá zabudováno v hardwaru 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 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) Souborové systémy Všechny počítačové aplikace potřebují ukládat a načítat informace 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! Ideou je odstranění závislosti mezi procesy a dlouhodobě ukládanou informací: 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ě 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) 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) Soubory vlastnosti (1/) Soubory jsou abstrakcí jak ukládat informaci a později ji číst. Uživatele odstiňují od detailů jak a kde je informace uložena a jak pracují disky Pojmenovávání souborů (file naming) 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 000/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ž 55 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) 4 6
Soubory vlastnosti (/) Struktura souborů V dnešních systémech se převážně používá nejjednodušší struktura posloupnost bytů Typy souborů 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 Blockspecial files (modelují bloková I/O zařízení disky) Přístup k souborům 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) Atributy souborů (File attributes) Kromě jména a dat udržují OS k souborům další informace souhrnně nazývané atributy 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 5 6 Operace se soubory 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 Adresáře (directories, folders) Jednoúrovňové adresáře všechny soubory byly v jedné úrovni. Nepřehledné, často se vyskytující konflikt jmen. Dnes se používá jen výjimečně Hierarchická struktura adresářů 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 vně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) 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). Relativní cesty usnadňují přenášení adresářových podstromů (organizace projektů, apod.) Obvykle se zavádí speciální znaky. a.. pro označení aktuálního adresáře a adresáře předka Nelze je používat v systémech, které neznají pojem aktuální adresář (např. Win CE) 7 8 7