mk1 Flashcards

(25 cards)

1
Q

Moniytimisessä järjestelmässä prosessilla P on 8 käyttäjätason säiettä (ULT, user level threads).
Kuinka monta niistä voi olla suorituksessa samanaikaisesti yhden suorittimen 4-ytimisessä järjestelmässä?
Perustele

A

Vain yksi, koska käyttöjärjestelmä varaa prosessille vain yhden ytimen. Käyttöjärjestelmä ei tiedä
mitään käyttäjätason säikeiden olemassaolosta.

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

Mitä hyötyä on toteuttaa ongelmanratkaisu käyttäjätason säikeillä ytimen tason säikeiden (kernel level
threads) asemesta?

A

Säikeiden vuoronvaihdon voi toteuttaa haluamallaan tavalla säiekirjastossa.
Säikeille voi antaa omia prioriteetteja.
Monisäikeinen sovellus on helppo siirtää ympäristöstä toiseen.
Käyttöjärjestelmän ei tarvitse olla tietoinen sovelluksen monisäikeisyydestä

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

Mikä ongelma liittyy käyttäjätason säikeisiin ja I/O:n suorittamiseen?

A

) I/O-pyynnön yhteydessä I/O:ta pyytävä säie blokkautuu. Koska käyttöjärjestelmä ei tiedä mitään
säikeistä, se blokkaa koko prosessin P. Tämän vuoksi mikään muukaan P:n säie ei pääse suoritukseen, vaikka
se muutoin olisikin suorituskelpoinen.

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

[4 p] Juoksurata semaforeilla. Juoksurata on 400m pitkä. Ann ja hänen ystävänsä Bill ja Charlie tulevat sinne
usein juoksemaan 4000m. Ann on sosiaalinen ja odottaa joka kierroksen jälkeen, että molemmat pojista ovat
saaneet hänet kiinni (sama määrä juostuja kierroksia). Pojat ovat kilpailuhenkisiä, eivätkä odota ketään.
Ratkaise syntyvä synkronointiongelma semaforeilla. Anna ratkaisusi muokkaamalla alla olevia juoksijoiden
pseudokoodeja. Muista määritellä kaikki käyttämäsi semaforit alkuarvoineen.

A

semaphore waitB=0, waitC=0;
Ann Bill Charlie
for (i=1 to 10) for (i=1 to 10) for (i=1 to 10)

P(waitB) V(waitB) V(waitC)
P(waitC)

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

Monitori.
Kuinka monitorissa ratkaistaan kriittisen vaiheen ongelma? Näytä esimerkki, kun kriittisessä vaiheessa
lasketaan ”X = Y+Z; Sum = Sum+X;” (muuttujille X ja Sum annetaan uudet arvot).

A

) Luodaan monitorin metodi CS(X, Y, X, Sum), jossa on em. koodin pätkä. Metodi CS on automaattisesti
suojattu mutexilla, koska se on monitorin metodi. Aina kun koodinpätkää halutaan ajaa, kutsutaan metodia
CS.

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

Miten monitorin ehtomuuttujat eroavat semaforeista?

A

(1.5 p) Ehtomuuttujilla ei ole arvoa, joten arvoa varten tarvitaan kokonaislukuarvoinen muuttuja, jota
metodeissa pitää itse päivittää. Wait-operaatio ei testaa mitään arvoa, vaan tekee aina suspend-operaation
kutsuvalle prosessille. Signal-operaatio herättää jonkin (ensimmäisen) odottavan prosessin. Jos kukaan ei
odottanut, niin Signal ei tee mitään, koska ehtomuuttujassa ei ole tilaa tallentavaa kokonaislukuarvoa.
Herätetty prosessi ei välttämättä pääse heti suoritukseen, vaan sen on vielä saatava monitorin mutex
suoritukseen päästäkseen.

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

Mitä hyötyä on ratkaista järjestelmän synkronointiongelma monitorin avulla semaforien asemesta?

A

Synkronointi ongelman ratkaisu on keskitetty yhteen olioon, jolloin sen tekeminen on vähemmän
virhealtista. Ilman monitoria ratkaisu on siellä täällä ehkä suurtakin ohjelmistoa ja osittain ehkä vielä eri
ohjelmistotuotanto tiimien tekemä.

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

Miten monitorin signalointisemantiikat ”Signal-and-Continue” (Lampson-Redell) ja ”Signal-and-Wait” (Hoare)
eroavat toisistaan?

A

Signal-and –continue semantiikassa monitorin signal-operaation suorittava prosessi pitää monitorin
mutexin hallussaan ja jatkaa suoritusta. Signal-and-wait semantiikassa signaloiva prosessi luovuttaa mutexin
välittömästi odottaneelle prosessille pois (jos joku prosessi odotti ehtomuuttujassa), joka pääsee heti
suoritukseen.

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

[4 p] Moniytimisessä järjestelmässä prosessilla on useita käyttäjätason säikeitä (ULT, user level threads).
Kuinka ULT’t erovat järjestelmätason säikeistä (KLT, kernel level threads)?

A

ULT: 1) voidaan ajaa missä vaan käuttöjärjestelmässä 2) säikeiden vaihtelu ei vaati etuoikeutettua tilaa = nopeaa 3 ) ohjelma saa päättää miten säikeet priorisoidaan 4)ei voi hyödyntää monta ydintä samalla, ei voi suorittaa monta säiettä, kutsukäskyt blokkaavia -prosessi odottaa tilaan
KLT: 1) säikeitä voi laittaa samasta prosessista monelle yrimelle 2) kun säie odottaa (esim I/O) muut säikeet voi jatkaa 3) ytimessä voi olla käynnissä monta säiettä (=tehokasta) 4) vaatii säikeen tietojen kontrolliblockin tallntamista

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

Oletetaan, että välimuistin saantiaika on 3 ns ja keskusmuistin saantiaika 50 ns. Jos välimuistin
osumasuhde (hit ratio) on 99%, niin kauanko muistiviite keskimäärin kestää?

A

3 + 50*0,01 = 3,5

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

Oletetaan, että välimuistin koko on 16KB. Miten välimuistin rivin (lohkon) pituus vaikuttaa välimuistin
osumasuhteeseen? Ota huomioon molemmat paikallisuuden lajit. Vertaile tilanteita, joissa välimuistin rivin
pituus 4 sanaa (16B) ja 16 sanaa (64B).

A

Ajallinen paikallisuus: pieni lohko
alueellinen paikallisuus: iso lohko
Pidempi/isompi lohko on parempi, kun dataa siirretään välimuistiin, sillä on enemmän vierekkäisiä muistipaikkoja.
Pienempi lohko on parempi silloin kun, lyhyen ajan välein viittataan johonkin muistipaikkaan. Jos pitkä, välimuistissa turhaa dataa.
Pieni lohko, enemmän rivejä
Pitkä lohko, vähemmän rivejä

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

Miten muistiosoitteesta, esim 0x1234ABCD löytyy viitattu sana?

A

Siinä on tag ja lohkon osoite (ja paikka lohkossa). Käytetään mapping funktiota. Jos tag löytyy (esim 3 ensimmäistä numeroa) aletaan etsiä lohko osoitetta. Sanan paikka viimeinen osoitteen kohta.

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

poissulkeminen (mutual exclusion), mutex?

A

vain yksi prosessi voi olla aktiivisena monitorissa eli

suorittamassa jotain monitorin proseduuria

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

monitori, prosessi

A

os prosessi ei voi jatkaa monitorin sisällä,
vapauta monitori muiden käyttöön: kutsu wait(cv)
l odotus tavallaan monitorin ulkopuolellla, passiivisena!
l kun odotukseen liittyvä ehto tulee todeksi, kutsu signal(cv)

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

Selitä käsite käyttöjärjestelmän mikroydinarkkitehtuuri (microkernel architecture)? Mitä etuja sillä
saavutetaan?

A

Tärkeimmät osat suoritetaan etuoikeutetussa kernel modessa. Suurin osa sijaitsee käyttäjätason moduuleissa. Kernel pysyy pienenä, käyttäjätason moduulit ovat uudelleenkäytettäviä ja helpompia hallita.
Mikroydinarkkitehtuurilla varustetussa käyttöjärjestelmässähän kuluu aikaa hukkaan tilan vaihtamisessa käyttäjätilasta etuoikeutettuun tilaan ja takaisin. Mikroytimen etuna on pienikokoisuus, laajennettavuus ja siirrettävyys (portability).

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

Mitkä laitteiston ominaisuudet tukevat käyttöjärjestelmän toteutusta?
Mainitse 3 erilaista ominaisuutta ja kerro, mitä hyötyä niistä on käyttöjärjestelmän toteutukseen.

A

Keskeytykset sallitaan käyttöjärjestelmälle tarvittaessa (kernel mode). Ajastimet antavat kontrollin KJ vaikkei tarvetta. Etuoikeutettu tila antaa muokata tietorakenteita ja käyttää nniitä. Käyttäjäprosessit pääsevät vain omalle muistialueelle.

17
Q

Mikä on virtuaalikone (virtual machine) ja mitä hyötyä siitä on?

A

Kerros normaalin KJ päällä. Systeemi voi ajaa monta KJ ja jokainen sovellus voi ajaa omaa KJ. Esim Windows sovellusta linuxissa.

18
Q
Miten moniytiminen (multicore) järjestelmä eroaa symmetrisestä moniprosessorijärjestelmästä
(symmetric multiprocessor, SMP)? Miten niiden välimuistit eroavat toisistaan?
A

SMP Symmetrinen moniprosessointikone on kone jolla on monta prosessoria (suoritinta). SMP käyttää yhteistä päämuistia. Moniytimisellä laitteella on monta suoritinta yhdessä piilastussa.

19
Q

Välimuistin toiminta perustuu paikallisuus ilmiöön (locality). Paikallisuutta on kahta lajia, alueellista
paikallisuutta (spatial locality) ja ajallista paikallisuutta (temporal locality).
Anna koodi- tai dataviite esimerkki, jossa esiintyy alueellista paikallisuutta. Selitä.

A

Alueellinen paikallisuus on parempi kun on isot lohkot. Välimuistissa on tällöin vähemmän rivejä, eli kun lyhyen ajan sisällä viitataan läheiseen muistipaikkaan, lohkot välimuistissa.
Ajallinen paikallisuus on parempi lyhyissä lohkoissa joilloin rivejä on paljon. Jos viitataan jatkuvasti samoihin paikkoihin ovat ne välimuistissa.

20
Q

Millä tavoin järjestelmän moniytimisyys vaikeuttaa käyttöjärjestelmän toteutusta (verrattuna yhden ytimen
järjestelmään)?

A

Jokaisella ytimellä on usein oma välimuisti. Sama data voi olla monessa paikassa samaan aikaan, jolloin vaikeampi pysyä mukana prosessoidaanko samaa dataa. Jos joku ydin muuttaa tietoa välimuistissa pitää päättää miten muutos käsitellään muualla.

21
Q

Milloin ja kuinka kriittisen vaiheen ongelma (critical section problem) ratkaistaan puhtaasti ohjelmiston
avulla?

A

ehto pelkästään koodissa

22
Q

Anna tilanne, jossa ULT on tilassa ”suorituksessa” (”running”), vaikka se itse asiassa ei ole sillä hetkellä
minkään ytimen suoritettavana. Selitä, kuinka tämä on mahdollista.

A

jää suoritukseen, mutta prosessi menettää kernel levelin suorituksen

23
Q

Milloin ja kuinka kriittisen vaiheen ongelma ratkaistaan laitteiston (erityiskonekäskyjen) avulla?

A

Huomataan, ettei yhdeltä käskyltä näyttävä X = X + 1 ole atominen operaatio. Atomiseksi operaatioksi kutsutaan sellaista käskyä, jota ei ole jaettavissa osiin (esim. yksittäinen konekäsky) tai jonka toiminnan oikeellisuuteen ei vaikuta esimerkiksi keskeytykset. Monissa järjestelmissä on erikseen atomisen operaation mahdollistavia konekäskyjä, kuten compare_and_exchange, jolla muuttujan arvo muuttuu vain, jos sen arvo käskyn päättyessä oikeellinen.

24
Q

Milloin ja kuinka kriittisen vaiheen ongelma ratkaistaan semaforin avulla?

A

Semafori on tietorakenne, joka sisältää vapaiden resurssien määrää laskevan muuttujan ja säiejonon josta voi vapauttaa jonkun säikeen suoritukseen.

Semaforilla on metodit P ja V, tai toisilta nimiltään muun muassa wait ja signal, semwait ja semsignal sekä down ja up. Käytetään tässä Pwait ja Vsignal, jotta nuo kryptiset P ja V yhdistyvät myös toisiin yleisesti käytettyihin metodin ni

25
Milloin ja kuinka kriittisen vaiheen ongelma ratkaistaan monitorin avulla?
monitori kontrolloi jaettuun dataan pääsemistä. Monitoria voi ajatella luokkana, jota voi käyttää vain yksi säie kerrallaan. Muut monitorin käyttöä haluavat säikeet odottavat sisäänpääsyjonossa. Dataa muutetaan metodien avulla, eikä niitä siis pääse käyttämään kuin yksi säie kerrallaan. Siten metodien käyttäminen on turvallista, sillä mikään muu säie ei pääse muuttamaan dataa ennen kuin metodi on suoritettu. Jos toinen säie yrittää päästä käyttämään monitorin metodia, se säie menee odottamaan monitoriin pääsyä ehtomuuttujaan