Commit ed2e47e3848160330096046e6e6e57819b4006ea

  • avatar
  • nieminen (Committer)
  • Thu May 18 14:01:02 EEST 2017
  • avatar
  • nieminen (Author)
  • Thu May 18 14:01:02 EEST 2017
Kurssi-instanssin lopputuleman dokumentointia.
luentosuunnitelma_2017.txt
(77 / 72)
  
14461446
14471447Ensihavaintoja muistinhallinnasta.
14481448
1449** Luento 16: Virtuaalimuisti, sivutaulut, heittovaihto. Unixin erikoistiedostot. I/O.
14491450
1450
1451* Kevään 2017 kurssi-instanssilla seuraavaksi:
1452
1453** Luento 16: Virtuaalimuisti, sivutaulut, heittovaihto. Unixin erikoistiedostot. I/O, kovalevy, tiedostojärjestelmä.
1454
14551451Loppusuoralle / lopputaisteluun... Niin monta tuntia aikaa ekaan
14561452tenttiin, että kyllä me siihenkin mennessä vielä paljon hyviä asioita
14571453ehditään oppia.
15381538 vain yhtenä kopiona, vaikka emacs olisi käynnissä vaikka kuinka
15391539 monena prosessina.
15401540
1541TODO: Ohitetaan 2017:
1541Pari lisäesimerkkiä Unix-tyyppisestä "kaikki ilmenee tiedostona" -lähestymisestä:
15421542
1543Luennoilla on aiemmin nähty esimerkkejä muistakin erikoistiedostoista,
1544esim. /dev/urandom -tiedoston lukeminen saa käyttöjärjestelmän
1545generoimaan satunnaislukuja. Tiedostoon /dev/null voivat kaikki
1546käyttäjät "kirjoittaa", mutta siihen ohjattu data ei mene mihinkään,
1547vaan erikoistiedosto "nielee" tavut. Muita vastaavia, joita
1548unixmaisista usein löytyy:
1543 + /dev/urandom -"tiedostosta" voi lukea loputtomiin satunnaislukuja
15491544
1550 + /dev/random yrittää tuottaa "aitoa satunnaisuutta"
1551 tarkkailemalla ulkopuolisesta ympäristöstä riippuvia tekijöitä,
1552 kuten nettiyhteyksiä. *Älä käytä turhaan yhteiskäyttökoneella*,
1553 koska generointi hidastuu kaikkien tarvitsijoiden
1554 osalta. Ulkoisia ilmiöitä tapahtuu harvakseltaan "uskottavan
1555 satunnaisuuden" aikaansaamiseksi. Normaalitarpeisiin lue
1556 /dev/urandom -tiedostoa ("u"=="unlimited"), joka toimii kuten
1557 C:n rand()-funktio. Tiukempiin kryptografiatarpeisiin tällainen
1558 pseudosatunnaisuus ei ole välttämättä riittävä.
1559
1560 + /dev/zero tuottaa loputtomiin nollatavuja luettavaksi.
1561
15621545 + /dev/sda vastaa ensimmäisen koneeseen liitetyn fyysisen
15631546 kovalevyn tavuja ilman tiedostorakennetta; voi käyttää
15641547 esim. täydellisen varmuuskopion tekemiseen tai
15501550 käynnistämistä esim. muistitikulta siten, että kovalevy ei ole
15511551 kopioinnin aikana kytketty tiedostoineen.
15521552
1553 + /dev/tty on jopa POSIXin määräämä. Se toimii erikseen jokaiselle
1554 prosessille, ja sitä tulee voida käyttää syöttöihin ja
1555 tulostuksiin samoin kuin päätettä
1556
15571553 + Hakemiston /dev/ listaaminen näyttää monia muitakin
15581554 tiedostonimiä, jotka itse asiassa vastaavat fyysisiä
15591555 I/O-laitteita. Useimmat ovat saatavissa vain
15571557 sovelluksissa käyttöjärjestelmäkutsujen kautta sen sijaan että
15581558 suoraan esim. päätteeltä.
15591559
1560 + /dev/sda -"tiedostosta" voi lukea (käyttöoikeuksien salliessa)
1561 kovalevyn koko sisällön bitti bitiltä esimerkiksi koko
1562 järjestelmän kattavaa varmuuskopiointia varten.
15601563
15611564Lisää tiedostonhallinnan käyttäjänäkökulmaa:
15621565
15631566Esimerkki:
15641567
15651568 - Tiedostojen käyttöoikeudet rwx / ugo. Shell-ohjelma
1566 chmod. Oktaaliluvut.
1569 chmod nähty jo aiemmin.
15671570
15681571 (HUOM: yliopistomme verkkolevyt eivät sisäisesti tue POSIXin
15691572 käyttöoikeusmääritelmiä; omat kokeilut kannattaa tehdä siis
15771577 yhteiskäyttöiseen järjestelmään... kyllä /tmp kuulemma kait myös
15781578 siivotaan aika ajoin myös jonkinlaisella automaattivälineellä...)
15791579
1580I/O ja Tiedostonhallinta käyttöjärjestelmätoteutuksessa:
1581
1582- Tavoitteita: datan organisointi, osoitteistaminen, puumainen
1583 hierarkia ("kansiot"). [kyseessä on todellisuudessa pikemminkin
1584 suunnattu graafi eikä puu, koska hakemistoista voi olla ns. linkkejä
1585 muihin hakemistoihin ja muissa hakemistoissa sijaitseviin
1586 tiedostoihin. Puu on kuitenkin ehkä hyvä ensimmäinen analogia.]
1587
1588- Käytettävissä olevat laitteet: prosessori, I/O -portit, laitteiden
1589 aiheuttamat keskeytykset; rajapinnan takana hyvin erilaisia
1590 laitteita
1591
1592- I/O -ohjelmiston kerrosmainen rakenne: laiteriippumaton osuus,
1593 laiteriippuva osuus (ajurit).
1594
1595- I/O -kutsun kulku ohjelmistokerrosten läpi (karkea yleiskuva).
1596
1597
1598
1599
1600* Ja se oli sitten siinä vuodelta 2017!
1601
1602Tähän ehdittiin 2017. Loput ei tule tenttiin.
1603
1604Vuoden 2017 mukaista kurssia voi suorittaa helmikuuhun 2018
1605saakka. Virallisten tenttikertojen (3 kpl) jälkeen kysy erillistä
1606tenttimahdollisuutta.
1607
1608Vuonna 2018 kurssi rakentuu uusiksi eri näköisenä ja 5 op laajuisena,
1609joten kannattaa vääntää tämä nyt läpi, jos on tullut käyttyä jo paljon
1610energiaa. Aiempaa kurssia ei tarvitse erikseen laajentaa, mutta
1611syventävillä jatkokursseilla (esim. Kääntäjätekniikka,
1612Ohjelmistoturvallisuus, mahdollisesti tietyt IoT -kurssit on syytä
1613varautua täydentämään tietämystä erityisesti konekieliohjelmoinnin
1614osalta.)
1615
1616
1617
1618
1619* 2017 pois jätettyä:
1620
1621Semaforin käyttö kuluttaja-tuottaja -ongelman ratkaisussa. (Semafori
1622tietorakenteena käytiin läpi, ja se on muistettava, ts. resurssien
1623määrää kuvaava kokonaisluku ja jono/joukko prosesseja, jotka
1624jonottavat siinä tapauksessa, että vapaana on 0 kpl resurssia).
1625
15801626TODO: Hyvä tietää -osastolle 2017:
15811627
1582Tiedostonhallinnan sovellusnäkökulma:
1628*** Tiedostonhallinnan sovellusnäkökulma:
15831629
15841630Esimerkki:
15851631
16481648piirteitä, esimerkkinä kovalevy, joka soveltuu tiedon pitkäaikaiseen
16491649säilyttämiseen tiedostoihin ja hakemistoihin organisoituna.
16501650
1651*** Lisää esimerkkejä erikoistiedostoista /dev/ -hakemistossa
16511652
1652I/O ja Tiedostonhallinta käyttöjärjestelmätoteutuksessa:
1653Luennoilla on aiemmin nähty esimerkkejä muistakin erikoistiedostoista,
1654esim. /dev/urandom -tiedoston lukeminen saa käyttöjärjestelmän
1655generoimaan satunnaislukuja. Tiedostoon /dev/null voivat kaikki
1656käyttäjät "kirjoittaa", mutta siihen ohjattu data ei mene mihinkään,
1657vaan erikoistiedosto "nielee" tavut. Muita vastaavia, joita
1658unixmaisista usein löytyy:
16531659
1654- Tavoitteita: datan organisointi, osoitteistaminen, puumainen
1655 hierarkia ("kansiot"). [kyseessä on todellisuudessa pikemminkin
1656 suunnattu graafi eikä puu, koska hakemistoista voi olla ns. linkkejä
1657 muihin hakemistoihin ja muissa hakemistoissa sijaitseviin
1658 tiedostoihin. Puu on kuitenkin ehkä hyvä ensimmäinen analogia.]
1660 + /dev/random yrittää tuottaa "aitoa satunnaisuutta"
1661 tarkkailemalla ulkopuolisesta ympäristöstä riippuvia tekijöitä,
1662 kuten nettiyhteyksiä. *Älä käytä turhaan yhteiskäyttökoneella*,
1663 koska generointi hidastuu kaikkien tarvitsijoiden
1664 osalta. Ulkoisia ilmiöitä tapahtuu harvakseltaan "uskottavan
1665 satunnaisuuden" aikaansaamiseksi. Normaalitarpeisiin lue
1666 /dev/urandom -tiedostoa ("u"=="unlimited"), joka toimii kuten
1667 C:n rand()-funktio. Tiukempiin kryptografiatarpeisiin tällainen
1668 pseudosatunnaisuus ei ole välttämättä riittävä.
16591669
1660- Käytettävissä olevat laitteet: prosessori, I/O -portit, laitteiden
1661 aiheuttamat keskeytykset; rajapinnan takana hyvin erilaisia
1662 laitteita
1670 + /dev/zero tuottaa loputtomiin nollatavuja luettavaksi.
16631671
1664- I/O -ohjelmiston kerrosmainen rakenne: laiteriippumaton osuus,
1665 laiteriippuva osuus.
1672 + /dev/tty on jopa POSIXin määräämä. Se toimii erikseen jokaiselle
1673 prosessille, ja sitä tulee voida käyttää syöttöihin ja
1674 tulostuksiin samoin kuin päätettä
16661675
1667- I/O -kutsun kulku ohjelmistokerrosten läpi (karkea yleiskuva).
16681676
1677*** Tiedostojärjestelmien toteutuksesta fyysiseen massamuistiin:
16691678
1670TODO: Hyvä tietää -osastolle:
1671
1672Tiedostojärjestelmien toteutuksesta fyysiseen massamuistiin:
1673
16741679- kovalevyn rakenne
16751680
16761681- lohkot muistissa ja levyllä; lohkot yleensä isompia kuin levyn
17241724 (pyöriminen, lukupään sijainti) ja tiedostojärjestelmän
17251725 organisointiin levyn pinnassa.
17261726
1727TODO: siirretään sopivaan kohtaan, vastaten tenttikysymyspankkia 2017:
17281727
1729--- tähän ehdittiin 2016. Entä 2017? Loput ei tule tenttiin.
17301728
1731
1732* Ja se oli sitten siinä vuodelta 2017!
1733
1734Vuoden 2017 mukaista kurssia voi suorittaa helmikuuhun 2018
1735saakka. Vuonna 2018 kurssi rakentuu uusiksi eri näköisenä ja 5 op
1736laajuisena. Aiempaa kurssia ei tarvitse erikseen laajentaa, mutta
1737syventävillä jatkokursseilla (esim. Kääntäjätekniikka,
1738Ohjelmistoturvallisuus, mahdollisesti tietyt IoT -kurssit on syytä
1739varautua täydentämään tietämystä erityisesti konekieliohjelmoinnin
1740osalta.)
1741
1742
1743
1744
1745* 2017 pois jätettyä:
1746
1747Semaforin käyttö kuluttaja-tuottaja -ongelman ratkaisussa. (Semafori
1748tietorakenteena käytiin läpi, ja se on muistettava, ts. resurssien
1749määrää kuvaava kokonaisluku ja jono/joukko prosesseja, jotka
1750jonottavat siinä tapauksessa, että vapaana on 0 kpl resurssia).
1751
1752
17531729*** Lisäesimerkki -- kurssin mielessä kokonaisuudessaan liian syvällinen:
17541730
17551731 Kurssin opiskelijan harrastusprojekti: muinoisen rinnakkaisportin
18511851 ja varmistutaan että Ohjelmistoturvallisuus ja
18521852 Tietoverkkoturvallisuus ovat tarpeellisia jatkokursseja...
18531853
1854I/O:sta ja laitteista ohitettua 2017:
1854*** I/O:sta ja laitteista ohitettua 2017:
18551855
18561856- DMA.
18571857
18581858- RAID
18591859
18601860
1861Vuoronnusmenettelyjä, RT, skriptit.
1861*** Vuoronnusmenettelyjä, RT, skriptit.
18621862
18631863Vuoden 2016 luennoilta 9-10:
18641864