Harjoitukset
Tietokoneen toiminta, HT 5
- Aliohjelmat, makrot, literaalit, muuttujat, vakiot
- Anna esimerkki tilanteesta, jossa rutiini XYZ olisi parempi toteuttaa
makrona kuin aliohjelmana. Perustelut? Esimerkki?
- Anna esimerkki tilanteesta, jossa rutiini XYZ olisi parempi toteuttaa
aliohjelmana kuin makrona. Perustelut? Esimerkki?
- Anna esimerkki tilanteesta, jossa on parempi toteuttaa lukuarvo X literaalina
kuin vakiona käskyssä? Perustelut? Esimerkki?
- Anna esimerkki tilanteesta, jossa on parempi toteuttaa lukuarvo X vakiona
käskyssä kuin literaalina? Perustelut? Esimerkki?
- Miten literaalin käyttö eroaa muuttujan käytöstä? Edut? Haitat?
- Miten literaalin käyttö eroaa käskyn vakio-osan käytöstä? Edut? Haitat?
- Parametrit
- Anna esimerkki tilanteesta, jossa parametrin voi välittää sekä arvo- että viiteparametrina.
- Anna esimerkki tilanteesta, jossa parametri on järkevää välittää arvo- mutta ei viiteparametrina.
- Anna kaksi luonteeltaan erilaista esimerkkiä tilanteesta, jossa parametri on pakko välittää viiteparametrina. Miksi arvoparametriä ei voi käyttää tässä?
- Miksi makroissa on hyvä käyttää nimiparametreja mutta ei arvo- tai viiteparametreja?
- Miksi korkean tason kielissä (esim. Java tai C) ei yleensä ole nimiparametreja?
- Oletetaan, että levyn pyörimisnopeus on 7200 rpm, siinä on yksi luku/kirjoituspää
per levypinta, sylintereiden (uraa per levypinta) lukumäärä on 2000, joka
uralla on 50 sektoria ja sektorin koko on 0.5 KB. Otaksumme (epärealistisesti),
että hakuvarren siirtoaika on lineaarinen urien lukumäärän suhteen ja että
se on 0.02 ms per ura. Otaksumme (epärealistisesti), että luettavan tiedoston
jokaisen sektorin sijainti on täysin satunnainen levyllä, mistä saadaan todennäköisyyslaskentaa
käyttäen keskimääräiseksi ylitettävien urien lukumääräksi 667. Otaksumme edelleen
(epärealistisesti), että tiedosto luetaan levyltä yksi sektori kerrallaan.
Kauanko kestää 333.33 KB tiedoston lukeminen levyltä keskimäärin? Entä 24
MB tiedoston lukeminen?
- Linkitys.
- Miten Tanenbaumin kirjan [Tane06] kuva
7-15 (b) muuttuisi, jos moduulit linkitettäisiinkin (alhaalta ylöspäin)
järjestyksessä ACDB kuvassa 7-15 käytetyn järjestyksen ABCD asemesta?
Huomaa, että kuvassa 7-15 osoitteet kasvavat ylöspäin. Moduulit on
esitelty kuvassa 7-14.
- Mitä kaikkea tulisi moduuleissa A, B, C ja D muuttaa,
jos moduulista B otetaan käyttöön päivitetty versio?
Voiko päivityksen tehdä kyseisen ohjelman suorituksen ollessa kesken? Miksi?
- Muistiinkuvattu I/O. Esimerkissä driver.k91
on kuvattu laiteajuri suoraa I/O toteutusta käyttäen.
- Miten laiteajuri tietää, että laite on tulostanut annetun luvun?
- Mitä laiteajuri tekee sillä aikaa kun laite on tulostamassa lukua?
Kauanko tähän voi kulua aikaa?
- Miten laite (laiteohjain) kertoo laiteajurille, että laitteelle annettu tehtävä on suoritettu?
- Miten varsinainen (laiteajuria kutsunut) sovellusohjelma saa tietää, että laitteelle annettu tehtävä on suoritettu?
- Kuinka k.o. laiteajuria tulisi muuttaa, jos tulostus tehtäisiinkin epäsuoraa I/O:tä käyttäen? Tarkoitus ei ole antaa tarkkaa vastausta koodattuna, vaan kertoa pääpiirteissään, mitä kaikkea esimerkin ajurissa tulisi muuttaa, jos haluttaisiin käyttää epäsuoraa I/O:ta.
Mitä etu/haittaa tästä olisi? Tuleeko tästä mitään muutoksia tulostinlaitteiston (laiteohjaimen) vaatimuksiin?
- Tee tason D TitoTrainer tehtävät d-200, d-300, d-310 ja d-400.
Teemu Kerola