Kevään 2015 kurssin luennot, demot, esimerkkiohjelmat / Paavo Nieminen

Samankaltaiset tiedostot
Kevään 2015 kurssin luennot, demot, esimerkkiohjelmat / Paavo Nieminen

Kevään 2015 kurssin luennot, demot, esimerkkiohjelmat / Paavo Nieminen

Kevään 2015 kurssin luennot, demot, esimerkkiohjelmat / Paavo Nieminen

Kevään 2016 kurssin luennot, demot, esimerkkiohjelmat / Paavo Nieminen

Kevään 2016 kurssin luennot, demot, esimerkkiohjelmat / Paavo Nieminen

ITKA203 Käyttöjärjestelmät tentti 2016 (MALLITENTTI)

Kevään 2018 kurssin luennot, demot, esimerkkiohjelmat (yhteensopiva kevään 2017 kurssin kanssa) / Paavo Nieminen

Kevään 2018 kurssin luennot, demot, esimerkkiohjelmat (yhteensopiva kevään 2017 kurssin kanssa) / Paavo Nieminen

Kevään 2018 kurssin luennot, demot, esimerkkiohjelmat (yhteensopiva kevään 2017 kurssin kanssa) / Paavo Nieminen

Kevään 2016 kurssin luennot, demot, esimerkkiohjelmat / Paavo Nieminen

Kevään 2017 kurssin luennot, demot, esimerkkiohjelmat / Paavo Nieminen

Kevään 2017 kurssin luennot, demot, esimerkkiohjelmat / Paavo Nieminen

Kevään 2017 kurssin luennot, demot, esimerkkiohjelmat / Paavo Nieminen

ITKA203 Käyttöjärjestelmät tentti (MALLITENTTI 2017)

2 Konekieli, aliohjelmat, keskeytykset

ITKA203 Käyttöjärjestelmät -- tentin yleiskuva -- kevät 2015

ITKA203 Käyttöjärjestelmät -- kesä tenttitärpit

Tenttitärpit. HUOM: Luvataan, että tämä on lopullinen tenttitärppikokoelma, mutta varaan silti oikeuden tehdä pieniä muutoksia, erityisesti:

IT K 1 45 K ä yt t öj ä rj estelmät

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli

Prosessi perinteisesti

11/20: Konepelti auki

Luento 2. Timo Savola. 31. maaliskuuta 2006

Stallings, Luku 4.1. KJ-I I S2005 / Tiina Niklander, kalvot Auvo HäkkinenH

Käyttöjärjestelmät: prosessit

ITKP102 Ohjelmointi 1 (6 op)

Ohjelmointi 1 / 2009 syksy Tentti / 18.12

ITKA203 Käyttöjärjestelmät -- tenttitärpit -- kevät 2014

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit

ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014

Arto Salminen,

Luentomuistiinpanoja

Ohjelmoinnin perusteet Y Python

4. Luento: Prosessit ja säikeets. Tommi Mikkonen,

Suoritin. Jakso 5 Suoritin ja väylä. TTK-91 muistin rakenne. TTK-91 suorittimen rakenne

Ohjelmoinnin perusteet Y Python

Suoritin. Luento 5 Suoritin ja väylä. TTK-91 muistin rakenne. TTK-91 suorittimen rakenne

Luento 5 (verkkoluento 5) Suoritin ja väylä

ITKP102 Ohjelmointi 1 (6 op)

Luento 3. Timo Savola. 7. huhtikuuta 2006

ITKP102 Ohjelmointi 1 (6 op)

Tietojenkäsittelyn perusteet 2. Lisää käyttöjärjestelmistä

Stallings, Luku 4.1. KJ-I S2004 / Tiina Niklander, kalvot Auvo Häkkinen 4-1. KJ-I I S2004 / Tiina Niklander, kalvot Auvo Häkkinen 12-1

Jakso 5 Suoritin ja väylä

Jakso 5 Suoritin ja väylä

Luento 1 Tietokonejärjestelmän rakenne

Luento 1 Tietokonejärjestelmän rakenne. Järjestelmän eri tasot Laitteiston nopeus

Metropolia Ammattikorkeakoulu

Jakso 12 Yhteenveto. Keskeiset asiat Teemu Kerola, K2000

Tietokoneen toiminta, K Tavoitteet (4)

PRINCIPLES OF PROGRAMMING LANGUAGES - DEBUGGER

Ongelma(t): Miten tietokoneen käyttöjärjestelmä toimii sisäisesti, jotta resurssit saadaan tehokkaaseen käyttöön?

4. Lausekielinen ohjelmointi 4.1

Ohjelmoinnin perusteet Y Python

Hellä ensikosketus. Tomi Kiviniemi

Ohjelmoinnin perusteet Y Python

Käyttöjärjestelmät: poissulkeminen ja synkronointi

Pikaintro käyttöjärjestelmiin

815338A Ohjelmointikielten periaatteet Harjoitus 5 Vastaukset

ITKP102 Ohjelmointi 1 (6 op)

Käyttöjärjestelmän rakenne

Käyttöjärjestelmät II

Luento 1 (verkkoluento 1) Tietokonejärjestelmä

Jakso 5 Suoritin ja väylä. Suorittimen rakenne Väylän rakenne Käskyjen suoritussykli Poikkeukset ja keskeytykset TTK-91:n ja KOKSI:n rakenne

Luento 1 Tietokonejärjestelmän rakenne

Sisältöä. Tietokoneen rakenne. Ch 1 - Ch 8 [Sta06] Valikoituja paloja TITO-kurssista. Tietokonejärjestelmä

Muuttujien roolit Kiintoarvo cin >> r;

5. HelloWorld-ohjelma 5.1

Luento 1 Tietokonejärjestelmän rakenne. Järjestelmän eri tasot Laitteiston nopeus

Käyttöjärjestelmät II

TIE448 Kääntäjätekniikka, syksy Antti-Juhani Kaijanaho. 17. marraskuuta 2009

Yleiskuva. Käyttöjärjestelmät II. Tietokonejärjestelm. rjestelmä. KJ ja laitteistopiirteet. KJ ja laitteistopiirteitä.

Concurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo

4. Lausekielinen ohjelmointi 4.1

5/20: Algoritmirakenteita III

Ohjelmoinnin perusteet Y Python

Tietokonejärjestelmä. Tietokoneen rakenne. Ch 1 - Ch 8 [Sta06] Valikoituja paloja. TITO-kurssista. John von Neumann ja EDVAC, 1949.

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset

Ohjelmointiharjoituksia Arduino-ympäristössä

Eloisuusanalyysi. TIE448 Kääntäjätekniikka, syksy Antti-Juhani Kaijanaho. 16. marraskuuta 2009 TIETOTEKNIIKAN LAITOS. Eloisuusanalyysi.

Processes and threads

Luento 5. Timo Savola. 28. huhtikuuta 2006

Ohjelmoinnin perusteet Y Python

Luento 1 (verkkoluento 1) Ohjelman sijainti Ohjelman esitysmuoto Laitteiston nopeus

Tutoriaaliläsnäoloista

Sisältöä SÄIKEET, SMP

TAMPEREEN TEKNILLINEN YLIOPISTO Digitaali- ja tietokonetekniikan laitos. Harjoitustyö 4: Cache, osa 2

Rekursiolause. Laskennan teorian opintopiiri. Sebastian Björkqvist. 23. helmikuuta Tiivistelmä

TAMPEREEN TEKNILLINEN YLIOPISTO

Taulukot. Jukka Harju, Jukka Juslin

Luento 4. Timo Savola. 21. huhtikuuta 2006

Ohjelmoinnin peruskurssien laaja oppimäärä

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmointi 1 / syksy /20: IDE

Operaattoreiden ylikuormitus. Operaattoreiden kuormitus. Operaattoreiden kuormitus. Operaattoreista. Kuormituksesta

ITKP102 Ohjelmointi 1, syksy 2007

Ohjelmoinnin perusteet Y Python

Transkriptio:

ITKA203 Käyttöjärjestelmät tentti 10.7.2015 Kevään 2015 kurssin luennot, demot, esimerkkiohjelmat / Paavo Nieminen <paavo.j.nieminen@jyu.fi> Yleisiä ohjeita: Muista merkitä vastauspaperiin oma nimesi ja syntymäaikasi sekä kurssin nimi. Lisäksi vastauspaperisi tulee sisältää 48 peräkkäistä numeroitua kohtaa, joissa on joko tehtävässä pyydetty vastaus tai viiva tyhjän vastauksen merkiksi. Mikäli tehtävässä ei mainita poikkeuksista, jokainen oikea vastaus tuo 0.5 pistettä, väärä vastaus 0.5 pistettä ja tyhjä vastaus 0.0 pistettä. Arvosanakaava on ilmoitettu mallitentin yhteydessä; kurssin läpäisy edellyttää tentistä vähintään 12 pistettä. Esimerkkeihin perustuvissa tehtävissä oletetaan, että järjestelmässä ei ole yhtäaikaa muita käyttäjiä, prosesseja, vikoja tai muutakaan, jotka muuttaisivat toimintaa siitä, miltä se esimerkissä suoraviivaisesti näyttää. Moniselitteisiä kysymyksiä ei ole laitettu mukaan tahallisesti. Mikäli jokin tehtävä on vahingossa sellainen, että vastaus ei olekaan yksikäsitteinen, laita vastauspaperiisi tehtävän kohdalle kommentti, jossa kerrot, miksi mielestäsi näin on. Virheellisiksi osoittautuvat kysymykset poistetaan tämän tenttikerran arvostelusta. Numeroidut kysymyskohdat 1 48 1. Väite: Prosessin kaikilla säikeillä on aina sama sisältö kaikissa prosessorin rekistereissä. (A=kyllä; B=ei) Ohje tehtävään 2: Järjestä seuraavat muistikomponentit niiden nopeuden mukaan: A=kovalevy, B=keskusmuisti, C=rekisteri, D=välimuisti. 2. Vastauksessasi on neljä järjestettyä kirjainta: nopein ensin, hitain viimeisenä Tutkittava esimerkki tehtäviin 3 4: Kurssin luennoilta ja demoista tutussa ympäristössä (Linux,bash) tehty yksittäinen, POSIX-syntaksin mukainen komentorivi: arg echo arg grep -v -i "arg echo" arg > echo 3. Montako komentoa rivillä on yhteensä? 4. Montako argumenttia rivillä on yhteensä? Ohje tehtäviin 5 8: Yhdistä lauseen loppua vastaava kirjain numeroituun alkuun siten, että kukin lause on totta. Alkuihin on yksikäsitteinen oikea loppu. Jokainen loppu voi sopia useampaan alkuun tai ei yhteenkään. 5. Prosessielementti (PCB) A. liittyy ensisijaisesti vuoronnukseen. 6. Sivutaulu B. ilmoitetaan prosessorille muistiosoitteiden automaattista 7. Ready-jono 8. Blocked-jono muuntamista varten. C. sisältää kaikki tiedot yksittäisen prosessin tilasta. Ohje tehtävään 9: Yhdistä lauseen loppua vastaavat kirjaimet (vähintään yksi, mutta mahdollisesti useita) lauseenalun perään siten, että muodostuvat lauseet vastaavat todellisuutta. Vastauksessa on oltava listattuna kaikki todellisuutta vastaavat vaihtoehdot. Lauseen alku: 9. Kurssilla käsitelty käyttöjärjestelmän Vaihtoehtoiset loput (mahdollisesti useita sopivia): A. kellokeskeytyksen tulee tapahtua 50, 100 tai 1000 kertaa sekunnissa rajapintastandardi POSIX (vuoden 2008 versio) määrää, että B. järjestelmäkutsu write() tapahtuu sijoittamalla rekisteriin RAX luku 1 ennen syscall-käskyä C. Tiedostovalikko (engl. File) on valikkopalkin vasemmanpuoleisin valikko D. shell-komento c99 käynnistää C99-standardin mukaisen C- kääntäjän sivu 1 (6)

10. Väite: Tyypillisessä nykyprosessorissa (esim. AMD64) on käyttöjärjestelmätilassa (engl. kernel mode) käytettävissä useampia konekielikäskyjä kuin käyttäjätilassa (engl. user mode). (A=kyllä; B=ei) 11. Väite: Microkernel -tyyppinen käyttöjärjestelmä pyrkii suorittamaan palveluita mahdollisimman paljon käyttäjätilassa (engl. user mode). (A=kyllä; B=ei) Ohje tehtäviin 12 15: Yhdistä lauseen loppua vastaava kirjain numeroituun alkuun siten, että kukin lause on totta. Alkuihin on yksikäsitteinen oikea loppu. Jokainen loppu voi sopia useampaan alkuun tai ei yhteenkään. 12. Virtuaalimuistin hallinta (engl. A. määrittelee nimet/osoitteet koneeseen liitetyille laitteille. virtual memory management) 13. I/O -ohjelmisto (engl. I/O subsystem) 14. IPC (engl. inter-process communication) 15. Graafinen tiedostoselain (engl. file B. tarvitaan vain virtuaalikoneeseen asennetussa käyttöjärjestelmässä. C. käsittelee sivukeskeytyksen (engl. page fault). D. tarvitaan bittioperaatioiden, kuten AND ja OR, hoitamiseksi. E. ei ole välttämätön osa nykyaikaista käyttöjärjestelmää. F. toimittaa signaaleja (esim. apuohjelmalla kill lähetettyjä). browser)... Ohje tehtäviin 16 17: Yhdistä lauseen loppua vastaava kirjain numeroituun alkuun siten, että kukin lause on totta. Alkuihin on yksikäsitteinen oikea loppu. Jokainen loppu voi sopia useampaan alkuun tai ei yhteenkään. 16. Laiteriippuva I/O -ohjelmisto A. tarvitaan vain silloin, kun tietokoneessa ei ole bittioperaatioita 17. Laitteistoriippumaton (esim. AND, OR) valmiiksi toteutettuna laitteistotasolla. I/O -ohjelmisto B. kääntää bittioperaatiot (esim. AND, OR) yhden laitteen konekielestä toisen laitteen konekielelle. C. sisältää laiteohjainten ajurit. D. määrittää järjestelmälle yhtenäisen lohkokoon. Ohje tehtäviin 18 21: Yhdistä lauseen loppua vastaava kirjain numeroituun alkuun siten, että kukin lause on totta. Alkuihin on yksikäsitteinen oikea loppu. Jokainen loppu voi sopia useampaan alkuun tai ei yhteenkään. 18. Keskinäinen poissulku (engl. mutual exclusion, MutEx) B. on osa prosessorilaitteiston toimintaa. A. liittyy kilpa-ajotilanteiden (engl. race condition) ratkomiseen. 19. FLIH (first-level interrupt handling) C. on tietoverkkoon liitetyn laitteen osoite. 20. Semafori (semaphore) 21. käskyosoitin (instruction pointer, IP) Ohje tehtävään 22: Yhdistä lauseen loppua vastaavat kirjaimet (vähintään yksi, mutta mahdollisesti useita) lauseenalun perään siten, että muodostuvat lauseet vastaavat todellisuutta. Vastauksessa on oltava listattuna kaikki todellisuutta vastaavat vaihtoehdot. Lauseen alku: Vaihtoehtoiset loput (mahdollisesti useita sopivia): 22. Prosessorin keskeytys A. toimii vain moniydinprosessorissa. B. voi aiheutua käyttäjätilassa toimivan prosessin toimenpiteiden johdosta. C. voi aiheutua ulkoisen laitteen toiminnon johdosta. D. voidaan estää sovellusohjelmassa käyttämällä synkronointia. sivu 2 (6)

Tutkittava esimerkki tehtäviin 23 24: Kurssin luennoilta ja demoista tutussa ympäristössä (Linux,bash) tehtyjä tuttuja komentoja ja niiden tulosteita (merkistökoodaus on UTF-8): [nieminen@halava esimerkki]$ whoami nieminen [nieminen@halava esimerkki]$ ls -la total 600 drwx------. 2 nieminen nobody 1024 May 19 11:18. drwx------. 9 nieminen nobody 1024 May 19 11:16.. -rwxr--r--. 1 nieminen nobody 586405 May 19 11:20 kayttojarjestelmat.tex [nieminen@halava esimerkki]$ echo Heippa >> kayttojarjestelmat.tex [nieminen@halava esimerkki]$ 23. Väite: komentojen jälkeen tiedoston kayttojarjestelmat.tex pituus on pienempi kuin 586405 tavua. (A=kyllä; B=ei) 24. Väite: komentojen jälkeen annettava komento echo./kayttojarjestelmat.tex tulostaisi konsoliin "Heippa" (A=kyllä; B=ei) 25. Väite: P.J. Denningin ym. 1970-luvulla kehittelemä lokaalisuusperiaate (engl. principle of locality) on pohjana mm. nykyisen POSIXin kieliasetusten määrittelylle. (A=kyllä; B=ei) 26. Väite: Kurssilta tutun x86_64 linux-abin mukaan C-kielisen aliohjelmakutsun parametrit ja paikalliset muuttujat sijaitsevat prosessin koodialueella (engl. code segment). (A=kyllä; B=ei) 27. Väite: Kekoaluetta käytetään dynaamisesti luotavien tietorakenteiden/olioiden säilyttämiseen. (A=kyllä; B=ei) 28. Väite: Tällä kurssilla esitelty semafori on tietorakenne, joka sisältää kokonaisluvun ja jonon prosesseja tai säikeitä. (A=kyllä; B=ei) 29. Väite: Tällä kurssilla esitellyssä semaforikutsussa wait() semaforin arvo muuttuu aina. (A=kyllä; B=ei) Tutkittava esimerkki tehtäviin 30 32: luentoesimerkeistä tuttua C-kielistä ohjelmanpätkää muistuttava koodi (POSIXin pthread-kirjastoa hyödyntävä; mahdollisesti rikottu jollain selkeällä tavalla tai sitten ei) #define N 1000 pthread_mutex_t mymutex = PTHREAD_MUTEX_INITIALIZER; uint64_t summa = 0; void * saikeen_koodi(void *v) { int i; for (i = 1; i <= N; i++){ pthread_mutex_lock(&mymutex); summa++; pthread_mutex_unlock(&mymutex); return NULL; int main(int argc, char *argv[]) { pthread_t saiea, saieb; pthread_create(&saiea, NULL, saikeen_koodi, NULL); pthread_create(&saieb, NULL, saikeen_koodi, NULL); pthread_join(saiea, NULL); pthread_join(saieb, NULL); if (summa==2000){ return 0; // homma toimi else { return 1; // homma ei toiminut 30. Väite: Esimerkin main() palauttaa aina 0:n, mikäli sen suoritus ylipäätään onnistuu loppuun saakka ilman esteitä ja kaikki sen sisältämät aliohjelmakutsut onnistuvat ilman virhekoodia (A=kyllä; B=ei) sivu 3 (6)

31. Väite: Esimerkissä on periaatteessa mahdollista tilanne, jossa säikeessä A muuttuja i==123 ja säikeessä B muuttuja i==456 samaan aikaan. (A=kyllä; B=ei) 32. Väite: Esimerkin ohjelma voi aiheuttaa lukkiutumistilanteen (engl. deadlock), vaikka sen aliohjelmakutsut onnistuisivat ilman ongelmia (A=kyllä; B=ei) Tutkittava esimerkki tehtäviin 33 34: C-mäisenä pseudokoodina tehty ehdotus rengaspuskuria käyttävän Kuluttaja-tuottaja -ongelman ratkaisemiseksi semaforipalvelua käyttäen. Yhteistä muistia käytetään vain puskurioperaatioissa. tuottaja(){ while(true) { // tuotetaan loputtomiin tuota(); // tehdään yksi datapätkä wait(empty); wait(mutex); siirra_puskuriin(); signal(mutex); signal(full); kuluttaja(){ while(true) { // kulutetaan loputtomiin wait(full); wait(mutex); lue_puskurista(); signal(mutex); signal(empty); kuluta(); // käytetään yksi datapätkä main(){ EMPTY=tee_semafori( 0 ); FULL=tee_semafori( 0 ); MUTEX=tee_semafori( 1 ); kaynnista_saie(tuottaja); kaynnista_saie(kuluttaja); 33. Väite: Esitetty koodi ratkaisee kuluttaja-tuottaja -ongelman oikeellisesti (A=kyllä; B=ei) 34. [Edellinen kohta on poikkeuksellisesti 1.0p arvoinen; tämä kohta jää tyhjäksi] Tutkittava esimerkki tehtäviin 35 37: luennolla ja monisteessa esitetyn kaltainen minimalistinen shellohjelma (kommentit poistettu, rivit numeroitu, näytetty vain olennainen toimintopätkä, mahdollisesti rikottu jollain selkeällä tavalla tai sitten ei): 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 sivu 4 (6)

35. Väite: Rivi 5 tapahtuu fork() -kutsun luomassa lapsiprosessissa. (A=kyllä; B=ei) 36. Väite: Rivin 8 suorittaminen lopettaa koko minimalistisen shellin suorituksen. (A=kyllä; B=ei) 37. Väite: Rivin 12 suorittaminen lopettaa koko minimalistisen shellin suorituksen. (A=kyllä; B=ei) Tutkittava esimerkki tehtäviin 38 41: Kuvitellaan, että meillä on käytössä yksinkertainen tietokone, jonka muistiosoitteissa on 20 bittiä, joista ensimmäiset 8 ilmoittavat sivunumeron ja loput 12 ilmoittavat tavuindeksin sivun sisällä. Keskusmuistiin mahtuu vain 8 sivua prosessien käytössä olevaa muistia. Käyttöjärjestelmän täytyy heittovaihtaa loput kovalevylle. Tietorakenteiden tilanne tarkasteluhetkellä on seuraava. Prosessin (PID=2) sivutaulu: rivi# virt. fyys. muist. dirty diskindex sivu sivu 0 0x02 0x01 1 0 0x0010 1 0x03 0x05 0 0 0x0022 2 0x7f 0x06 1 1 0x00bc Prosessin (PID=7) sivutaulu: rivi# virt. fyys. muist. dirty diskindex sivu sivu 0 0x02 0x03 0 0 0x0004 1 0x03 0x05 1 0 0x0008 2 0x04 0x02 0 0 0x00f2 3 0x2e 0x07 1 1 0x006c 4 0x7f 0x04 1 1 0x0007 Järjestelmän kehystaulu: fyys. omistajan omistajan aikayksiköt edellisen sivu PID rivi# käyttökerran jälkeen 0x01 2 0 2 0x02 234 9 12 0x03 567 6 5 0x04 7 4 19 0x05 7 1 177 0x06 2 2 155 0x07 7 3 12 0x08 876 1 4 38. Mihin fyysiseen muistiosoitteeseen kohdistuisi prosessin 2 tekemä kirjoitus virtuaalimuistiosoitteeseen 0x7f7f7? 39. Mihin fyysiseen muistiosoitteeseen kohdistuisi prosessin 7 tekemä luku virtuaalimuistiosoitteesta 0x7f7f7? 40. Prosessi 2 suorittaa hyppykäskyn aliohjelmaan muistiosoitteessa 0x02345. Tapahtuuko prosessorissa sivunvaihtokeskeytys? (A=kyllä; B=ei) 41. Prosessissa 7 aiheutuu sivunvaihtokeskeytys. Korvausalgoritmi on LRU. Onko jonkin sivun sisältö tallennettava levylle? (A=kyllä; B=ei) Tutkittava esimerkki tehtäviin 42 44: Kurssin luennoilta tutulla symbolisella konekielellä (GNU assembler) kirjoitettu, rivi riviltä kommentoitu ohjelmanpätkä: sivu 5 (6)

_start: silimu: movq $3,%rcx # luku 3 rekisteriin RCX movq $5,%rdi # luku 5 rekisteriin RDI inc %rdi # lisää 1 rekisterin RDI arvoon dec %rcx # vähennä 1 rekisterin RCX arvosta jz ulos # hyppää, jos edellisen käskyn tulos oli 0 jmp silimu # hyppää aina ulos: dec %rdi # vähennä 1 rekisterin RDI arvosta 42. Kuinka monta konekielikäskyä ohjelmanpätkän jälki sisältää, ts. kuinka monta käskyä sen suorittaminen alusta loppuun vaatii? 43. Mikä on rekisterin RCX sisältö ohjelmanpätkän suorituksen lopuksi? 44. Mikä on rekisterin RDI sisältö ohjelmanpätkän suorituksen lopuksi? 45. Väite: Unixin i-solmuihin (engl. inode) perustuvassa tiedostojärjestelmässä tiedoston nimi sisältyy tiedoston i-solmuun. (A=kyllä; B=ei) 46. Väite: Unixin i-solmuihin (engl. inode) perustuvassa tiedostojärjestelmässä tieto tiedoston pituudesta sisältyy tiedoston i-solmuun. (A=kyllä; B=ei) Tutkittava esimerkki tehtäviin 47 48: Kurssin esimerkeistä tuttua Linuxille käännettyä C-ohjelmaa ajetaan x86-64 -arkkitehtuurilla, ja debuggerilla on nähtävissä seuraavat hetkelliset tiedot Rekistereitä: RIP (käsky) 0x0000000000400504 RSP (huippu) 0x00007fffffffdcc0 RBP (kanta) 0x00007fffffffdcf0 Muistin sisältöä (kaikki muuttujat 64-bittisiä eli 8-tavuisia): 0x7fffffffdd08: 0x0000000100000000 0x7fffffffdd00: 0x00007fffffffde38 0x7fffffffdcf8: 0x0000000000400647 kanta --> 0x7fffffffdcf0: 0x00007fffffffdd50 0x7fffffffdce8: 0x0000000000000001 0x7fffffffdce0: 0x0000000000000000 0x7fffffffdcd8: 0x0000000000000000 0x7fffffffdcd0: 0x0000000000000000 0x7fffffffdcc8: 0x0000000000000000 huippu --> 0x7fffffffdcc0: 0x0000000000000000 47. Mikä on kutsupinossa nykyistä aktivaatiota edeltävän aktivaation pinokehyksen kannan osoite? Ilmoita heksalukuna. 48. Mikä tulee olemaan RSP-rekisterin sisältö siinä vaiheessa, kun tämä meneillään oleva aliohjelmaaktivaatio on jossain vaiheessa loppumassa ja siihen sisältyvä käsky ret on juuri tulossa suoritukseen. Vapaaehtoinen vapaa sana Halutessasi voit antaa loppuun palautetta tai kommentoida muuten kurssia tai tenttiä. Vastauksen muoto on vapaa, eikä se vaikuta arvosteluun. sivu 6 (6)