diff --git a/luentosuunnitelma_2024.org b/luentosuunnitelma_2024.org index ac5b4dbd3f0a1e18cede5c457cf7b342be71419a..6d7be7aeecbcd4b54364e6005779a2ad44a1222c 100644 --- a/luentosuunnitelma_2024.org +++ b/luentosuunnitelma_2024.org @@ -2298,13 +2298,29 @@ muuttuminen" herättämän jatkokysymyksen kanssa. komennolla pmap ** Luento 15: (pe 17.5.2024) (J) Asiaa eteenpäin +*** Infot keväälle 2024 -*** Demo 4 jälkikäteisvideo -*** Demo 4b jälkikäteisvideo +Ajankohtaista: + +- Porukalla on jo demo 6 työn alla. Se on kuulemma mukava! + +- Toukokuun lopun ja kesäkuun alun aikatauluista on ajankohtaista + ilmoitella: + + + Tentti viikon päästä + + + Opettajien ja vertaistukikanavan apua on vielä tarjolla hyvin, + koska periodi ei ole vielä ohi!! + + + Kesäkuun alusta alkaen tulee olemaan paljon harvemmin tarjolla + vastauksia kysymyksiin tai demotarkastuksia ja sitä kautta + palautteita. + + + Itsenäinen suorittelu voi kuitenkin hyvin jatkua. -*** Vertaillaan muistiinpanoja, jos aikaa on -*** Tenttitärppi (tyhjä sapluuna copy-paste-modifyä varten) + +*** Tenttitärppi: Tehtävä liittyen koodiesimerkkiin ('minish.c') Tässä kohtaa kevään 2024 tenttitärppi. @@ -2342,9 +2358,9 @@ tavalla. Raamit: **** Tehtävä - Kysymys on... Moodlesta aiemman vuoden tentistä joku kysymys - (kysymys xx/48 kevään 2021 tentistä) + (kysymys 35/48 kevään 2021 tentistä) -- Kellotetaan 1 minuutti aikaa tehtävän lukemiseen. +- Kellotetaan 2 minuuttia aikaa tehtävän lukemiseen. - Kellotetaan 1 minuutti aikaa siihen, että jokainen miettii hiljaa itselleen vastaukset @@ -2362,14 +2378,54 @@ tavalla. Raamit: Tässä on täydellisyyden vuoksi tehtävä ja siihen liittyvä ohjeteksti kopioituna: - - +Tutkittava esimerkki tehtäviin 35–37: monisteessa esitetyn kaltainen minimalistinen shell-ohjelma (kommentit poistettu, rivit numeroitu, näytetty vain olennainen toimintopätkä): + + 1 while(true){ + 2 luekomento(komento, argumentit); + 3 pid = fork(); + 4 if (pid > 0) { + 5 status = wait(); + 6 } else if (pid == -1) { + 7 ilmoita("fork() epäonnistui!"); + 8 exit(1); + 9 } else { + 10 exec(komento, argumentit); + 11 ilmoita("Komentoa ei voitu suorittaa!"); + 12 exit(1); + 13 } + 14 } + +Kysymys 35: Väite: Aina, kun rivi 4 tulee suoritukseen, se tapahtuu +ainoastaan fork() -kutsun luomassa lapsiprosessissa. (A=kyllä; B=ei) **** Ryhmien vastaukset ja keskustelu Muistiinpanot ryhmäkoonnista: -- kerätään tähän +- Ehdotettu A (kyllä), koska oli sellainen fiilis. + +- Ehdotettu A (kyllä), koska fork() kutsu asettaa pid:n ja sitten tulee + if-ehto. + +- Ehdotettu B (ei), koska fork() on järjestelmäkutsu, joka luo + lapsiprosessin vanhempiprosessin rinnalle ja ne molemmat jatkavat + sen jälkeen suoritusta itsenäisesti. + +- Ehdotettu B (ei), koska "raamatussa" (eli luentomonisteessa) + sanottiin, että "fork() palauttaa vanhempiprosessin kontekstissa + ..." niin tästä päättelin, että sielläkin jotain tapahtuu vielä + fork()-kutsun jälkeen. + +- Syntaksin perusteella näyttää siltä, että fork() vaan kutsutaan, ja + sen jälkeen suoritus jatkuu normaalisti. + +- Näyttää siltä, myös muun toimintalogiikan suhteen, eli pid on + paikallinen muuttuja, jota ei viedä fork()-funktiolle ja jota + seuraavalla rivillä käytetään tämän ohjelmamoduulin tarpeisiin. + +HUOMAA että kaksi viimeistä perustelua eivät pelitä esimerkiksi exec() +tai exit() -käyttöjärjestelmäkutsujen kohdalla!! Tästä lisää +yksityiskohtia videolla! **** Oikeaksi tarkoitettu vastaus ja logiikka sen takana @@ -2382,11 +2438,93 @@ Mallivastauksen käsittely voidaan tehdä nopeasti.) +** Aiemmasta tokavikasta luennosta plänii + +(Vuoden 2023 toteuma alla suunnitelmaksi) + +Teorian ja käytännön välisten yhteyksien etsimistä koodiliitteen +esimerkkien, debuggerin, havainnekuvien ja speksien kautta. + +*** Infot keväälle 2023 + +- Jäljellä on tämän lisäksi 2 luentoa, 1 Open labrapäivä ensi viikon + tiistaina klo 16.30-18.15 ja tentti! + +- Lukemisto ja tekemistö on nyt kokonaan työn alla: Luentomonisteen + luvut 1-12 ja demot 1-6. Kokonaisuuden hahmottaminen. + +*** Tämän luennon tavoite + +- Tässä välissä tiukkaa asiaa, konkretiaa ja rautalankaa. + +- Päivän lopuksi tiedetään, mitä seuraavaksi pitää tehdä ennen + seuraavia yhteisiä tapaamisia: Hedelmien keräämistä pohjatyön + jälkeen eli ymmärryksen lisäämistä ja valmistautumista + tenttiin. Demo 6 työn alla - sitä saa palauttaa sitä vielä tentin + jälkeen, eli voi keskittyä teoriapuoleen tässä kohtaa! + + +*** Asiaa järjestelmällisesti eteenpäin: Koodiliitettä ja monistetta + +Edetään demoissa aiemmin nähtyjen ja monisteen koodiliitteessäkin +olevien konkreettisten esimerkkikoodien kautta, loogisessa +järjestyksessä. + +**** Säikeistä + +saikeiden_tarve.c +saikeet.c + +Katso esimerkkien briiffaus videolta. Seinäkelloaika lyhenee, jos +tehtävän voi hajauttaa moneen prosessoriytimeen rinnakkain. + +Katsellaan säikeitä myös ps -komennon avulla (vipu -L) sekä +luentosalin tietokoneella esimerkiksi Chrome-nettiselaimessa ja +Windowsin prosessinhallinnassa, jos opettajan perustunnuksen +käyttöoikeudet riittävät (eivät välttämättä riitä..). + +Omalla tietokoneella voi kokeilla oman tietokoneen graafisia työkaluja +prosessin- ja säikeidenhallintaan, nimeltään tyyliin "Task Manager" / +"Tehtävienhallinta" tai vastaavaa... +*** Tauko sopivassa välissä +Jatkuu 15.22 +**** Prosesseista: Signaalinkäsittely ja kill + +sigesim.c + +Katso briiffaus videolta. +Koetetaan näyttää näppäilyjä ja kill -kuorikomennon käyttelyä. + +** Luento 16: (ke 22.5.2024) (P/J) Viimeinen luento +*** Infot keväälle 2024 +- Jäljellä on tämän lisäksi enää ylihuominen tentti. + +- Yritetään saada videotallenteet ulos pian luennon jälkeen, jotta + ennen perjantain tenttiä ehtii vilkaista ne läpi. + +- Demo 6 tarkastetaan tentin jälkeen, jolloin myös sen tekemiseen voi + vielä palata. + +- Sitten siihen asiaan! + +*** Tämän luennon tavoite + +- Tuotetaan tähän asti hienoimman studioyleisön läsnäollessa salaiset + palautevideot Demoihin 4, 4b ja 5. + +- Jos on aikaa, niin muita aiheita. Kertaukseen ja yhteenvetoon + liittyviä voisi kuvitella luontevaksi tässä vaiheessa. + +*** Demo 4 jälkikäteisvideo +*** Demo 4b jälkikäteisvideo +*** Demo 5 jälkikäteisvideo + +*** Vertaillaan muistiinpanoja, jos aikaa on *** Tenttitärppi (tyhjä sapluuna copy-paste-modifyä varten) @@ -2470,89 +2608,9 @@ Mallivastauksen käsittely voidaan tehdä nopeasti.) -** Aiemmasta tokavikasta luennosta plänii - -(Vuoden 2023 toteuma alla suunnitelmaksi) - -Teorian ja käytännön välisten yhteyksien etsimistä koodiliitteen -esimerkkien, debuggerin, havainnekuvien ja speksien kautta. - -*** Infot keväälle 2023 - -- Jäljellä on tämän lisäksi 2 luentoa, 1 Open labrapäivä ensi viikon - tiistaina klo 16.30-18.15 ja tentti! - -- Lukemisto ja tekemistö on nyt kokonaan työn alla: Luentomonisteen - luvut 1-12 ja demot 1-6. Kokonaisuuden hahmottaminen. - -*** Tämän luennon tavoite - -- Tässä välissä tiukkaa asiaa, konkretiaa ja rautalankaa. - -- Päivän lopuksi tiedetään, mitä seuraavaksi pitää tehdä ennen - seuraavia yhteisiä tapaamisia: Hedelmien keräämistä pohjatyön - jälkeen eli ymmärryksen lisäämistä ja valmistautumista - tenttiin. Demo 6 työn alla - sitä saa palauttaa sitä vielä tentin - jälkeen, eli voi keskittyä teoriapuoleen tässä kohtaa! - -*** Asiaa järjestelmällisesti eteenpäin: Koodiliitettä ja monistetta - -Edetään demoissa aiemmin nähtyjen ja monisteen koodiliitteessäkin -olevien konkreettisten esimerkkikoodien kautta, loogisessa -järjestyksessä. - -**** Säikeistä - -saikeiden_tarve.c -saikeet.c - -Katso esimerkkien briiffaus videolta. Seinäkelloaika lyhenee, jos -tehtävän voi hajauttaa moneen prosessoriytimeen rinnakkain. - -Katsellaan säikeitä myös ps -komennon avulla (vipu -L) sekä -luentosalin tietokoneella esimerkiksi Chrome-nettiselaimessa ja -Windowsin prosessinhallinnassa, jos opettajan perustunnuksen -käyttöoikeudet riittävät (eivät välttämättä riitä..). - -Omalla tietokoneella voi kokeilla oman tietokoneen graafisia työkaluja -prosessin- ja säikeidenhallintaan, nimeltään tyyliin "Task Manager" / -"Tehtävienhallinta" tai vastaavaa... - -*** Tauko sopivassa välissä -Jatkuu 15.22 - -**** Prosesseista: Signaalinkäsittely ja kill - -sigesim.c - -Katso briiffaus videolta. - -Koetetaan näyttää näppäilyjä ja kill -kuorikomennon käyttelyä. - -** Luento 16: (ke 22.5.2024) (P/J) Toiseksi viimeinen luento - -(Vuoden 2023 toteuma alla suunnitelmaksi) - -*** Infot keväälle 2023 - -- Jäljellä on tämän lisäksi enää huominen luento ja ylihuominen tentti. - -- Molemmilla luennoilla: aluksi tiukkaa asiaa, tauko, tenttitärppi. - -- Yritetään saada videotallenteet ulos pian luennon jälkeen, jotta - ennen perjantain tenttiä ehtii vilkaista ne läpi. Samoin koetetaan - saada demo 5 tarkastettua ja mallivastaus auki. Demo 6 tarkastetaan - tentin jälkeen, jolloin myös sen tekemiseen voi vielä palata. - -- Sitten siihen asiaan! - -*** Tämän luennon tavoite -- Hedelmien keräämistä pohjatyön jälkeen eli ymmärryksen lisäämistä ja - valmistautumista tenttiin. Demo 6 työn alla - sitä saa palauttaa - sitä vielä tentin jälkeen, eli voi keskittyä teoriapuoleen tässä - kohtaa! +** (Vuoden 2023 viimeisen luennon toteuma alla suunnitelmaksi) *** Asiaa järjestelmällisesti eteenpäin: Koodiliitettä ja monistetta