Harjoitukset

Tietokoneen toiminta, Itseopiskelukurssi, HT 4

  1. Hamming koodi.
    1. Näytä, miten virheenkorjaava Hamming koodi havaitsee ja korjaa virheen kun 7-bittisessä datassa "011 0100" kolmas bitti vasemmalta lukien muuttuu virheelliseksi dataksi: "010 0100".
      Näissä 7 bitissä on mukana sekä varsinainen data että tarkistusbitit.
    2. Montako piuhaa (johdinta, bittiä) tarvitaan 32-bittisen data-väylän turvaamiseksi virheenkorjaavaa Hamming-koodia käyttäen?
      (Haluamme siis pystyä kerralla siirtämään 32 bittiä todellista dataa tarkistusbittien lisäksi)
    3. Miksi Hamming-koodin käyttö ei ole hyvä ratkaisu paikallisverkkojen tiedonsiirron turvaamiseen?
       
  2. Oletetaan, että TTK-91 -koneelle on tehty käyttöjärjestelmä. Käyttöjärjestelmään kuuluu yhtenä osa-alueena prosessien hallinta. Oletetaan, että kellolaitekeskeytyksen takia ollaan päädytty tilanteeseen, jossa suoritusvuorossa olevaa prosessia vaihdetaan.
    1. Miten ja mihin aikaisemmin suorituksessa olleen prosessin tiedot talletetaan? Mitkä tiedot täytyy ottaa talteen?
    2. Miten ja mistä uuden prosessin tiedot saadaan suorittimelle? Mistä käskystä uuden prosessin suoritus alkaa? Miten suoritusvuoro vaihtuu uudelle prosessille?
    3. Mikä on suorittimen tila (käyttäjä, etuoikeutettu) alkaen juuri ennen kellolaitekeskeytyshetkeä siihen asti kun uuden prosessin ensimmäisen käsky suoritetaan?
       
  3. Konekäskyn osoiteosa. Ttk-91 koneen konekäskyn osoiteosa on vain 16-bittinen. Tämä asettaa rajoituksia käskyssä olevien vakioiden koolle.
    1. Mikä on suurin positiivinen luku, joka voidaan esittää käskyssä vakiona? Miten tulee toimia, jos tarvitaankin suurempaa vakiota? Esimerkiksi lukua 6543210?
    2. Mikä on pienin negatiivinen luku, joka voidaan esittää käskyssä vakiona?
    3. Entä miten tulisi menetellä, jos tarvitaan suurta vakiota indeksoidun osoitusmoodin kanssa? Esimerkiksi, jos halutaan lukea data osoitteesta (R1)+666666?
    4. Mitä hyötyä/haittaa on siitä, että konekäskyn osoiteosa on (vain) 16-bittinen?
    5. Kuka päättää, missä C-kielisessä olevassa ohjelmassa oleva vakio (esim. luku 7 lauseessa X += 7; ) sijoitetaan suoritusaikana? Mitä etua/haittaa tästä on?
    6. Mitä hyötyä/haittaa on varata jokin rekisteri koko ajan tarvittavaa vakiota (esim. luku 1) varten?
    7. Mitä hyötyä/haittaa on tallettaa usein tarvittavaa vakio (esim. luku 1) literaalialueelle (data-alueelle)?

  4.  
  5. Prosessin tilat. Luennolla 8 [Stal10 tai Stal06, Ch 8.2] esitettiin prosessin elinkaarimalli, jossa prosessilla on 5 erilaista tilaa. Anna kullekin allaolevalle tilanteelle luonteeltaan kaksi (2) erilaista esimerkkiä. Mainitse myös, kuka (mikä prosessi) aiheutti tilasiirtymän ja mitä tilanmuutoksessa tapahtuu käyttöjärjestelmän tietorakenteissa?
    1. Prosessi P siirtyy "luonti" tilasta "odottaa" tilaan.
    2. Prosessi P siirtyy "suorituksessa" tilasta "odottaa" tilaan.
    3. Prosessi P siirtyy "valmis suoritukseen" tilasta "suorituksessa" tilaan.
    4. Prosessi P siirtyy "suorituksessa" tilasta "valmis suoritukseen" tilaan.
    5. Prosessi P siirtyy "valmistunut tai tapettu" tilaan.
       
  6. Prosessi ja I/O
    1. Mitä tapahtuu, jos Ready-to-Run jono on tyhjä?
    2. Voiko samasta ohjelmasta olla monta prosessia yhtä aikaa Ready-to-Run jonossa? Miten tai miksi ei?
    3. Tarvitseeko odotustilassa oleva prosessi lainkaan muistia? Miksi?
    4. Voiko odotustilassa olevan prosessin tietoja siirtää levylle? Mitä etua/haittaa tästä olisi?
    5. Voiko tietokoneen toteuttaa ilman prosesseja? Mitä tästä seuraisi?
    6. Mitkä kaikki prosessit osallistuvat tavallisen levy-I/O:n toteutukseen? Missä tilassa ne suorittavat koodia?

  7. Tämän viikon TitoTrainer tehtävät, ainakin tehtävät c-100, c200, c-210 ja c-420.