Esittely latautuu. Ole hyvä ja odota

Esittely latautuu. Ole hyvä ja odota

UNIX ftp://shell.shore.net/members/w/s/ws/Support/OS/UNIX.pdf 31.12.2004.

Samankaltaiset esitykset


Esitys aiheesta: "UNIX ftp://shell.shore.net/members/w/s/ws/Support/OS/UNIX.pdf 31.12.2004."— Esityksen transkriptio:

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

3

4

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

6

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

8

9

10

11

12

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)

16

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

19

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

28

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

30

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

36

37

38

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

42

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

44

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.

46

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

50

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

53

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.

56

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

58

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

61


Lataa ppt "UNIX ftp://shell.shore.net/members/w/s/ws/Support/OS/UNIX.pdf 31.12.2004."

Samankaltaiset esitykset


Iklan oleh Google