Professional Documents
Culture Documents
Pulsemka 1
Pulsemka 1
1. Vyhodnoti se cesta , posoudí existence a přistupova práva otevíraného souboru, i-uzel *Dodatecna ilustrace, jak se spluprovazany ty datove struktury*
* v souborovém systému mame na zacatku
butovaci(boot) blok, pak super blok, a pak
od bloku c. 2 zacina tabulka i-uzlu
nacte se jeho i-uzel z disku
Reseni Super block
2. v tabulce v-uzlu se alokuje nova položka, do ni se vloži i-uzel a rozšíří se o některé
dalsi udaje, vcetne poctu odkazu na danu v-uzel(nyní 1) 7 čtení - při použití tzv. rychlého symlinku
3. Alokuje se nova polozka v tabulce otevřených souboru a naplni se odkazem na Cislo i-uzlu “/“
v - uzel a dalšími informacemi, zejmena: pozice v souboru, počet odkazu( na Popis:
zacatku 1) , rezim otevření atd. - Na zacatku mame pouze číslo i-uzlu kořenového adresáře ze super-bloku, které napr. N
Tabulka v-uzlu lze převést na odpovídající blok a ten bude načten - získáme tak obsah i-uzlu
4. Alokuje se nova (první volna) položka v tabulce deskriptoru, naplní se odkazem na v - uzel kořenového adresáře “/“ - 1. čtení
položku tabulky otevřených souboru
- 2. čtení načte obsah kořenového adresáře z bloku, na který je odkaz v *Cislo bloku se zjisti
výpočtem z čísla i-uzlu*
i-uzlu kořenového adresáře “/“ - 2. čtení
5. Vrati index alokovaneho deskriptoru (pripadne -1 pri chybe)
*Nekde na disku* je blok(4KB) i-uzlu obsahující i-uzel “/“
- V datech “/“ se nalezne dvojice ( dir, číslo i-uzlu dir ) a načte se blok s timto i-
Pocet odkazu uzlem ( číslo bloku lze odvodit z čísla i-uzlu ) - 3 čtení
- 4. čtení pak načte obsah adresáře “/dir” z bloku, na který je odkaz v i-uzlu “/dir” - 4. čtení Nekde tady treba bude 1. primy odkaz na data
//typ: adresar
- Předpokladame-li použití rychlého symlinku, pak primo v i-uzlu “/dir/symlink” “alokvan” D “pristupove casy, prava atd”
je cesta “/dir/file”
- Preklad /dir na odpovídající i-uzel, tento i-uzel i jeho data mame ve vyrovnávací
paměti - není nutno znovu cest
//Konkretni blok je
//spocten z cisla i-uzlu
3. Předpokládejte velikost alokacniho bloku 1000B (1kB) a velikost odkazu na blok - 10B. Dalsi blok i-uzlu obsahujici i-uzel 69 Blok c. 1312
Kolik alokacních bloku ( bez i-uzlu ) bude na disku s klasickym unixovym FS zabirat soubor o velikosti 360.5kB.
(Kolik prostoru to zabere (data + metadata) ? ) Zdůvodněte.
V případě, když jde o fast
typ: “symlink” symlink, data se budou nacházet
primo tady
Reseni - 360.5 kB vyzaduj e 361 alokacnich bloku ( protože se alokuje po blocích) cislo i-uzlu
( alokaci blok - skupina pevného poctu sektoru, typicky 2^n, L /dir/file
366 = 361 data + 5 metadata následujících fyzicky i logicky za sebou, která je nejmenší jednotkou diskového prostoru,
symlink 69
kterou OS čte ci zapisuje pro běžných operacich
)
- 10 datovych bloke bude odkazovano primymi odkazy
- dalsich 1000/10 bloku je odkazovano pres nepřímý odkaz 1. úrovně z i-uzlu pres jeden
pomocný adresovací blok
- dale je použit nepřímý odkaz 2. úrovně v i-uzlu, vedoucí na jeden pomocny filename 42
10 datovych bloku
adresovaci blok s neprimymi odkazy 1. úrovně. Takové jsou alokovany 3. Do nich se již
i - uzly podari uložit pozadovanych 251 zbyvajicich odkazu.
- Celkove tedy 5 bloku metadat (ty ruzove)
D
Blok c. 11 Blok i-uzlu obsahujici i-uzel 42
#include <stdio.h>
#include <assert.h>
#include <bool.h>
10 primych int main ()
“Bezny” soubor 1. primy odkaz na data
odkazu na {
bool tru = false;
data assert ( tru && “Tady jsou nase data!!!” ) ;
return 0;
}
- blok číslo 11
D
pomocny adresovaci blok
S primymi odkazy D
Neprimy odkaz 100 = 1000/10
1. urovne
D
Neprimy odkaz pomocny adresovaci blok
2. urovne S neprimymi odkazy 1.
urovne
Zbytek je nevyuzit