Lataa esitys
Esittely latautuu. Ole hyvä ja odota
JulkaistuAda Saaristo Muutettu yli 9 vuotta sitten
1
UNIX ftp://shell.shore.net/members/w/s/ws/Support/OS/UNIX.pdf http://www.levenez.com/unix/history.html#05 http://www.grokline.net/by_release.php 31.12.2004 UNIX täyttää 35
2
Historia pähkinänkuoressa Käytössä Bellillä 1970 C tehtiin UNIXin kehitystä varten, aikaisemmin käyttöjärjestelmät tehtiin vain koneläheisillä kielillä. Mahdollisti järjestelmän siirtämisen koneelta toiselle lähestymistapana ’worse is better’ Bellin (AT&T:n) UNIXin rinnalle tuli Berkeleyn oma BSD vuonna 1978 myöhemmin lukuisia erilaisia versioita erilaisiin tarpeisiin
5
Moderni UNIX yhteiset tärkeimpien käyttöjärjestelmien prosessien käyttöön tarkoitetut ydinosat koottu yhteen kirjoitettu modulaarisesti ytimen varaan rakennetaan joukko toimintoja ja niiden rajapintoja
7
Prosessien hallinta yksinkertaista, prosessit hyvin näkyviä käyttäjälle, tehokas prosessit luokitellaan systeemiprosesseiksi ja käyttäjäprosesseiksi systeemiprosessit toimivat kerneltilassa ja hoitavat käyttöjärjestelmän tehtäviä käyttäjäprosessit toimivat käyttäjätilassa normaalisti ja jos tarvitsevat kerneltilassa tehdessään kernelille kuuluvia toimintoja käyttäjäprosessi pääsee kerneltilaan tehdessään systeemikutsun, virheen sattuessa tai keskeytyksellä Prosessi 0 ja 1
13
Prosessin luominen (fork () –funktio) 1.Uusi paikka prosessitaulussa 2.luodaan prosessi-id lapselle 3.kopioidaan vanhemman tiedot, lukuunottamatta muistipaikkoja 4.kasvatetaan kaikkia vanhemman omistamien tiedostojen laskureita yhdellä 5.prosessi siirretään ’Ready to Run’ –tilaan 6.vanhemmalle palautetaan lapsen id ja lapselle palautetaan 0 Koko toiminta tehdään kerneltilassa, vanhemman prosessin toimesta
14
Kun uusi prosessi on luotu, kernel voi tehdä seuraavaa: 1.se jatkaa vanhemman ajamista 2.siirtyy ajamaan lasta siitä kohtaa, mihin vanhempi jäi 3.siirtyy ajamaan kolmatta prosessia, vanhempi ja lapsi jäävät ’Ready to Run’ - tilaan
15
Säikeiden hallinta (Solaris) UNIXin Monisäikeinen arkkitehtuuri käyttää seuraavia säietyyppejä: –Prosessi (normaali UNIX prosessi) –Käyttäjätason säie (käyttää säiekirjastoja, ovat näkymättömiä käyttöjärjestelmälle, käytetään sovellusten rinnakkaisuudessa) –Kevyt prosessi (käytetään käyttäjätason säikeiden hallitsemiseen, voi sisältää yhden tai useamman säikeen) –Kernelin säikeet (varsinaiset suoritettavat)
17
Kevyt prosessi (Lightweight Process, LWP) koostuu seuraavanlaisista asioista: LWP id prioriteetti (liittyen yleensä kernelin säikeeseen) signaalimaski (kertoo kernelille, mitkä signaalit LWP ottaa vastaan) rekisterien arvot tämän LWPn kernelpino resurssien käyttö ja muuta profiilitietoa osoitin kernelsäikeeseen osoitin prosessiin
18
UNIXIN ja Solariksen prosessien rakenteiden erot
20
Rinnakkaisuus UNIX tarjoaa useita erilaisia menetelmiä rinnakkaisten prosessien väliseen kommunikointiin ja synkronointiin –putket –viestit –jaettu muisti –semaforit –signaalit Putkia, viestejä ja jaettua muistia käytetään datan siirtämiseen prosessien välillä, semaforeja ja signaaleita taas käytetään laukaisemaan toisen prosessin toimintaa
21
Putki Putki on yksi merkittävimmistä UNIXin lahjoista käyttöjärjestelmille. Putki on puskurimuisti, joka mahdollistaa kahden prosessin kommunikoinnin kuluttaja- tuottaja –mallin mukaan. Käytännössä siis muodostetaan FIFO-jono, jota toinen prosessi tuottaa ja toinen lukee. Putkeen sovelletaan poissulkemista. Putkia on kahden tyyppisiä: nimettyjä ja nimeämättömiä.
22
Viestit Viesti on lohko bittejä, joihin liittyy tyyppi. UNIX-järjestelmässä on kaksi systeemikutsua, msgsnd ja msgrcv, jotka mahdollistavat viestien lähettämisen prosessien välillä. Jokaisella prosessilla on oma jono viestejä. Viestejä luetaan jonosta joko FIFO- järjestyksessä tai tyyppien mukaan.
23
Jaettu muisti Nopein kommunikoinnin muoto Lohko virtuaalimuistissa, jota useampi prosessi pääsee käyttämään samaan aikaan. Poissulkeminen pitää toteuttaa prosessien toimesta.
24
Semaforit UNIXin semaforit on toteutettu wait() ja signal() –systeemikutsujen yleistyksien avulla. Vähentäminen ja kasvattaminen voi olla suurempi kuin 1. Semaforiin liittyy seuraavat tiedot: –nykyinen arvo –viimeisen semaforia käyttäneen prosessin ID –prosessien määrä, jotka odottavat, että semaforin arvoo kasvaa nykyistä suuremmaksi –prosessien määrä, jotka odottavat, että sefamorin arvo on 0
25
Semaforiin liittyy myös jonoja, jotka ovat jääneet semaforin blockaamiksi. Semaforit luodaan joukoissa, joissa on yksi tai useampi semafori, jolloin niitä voidaan käsitellä joukkoina (asettaa kaikkiin sama arvo) Mahdollistaa joustavuutta prosessien synkronointiin ja koordinaatioon
26
Systeemikutsu sem_op() saa argumenttinaan joukon semaforikutsuja kutsuttaessa suorittaa semaforikutsut yksi kerrallaan semaforeille, varsinainen toiminta perustuu sem_opin arvoon: –sem_op>0, kernel kasvattaa semaforin arvoa –sem_op=0, kernel tarkistaa semaforin arvon, jos se on 0, kernel jatkaa seuraavaan toimintoon, muuten muuttaa odottavien prosessien määrään 0 ja pysäyttää prosessit odottamaan semaforin saavan arvokseen 0 –sem_op<0 ja on pienempi tai yhtä suuri kuin semaforin arvo, sem_opin arvo lisätään semaforin arvoon. Jos saadaan 0, kaikki sitä odottavat prosessit herätetään –sem_op<0, mutta suurempi kuin semaforin arvo, kernel pysäyttää prosessin siihen asti, että semaforin arvo kasvaa
27
Signaalit Signaalit ovat mekanismi prosessia synkronoiduista tapahtumista. Signaali muistuttaa keskeytystä, mutta sillä ei ole prioriteettia eli kaikkia signaaleja käsitellään tasavertaisina. Prosessit voivat lähettää toisilleen signaaleja tai kernel voi lähettää niitä sisäisesti. Signaali lähetetään päivittämällä kenttää prosessitaulussa vastaanottajan kohdalta. Signaalit ovat vain yksittäisiä bittejä, joten niitä ei voi asettaa jonoon. Signaalit käsitellään ensimmäisenä, kun prosessi käynnistyy
29
Säikeiden synkronointi primitiivit (Solaris) Rinnakkaisuutta tukevien menetelmien lisäksi, Solaris sisältää seuraavat neljä menetelmää: –lukkoja poissulkemista varten –semaforeja –lukijat/kirjoittaja –lukkoja –ehtomuuttujia löytyvät kernelistä kernelsäikeitä varten, kirjastoissa on käyttäjätason säikeitä varten omat aliohjelmansa
31
Mutex (mutual exclusion lock) Mutexin avulla voidaan varmistaa, että vain yksi säie pääsee resurssiin kiinni kerrallaan vain lukon avannut säie voi sen lukita primitiivi mutex_enter yrittää avata lukon. Jos lukko on jo auki, tämä ei onnistu mutexin operaatiot: –mutex_enter() –mutex_exit() –mutex_tryenter() mutex_tryenter() mahdollistaa mutexin kokeilemisen ilman, että koko prosessi joutuu pysähtymään
32
Semaforit Tavallisia yleisiä semaforeja –P() (vähentää arvoa) –V() (kasvattaa arvoa) –tryP() Jälleen, tryP mahdollistaa sen, että koko prosessin ei tarvitse pysähtyä yhden säikeen pysähtymisen takia
33
Readers/Writer Lock Sallii useamman lukijan samanaikaisesti lukon suojaamalle alueelle. Kun kirjoittaja varaa alueen, kaikki muu toiminta on estetty. rw_enter() yrittää päästä alueelle sisään rw_exit() vapauttaa lukon rw_tryenter() kuten enter(), mutta ei vaadi pysähtymistä rw_downgrade() kirjoittaja muuttaa lukon lukemiseksi, jos muita kirjoittajia ei ole odottamassa, kaikki odottavat lukijat päästetään sisään. rw_tryupgrade() yrittää muuttaa lukon lukijasta kirjoittajaksi
34
Ehtomuuttujat (condition variables) käytetään yhdessä mutexin kanssa pakottaa säikeen odottamaan, että jokin ehto muuttuu todeksi primitiivit: –wait() –signal() –broadcast() Mutexin avulla voidaan määritellä ehto, joka on monimutkainen
35
Muistinhallinta koneriippumaton: muistinhallintaan erilaisia menetelmiä aikaisemmat jakoivat muistin suoraan, uudemmat käyttävät sivutettua virtuaalimuistia Kaksi rinnakkaista järjestelmää: sivutus ja kernelin muistin osoitus
39
Sivujen korvaaminen kaikki saatavilla olevat sivut listana page frame data tablessa, kun vapaana oleva tila tippuu tietyn kynnyksen alle, kernel ottaa käyttöönsä sivuja päästäkseen kynnyksen yli korvattava sivu valitaan kelloalgoritmin kehittyneemmän version avulla, jota nimitetään kaksikätiseksi kelloalgoritmiksi uudessa algoritmissa ensimmäinen käsi merkitsee sivun referenssibitin arvoksi 0 ja toinen arvoksi 1, jos sivuun on viitattu sen jälkeen kun ensimmäinen käsi sen käsitteli
40
Käytetään kahta parametriä: scanrate (kertoo kuinka usein tehdään) ja handspread (kahden käden välinen etäisyys). Scanrate kasvaa kun käytössä olevan muistin määrä vähenee. Käsien välinen etäisyys toimii samalla tavalla. Näillä kahdella yhdessä voidaan optimoida muistinkäyttöä tilannekohtaisesti.
41
Kernelin muistin osoitus pienien tietojen sijoittamiseen muistiin (pieniä puskureita, zombieiden tietoa, jne) käytetään ns. ’lazy buddy systemiä’, joka on nopeampi ja tehokkaampi kuin esim. best-fit tai first-fit muistiinsijoitusmenetelmät
43
Perinteinen UNIX-ajoitus Korvattu nykyisin toisella menetelmällä Tavoitteena saada hyvät vasteajat käyttäjille, mutta taata se, että taustalla pyörivät prosessit eivät pääse nälkiintymään. multilevel feedback queye (MFQ), yhden sekunnin rajalla prioriteetti perustuu historiaan ja prosessin tyyppiin
45
Prioriteetit lasketaan uudestaan kerran sekunnissa CPU ja nice ovat rajoitettuja, jotta ne eivät pääse liian ylös prioriteetissä prioriteeteissa käytetään myös tasoja, jotka ovat –swapper –lohko-I/O-laitteistojen hallinta –tiedoston käsittely –merkki-I/O-laitteistojen hallinta –käyttäjän prosessit Hierarkia mahdollistaa hyvän I/O-laitteiden käytön.
47
Moderni UNIX-ajoitus Uudistettu täysin: suunniteltu antamaan korkein prioriteetti reaaliaikaisille prosesseille, sen jälkeen kernelin prosesseilla ja alin käyttäjien prosesseille, joita kutsutaan myös time-shared –prosesseiksi kaksi suurta muutosta: –irrotettava staattinen prioriteettiajoitus ja 160 prioriteettitason joukko, joka jaetaan kolmen luokan kesken –irrottamispisteet, joissa suorituksessa oleva prosessi voidaan turvallisesti irroittaa
48
Tosiaikaiset prosessit (prioriteettitasot 159-100): suoritetaan aina ennen muita prosesseja, voivat käyttää hyväkseen irrottamispisteitä Kernel (99-60): suoritetaan aina ennen käyttäjäprosesseja prosesseja Time-shared (59-0): Muut käyttäjäprosessit kuin tosiaikaiset. Alin prioriteettitaso.
49
UNIX I/O jokaista I/O-laitetta kohti on oma erikoistiedosto. Tiedostojärjestelmä hallitsee niitä ja niitä käsitellään kuin datatiedostoja hyvä yhtenäinen rajapinta kaikille prosesseille pyynnöt kohdistetaan tiedostolle voi olla puskuroitu tai puskuroimaton
51
Puskurivälimuisti vastaa toiminnaltaan levyvälimuistia hallintaan käytetään kolmea listaa –vapaalista (kaikki paikat, jotka ovat vapaana) –laitelista (lista kaikista käytössä olevista puskureista) –ohjain I/O-jono Kaikkien puskureiden tulisi olla joko vapaa- tai laitelistalla
52
Merkkijono tilanteisiin, joissa I/O on merkkipohjaista (näppäimistö, tulostin) tuottaja/kuluttajamallin mukainen Puskuroimaton DMA
54
Tiedostonhallinta tyypit: –tavalliset –hakemistot –erikoistiedostot –putket (nimetyt) –linkit (käytännössä vaihtoehtoinen nimi) –symbolinen linkki Tässä käsitellään tavallisia tiedostoja
55
Inodít kaikki tiedostotyyppejä hallitaan inodien avulla. inode voi sisältää usean tiedoston, mutta yhtä tiedostoa ei voi liittää useampaan kuin yhteen inodiin. inodi sisältää kaiken tiedostonhallintaan tarvittavan tiedon levyltä löytyy inoditaulu tai –lista, joka sisältää kaikkien sen levyn tiedostojen inodit.
57
File allocation lohkoina, dynaamista lohkot eivät välttämättä ole peräkkäin inodissa on 39 tavua bittejä osoitetietoa, joka on sijoitettu 13 3-bitin ryhmään (osoittimiin) 10 osoitinta käytetään 10 ensimmäiseen lohkoon, jos tiedosto on isompi toimitaan seuraavasti: –sijoitetaan levylle lohko, johon 11. osoitin viittaa (epäsuoraindeksointi) –jos sekään ei riitä, 12. osoitin viittaa tiedostoon, jossa on oma epäsuora indeksointi (siis kaksinkertainen epäsuora indeksointi) –jos sekään ei riitä, 13. osoitin viittaa tiedostoon, jossa on kolminkertainen epäsuora indeksointi
59
Järjestelmän etuja: 1.inodin koko on vakio ja suhteellisen pieni 2.pieniin tiedostoihin päästään käsiksi pienellä määrällä työtä 3.teoreettinen maksimikoko on niin suuri, että se riittää käytännössä kaikkiin tiedostoihin
60
Hakemistot Hakemistot on sijoitettu hierarkiseen puuhun Volume structure UNIXin tiedostojärjestelmä sijaitsee yhdellä loogisella levyllä tai sen partitiolla ja siihen liittyy seuraavat elementit: –käynnistyslohko –ylilohko, sisältää tiedostojärjestelmän ominaisuuksia ja informaatiota, kuten partition koko ja inoditaulun koko –datalohkot, varsinainen tila, johon tieto varastoidaan
Samankaltaiset esitykset
© 2024 SlidePlayer.fi Inc.
All rights reserved.