<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">2015-03-21 20:46 GMT+01:00 Martin Decky <span dir="ltr"><<a href="mailto:decky@d3s.mff.cuni.cz" target="_blank">decky@d3s.mff.cuni.cz</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Vážený pane kolego,<br>
<br>
dÄkujeme mnohokrát za VaÅ¡i podrobnou zpÄtnou vazbu. Velmi si toho cenÃme. PÅedmÄt OperaÄnà systémy se sice v souÄasné formÄ letos vyuÄuje nejspÃÅ¡ naposledy, ale i pro pÅÃpravu nové koncepce se nám VaÅ¡e komentáÅe budou hodit.<br>
<br>
Dovolte mi, abych k VaÅ¡im pÅipomÃnkám pÅidal nÄkolik svých osobnÃch komentáÅů.<br>
<br>
<br>
Ad "zrušit dokumentaci"<br>
-----------------------<br>
Na jednu stranu pochopitelnÄ VaÅ¡emu sentimentu rozumÃm, protože je jasné, že jen naprosté minimum absolventů OSů se nÄkdy ke své semestrálce nÄkdy vrátÃ. Na druhou stranu, snažÃme se, aby se implementace semestrálky co nejvÃce podobala reálnému softwarovému projektu v reálném svÄtÄ. MyslÃm si, ze drtivá vÄtÅ¡ina vývojových metodologià stále jeÅ¡tÄ tvorbu dokumentace v té Äi oné formÄ vyžaduje, byÅ¥ nÄkteré agilnà metodiky stavà funkÄnà software nad podrobnou dokumentaci a upÅednostÅujà "lean documentation". <br></blockquote><div>Já naprosto souhlasÃm, že reálný softwarový projekt si dokumentaci zasoužÃ. OvÅ¡em myslÃm si, že reálný softwarový projekt se odliÅ¡uje již v samotném procesu tvorby od OSů natolik, že nenà tÅeba se snažit k nÄmu pÅiblÞit v dokumentaci. NavÃc, jak jsem již psal, od podobánà se reálnému softwarovému projektu tu máme pÅedmÄt softwarový projekt.<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
MyslÃm si, že "lean documentation" je i cÃlem dokumentace semestrálky z OSů. RozhodnÄ nám nejde o to, aby každá skupina napsala 50-stránkový manuál, který bude zároveÅ sloužit jako malá uÄebnice principů operaÄnÃch systémů. Dokonce ani nepožadujeme dokonalou referenÄnà dokumentaci na úrovni podrobnosti Win32 API nebo Java SE API.<br>
<br>
Ideálnà dokumentace k semestrálce z OSů by mÄla obsahovat pÅedevÅ¡Ãm popis architektury celé semestrálky (ideálnÄ v nÄjaké standardnà notaci, napÅ. UML), popis datových struktur (opÄt ideálnÄ s vhodnými diagramy), slovnà komentáŠk nÄkterým ménÄ triviálnÃm algoritmům a pÅedevÅ¡Ãm odkazy na to, kde se co v kódu najde. Taková dokumentace skuteÄnÄ výraznÄ usnadnà i naÅ¡e hodnocenà semestrálky, protože nám tÅeba pomůže odliÅ¡it, co v implementaci je zámer a co je jen hack.<br>
<br>
Problém, na který sám narážÃte, je ten, že vÄtÅ¡ina lidà má ve zvyku psát dokumentaci až po implementaci a to typicky na poslednà chvÃli. To je ovÅ¡em dost Å¡patný postup, který skuteÄnÄ Äasto vede jen k frustraci nad tÃm, že to je jen jakási formálnà a zbyteÄná Äinnost. Ve skuteÄnosti by nÄkteré zásadnà Äásti dokumentace (jako tÅeba popis architektury v UML nebo popis datových struktur) mÄly vznikat už bÄhem implementace, ne-li dokonce pÅed samotným psanÃm kódu. Takový pÅÃstup k "lean documentation" může pomoci architekturu i implementaci softwaru lépe navrhnout, protože si ÄlovÄk může pÅedem ujasnit, jaké stavebnà bloky bude vlastnÄ potÅebovat a jak by mÄly být poskládány dohromady.<br></blockquote><div>Pokud bychom na zaÄátku vÄdÄli, že to, co se po nás chce, je fotit si tabule, na kterých si malujeme, jak to má vypadat, a pak k tomu napsat pár vÄt a odevzdat to jako Äást dokumentace, pak bychom asi mÄli z dokumentovánà lepÅ¡Ã pocit. Ale když se celé zadánà tváÅà jako enterprise projekt, tak nás to ani nenapadlo, protože to nemÄlo korporátnà formu. <br><br></div><div>Možná je to nedostatkem zkuÅ¡enostà (ale ty jsme právÄ na OSech nabrali), ale i když jsme mÄli stavebnà kameny dopÅedu jasné, tak stejnÄ vÄtÅ¡ina struktur a funkcà doznala významných zmÄn, když pÅi testech / zkouÅ¡enà vyÅ¡ly najevo okrajové pÅÃpady, na které jsme bÄhem návrhu nepomysleli.<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
A poslednÃ, zcela pragmatická poznámka: Kvalitu dokumentace hodnotÃme ze vÅ¡ech kritérià zdaleke nejmÃrnÄji (právÄ i s pÅihlédnutÃm k tomu, že OSy skuteÄnÄ nejsou pÅedmÄt, kde by se studenti mÄli primárnÄ uÄit psát dokumentaci). Prakticky si nepamatuji, že by nÄkdy nÄjaká skupina za alespoÅ nÄjaký pokus o dokumentaci (byÅ¥ celkem mizerný) dostala ménÄ než 5 bodů. Takže lze ÅÃci, že to jsou takové celkem jisté body i za pomÄrnÄ malou snahu :)<br></blockquote><div>BuÄme tedy se 4.5 body praktickým protipÅÃkladem.<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
<br>
Ad "debuggovacà výpisy"<br>
-----------------------<br>
TÃmto bodem narážÃte na to, že otázka observability a ladÄnà operaÄnÃho systému (nebo obecnÄ libovolného netriviálnÄ složitého softwaru) je sama o sobÄ docela netriviálnÃ. Jinak by neexistovaly projekty typu DTrace nebo SystemTap a obecnÄ by se problematikou vhodného způsobu logovánà nezabývaly celé frameworky nebo dokonce celé vývojové technologie (napÅ. aspektovÄ-orientovaný vývoj).<br>
<br>
Protože je zadánà semestrálky z OSů už tak docela obsáhlé (a to je na druhou stranu ohlodané až na kost), rozhodnÄ ho nechceme komplikovat jeÅ¡tÄ nÄjakým složitým mechanismem pro ladÄnÃ. A koneckonců ve spoustÄ pÅÃpadů je skuteÄnÄ ad hoc použità printk() celkem dobrá pomůcka pÅi ladÄnà konkrétnÃch problémů. PÅi odevzdánà jenom chceme, aby ve zdrojácÃch nezbyly zakomentované ladÃcà výpisy, což se dá udÄlat v podstatÄ i automaticky.<br>
<br>
<br>
Ad "rucni průbÄžná kontrola"<br>
----------------------------<br>
V ideálnÃm svÄtÄ bych s VaÅ¡im návrhem plnÄ souhlasil. Dokonce bych zaÅ¡el jeÅ¡tÄ dál a chtÄl bych dÄlat code review tÅeba po každém týdnu nebo vÄtÅ¡Ãm mergi.<br>
<br>
Bohužel v ideálnÃm svÄtÄ nežijeme a tak Äastou zpÄtnou vazbu si prostÄ nedovedu v praxi z Äasových důvodů pÅedstavit. NavÃc by to byla dvouseÄná zbraÅ: ZatÃmco souÄasný systém umožÅuje skupinám v krajnÃm pÅÃpadÄ projÃt průbÄžnými testy s dost "ohackovaným", ne pÅÃliÅ¡ elegantnÃm nebo ne pÅiliÅ¡ efektivnÃm ÅeÅ¡enÃm, které mohou poté vylepÅ¡ovat, Vámi navrhovaný systém by pravdÄpodobnÄ vynucoval mnohem vyÅ¡Å¡Ã laÅ¥ku hned na zaÄátku a to by možná nÄkteré skupiny zabilo.<br>
<br>
Na druhou stranu, nenà myslÃm pravda, že by skupiny nemÄly podle Äeho implementaci navrhovat -- poÅád jeÅ¡tÄ existuje také pÅednáška, vždy jsme nabÃzeli možnost individuálnÃch nebo skupinových konzultacà atd.<br>
<br>
<br>
Ad "upravit deadline"<br>
---------------------<br>
Tohle je asi vyslovenÄ vÄc názoru. OsobnÄ mi pÅÃjde, že systém "1 bod za 4 hodiny" psychologicky nedostateÄnÄ odrazuje od odkládánà vÄci na poslednà chvÃli.<br></blockquote><div> MyslÃm si, že to k odkládánà vÄcà na poslednà chvÃli nemotvuje o moc vÃce než souÄasný systém. VÄci se na poslednà chvÃli dÄlajà a dÄlat budou a možnost odladit nÄjakou drobnost (protože vÃc se stejnÄ nestihne), která se objevila na poslednà chvÃli, potÄÅ¡Ã. Do půlnoci bude programovat skoro každý bez problémů, ale když si mám vybrat mezi (programovánÃm do rána a ztrátou bodu) a (možnostà se vyspat a o bod vÃce), radÅ¡i se vyspÃm.<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
<br>
Ad "upravit bodovánÃ"<br>
---------------------<br>
V tomhle bodÄ mám vyslovenÄ pocit, že navrhujete nÄco, co dávno existuje. Množstvà komentáÅů nikdy nebylo kritériem, vždy hodnotÃme kvalitu a uÄelnost komentáÅů (viz můj komentáŠo dokumentaci výše).<br></blockquote><div>Množstvà komentáÅů sice nenà kritériem, ale chybÄjÃcà komentáÅe jsou strhávány body...<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Bonusové body za doplÅkovou funcionalitu nad rámec zadánà udÄlujeme a od prvnÃho cviÄenà k tomu skupiny motivujeme.<br></blockquote><div>Ano, bonusový minus Ätvrtbod za pokus o implementaci forku a execu. <br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
<br>
Ad "testovánà na reálném HW"<br>
----------------------------<br>
To, že semestrálku z OSů lze celkem bez velkých problémů rozchodit na reálném HW, ukázala letos skupina Boková-Pelikán-Vinárek. Takže i v pÅÃpadÄ tohoto bodu trochu nechápu, co konkrétnÄ navrhujete, protože takové iniciativÄ jsme nikdy nebránili (a samozÅejmÄ ji po zásluze ohodnotÃme bonusovými body).<br>
<br>
Chcete, abychom testovánà semestrálky na reálném HW požadovali pÅÃmo v zadánÃ? To by mi nepÅiÅ¡lo Å¡Å¥astné, protože prostÅedà MSIMu má oproti skutenému HW Åadu výhod -- chová se deterministicky, je jednoduÅ¡Å¡Ã (neimplementuje cache, nevyžaduje složitou inicializaci a interakci s firmwarem), mnohem vÃce odpouÅ¡ti a umožÅuje mnohem snadnÄjÅ¡Ã ladÄnà (i pro extrémnà ladÄnà nevyžaduje JTAG, ale staÄà zmÄnit zdroják MSIMu).<br>
<br>
Nebo navrhujete, aby vÅ¡echny skupiny od nás dostaly vhodný HW? Takovému požadavku bych docela rozumÄl, pÅecejen procesory MIPS nejsou tak vÅ¡udypÅÃtomné jaké tÅeba ARM. AktuálnÄ tolik vývojových desek s MIPSem nemáme, ale jistÄ můžeme uvažovat o jejich poÅÃzenÃ.<br></blockquote><div> </div><div>Navrhuji, aby skupiny, pokud budou chtÃt, dostaly k dispozici nÄjaký HW typu routerboard, aby to bylo inzerováno a aby to bylo podporováno. VidÄl jsem, že to jde udÄlat, ale pro praktické použità by bylo fajn, aby již v kalistu bylo implementováno putc a getc pÅes sériovou konzoli a aby byl v Makefilu cÃl pro reálný hardware. Je mi jasné, že debugovánà na reálném hardwaru je nároÄnÄjÅ¡Ã na Äas a že nejste schopni nám poskytovat detailnà podporu, ale je rozdÃl mezi "Má to stejnou architekturu, tak si to naportujte sami" a "Pro kompilaci na reálný hardware napiÅ¡te "make hw", binárku si nahrajte podle tohoto návodu a putc a getc vám chodà na sériovou konzoli, zbytek si ale budete muset napsat sami". Upravovat nÄco, co už trochu funguje je mnohem snazÅ¡Ã, než psát vÄci, které jsem nikdy nepsal, na hardware, který jsem nikdy pÅedtÃm nemÄl.<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Å koda, že jste toto pÅánà neprojevil dÅÃv. MinimálnÄ jeden RouterBoard k pÅÃpadnému zapůjÄenà máme.<br>
<br>
<br>
Ad "drobnosti pro debuggovánÃ"<br>
------------------------------<br>
DÃky za návrhy, vÄtÅ¡inu z nich jistÄ můžeme implementovat, pokud nám to Äas dovolÃ.<br>
<br>
PÅesmÄrovánÃ: Možná by i v souÄasné verzi MSIMu mohlo pomoci pÅesmÄrovat výstup zaÅÃzenà dprinter tÅeba do pojmenované roury (metoda "redir") a potom zpracovávat trace na stdout.<br></blockquote><div>To by asi fungovalo, ale pak by v trace chybÄla informace o tom, kdy byl vypsán znak. <br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Disk a load; ÃplnÄ nerozumÃm, v Äem by mÄl být problém. Na zaÅÃzenà ddisk metoda "load" funguje, pokud je disk nejprve inicializován metodou "generic" na vhodnou velikost (podobnÄ jako v pÅÃpadÄ pamÄti). OvÅ¡em pÅiznávám, že by dodateÄná chybová hláška u "load" neuÅ¡kodila.<br></blockquote><div>A kde je to napsané v dokumentaci msimu? Když dám load, tak bych intuitivnÄ pÅedpokládal, že chci disk právÄ tak velký, jako je soubor a hlavnÄ bych Äekal, že chovánà load a fmap bude identické, až na to, že zmÄny v disku nataženém pÅes load se do souboru nepromÃtnou a pÅes fmap ano.<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Verbose MSIM, lepÅ¡Ã dokumentace MSIM: Ano. Vývojová verze MSIMu [1] obsahuje celou Åadu podobných vylepÅ¡enÃ. To neupozorÅovánà na pÅekryv pamÄti bylo zÅejmÄ motivováno tÃm, že reálný hardware Vás pÅi konfliktu dekódovaných fyzických adres také neupozornÃ. Ale chápu, že takové vysvÄtlenà nemusà být úplnÄ uspokojujÃcà :)<br>
<br>
PÅevod trace: Je otázka, jestli je skuteÄnÄ nutné, aby takový skript byl souÄástà distribuce MSIMu. VÄÅÃm, že to je nÄco, co by ÄlovÄk v pÅÃpadÄ potÅeby dokázal spÃchnout za pár minut tÅeba v Pythonu. DalÅ¡Ã otázka je, jestli v pÅÃpadÄ takové potÅeby nenà lepÅ¡Ã sáhnout k plnohodnotnému debuggeru jako je gdb nebo dokonce k nÄjaké jeho grafické nádstavbÄ.<br>
<br>
<br>
KaždopádnÄ jeÅ¡tÄ jednou dÃky za VaÅ¡e komentáÅe. I když v nÄkterých pÅÃpadech s Vámi možná nemohu 100% souhlasit, i tak je pro nás VaÅ¡e zpÄtná vazba cenná -- minimálnÄ nám ÅÃká, které vÄci máme lépe komunikovat.<br>
<br>
<br>
[1] <a href="http://d3s.mff.cuni.cz/~holub/sw/msim/" target="_blank">http://d3s.mff.cuni.cz/~holub/<u></u>sw/msim/</a><br>
<br>
<br>
S pozdravem<br>
<br>
Martin DÄcký<br>
<br>
______________________________<u></u>_________________<br>
OSy mailing list<br>
<a href="mailto:OSy@d3s.mff.cuni.cz" target="_blank">OSy@d3s.mff.cuni.cz</a><br>
<a href="https://d3s.mff.cuni.cz/mailman/listinfo/osy" target="_blank">https://d3s.mff.cuni.cz/<u></u>mailman/listinfo/osy</a><br></blockquote><div><br></div><div>A jeÅ¡tÄ si rýpnu, když už se po nás chce dodržovat deadliny, byli bychom rádi, kdyby konec dubna nebyl v druhé polovinÄ kvÄtna. <br></div></div><br></div><div class="gmail_extra">S pozdravem<br></div><div class="gmail_extra">Tomáš Pokorný<br></div></div>