Osa 1: Järjestelmän rakenne sekä suoritin ja väylä Flashcards

Kysymyksiä liittyen Helsingin yliopiston Tietokoneen toiminta -kurssin luentoihin 1 ja 5

1
Q

Mitkä ovat käskysyklin (käskyjen nouto- ja suoritussyklin) eri vaiheet?

A

Aloitus (alussa paikanlaskuri PC = 0)

Toistetaan seuraavaa:

  • käskyn nouto ja PC=PC+1
  • käskyn purku osiin ja tarvittaessa toisen operandin nouto
  • käskyn suoritus
  • keskeytysten tarkistus

HALT eli lopetus

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Mitä käskysyklin eri vaiheissa tapahtuu?

A

ALOITUS: suoritin (prosessori, processor) aloittaa toiminnan.

Syklissä toistettavat vaiheet:

  • KÄSKYN NOUTO: noudetaan seuraava käskyn Program Counterin osoittamasta muistipaikasta käskyrekisteriin (IR) ja kasvatetaan PC:n arvoa yhdellä.
  • KÄSKYN PURKU osiin: operaatiokoodi, “vasen” rekisteri, osoitusmoodi, indeksirekisteri ja vakio-/osoiteosa, indeksirekisterin arvon ja vakio-osan yhteenlasku ja tarvittaessa toisen operandin nouto muistista 1 tai 2 kertaa TR:ään (Temporary Register, apurekisteri)
  • KÄSKYN SUORITUS: suoritetaan käskyrekisterissä (IR) oleva konekäsky. Tämä saattaa muuttaa PC:n arvoa esim. hyppykäskyssä.
  • KESKEYTYSTEN TARKISTUS: suoritin tarkistaa tilarekisteristä (SR, State Register), onko keskeytyksiä tullut. Jos on tullut, suorituksessa olevan prosessin tiedot (ainakin PC, SR, rekisterit R0-R7 ja BASE sekä LIMIT) talletetaan jonnekin (esim. muistissa sijaitsevaan prosessien tietoja ylläpitävään tietueeseen). PC:n arvoksi muutetaan kyseisen keskeytyksen keskeytyskäsittelijän osoite.

LOPETUS: (HALT) eli prosessin suorittaminen lopetetaan.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Minne kaikkialle suorittimella ja koko järjestelmässä yksittäinen konekäsky voi aiheuttaa tilanmuutoksia? Missä käskysyklin vaiheessa muutokset tapahtuvat?

A

Esimerkiksi käyttörekistereihin, ohjelmalaskuriin (PC, Program Counter), tilarekisteriin (SR, State Register) ja muistiin:

Rekistereihin joita voi muuttaa käskyllä, esim. TTK-91:ssä R0-R7: käskyn suoritusvaiheessa. Esimerkki: LOAD R1, =42

Program Counter (PC, ohjelmalaskuri):

  • käskyn suoritusvaiheessa. Esim JUMP 77 -käsky asettaa PC:n arvoksi 77.
  • noutovaiheessa PC=PC+1

Tilarekisteri (SR, State Register):

  • missä vaiheessa vain koskien osaa keskeytysbittejä
  • käskyn suoritusvaiheessa esim. vertailubitit Greater, Equal ja Less konekäskyllä COMP R2, =7
  • käskyn suoritusvaiheessa osa keskeytysbiteistä, esim. nollalla jaon yrittäminen muuttaa tilarekisterin tilaa.

Keskusmuisti: suoritusvaiheessa, esim. käsky joka tallettaa muistiin.

On myös muita tilanmuutoksia, esimerkiksi MAR ja MBR -rekisterit muuttuvat konekäskyä noudettaessa ja voivat muuttua käskyä suorittaessa,

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Mitä etuoikeutetussa tilassa voi tehdä mutta käyttäjätilassa ei?

A

Etuoikeutetussa tilassa (privileged / supervisor / kernel mode) eli käyttöjärjestelmätilassa voi:

  1. viitata kaikkialle muistiin
  2. suorittaa kaikkia konekäskyjä

Esimerkiksi käsky IRET (Interrupt return) on mahdollista suorittaa vain etuoikeutetussa tilassa.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Miksi prosessorilla kannattaa olla erikseen etuoikeutettu tila ja käyttäjätila?

A

Kaksi tilaa mahdollistavat sen, että voidaan tehdä luotettavia käyttöjärjestelmiä.
Jos kaikki prosessit (ohjelmat) pääsisivät lukemaan ja muokkaamaan muistia, kaikkia rekistereitä ja käyttämään kaikkia konekäskyjä, tietoturvasta ei voisi huolehtia, ja joku ohjelma voisi esimerkiksi tyhjentää koko koneen muistin.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Milloin ja miten suorittimen suoritustila voi muuttua käyttäjätilasta etuoikeutettuun tilaan?

A

Keskeytyskäsittelijään siirryttäessä ja kun kutsutaan käyttöjärjestelmän rutiinia SuperVisor Callilla (SVC).

  1. Keskeytyskäsittelijät toimivat etuoikeutetussa tilassa, joten kun järjestelmässä havaitaan tarve keskeytykselle, laitteisto muuttaa suorittimen tilan etuoikeutetuksi samalla kun se siirtää kontrollin keskeytyskäsittelijälle.
  2. Kun kutsutaan käyttöjärjestelmän rutiinia (ohjelmaa) tekemään jotain, esimerkiksi kirjoittamaan näytölle (SVC SP, =CRT), laitteisto muuttaa tilan etuoikeutetuksi käyttöjärjestelmän rutiinin suoritusta varten. Käyttäjätilassa ei voi kutsua kaikkia käyttöjärjestelmän rutiineja, joten laitteisto kuitenkin tarkistaa ensin saako rutiinia kutsua.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Miten etuoikeutetusta tilasta pääsee takaisin käyttäjätilaan?

A

Käyttämällä etuoikeutettua konekäskyä joka palauttaa tilan takaisin keskeytystä edeltävään suoritustilaan kuten IRET (Interrupt RETurn) tai vastaava. Joissakin järjestelmissä on myös käsky SVCR (SuperVisorCall Return).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Määrittele käsite keskeytys (poikkeus, interrupt, exception, fault).

A

Keskeytys on ennalta määritelty tilanne, joka voi sattua milloin tahansa, “yllättäen”, ja joka vaatii erityisen käsittelyn. Esimerkiksi nollalla jako tai I/O-laitteen antama signaali työn valmistumisesta.

Tällöin suorituksessa olevan ohjelman suoritus keskeytetään ja suoritin alkaa suorittaa keskeytyksen käsittelyä varten käyttöjärjestelmään ohjelmoitua aliohjelmaa ennalta määritetystä muistiosoitteesta.

Käyttöjärjestelmät tehdään niin, että kaikkiin keskeytyksiin ja vikatilanteisiin on varauduttu.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Missä keskeytykset käsitellään?

A

Keskeytyksien käsittelyä varten on käyttöjärjestelmään ohjelmoitu keskeytyskäsittelijöiksi kutsutut aliohjelmat.

Keskeytyskäsittelijä tekee tarvittavat toimenpiteet ja lopuksi palaa takaisin suorittamaan keskeytynyttä ohjelmaa (ellei sitä esimerkiksi lopeteta virheen takia).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Mitä eri keskeytystyyppejä on olemassa?

A
  1. Käskyn aiheuttamat virhetilanteet
  2. Käskyn aiheuttamat muut poikkeustilanteet
  3. Suorittimen ulkopuolelta tulevat signaalit.

Tarkemmin:

1. Käskyn aiheuttamat virhetilanteet
Esimerkiksi:
- Nollalla jako
- Kokonaisluvun ylivuoto
- Tuntematon käsky
- Liukuluvun ylivuoto tai alivuoto
  1. Käskyn aiheuttamat muut poikkeustilanteet (ei siis virheet)
    Esimerkiksi:
    - SVC (SuperVisor Call), esim. SVC SP, =HALT
    - I/O -konekäsky kuten IN R1, =KBD
    - Käyttäjän määrittelemä poikkeus (esim. laitteistotuki Javan try/catch -operaatiolle)
  2. Ulkoapäin suorittimelle tulevat signaalit
    Esimerkiksi:
    - Kellolaitekeskeytys (ajastin, timer), esim. 10 ms välein käyttöjärjestelmä saa suoritusvuoron
    - Laitekeskeytys, I/O -keskeytys: I/O -laite, vaikkapa kovalevy, lähettää signaalin että se on tehnyt työnsä
    - Laitteistovirhe
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Mainitse 3 konekäskyn aiheuttamaa virhetilannetta.

A

Käskyn aiheuttamia virhetilanteita:

  • Nollalla jako
  • Kokonaisluvun ylivuoto
  • Tuntematon käsky
  • Liukuluvun ylivuoto tai alivuoto
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Mainitse 3 konekäskyn aiheuttamaa keskeytystä vaativaa tilannetta, jotka eivät ole virhetilanteita

A

Käskyn aiheuttamia muita poikkeustilanteita:

  • SVC (SuperVisor Call), esim. SVC SP, =HALT
  • I/O -konekäsky kuten IN R1, =KBD
  • Käyttäjän määrittelemä (esim. laitteistotuki Javan try/catch -operaatiolle)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Milloin tapahtuu kokonaisluvun ylivuoto?

A

Kokonaisluvun ylivuoto tapahtuu, jos tehdään laskutoimitus, jonka lopputulos ei mahdu rekisteriin.

Yksinkertainen esimerkki:
Oletetaan että laitteistossa on 8-bittinen rekisteri joka tallettaa vain ei-negatiivisia lukuja. Lisätään lukuun 255 eli 11111111 luku 1. Lopputulos olisi 1 0000 0000 eli 256, mutta koska rekisteri on vain 8-bittinen ja vastaus 9-bittinen, tapahtuu kokonaisluvun ylivuoto. Rekisterissä olisi nyt luku 0. Väärää lukua ei kuitenkaan siirretä rekisteriin, vaan sen sijaan käskyn suoritus keskeytyy ja laitteisto asettaa tilarekisterin ylivuotoa merkitsevät bitin (O, Overflow) päälle.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Miten laitteisto tietää, että on tapahtunut keskeytyskäsittelyä vaativa tilanne?

A

Tilarekisterissä (SR, State Register) on bitti jokaista keskeytystä varten.

Laitteisto tarkastaa nämä bitit aina käskyn suorituksen jälkeen, ennen uuden käskyn noutoa.

Poikkeus: laitteisto ei tarkasta keskeytyksiä jos keskeytykset on estetty. Laitteisto näkee tämän tilarekisterin bitistä D (Disable interrupts).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Milloin laitteisto tarkastaa onko tapahtunut keskeytyskäsittelyä vaativa tilanne?

A

Laitteisto tarkastaa keskeytykset käskyn suorituksen jälkeen, ennen uuden käskyn noutoa.

(Poikkeus: laitteisto ei tarkasta keskeytyksiä jos keskeytykset on estetty. Laitteisto näkee tämän tilarekisterin bitistä D (Disable interrupts).)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Suoritettava konekäsky lataa rekisteriin R1 arvon 42.
Missä kaikkialla järjestelmässä luku 42 voi kyseisen käskyn suoritusaikana sijaita?
Miten sijainnit ilmenevät konekäskyssä?

A

Suoritettava konekäsky lataa rekisteriin R1 arvon 42. Tällöin luku 42 voi sijaita järjestelmässä kyseisen käskyn suoritusaikana varsin monessa paikassa.

  1. Toisessa rekisterissä, jossa on arvo 42. Esim. jos rekisterissä R4 on arvo 42, niin konekäsky LOAD R1, R4 lataa rekisteriin R1 luvun 42. Sijainti ilmenee siis konekäskyssä siitä että rekisteri on merkitty käskyyn.
  2. Tilapäisrekisterissä (TR, Temporary Register), kun luku 42 on konekäskyn vakio-osassa: LOAD R1, =42
  3. Keskusmuistissa, kun suoritettavan konekäskyn muistinoutoja ei ole vielä tehty.

Ennen käskyn suoritusta luku 42 noudetaan työrekisteriin, mutta käskyn nouto- ja purkuvaiheen alkupuolella luku 42 on vielä muistissa.

Sijainti ohjelman muistialueen näkökulmasta näkyy konekäskyn vakio-/osoiteosasta. Esimerkki: kun ohjelman muistialueen muistipaikassa 200 on luku 42, niin käsky LOAD R1, 200 lataa rekisteriin R1 arvon 42.

  1. Välimuistissa. Tällöin konekäsky on samanlainen kuin muistista haettaessa. Konekäskystä siis ei näe haetaanko muistista vai välimuistista.
  2. Lisäksi luku voi sijaita ainakin muistiväylällä, suorittimen sisäisellä väylällä, muistipuskurirekisterissä (MBR, Memory Buffer Register) ja käskyrekisterissä. Näitä sijainteja ei voi nähdä konekäskystä.
17
Q

Mitä ovat kanta- ja rajarekisterit?

A

Kantarekisteriin (BASE) on asetettu suorituksessa olevan prosessin (ohjelman) muistialueen ensimmäisen käskyn fyysisen muistin osoite.
Rajarekisteriin (LIMIT) on asetettu samaiselle prosessille varatun muistialueen koko.

Esimerkki: Prosessille on varattu muistialue fyysisestä muistista alueelle 1000 - 2999. Tällöin sen kantarekisterin (BASE) arvo on 1000 ja rajarekisterin (LIMIT) arvo on 2000.

18
Q

Oletetaan että suorituksessa oleva ohjelma on talletettu muistialueelle 5000 - 15999.
Mitkä ovat kanta- ja rajarekisterien BASE ja LIMIT arvot?

A

Varattu muistialue on 5000 - 15999, joten:

BASE = 5000 eli ohjelmalle varatun muistialueen ensimmäisen muistipaikan kohta fyysisessä muistissa.

LIMIT = 15999 - 5000 + 1 = 11000 eli ohjelmalle varatun muistialueen koko.

LIMIT-rekisteristä: vertaa tätä esimerkiksi taulukon kokoon tavallisissa ohjelmointikielissä. Jos taulukon koko on 11000, niin siinä on indeksit 0 … 10999.

19
Q

Kuka tai mikä asettaa rekisterien BASE ja LIMIT arvot?

A

Käyttöjärjestelmä määrittää ja asettaa kunkin ohjelman muistialueen ja siten asettaa BASE ja LIMIT -rekisterien arvot.

20
Q

Mitä hyötyä on rajarekisterien BASE ja LIMIT käytöstä?

A

Rajarekisterien käytön hyötyjä:

  • Ohjelman ei tarvitse itse tietää missä päin fyysistä muistia sitä kulloinkin suoritetaan. Esimerkiksi JUMP 100 -käsky hyppää suorittamaan aina oikeaan kohtaan koodia, riippumatta mihin kohtaan muistia ohjelma on sijoitettu.
  • Käyttöjärjestelmä voi siirtää ohjelman toiseen kohtaan muistia, jos kokee sen tarpeelliseksi, ja muuttaa BASE- rekisterin arvon vastaavasti.
  • Jos ohjelmassa yritetään vahingossa tai tarkoituksella lukea tai kirjoittaa tai hypätä muistipaikkaan joka on näiden rajojen ulkopuolella, se ei onnistu, sillä muistinhallintayksikkö (MMU, Memory Management Unit) tarkastaa näistä rekistereistä ettei se ole sallittua. Hyötynä tästä on siten se, että ohjelmat eivät voi lukea ja muuttaa toisten ohjelmien tietoja tai koodia.
21
Q

Oletetaan että ohjelmalle on varattu muistialue 2000 - 6999. Mitkä ovat BASE ja LIMIT -rekisterien arvot?

A

Muistialue on 2000 - 6999, joten ohjelma on sijoitettu fyysisessä muistissa alkamaan osoitteesta 2000 ja päättymään osoitteeseen 6999. Tämän muistialueen koko on 6999 - 2000 + 1 = 5000. Joten:

BASE = 2000
LIMIT = 5000
22
Q

Oletetaan että BASE = 2000 ja LIMIT = 10999. Miten muistiin (fyysiseen muistiin) viittaaminen tapahtuu rajarekistereitä käyttäen, kun suoritetaan käskyä
LOAD R1, 2019.
Kyseinen käsky siis lukee rekisteriin R1 arvon muistipaikasta 2019.

A

BASE = 2000,
LIMIT = 10999.
Käsky on LOAD R1, 2019.

Fyysisen muistin osoite on tällöin BASE + 2019 = 2000 + 2019 = 4019.

Siispä rekisteriin R1 ladataan arvo, joka on fyysisessä muistissa osoitteessa 4019.