430 likes | 626 Views
Operačné systémy. Teoretické cvičenia I. C shell. Organizácia cvičení. Prednáša: prof. Ing. Jiří Šafařík, PhD, safarik@dcs.elf.stuba.sk, D125 Cvičiaci: Ing. Branislav Steinmüller, steinmul@dcs.elf.stuba.sk, D022. Organizácia cvičení (pokr.). teoretické - v učebni (C801)
E N D
Operačné systémy Teoretické cvičenia I. C shell
Operačné systémy - I. C shell Organizácia cvičení • Prednáša: • prof. Ing. Jiří Šafařík, PhD,safarik@dcs.elf.stuba.sk, D125 • Cvičiaci: • Ing. Branislav Steinmüller,steinmul@dcs.elf.stuba.sk, D022
Operačné systémy - I. C shell Organizácia cvičení (pokr.) • teoretické - v učebni (C801) • praktické - pri počítači (CPU) • prípravné zadania • testy
Operačné systémy - I. C shell Podmienky na získanie zápočtu • účasť na všetkých cvičeniach • príprava na tému cvičenia • odovzdanie dvoch prípravných zadaní • vykonanie a odovzdanie dvoch testov (2x30b) • získanie aspoň 16 bodov • hodnotenie cvičeni predstavuje 60% celkového hodnotenia predmetu
Operačné systémy - I. C shell Obsah teoretických cvičení • 1.+ 2. Úvod do práce s operačným systémom Unix. Interpret príkazov csh. Tvorba príkazových súborov (scripts) pre interpret csh. • 3. Synchronizácia procesov. Kritická oblasť. Riešenie vzájomného vylučovania procesov. • 4. Synchronizácia a komunikácia procesov zasielaním správ. • 5. Správa pamäti. Algoritmy prideľovania pamäti v multiprocesových systémoch. • 6. Uviaznutie procesov. Bankárov algoritmus.
Operačné systémy - I. C shell Obsah praktických cvičení • 1.+ 2. Unix - vyhľadávanie dokumentácie, zvládnutie základných príkazov, csh, práca s editorom. Príkazové súbory v csh - štúdium. • 3. Test - vypracovanie zadania v csh. • 4.+ 5. Služby unixu súborové a procesové (programovanie v jazyku C) - štúdium. • 6. Test - vypracovanie zadania v C.
Operačné systémy - I. C shell Načo je dobrý shell ? • rozhranie služieb OS • prístup k súborom, spúšťanie procesov • čítanie, kontrola a vykonávanie príkazov • príkazový riadok • interpret • programy - skripty • prispôsobenie pracovného prostredia • alias, history
Operačné systémy - I. C shell Prečo csh ? • podobnosť s jazykom C • lepšia čitateľnosť (menšia vyjadrovacia sila) • historické dôvody
Operačné systémy - I. C shell UNIX • oddeľovač adresárov - / • mená súborov - dĺžka (14, 254, …), znaky • všetko je súbor • adresár, obyčajný súbor, zariadenie, symbolická linka, … • štandardný vstup, výstup, chybový výstup • deskriptory 0, 1, 2 • rúry (pipe, dátovody)
Operačné systémy - I. C shell UNIX (pokr.) • prístupové práva • cesta • absolútna • relatívna • aktuálny (pracovný) adresár • . • ..
Operačné systémy - I. C shell Základné princípy shell programov • využitie systémových programov - filtre • použitie rúr (pipe, dátovod) • + spracovanie • spracovanie textu
Operačné systémy - I. C shell C shell program • text, riadok, slovo • 1. slovo - príkaz, ostatné - argumenty • # • #! /bin/csh • # - komentár
Operačné systémy - I. C shell Príklad 1 • #! /bin/cshset veta = "Ahoj svet" echo $veta
Operačné systémy - I. C shell Premenné • set p = hodnota • @ c = 42 • set p = "viac slov" • set p = (zoznam viacerych slov) • citovanie (quote) • ", ', \ • riadiace znaky
Operačné systémy - I. C shell Premenné (pokr.) • set p = slovo • set p = $p dalsie-> chyba !!! • set p = "$p dalsie" -> slovo dalsie • set p = '$p dalsie' -> $p dalsie • set p = \$p\ dalsie
Operačné systémy - I. C shell Premenné (pokr.) • @ c = 42 • @ c = cislo-> chyba !!! • @ c = $c + 3 @ c ++ • +, -, *, /, %, (, ), ... • set c = $c + 3-> chyba !!!
Operačné systémy - I. C shell Premenné (pokr.) • set p = (jeden dva tri) • set p1 = $p[1] -> jeden • set p4 = $p[4]-> chyba !!! • set p = ($p[2-3]) -> (dva tri)
Operačné systémy - I. C shell Premenné (pokr.) • set p = (jeden dva tri) • set c = $#p -> 3 • shift p -> (dva tri)
Operačné systémy - I. C shell Premenné (pokr.) • vzorky (pattern, globbing) • *, ?, [] • set f = (*) -> súbory v aktuálnom adresári • set f = (*.[hc]) -> C-čkovské zdrojáky
Operačné systémy - I. C shell Výpisy • echo text • echo $p1 $p2 $p3 • printf
Operačné systémy - I. C shell Riadiace konštrukcie • if • foreach • while • switch • goto
Operačné systémy - I. C shell Riadiace konštrukcie - if • podmienka - 0 , >0 • if (podm) prik • if (podm) then prikelse prikendif
Operačné systémy - I. C shell Riadiace konštrukcie - foreach • foreach prem (zoznam) prikend • break • continue
Operačné systémy - I. C shell Riadiace konštrukcie - while • while (podm) prikend • break • continue
Operačné systémy - I. C shell Riadiace konštrukcie - switch • switch (retazec) case vzor1: prik breaksw case vzor2:... default:endsw
Operačné systémy - I. C shell Riadiace konštrukcie - goto • navestie: prik • goto navestie
Operačné systémy - I. C shell Príklad 2 • #! /bin/cshset znaky = (d g f 3 6 s 4 w h f 6 0 b d t y 3 6 s f)set cisla = ()set pismena = ()@ pc = 0@ pp = 0foreach znak ($znaky)# if ($znak >= 0 && $znak <= 9) then if ($znak == 0 || $znak == 1 || $znak == 2 || $znak == 3 || \ $znak == 4 || $znak == 5 || $znak == 6 || $znak == 7 || \ $znak == 8 || $znak == 9) then set cisla = ($cisla $znak); @ pc ++ else set pismena = ($pismena $znak); @ pp ++ endifendecho Pismena: $pismena Pocet: $pp # $#pismenaecho Cisla: $cisla Pocet: $pc # $#cisla
Operačné systémy - I. C shell Príklad 2 (výstup) • Pismena: d g f s w h f b d t y s f Pocet: 13 • Cisla: 3 6 4 6 0 3 6 Pocet: 7
Operačné systémy - I. C shell Presmerovanie a rúry (dátovody) • >, <, >> • ls -l > vystup.out • >&, >>& • |, |& • who | grep root • `prikaz` • set vystup = `ls -a` • set vystup = "`ls -la`"
Operačné systémy - I. C shell Presmerovanie a rúry (pokr.) • set a = "`ls -l`" • set b = "$a" • set c = "$a[1]" • set d = ($a[1])
Operačné systémy - I. C shell Presmerovanie a rúry (pokr.) • súbor h • meno heslo • foreach l ("`cat h`") set l = ($l) mail -s $l[2] $l[1]end
Operačné systémy - I. C shell Procesy • prikaz & • CTRL+Z, CTRL+C • fg, bg, jobs, kill
Operačné systémy - I. C shell Príklad 3 • #! /bin/cshset vsetci = `who | cut -c1-8 | sort`if ($#vsetci == 0) exitset p = $vsetci[1]@ i = 1shift vsetciwhile ($#vsetci > 0) if ($p == $vsetci[1]) then @ i ++ else echo "$i $p" set p = $vsetci[1] @ i = 1 endif shift vsetciendecho "$i $p"# who | cut -c1-8 | sort | uniq -c
Operačné systémy - I. C shell Príklad 3 (výstup) • 1 bandzi • 1 dluhy • 1 kutik • 1 schreter • 1 sopko • 2 steinmul • 1 bandzi • 1 dluhy • 1 kutik • 1 schreter • 1 sopko • 2 steinmul
Operačné systémy - I. C shell Advanced • premenné • $?prem • :h, :t, :e, :r • set a = /adresar/file.ext • echo $a:h -> /adresar • echo $a:t -> file.ext • echo $a:e -> ext • echo $a:r -> /adresar/file
Operačné systémy - I. C shell Advanced (pokr.) • foreach f (*.cpp) mv $f ${f:r}.ccend
Operačné systémy - I. C shell Advanced (pokr.) • premenné • $cwd, $home, $path, $user • $status • $argv, $argv[1] • $0, $1, $2, …, $9, $* • $$ - /tmp/subor.$$ • $< - vstup • echo "A/N ?"set odp = $<
Operačné systémy - I. C shell Advanced (pokr.) • glob • *, ?, [], {}, ~ • echo /home/OS/{1README.1st,H*} • if • <, >, ==, !=, =~, !~, … • ||, &&, ! • if ($znak =~ [0-9]) ... • -r, -w, -x, -e, -o, -z, -f, -d • if (-d $p) echo "$p je adresar"
Operačné systémy - I. C shell Príklad 4 • #! /bin/cshunset ajcestuwhile ($#argv > 0) switch ($argv[1]) case -h: echo "Pouzitie: $0 [-h] [-p] [adresar]" exit case -p: set ajcestu breaksw default: breaksw; break endsw shiftendif ($#argv == 0) then set dir = .else set dir = $argv[1]endif
Operačné systémy - I. C shell Príklad 4 (pokr.) • foreach f ("`find $dir -type f`") if ("`file $f`" =~ *text*) then if ($?ajcestu) then echo "$f:t v $f:h" else echo "$f:t" endif endifend
Operačné systémy - I. C shell Príklad 4 (výstup) • [11:32] osa> ./4.csh -p • 1.csh v . • 2.csh v . • 3.csh v . • 4.csh v . • [11:35] osa> ./4.csh /home/OS/pocitacove/csh • awk.doc • csh.doc • make.doc • vi.doc • vi.ref • vi.txt • README
Operačné systémy - I. C shell Prostredie • alias • alias l "ls -l" • history • history • !-1, !50, !ls, !! • .cshrc, .login, .logout
Operačné systémy - I. C shell Programy • práca s adresármi: ls, cd, pwd, mkdir, rmdir • práca so súbormi: cat, more, cp, mv, rm, chmod, (ln, du, file, touch) • vyhľadávanie a triedenie: grep, sort, find, wc, (cut, paste, cmp, diff, awk, sed, uniq) • používatelia: who, (w, finger, last) • procesy: ps, kill • prekladače: cc, (make) • prístup cez sieť: telnet, ftp (ssh) • komunikácia medzi používateľmi: write, elm (mail, talk) • rôzne: date, (time)