MFF UK, zimní semestr 2005/2006
Zde je osnova letošní přednášky.
Postupně aktualizuji poznámkové slajdy. Zde jsou z nich vygenerované slajdy pro přednášky.
Různé jednoduché ukázkové příklady z přednášek, (22.7.2006) včetně příkladů s vlákny. Často nejsou kompletní a aby byly krátké, úmyslně nejsou vždy testované návratové hodnoty systémových volání, není k nim žádný popis, jejich účelem bylo pouze ukázat základní myšlenky přednášené látky na přednáškách. Pro účely vysvětlení konkretních vlastností mohou obsahovat úmyslné chyby. Toto nejsou příklady na to, jak se mají psát zápočtové programy.
Zde jsou příklady od Martina Berana, názvy souborů k jednotlivým přednáškám naleznete v loňské osnově a kromě látky, která již letos přednášená nebyla (Sys V IPC sdílená paměť a zprávy) tyto příklady korespondují s tím, co se přednáší letos.
Pro rozumné vyzkoušení některých systémových volání i dalších věcí je vhodné být root. Pokud nechcete nebo nemáte možnost si nějaký systém nainstalovat doma a nemáte rootovské konto jinde, může pro začátek postačit některá z live distribucí, kterou pouze vypálíte na CD a nabootujete, aniž byste museli cokoli změnit na svém počítači. Doporučuju například distribuci FreeBSD, která se nazývá FreeSBIE a je možné ji dokonce i na disk nainstalovat.
Termíny jsou ve školním informačním systému.
Zkouška má písemnou a ústní část. Písemná část zkoušky trvá 90 minut a jejím obsahem je napsání krátkého programu používajícího služby UNIXu. Písemka se píše u počítače, vaše řešení si na konci uložím k sobě. Je dovoleno používat literaturu (slidy a poznámky z přednášky, knihy, manuálové stránky, web apod.).
Není dovoleno se logovat na jiné stroje než je ten, u kterého sedíte, s výjimkou stroje u-us pro otestování vašeho programu na jiné architektuře ani není dovoleno přistupovat do /home adresáře mimo váš domovský adresář -- není prostě dovoleno komunikovat mezi sebou jakýmkoli způsobem.
Ústní část zkoušky má dvě části:
Součástí hodnocení je i překlad pomocí překladače gcc s přepínačem -Wall, přehlednost napsaného programu, správné otestování použitých systémových volání.
(29.12.2005): co se týče testování návratových hodnot volání, chci správně otestovat alespoň jedno takové volání a pak všechna ,,důležitá'' (např. open). To znamená, že testovat návratové hodnoty třeba funkcí pro zamykání/odemykání mutexů není nutné. Jinými slovy - pokud víte co děláte, nemusíte psát zbytečný kód.
Při ústní zkoušce nejsou dovolené žádné pomůcky. Studenti se na zkoušku přihlašují zápisem do příslušného formuláře (elektronicky na WWW), o připuštění nezapsaného studenta ke zkoušce rozhoduje zkoušející (podle počtu přítomných studentů). Nedostavení se ke zkoušce je považováno za neúspěšný termín, pokud je termín plný, tj. je nutné se včas odhlásit, abyste neblokovali volné místo. Ke zkoušce je potřeba zápočet, včetně předtermínů.
Okruhy otázek jsou prakticky úplně stejné jako minulý rok.
Pokud vám zkouškový program nefunguje vůbec, případně je jen z poloviny hotový apod., rovná se to neúspěšnému termínu. Pokud funguje s drobnými chybami, ale je vidět, že základ řešení je napsán korektně, podle kvality implementace, případných chyb a diskuze nad řešením je rozhodnuto o známce z první části.
Hodnocení druhé části je souhrnné hodnocení daných dvou otázek. Pokud není výsledná známka této části alespoň za tři, rovná se to neúspěšnému termínu.
Celkové hodnocení se skládá z hodnocení ústní a písemné části. Pokud je písemná nebo ústní část za tři, nemůže být celkové hodnocení lepší než tři. Při nerozhodné známce rozhoduje třetí otázka pro ústní část.
Různé příklady ze cvičení a zadání na doma (moje skupiny).
Příklady ze cvičení Tomáše Herana.
Nutnou a postačující podmínkou pro udělení zápočtu je vytvoření a odevzdání zápočtového programu. Zadání zápočtového programu se stanoví individuální dohodou studenta se cvičícím. Zápočtový program musí být napsán v jazyce C nebo C++ a musí obsahovat netriviální použití služeb UNIXu z alespoň dvou následujících oblastí:
Podmínka použití služeb UNIXu je splněna, pouze když je příslušná služba použita přímo, ne prostřednictvím další nadstavbové knihovny. Můžete tedy sice používat fopen(), fread() nebo fprintf() (knihovna stdio), ale jako použití souborových operací se vám počítají pouze funkce typu open(), read() nebo write().
Program musí důsledně ošetřovat chyby a rozumně reagovat na nesprávný vstup. Zdrojový text zápočtového programu musí být vhodně rozdělen do více souborů a kompilace řízena pomocí programu make a netriviálního Makefile (oddělený překlad a linkování, správné závislosti, použití maker, překladač gcc musí používat -Wall, překladač cc (tj. například Solaris) pak -v). Součástí zápočtového programu je i uživatelská a technická dokumentace ve formátu běžně čitelném v UNIXu, což není MS Word, RTF a jim podobné.
(25.12.2005): sice jsem to považoval za samozřejmé vzhledem k výše uvedenému, ale raději explicitně - překlad musí proběhnout bez varování.
Pokud se student s cvičícím nedohodne jinak, musí zápočtový program být přeložitelný a fungovat v UNIXové laboratoři, a to alespoň na dvou systémech - tedy například na Linuxu a na Solarisu (u-us), případně IRIXu (kappa), FreeBSD (pokud máte konto třeba na mail.kolej) atd. Linuxová emulace pod jiným systémem se nepočítá.
Zápočtový program zadává a zápočet uděluje cvičící, ke kterému je student zapsán na cvičení. Výjimku je možné udělat pouze z důvodu dlouhodobé nepřítomnosti cvičícího.
Moje skupiny: je možné mailem. Mail musí obsahovat vše potřebné, včetně zdrojáků, dokumentace, příkladů kde to dává smysl (make, find, ...), specifikace daných dvou zvolených oblastí a na jakých systémech jste to otestovali. Tj. pokud budete dělat například make, tak potřebuju příklady použití - ve vlastním adresáři pár zdrojáků, příslušný Makefile ukazující vše co daný make umí, dále příklad který ukáže jak si poradí s chybným zadáním, různé příklady na zadání přepínačů příkazové řádky atd. Čím lépe mi to předložíte, tím jednodušší by mělo být udělení zápočtu. Prosím uvědomte si, že nemám čas hodinu zkoumat, co váš příklad vlastně dělá nebo má dělat. Dokumentací se myslí styl podobný například manuálové stránce apod., za dokumentaci se nepovažuje soubor obsahující pár řádek. Pokud budete programovat např. find, tak budu chtít několik ukázkových zadání, co nejsložitějších, s popisem toho, co dělají. Některé věci mohu chtít předvést osobně, ideálně po cvičení či v termínech zkoušky (ne vaší).
Váš program by měl při špatném zadání přepínačů vypsat krátký help s krátkým popisem všech přepínačů, které je možné použít.
Počítejte prosím s tím, že na prohlédnutí vašeho zápočtového příkladu potřebuji alespoň 2-3 dny, velmi pravděpodobně nebude fungovat to, že mi večer před zkouškou pošlete váš zápočťák.
Je vhodně se se cvičícím předem dohodnout co přesně budete dělat.
Konzultace jsou možné během cca 15 minut před přednáškou přímo v
posluchárně, případně během 15 minut po ní. Je také možné se individuálně
domluvit mailem. Konzultace se cvičícími si dohodnou studenti individuálně.
Rozvrh
Út 3-4 09:00 S5 SWI015p1a Programování v Unixu I/3/IP, I/3/ISPS Jan Pechanec - SISAL Po 3-4 09:00 s) SU1 SWI015x1g Programování v Unixu I/3/IOI Tomáš Heran - SISAL Po 3-4 09:00 s) SU1 SWI015x1h Programování v Unixu I/3/ISPS Tomáš Heran - SISAL St 3-4 09:00 s) SU1 SWI015x1a Programování v Unixu I/3/IOI Jan Pechanec - SISAL St 3-4 09:00 s) SU1 SWI015x1b Programování v Unixu I/3/ISPS Jan Pechanec - SISAL St 9-10 14:00 s) SU1 SWI015x1c Programování v Unixu I/3/IP Jan Chadima - SISAL St 9-10 14:00 s) SU1 SWI015x1d Programování v Unixu I/3/IOI Jan Chadima - SISAL Čt 11-12 15:40 s) SU1 SWI015x1e Programování v Unixu I/3/ISPS Jakub Jelínek - SISAL Čt 11-12 15:40 s) SU1 SWI015x1f Programování v Unixu I/3/IP Jakub Jelínek - SISAL