Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

UNIX 4. Systém souborů a jádro © Milan Keršlágerhttp://www.pslib.cz/ke/slajdy Obsah: ● systém souborů,

Podobné prezentace


Prezentace na téma: "UNIX 4. Systém souborů a jádro © Milan Keršlágerhttp://www.pslib.cz/ke/slajdy Obsah: ● systém souborů,"— Transkript prezentace:

1 UNIX 4. Systém souborů a jádro © Milan Keršlágerhttp://www.pslib.cz/ke/slajdy http://creativecommons.org/licenses/by-nc-nd/3.0/ Obsah: ● systém souborů, metadata, data ● disketa, disk, adresace, sektor, cluster ● struktura FAT a ext4, VFS, mount, fsck, mkfs ● typy jader, syscall, kernel a user space ● start počítače, BIOS, setup, init, runlevel 15.4.2011

2 Systém souborů – FS ● též souborový systém, anglicky filesystem ● data organizovaná do souborů a adresářů ● uloženo na vhodné paměti pro FS ● přístupné přímo v počítači nebo přes síť ● obsahuje data a metadata ● metadata popisují organizaci dat ● uloženo ve vhodném formátu – FAT, ext4, NTFS,... ● v jádře OS ovladač souborového systému

3 Organizace FS ● soubory a adresáře ● metadata ● popisují organizaci dat a další informace – umístění dat, přístupová oprávnění, čas změny,... ● data ● souvislý blok dat – ideální stav, ale jak budeme doplňovat a mazat data? ● jednotlivé alokační jednotky – klasický přístup

4 Metadata ● „data o datech“ ● v reálném životě např. katalog v knihovně ● obsahují informace nutné pro orientaci ve FS ● popisují soubory, adresáře a další informace o FS ● konzistence metadat ● důležité pro činnost jádra OS ● při poškození nutno opravit ( fsck, chkdsk )

5 Paměť pro FS ● typicky nevolatilní RWM (Read-Write Memory) ● data lze zapisovat (přepisovat) a číst ● data jsou zachována i při odpojení napájení – pevný disk, flash – výjimky: FS v RAM (rychlost, export dat z jádra,...) ● možné typy pamětí ● magnetické – pevný disk (sekvenční a přímý přístup) ● optické – CD, DVD, Blu-ray ● polovodičové – RAM, Flash ● samozřejmě i jiné typy

6 Pevný disk – HDD ● evoluční krok od diskety ● 1956 – IBM ● plovoucí hlava – bezkontaktní čtení/zápis ● typicky pevně vestavěn ● specifická rozhraní ● 1986 – SCSI, 1986 – ATA (max. 128 GB) ● 2002 – ATA/100, 2003 – SATA, 2005 – SAS ● SSD disk ● používá flash paměť → bez mechanických částí

7 Organizace dat – HDD ● kvůli větší kapacitě zaveden MBR ● Master Boot Record ● logické členění disku na oddíly (partition) ● umístěn v prvních 512 bajtů (první blok) ● různé formáty – DOS MBR → limit 2 GiB – GPT → nástupce (součást EFI standardu) ● v rámci oddílu už stejná organizace jako u FDD ● boot sektor (512 bajtů) ● následuje oblast s vlastním FS (struktura dle typu)

8 Oddíly (partitions) ● oddíl je logické rozčlenění pevného disku ● protože pevný disk je velký nebo více FS, OS ● dělení bez podpory v HW → SW musí respektovat ● popis rozdělení uložen do tabulky uvnitř MBR ● Master Boot Record (CHS = 0,0,0) → 512 bajtů ● obsahuje zavaděč a tabulku dělení disku na oddíly ● zpětná kompatibilita ● oddíl má strukturu jako disketa ● MBR může být nezávislý na OS → DOS MBR

9 Adresace dat na disku ● C-H-S ● Cylinder-Head-Sector ● cylindr, hlava, sektor ● používal se dříve ● LBA ● Logical Block Addresing ● lineární číslování ● současná metoda ● ATA/100 → 48 bitů → 128 PiB

10 Sektor a cluster ● sektor ● nejmenší fyzicky adresovatelný blok (disku) ● typicky 512 bajtů – CD/DVD → 2048 bajtů (2 kiB) – nové pevné disky → 4096 bajtů (4 kiB) ● cluster ● česky alokační jednotka ● nejmenší úsek dat adresovatelný na úrovni FS – 512 bajtů, 1024, 2048, 4096,... 64 kiB,...

11 FAT ● File Allocation Table ● 1986 použit v 86-DOS, koupil Microsoft → MS-DOS ● ECMA a ISO/IEC standard – dlouhé názvy částečně patentovány Microsoftem ● využívá spojový seznam ● struktura: ● boot sektor ● FAT1, FAT2 ● kořenový adresář ● datová oblast ● adresář: ● položka 32 bajtů ● jméno, přípona ● atributy, čas ● první sektor

12 Spojový seznam FAT FAT Datové bloky Záznam v adresáři: soubor.txt02 Obsah souboru: ABCDE Obsah FAT: odpovídající položka ukazuje na další, ukončeno FF. Obsah souboru je čten po datových blocích odpovídajících zřetězeným položkám ve FAT. 00 10 20 049 00 10 20 2613578

13 Popis funkce FAT ● velikosti položek FAT – FAT12 → 12 bitů, FAT16 → 16 bitů, FAT32 → 32 bitů ● FAT32 používá na číslo datového bloku jen 28 bitů ● velikosti datových bloků – podle formátování: 512, 1024 B, 2 kiB, 4, 8, 16, 32, 64 kiB – max. velikost položky ve FAT krát velikost datového bloku – je maximální velikost souborového systému ● dlouhé názvy v adresářích – používají se další (neplatné) položky v adresáři ● neefektivita při manipulaci s FAT – přesuny hlaviček z datové části na položky FAT a zpět

14 ext4 ● Extended Filesystem ● čtvrtá generace FS pro Linux ● vychází z UFS (Unix File System) ● struktura: ● boot blok ● skupina (opakuje se) – superblok a deskriptory – metadata popisující FS – bitmapa použitých i-uzlů (i-nodů) a datových bloků – i-uzly – metadata jednotlivých souborů – datové bloky – datové části souborů, adresáře

15 Skupiny ext4 ● Skupiny se opakují, mají konstantní velikost. ● Superblok a deskriptory jsou jen v některých blocích (při využití SPARSE_SUPER). ● Superblok a bitmapy jsou vždy 1 blok dlouhé. Ostatní položky jsou násobky bloků.

16 Metadata ext4 ● data a metadata ve skupinách ● umožňuje rychlejší přístup při čtení/zápisu ● rozprostírá metadata po celém disku (havárie) ● metadata o souboru v i-uzlu ● i-uzel není součástí adresáře – lze vytvářet pevné a symbolické odkazy – i-uzlů je konečné množství (definováno při formátování) ● je-li i-uzlů zbytečně mnoho, prodlužuje se fsck (ext3 a starší) ● adresář: ● název + číslo i-uzlu

17 Superblok ● metadata o celém souborovém systému ● opakuje se na začátku skupiny – v případě poškození lze použít jinou kopii – sparse-super → kopie jen u některých (zrychlení) ● struktura: ● stav souborového systému (clean, dirty) – při připojení test (+fsck) a nastavení na dirty – při odpojení nastavení na clean ● počet připojení, poslední fsck (automatické fsck) ● velikosti a umístění jednotlivých částí

18 I -uzel ● struktura i-uzlu: ● typ souboru a přístupová oprávnění ● počet odkazů (pro pevné linky, ale i adresáře) ● vlastník, skupina ● velikost ● časové značky – poslední přístup (atime), změna dat (mtime), změna metadat (ctime) ● 12 přímých odkazů na datové bloky ● 1 nepřímý odkaz na datové bloky (první úrovně) ● 1 nepřímý odkaz druhé úrovně ● 1 nepřímý odkaz třetí úrovně

19 Nepřímé odkazy v I-uzlu

20 Struktura adresáře ● adresář je vlastně speciální soubor ● pevně daná maximální délka názvu objektu – tj. název souboru nebo podadresáře ● číslo i-uzlu – odkaz na metadata popisující soubor – každý FS čísluje i-uzly vždy znovu od nuly ● obsah adresáře ● lineární seznam položek → pole ● položky někdy organizovány do stromu – kvůli rychlosti prohledávání (ext3, NTFS,...)

21 VFS ● Virtual Filesystem ● VFS implementuje jádro OS ● shora sjednocuje přístup ke všem FS (API) ● dle situace volá „ovladač“ konkrétního FS ● řeší cache pro soubory a adresáře ● další FS se připojují do existujících adresářů ● příkaz mount, umount, df $ df Souborový systém 1K bloků Použité Volné Uži% Připojeno do /dev/sda1 17856888 4189384 12745780 25% / /dev/sda3 18520212 11708304 5884556 67% /home tmpfs 379992 0 379992 0% /dev/shm

22 Připojování FS ● mount ● typ FS, speciální soubor zařízení, adresář ● mount /dev/sda3 /home ● umount ● slouží k odpojení připojeného FS ● FS nesmí být používán – otevřený soubor, aktuální adresář ● /etc/fstab ● seznam FS připojovaných při startu systému – startovací skript spustí příkaz mount -a

23 Příklad připojení /home bin etc home huzva texty skripty jane fotky video lib usr / Kořen je připojen na základní FS. Do /home je připojen další disk. Připojený FS může mít odlišnou stavbu (NTFS, FAT, ext3, XFS, síťový NFS, …). VFS pak rozhoduje, jaký ovladač FS se při přístupu k datům použije.

24 Kořenový systém souborů ● kořenový systém souborů – „ / “ ● připojuje se jako první po startu jádra OS – jádro samo o sobě žádný další FS nepřipojuje – vzniká tak strom adresářů s jediným kořenem ● musí obsahovat vše pro zahájení startu počítače – program init, startovací skripty, konfigurační soubory – skripty připojí další FS → /etc/fstab ● další FS se připojuje do již existujícího adresáře – vznikne stromová struktura různých FS – VFS musí vždy vědět, na jakém FS se nachází

25 fsck ● kontrola konzistence metadat ● změna dat (a metadat) v několika krocích ● dojde-li k havárii, nejsou data konzistetní – např. zrušíme název v adresáře, ale ne i-nod a dat. bloky – → do /lost+found ● fsck využívá záznamy v superbloku – automatizovaná detekce nutnosti kontroly ● plná kontrola trvá extrémně dlouho ● řeší ext4 (jen použité i-nody) ● preventivní kontroly je nutné plánovat – současné distribuce automatické opravy nepoužívají

26 mkfs ● vytváření souborových systémů ● typicky volá podřízené nástroje – mkfs.ext4, mkfs.ntfs, mkfs.vfat ● každý FS má vlastní sadu parametrů – nutno dohledat v manuálových stránkách ● mkfs -t ext4 /dev/sda3

27 Fragmentace ● vzniká při ukládání dat do alokačních jednotek ● nově přidělené A.J. spolu nesousedí ● pohyb hlaviček disku je relativně pomalý ● náhodná stopa = 10 ms, sousední stopa = 1 ms ● řešení: ● ukládat data tak, aby se omezila fragmentace (ext) ● defragmentovat dodatečně (NTFS) ● vnitřní fragmentace (fragmentace volného místa) ● poslední alokační jednotka není zcela obsazena ● řeší se pomocí „tail merge“ (subalokace bloků)

28 Žurnálování ● ochrana konzistence metadat (někdy i dat) ● po pádu systému opravujeme jen nekonzistence ● není nutné prohlížet všechna metadata ● neslouží jako záloha nebo záruka, že se zapíše vše ● princip funkce ● plánovanou operaci zapíšeme do žurnálu ● provedeme změny v souborovém systému ● zapíšeme do žurnálu záznam o dokončení operace ● zrušíme záznam v žurnálu

29 Jádro operačního systému

30 ● základní součást operačního systému ● doplňují ho pomocné nástroje ● úkoly jádra a operačního systému 1) umožnit uživateli ovládat počítače ● zajistit spuštění programu, vstupy, výstupy, správu poč... 2) vytvořit abstraktní vrstvu pro programy 3) spravovat prostředky počítače ( přidělovat je procesům ) ● unixová jádra ● programům poskytují systémová volání (syscall) ● Linux: modulární monolitické jádro (viz dále)

31 Typy jader OS ● monolitické jádro – monolithic kernel ● jeden celek řeší celý problém ● varianta: modulární jádro ● mikrojádro – microkernel ● idea jako u strukturovaného programování ● ještě menší: exokernel, nanokernel, picokernel ● hybridní jádro – hybrid kernel ● něco mezi monolitickým a mikrojádrem ● snaha o využití „toho lepšího“ z obou

32 Monolitické jádro ● jádro je jeden celek ● původní model (např. Unix) ● v souvislém úseku paměti (kernel-space) ● vše na stejné (absolutní) úrovni oprávnění ● chyba (např. v ovladači) ohrožuje celé jádro ● umožňuje efektivní programátorské triky ● do téže paměti zasahují různé subsystémy ● vývoj náročný na znalost funkce celého jádra ● dnes Linux, FreeBSD a další ● části jako samostatné moduly → modulární jádro

33 Mikrojádro ● jádro minimalizováno (jen nejnutnější části) ● hezké rozvržení, vlastní písečky, snadné pochopit ● vše ostatní jako běžné procesy – tzv. servery ● souborový subsystém, síťový subsystém a další ● komunikace přes API (zasílání zpráv) ● proces (server) lze po pádu restartovat (ale fuj) ● výkonnostní problémy (někdy nemusí vadit) ● vyvolání služby jádra může znamenat nutnost čekat na přepnutí kontextu mezi jádrem a procesem (i více procesy) ● samostatné procesy nemohou manipulovat se společnými daty (např. cache) ● GNU Hurd + mikrojádro GNU Mach – stále není finální ● MINIX, Symbian (je navíc RTOS)

34 Hybridní jádro ● kombinuje výhody monolitu a mikrojádra ● základní jádro je větší ● včetně částí citlivých na výkonnost ● blíží se z druhé strany modulárnímu monolitu ● Microsoft Windows NT ● NT 3.1, 3.5, 3.51, 2000, XP, 2003, Vista, 2008, 7,... ● Microsoft Windows CE ● poslední verze odklon od mikrojádra k hybridnímu ● Windows Mobile, Pocket PC, Windows Phone

35 Kernel space a user space ● kernel space (prostor jádra ) ● jádro v privilegovaném stavu, plně ovládá počítač ● user space (prostor procesů) ● procesy v neprivilegovaném stavu – při snaze o ovládnutí počítače → vyvolání jádra – každý proces svůj adresní prostor ● volání služeb jádra (syscall) – proces žádá jádro o provedení nějaké služby – služba je vykonána v privilegovaném režimu ● user space → kernel space → user space

36 Syscall, system call ● systémové volání jádra OS ● v unixových systémech základní kámen – vytváří API, které používají procesy ● čtení z disku, přidělení paměti, ovládání hardware,... – zajišťuje kompatibilitu ● jednou zavedený syscall je podporován „do nekonečna“ ● velký odpor proti bezhlavému zavádění nových syscallů ● problémy při snaze o rozšíření staršího volání – posuzuje oprávnění a provede privilegovanou činnost ● výjimka → proces s právy roota může všechno ● mikrojádra syscall nemají – používají zasílání zpráv skrze API – vyvolává lavinu změn kontextu mezi servery

37 Start počítače – PC

38 Start počítače ● dva základní kroky ● inicializace hardware – pomocí firmware (BIOS) ● aktivace software – typicky zavedení jádra operačního systému – využívá informace od firmware (ACPI) ● jednotlivosti specifické pro různé typy počítačů ● IBM PC: vysoká variabilita startu ● jednoúčelová zařízení obvykle jen jednu metodu

39 Zapnutí PC ● reset (signál propojující všechny obvody) ● po zapnutí nebo zmáčknutí tlačítka ● CPU do 16bitového režimu (jako Intel 8086) ● interpretace kódu od adresy 0xFFFF0 ● zde je umístěn BIOS ● vlastní BIOS i doplňující karty – grafická karta, řadiče pro disky (SATA, SCSI) atd. – BIOS je najde a spustí jejich inicializační kód – mohou rozšířit schopnosti BIOSu ● start systému z netradičního zařízeni (SCSI řadiče, síťová karta) ● BIOS plně kontroluje první fázi startu PC

40 BIOS ● Basic Input-Output systém ● v paměti ROM (dnes Flash) ● na základní desce od jejího výrobce – vyrábí několik firem, modulární – závislý na HW (přímo jej ovládá) ● poskytuje jednoduché API – služby BIOSu ● čti sektor z disku, vytiskni znak, pošli na port,... ● plně na BIOS spoléhal pouze DOS ● je 16bitový z původního IBM PC XT (1983) ● 32bitová rozšíření BIOSu se neujala

41 SETUP ● aplikace pro volitelná nastavení BIOSu ● při startu stiskem DEL, F2 a podobně ● je to součást BIOSu nebo samostatná aplikace ● nastavení uloženo v paměti CMOS – zálohováno baterií (spolu s RTC) ● např. pořadí zařízení pro zavedení OS – dříve pevně stanoveno → boot viry z disket ● dnes snaha o automatizaci, minimalizace ● někdy schválně mnoho voleb – nastavení chipsetu (frekvence, napájení, režimy...) – vhodné pro experty, pro přetaktování,...

42 Činnost BIOSu při startu ● cílem BIOSu je aktivace operačního systému ● detekce a inicializace hardware ● uvedení HW do výchozího stavu ● lze (částečně) přeskočit u teplého startu ● ACPI (standard, vytvořil Intel 1996) – běžné v počítačích PC po roce 2000 – informace o konfiguraci do tabulek v paměti – tabulky často chybně vytvořené ● tvůrce BIOSu potřebuje funkční start jen pro Windows ● POST testy (Power On Self Test) ● slouží k základnímu prověření funkčnosti hardware

43 Zavedení OS ● IBM PC: BIOS ● disketa – nejjednodušší, jako emulace u ostatních ● pevný disk – jako disketa, ale navíc MBR ● CD/DVD – emulace diskety nebo přímo ● BootROM – start pomocí síťové karty (bez disku) ● USB mass storage (flash disk, externí HDD apod.) ● Apple: EFI (Intel) ● náhrada BIOSu ● binární „ovladače“ HW ● problém možnosti tajit ovládání a nastavování HW

44 IBM PC: start z diskety ● BIOS umí disketovou mechaniku plně ovládat ● HW FDD mechaniky je ovládán jednotně ● potřebujeme načtení požadovaného sektoru ● nalezení a inicializace disketové mechaniky ● BIOS zavede boot sektor do RAM ● první sektor na disketě (CHS = 0,0,0) → 512 bajtů ● využívá služby BIOSu → HW nezávislý kód ● skočí se na začátek ● obsahuje kód zavaděče jádra OS ● specifický pro různé OS (DOS, Windows NT, Linux)

45 IBM PC: start z disku ● BIOS načte do paměti MBR ● tj. prvních 512 bajtů na HDD ● pokud je neplatný, zahlásí BIOS chybu – MBR not found ● skočí se na začátek MBR (zavaděč + tabulka) ● vybere se aktivní oddíl ● k němu se přistupuje dále jako k disketě ● MBR zavede z aktivního oddílu boot sektor ● není-li platný, zahlásí MBR chybu (OS not found) ● dále se pokračuje jako při startu z diskety

46 Start unixového systému ● jádro převezme kontrolu ● přepne procesor do 32bitového režimu (+ring0) ● aktivuje si příslušné ovladače pro hardware – využije informace od BIOSu (ACPI) a PCI ID – každý ovladač má inicializační část ● připojí kořenový systém souborů (root filesystem) – určuje správce počítače (např. při instalaci) ● z něj spustí první proces → init – může to být i jiný program ( /bin/bash ) ● používá se vyjímečně (např. po havárii při opravě systému)

47 Proces init ● v unixových OS proces číslo 1 ● je spuštěn jako první – je (pra)rodičem všech ostatních procesů ● je též univerzální adopce „osiřelých“ procesů – výjimkou je v Linuxu tzv. initrd ● spouští se procesy před init, ale init má stejně číslo 1 ● spouští startovací skripty – vybere sadu skriptů podle runlevel ● řídí se podle souboru /etc/inittab – spustí démony – připraví prostředí pro uživatele (GUI, přihlašovací dialog...)

48 Runlevel ● různé varianty spuštění systému ● runlevel je stav procesu init, u Fedory např: 1 – singeuser (správa systému) 3 – multiuser (běžný provoz, bez GUI) 5 – jako 3 ale s GUI 6 – reboot (restart systému) ● mezi runlevely se dá přecházet – příkaz (jen root): telinit 3 – při startu lze jádru říct číslo runlevelu ● jinak podle /etc/inittab ● předání parametru jádru při startu lze zabránit (heslo pro zavaděč) – při přechodech mezi runlevely se spouští určité skripty ● démoni (resp. startovací skripty) se spouští jen v určitém runlevelu


Stáhnout ppt "UNIX 4. Systém souborů a jádro © Milan Keršlágerhttp://www.pslib.cz/ke/slajdy Obsah: ● systém souborů,"

Podobné prezentace


Reklamy Google