Lappeenrannan teknillinen yliopisto Teknistaloudellinen tiedekunta Tietotekniikan koulutusohjelma Opintojakson Käyttöjärjestelmät seminaarityö Kalle Koponen, Ville Laitinen, Markus Salminen, Miko Tollander Mac OS:n ja Windowsin vertaileminen Työn tarkastaja: Professori Heikki Kälviäinen Työn ohjaaja: Professori Heikki Kälviäinen
TIIVISTELMÄ Lappeenrannan teknillinen yliopisto Teknistaloudellinen tiedekunta Tietotekniikan koulutusohjelma Kalle Koponen, Ville Laitinen, Markus Salminen, Miko Tollander Mac OS:n ja Windowsin vertaileminen Seminaarityö 2010 24 sivua, 5 kuvaa, 1 taulukko Työn tarkastajat: Professori Heikki Kälviäinen Hakusanat: Mac OS vs Windows, seminaarityö, käyttöjärjestelmät Keywords: Mac OS vs Windows, seminar report, operating system Tässä seminaarityössä tavoitteena on vertailla Mac OS ja Windows-käyttöjärjestelmien kehitystä, eroja ja tärkeimpiä ominaisuuksia yleisellä tasolla. Tarkemmin tutustutaan historiaan, käyttöliittymään, prosessien- ja muistinhallintaan, joista suurimmat erot nykyään löytyvät käyttöjärjestelmien toimintaperiaatteiden ollessa hyvin samankaltaiset. ii
ABSTRACT Lappeenranta University of Technology Faculty of Technology Management Degree Program in Information Technology Kalle Koponen, Ville Laitinen, Markus Salminen, Miko Tollander Comparison of Mac OS and Windows Seminar Report 24 pages, 5 figures, 1 table Examiner: Professor Heikki Kälviäinen Keywords: Mac OS vs Windows, seminar report, operating system In this seminar report the goal is to compare two operating systems, Mac OS and Windows, development, differences and features in general. Report takes better look at history, user interface, process and memory management. Today these are the biggest differences while the mechanics are quite similar. iii
ALKUSANAT Työ on tehty Lappeenrannan teknillisen yliopiston käyttöjärjestelmät kurssin harjoitustyönä. Kiitämme Googlen loisteliasta hakukonetta ja Wikipedian pettämättömiä artikkeleita, jotka ovat auttaneet erittäin paljon tiedon etsinnässä. Kiitämme Markuksen kämppäkaveria Jarno Leppää tuesta ja kahvinkeitosta. iv
SISÄLLYSLUETTELO 1 JOHDANTO... 3 1.1 TAUSTA... 3 1.2 TAVOITTEET JA RAJAUKSET... 3 1.3 TYÖN RAKENNE... 3 2 KÄYTTÖJÄRJESTELMIEN HISTORIAA... 4 2.1 DOS:ISTA WINDOWSIIN... 4 2.2 SYSTEM 1.0:STA OS X:ÄÄN... 6 2.3 EROISTA YHTEEN... 7 3 KÄYTTÖLIITTYMÄT JA KÄYTETTÄVYYS... 8 3.1 MAC OS X... 8 3.2 WINDOWS... 9 3.3 OHJELMISTOTUKI... 9 4 PROSESSIENHALLINTA... 10 4.1 WINDOWS... 10 4.2 MAC OS... 12 4.3 AJANJAKOALGORITMIT... 13 5 MUISTINHALLINTA... 14 5.1 WINDOWS... 14 5.2 MAC... 17 6 POHDINTA JA TULEVAISUUS... 19 LÄHTEET... 20 1
SYMBOLI- JA LYHENNELUETTELO DLL FIFO GUI I/O OEM OS RAM UPL VM Dynamic Link Library First In, First Out Graphical User Interface Input/Output Original Equipment Manufacturer Operating System Random Access Memory Universal Page List Virtual Memory 2
1 JOHDANTO 1.1 Tausta Seminaarityön tavoitteena on selvittää Mac OS ja Windows käyttöjärjestelmien eroja ja yhtäläisyyksiä. Työssä käsitellään melko yleiseltä pohjalta käyttöjärjestelmien toimintaa ja kuinka Microsoft ja Apple ovat kehittäneet käyttöjärjestelmänsä niiden nykytilaan. Käytettävyyden ja ulkoasun vertailussa on käytetty käyttöjärjestelmien uusimpia versioita, mutta vertailu on muuten toteutettu yleiseltä pohjalta. Työssä on vertailtu käyttöjärjestelmien tärkeimpiä tehtäviä nykyhetkellä ja menneisyydessä. 1.2 Tavoitteet ja rajaukset Työssä on pyritty vertailemaan käyttöjärjestelmien kehitystä ja tärkeimpiä ominaisuuksia. Tavoitteena on selvittää kahden ko. käyttöjärjestelmien muistin- ja prosessinhallinnan sekä käyttöliittymien eroja. Myös käyttöjärjestelmien kehitys niiden nykytilaan on tärkeä osa työtä, jotta voidaan ymmärtää miksi juuri tietynlaisiin ratkaisuihin on päädytty. Seminaarityössä käsitellään vain käyttöjärjestelmien tärkeimpiä tehtäviä, jotta työ pysyisi järkevässä mittakaavassa. 1.3 Työn rakenne Luvussa 2 käsitellään käyttöjärjestelmien kehityshistoriaa ensimmäisistä versioista nykytilaan. Luku 3 selvittää käyttöjärjestelmien uusimpien versioiden käyttöliittymää ja käytettävyyttä yleisellä tasolla. Luvussa 4 kerrotaan käyttöjärjestelmien yhdestä tärkeimmästä tehtävästä eli prosessin hallinnasta. Luku 5 kuvaa järjestelmien muistinhallintaa nykytilassa. 3
2 KÄYTTÖJÄRJESTELMIEN HISTORIAA 2.1 DOS:ista Windowsiin Windowsia edeltävä Microsoftin kehittämä käyttöjärjestelmä oli MS-DOS. Sen päälle lähdettiin kehittämään ensimmäistä GUI (Graphical User Interface) versiota Windows käyttöjärjestelmästä. Ensimmäinen valmis järjestelmä oli loogisesti Windows 1.0, joka julkaistiin vuonna 1985. Windows ei ollut ensimmäinen graafinen käyttöjärjestelmä ja se lainasikin paljon graafisia ominaisuuksia Applen sitä ennen kehittämästä Macintosh käyttöjärjestelmästä. Microsoft julkaisi muutaman vuoden päästä jatkoa ensimmäiselle versiolleen Windows 2.0 nimikkeellä, joka oli edelleen käytännössä kopio Applen vastineesta. Apple nostikin Microsoftia vastaan monia tekijänoikeussyytteitä elementtien kopioinnista. Kuvia 1 ja 2 tarkasteltaessa voidaan todeta, että Windows kopioi paljon asioita Applen System 1.0:sta. Kuva 1. Windows 1.0 [1] Ensimmäinen todellinen läpimurto Microsoftille oli Windows 3.0. Sen tärkeimpiä uudistuksia olivat ensimmäiset sovellukset, joita ei ajettu enää DOS pohjalta, vaan suoraan Windowsin päällä. Lisäksi suorituskykyä saatiin huomattavasti lisää virtuaalimuistin ja näytönohjainten kehityksen ansiosta. Microsoft alkoi 3.0:n jälkeen kehittämään kahta eri järjestelmää. Windows 3.0 sai jatkoa 3.1 versiolla, joka oli lähinnä bugien korjailua. Se oli tarkoitettu pääasiallisesti 4
kotikäyttöön. 3.1 version rinnalle Microsoft aloitti Windows NT:n kehityksen. NT oli jatkoa Microsoftin ja IBM:n yhteiselle OS/2 projektille, joka jäi kesken eriävien tavoitteiden takia. NT:n tärkein ominaisuus oli sen 32-bittisyys, vaikka todellisuudessa monet ohjelmat ajettiin silti 16-bittisinä. NT oli lähinnä suunnattu yrityskäyttöön sen suuren potentiaalisen suorituskyvyn takia. Windows 3.11:n jälkeen Microsoft kehitti uutta käyttäjäystävällistä käyttöjärjestelmää, joka nimettiin Windows 95:ksi. Siinä pidettiin mukana tuki 32-bittisyydelle, mutta järjestelmä oli vielä käytännössä 16-bittinen. Windows 95 oli läpimurto sen hyvän laitteistoyhteensopivuuden takia. Windows NT 4.0 oli jatkumo aikaisemmalle NT käyttöjärjestelmälle, jota kehitettiin edelleen lähinnä yrityskäyttöön Windows 95:n ohella. Windows 98 julkaistiin korvaamaan Windows 95. Suurin uudistus käyttäjille oli järjestelmän vakaus. Jopa Windows 98:n testiversio oli vakaampi kuin viimeinen versio 95:stä. Ajuritukea oli kehitetty myös huomattavasti. Internetin lisääntynyt käyttö asetti Microsoftille paineita kehittää protokollatukea ja esimerkiksi Windows 98 kaikissa versioissa tulee mukana Internet Explorer -selain. Windows 2000 oli jatkumoa Windows NT 4.0:lle. Se oli pääasiassa suunnattu yritys- ja serverikäyttöön, mutta siihen oli lisätty paljon Windows 98:n ominaisuuksia ja näin ollen soveltui hyvin työpöytäkäyttöön. Muun muassa DirectX-tuki oli ensimmäistä kertaa NTpohjaisessa käyttöjärjestelmässä mukana, joka mahdollisti nykyaikaisien pelien ajon järjestelmässä. Windows ME jatkoi siitä mihin Windows 98 jäi. Siihen oli kopioitu hyvät media- ja verkko-ominaisuudet Windows 2000:sta. Myös järjestelmän palautuspisteet esiteltiin ensimmäisen kerran Windows ME:ssä. Siinä oli kuitenkin paljon vakausongelmia ja sitä kutsuttiinkin leikkimielisesti nimellä Mistake edition tai Many error. Windows XP oli ensimmäinen todellinen yhdistelmä 95/98/ME:stä ja Windows NT/NT 4.0/2000 versioista. XP käyttää NT:n kerneliä. Ensimmäisessä XP versiossa oli paljon haavoittuvaisuuksia ja niitä korjattiin nopeaan tahtiin erillisillä service packeillä. Windows 5
XP julkaistiin ensimmäisen kerran vain 32-bittisenä versiona, mutta siitä julkaistiin myöhemmin 64-bittinen versio myös. [1] 2.2 System 1.0:sta OS X:ään Apple julkaisi ensimmäisen käyttöjärjestelmänsä Macintosh System Software 1.0:n vuonna 1984. Se oli ensimmäinen kokonaan graafinen järjestelmä, joka oli tarkoitettu edulliseksi ratkaisuksi kotikoneisiin. Apple käytti pohjana aikaisempaa Apple Lisa-käyttöjärjestelmää ja System 1.0:ssä olikin paljon elementtejä Lisasta. System 1.0 oli aikanaan todella edistyksellinen järjestelmä, kuten kuvasta 2 nähdään, ja se peittosikin Microsoftin vuotta myöhemmin julkaiseman Windows 1.0:n mennen tullen. Apple kuitenkin jäi kehityksessä hieman paikoilleen heti ensimmäisen järjestelmänsä kanssa. Monia System OS versioita julkaistiin, mutta ne olivat lähinnä pieniä ominaisuuksien lisäyksiä tai bugien korjailua. Kuva 2. Mac System Software 1.0 [2] Viimeistellyn System 4.0:n jälkeen Apple julkaisi System 5.0 käyttöjärjestelmän, joka toi vihdoin uusia tärkeitä ominaisuuksia käyttäjälle. Alkeellinen moniajo oli esimerkiksi tärkeä lisäys paikallaan junnanneen 4.0 jälkeen. System 5.0 oli Applelle vain välietappi, eikä sitä edes julkaistu kuin Pohjois-Amerikassa ja muutamassa Euroopan maassa. System 6.0 korvasi aiemman 5.0:n melko nopeasti sen julkaisun jälkeen ja siitä muodostui Applelle pitkään käytössä ollut vakaa järjestelmä. Se toi mukanaan parannetun laitteistotuen. Tämä oli tärkeää kasvavan suorituskykytarpeen takia. 6
System 7.0 julkaistiin vuonna 1991. Se oli suuri harppaus edellisiin Macintosh System järjestelmiin verrattuna. Macintosh oli edelleen Windowsin järjestelmiä paljon edellä niin ominaisuuksissa kuin käytettävyydessäkin. System 7 toi mukanaan tärkeitä ominaisuuksia muun muassa kehittyneen moniajon, 32-bittisen järjestelmän, pikakuvakkeet ja ohjauspaneelin. System 7 jälkeen Applella alkoi vaikeat ajat, ja järjestelmien kehitys hidastui. Tähän aikaan puolestaan Microsoft kehitti jo täydellä teholla mullistavaa Windows 95- käyttöjärjestelmäänsä. Apple sai viimein vuonna 1997 julkaistuksi Mac OS 8 järjestelmänsä, joka ei kuitenkaan enää vastannut ominaisuuksiltaan Microsoftin kilpailevaa järjestelmää, vaan jäi auttamatta jalkoihin. Samoihin aikoihin tietokoneiden kotikäyttö oli räjähdysmäisesti kasvussa ja lähes poikkeuksetta käyttäjien valinta oli Windows sen ylivertaisten ominaisuuksien takia. Apple ei saanut muutamaan vuoteen mitään varteenotettavaa käyttöjärjestelmää Mac OS 8:n jälkeen ulos. Vuonna 2001 julkaistiin edelleenkin käytössä oleva Mac OS X- käyttöjärjestelmäperhe, joka toi paljon uusia ominaisuuksia ja päivitti suorituskyvyn uudelle tasolle. [2] 2.3 Eroista yhteen Apple ja Microsoft julkaisivat ensimmäiset käyttöliittymälliset käyttöjärjestelmänsä melko samoihin aikoihin. Alussa Microsoft oli Applea jäljessä lähes kaikilla osa-alueilla. Ensimmäinen varteenotettava kilpailija Applen System Software järjestelmille oli Windows 95. Tätä edesauttoi Applen paikalleen jäänyt kehitys erinäisten yrityksen sisäisten vaikeuksien takia. Microsoftilla ja Applella oli lähes samat lähtökohdat käyttöjärjestelmiensä alkuvaiheessa. He valitsivat eri tiet ja prioriteetit järjestelmiensä kehityksessä, mutta silti nykyisin heidän lippulaivansa vastaavat melko paljon toisiaan. 7
3 KÄYTTÖLIITTYMÄT JA KÄYTETTÄVYYS 3.1 Mac OS X Mac OS X omaa helppokäyttöisen käyttöliittymän eli UI:n (user interface). Käyttäjä voi muokata järjestelmän ulkoasua moneen suuntaa, mutta perustoiminnot pysyvät aina samassa paikassa ja toimivat niin kuin Apple ne on suunnitellut. Mac OS ei kysele turhia, jos hommat toimii niin kuin on tarkoitettu, mutta ongelmatilanteissa auttaa käyttäjää tarpeen mukaan. Yhteensopivuusongelmia esiintyy harvoin valmiin Mac paketin kanssa, koska Applen tuotteet ovat yleisesti kokonaisuuksia, joissa laitteisto ja käyttöjärjestelmä ovat yhdessä. Applen tuotteistus rajaa tietokoneen laajennettavuutta erittäin suuresti. Lisäksi paketeissa myytävät Mac tietokoneet ovat usein teknisesti jäljessä muista vapaasti myytävistä komponenteista. Mac OS käyttöjärjestelmä on valmis paketti käytettäväksi heti asennuksen jälkeen. Se tunnistaa laitteet melko mutkattomasti ja osaa hakea tarvittavat päivitykset automaattisesti. Aloittelijat pääsevät helposti alkuun Mac OS:n kanssa, koska se on rakennettu melko putkimaiseksi. Tämä tarkoittaa sitä, että ongelmatilanteet ovat melko rajalliset. Esimerkiksi ohjelmat asentuvat usein yhdellä hiiren painalluksella ja menevät suoraan niille tarkoitettuun kansioon. Kyseinen menettely on käyttäjäystävällinen ja ongelmatilanteet vähenevät. Toisaalta taas tämä rajoittaa käyttäjän mahdollisuuksia melkoisesti. Applen kehitys Mac OS käyttöjärjestelmän osalta on ollut järjestelmällinen ja UI on pysynyt melko samanlaisena jo pitkän aikaa. Pidempää Mac OS käyttöjärjestelmää käyttäneet tietävät kuinka järjestelmä toimii ja osaavat käyttää käyttöliittymää tehokkaasti. Mac OS käyttöjärjestelmä on ollut monia vuosia vähemmän käytetty kuin Microsoftin vastine, mutta viime aikoina se on noussut varteenotettavaksi kilpailijaksi Windowsille sen nopean kehityksen ansiosta. 8
3.2 Windows Microsoft Windows on ollut pitkään suurten käyttäjäryhmien valinta. Windows tarjoaa käyttäjäryhmästä riippuen ominaisuuksia kaikille. Windows on aloittelijaystävällinen ja toimii myös virittelijän alustana moitteettomasti. Microsoft ei myy tuotettaan paketeissa laitteiston kanssa, mutta monet laitevalmistajat myyvät Windowsia laitteistonsa mukana. Windowsilla varustetut pakettikoneet sisältävät usein OEM-versiota (Original Equipment Manufacturer) käyttöjärjestelmästä. Tämä on usein edullisempi ratkaisu loppukäyttäjälle. Pakettikoneet, joiden mukana toimitetaan Windows-käyttöjärjestelmä, eivät ole sidottu laitteistonsa kanssa tiettyihin vaateisiin käyttöjärjestelmän puolelta, vaan ainoastaan laitteiston keskinäinen yhteensopivuus on laajennettavuuden rajana. Windows antaa käyttäjän melko vapaasti muokata järjestelmää omien mieltymystensä mukaan. Tämä saattaa kokemattomalla käyttäjällä aiheuttaa ongelmatilanteita. Kyseinen menettely vaikeuttaa myös ongelmanratkaisua, koska käyttöjärjestelmän on vaikea tietää mistä käyttäjän tekemästä muutoksesta ongelma johtuu. Microsoftilla ei Windowskäyttöjärjestelmän kehityksessä ole ollut yhtä tiettyä pitkälle ulottuvaa strategiaa, vaan sen prioriteetit ovat vaihdelleet julkaisuittain. Windowsien eri versioiden ulkoasu on vaihdellut melko paljon ja eri hallintaohjelmistojen paikat ja nimet ovat muuttuneet lähes julkaisuittain. Tämä aiheuttaa päänvaivaa Windowsia pitkään käyttäneille, jotka ovat tottuneet, että tietyt ominaisuudet löytyivät ennen eri paikasta kuin nykyään. 3.3 Ohjelmistotuki Mac OS:n ohjelmistotuki ontuu vielä tänäkin päivänä melkoisesti, vaikka viimeaikoina cross-platform ohjelmointi onkin yleinen tuotantotapa. Monet suuret ohjelmistotuottajat kehittävät nykyään ohjelmistonsa sekä Windowsissa, että Mac OS:ssä ajettaviksi. Windows on ollut pidempään ja enemmän käytetty käyttöjärjestelmä jonka takia sille on kehitetty enemmän ohjelmia kuin Mac OS:lle. Windows on edelleen markkinoilla johtava käyttöjärjestelmä, mutta Mac OS on erityisesti nostanut päätään helpon käytettävyyden, innovatiivisen tuotekehityksen ja elegantin ulkoasun takia erityisesti kannettavien tietokoneiden ja mobiililaitteiden joukossa. 9
4 PROSESSIENHALLINTA 4.1 Windows Ohjelma pitää sisällään yhden tai useamman prosessin. Prosessi voi olla siis yksinkertaisimmillaan vain suoritettava ohjelma. Nykypäivänä prosesseja suoritetaan säikeiden avulla. Ne suorittavat prosessin sisältöä ja niitäkin voi olla enemmän kuin yksi kohti yhtä prosessia. Säie on siis perusyksikkö, jolle käyttöjärjestelmä allokoi prosessoriaikaa. Jokainen prosessi tarjoaa ohjelmistolle tarvittavat ominaisuudet toimia. Sillä on oma virtuaalinen osoitemuisti, suoritettava koodi, suojausmekanismi, uniikki tunnistus, toimintaympäristö, prioriteettiluokka ja ainakin yksi suoritettava säie. Jokainen prosessi myös alkaa aina säikeen toiminnalla, mitä yleensä kutsutaan pääsäikeeksi, mutta se voi luoda uusia säikeitä tarpeisiinsa. Säie on siis oma kokonaisuus prosessissa, joka voidaan ajoittaa suoritettavaksi. Säikeet jakavat prosessin virtuaalimuistiavaruuden ja resurssit. Mutta jokainen säie pitää sisällään myös omat tietonsa kuten jokainen prosessikin. Niillä on myös omat suojausmekanisminsa. Windows tukee moniajoa, jonka avulla käyttöjärjestelmä jakaa prosessoriaikaa prosessien tai säikeiden kesken. Käytännössä tämä tapahtuu antamalla jokaiselle suoritettavalle säikeelle tai prosessorille oman aikaviipaleensa. Sen pituus on noin 20 millisekuntia, vaikka itse käyttöjärjestelmä ja prosessori vaikuttavat sen pituuteen hieman. Suoritettava säie keskeytetään aina, kun se on käyttänyt oman aikaviipaleensa ja sen tiedot tallennetaan muistiin. Tämän jälkeen seuraavaksi vuorossa olevan säikeen tiedot ladataan muistista ja jatketaan sen toimintaa ja sama toistuu taas uudelleen. Nykyajan moniydinprosessoreilla Windows pystyy suorittamaan yhtä säiettä per ydin. Moni ja sen tukeminen johtaa ongelmaa, jossa pitää päättää mitä prosessia suoritetaan ja missä järjestyksessä. Tästä pitää huolen vuorottaja, joka hoitaa asian prosessien prioriteettien mukaan. Windowsissa prioriteetit vaihtelevat 0 (matalin) ja 31 (korkein) välillä. 10
Kuva 3. Prosessi ja sen säikeiden sisältämiä tietoja [4] Windows käsittelee kaikkia saman prioriteetin omaavia säikeitä samanarvoisina ja jakaa aikaviipaleita round robin-tyyliin kaikille korkeimman prioriteetin säikeille. Mutta jos käyttöjärjestelmään tuleekin korkeamman prioriteetin omaava säie, niin suoritettava säie keskeytetään, vaikka se ei olisi käyttänytkään omaa aikaviipalettaan loppuun. Jokaisen säikeen prioriteetti määräytyy prosessin- ja säikeen prioriteetin mukaan. Nämä kriteerit muodostavat perusprioriteetin, jota kutsutaan myös dynaamiseksi prioriteetiksi, koska se voi vaihdella tiettyjen sääntöjen mukaan. Tämäkin on toteutettu vain sen takia, että kaikki säikeet saisivat mahdollisemman tasavertaista palvelua eikä niistä mikään nälkiintyisi. Windows lisää prioriteettia säikeelle seuraavissa tapauksissa: 1. Kun prosessi tuodaan etualalle työpöydällä, niin vuorottaja muuttaa sen prioriteetin korkeammaksi kuin työpöydällä taustalla toimivilla prosesseilla. Prioriteetti palautetaan alkuperäiseksi, kun prosessi ei ole enää työpöydän etualalla. 11
2. Kun ikkuna vastaanottaa syötettä kuten ajastimen, hiiren tai näppäimistön viestin niin prosessin prioriteettia nostetaan 3. Kun odotusehdot keskeytetyltä säikeeltä ovat saavutettu, niin vuorottaja nostaa sen prioriteettia. Esimerkiksi jonkin I/O-toiminnan loppuminen voi aiheuttaa sen. Kun säikeen dynaamista prioriteettia on nostettu, niin vuorottaja laskee sitä aina yhdellä tasolla aikaviipaleen loputtua, kunnes se saavuttaa alkuperäisen arvonsa. Myös on mahdollista, että kaksi tai useampi säiettä eri prioriteeteilla ovat kiistassa keskenään saamassa vuoroa. Tällöin Windows käyttää prioriteetti-inversiota, jossa se satunnaisesti lisää valmisjonossa olevien säikeiden prioriteettia. [5] 4.2 Mac OS Mac-käyttöjärjestelmässä prosessit jaetaan neljään prioriteettiluokkaan, jotka on lueteltu taulukossa 1 niiden ominaisuuksien mukaan. Käytännössä kaikki säikeet aloittavat normaalista prioriteettiluokasta. Sitä voidaan muuttaa joko itse käyttäjän tai ohjelmiston pyynnöstä. Kernelmoodin säikeet suoritetaan heti kuin mahdollista. Taulukko 1. Prosessien prioriteettiluokat. Prioriteettiluokka Normaali Systeemin korkea Ominaisuudet Normaalien ohjelmistojen säikeiden prioriteetit Säikeet, joiden prioriteettia on nostettu Kernelmoodi Tosiaikainen Varattu vain ytimessä kehitetyillä säikeille, joilla on aina korkeampi prioriteetti kuin käyttäjäavaruudessa kehitetyillä säikeillä Säikeille, jotka tarvitsevat tarkan kellojakson prosessoriaikaa pysyäkseen toiminnassa 12
Tosiaikaisella prioriteettiluokalla oleville prosesseille varataan aina jokin tietty kellojakso suorittimen toiminnasta. Tätä kellojaksoa toistetaan aina niin kauan kunnes käyttöjärjestelmä päättää toisin. Jonkin prosessi voi varata ylimääräistä aikaa ja käyttöjärjestelmä yrittää pitää kirjaa niiden suorittimen tarpeesta. Tässä tapauksessa prosessi voidaan tiputtaa normaaliin prioriteettiluokkaan. Vuorottaja toimii Macissa samantyyppisesti kuin Windowsissa. Molemmissa käytetään normaalien prosessien vuorottamiseen dynaamista ajanjakoalgoritmia. Siinä prioriteetit vaihtelevat prosesseille niiden käytön mukaan ja niitä vaihdellaan tiettyjen ajanjaksojen välillä. Käytännössä Mac antaa suoritinsidonnaisille prosesseille pienemmän prioriteetin, etteivät ne pääsisi monopolisoimaan sen käyttöä ja estäisi I/O-sidonnaisia prosesseja toimimasta. I/O-sidonnaiset prosessit käyttävät suorittimen aikaa yleensä vain hetken verran ja keskeytyvät samasta syystä, joten suoritinsidonnaiset prosessit saavat silti tarvittavan määrän aikaa prosessorilta. Tämä kaikki hoidetaan Mach-vuorottajalla, jolla on omat keinonsa vaihtaa prioriteettia sen mukaan miten prosessit käyttäytyvät systeemissä ja muiden prosessien kanssa. [3] 4.3 Ajanjakoalgoritmit Mac OS:n sekä Windowsin ensimmäiset versiot eivät tukeneet moniajoa, siksi niistä ei löytynyt ajanjakoalgoritmia. Vuonna 1984 Mac OS 5 -versiossa esiteltiin uusi niin sanottu co-operative moniajomalli (cooperative scheduler), jossa jaksotus oli suoritettavan ohjelman vastuulla. Windows 3.1:een sama ominaisuus tuli vasta vuoden 1992 alussa. Parannusta saatiin aikaan vuonna 1995 Windows 95:n tullessa markkinoille, kun jaksotus siirrettiin pääasiassa käyttöjärjestelmän harteille uudella niin sanotulla ennaltaehkäisevällä (preemptive) ajanjakoalgoritmilla. Mac OS 9 -versio vuonna 1999 esitteli saman ominaisuuden. Tosin vieläkään käyttöjärjestelmät eivät täysin tukeneet tätä ominaisuutta. Mac OS tarjosi ohjelmoijalle mahdollisuuden käyttää uutta algoritmia, kun taas Windows 95 käytti sitä vain 32-bittisissä sovelluksissa, eikä 16-bittisissä. Nykyään molemmissa käyttöjärjestelmissä sekä Windows NT-pohjaisissa (Windows 2000, XP, Vista, 7) että Mac OS X:ssä käytetään ajanjakoalgoritmia, joka on eräänlainen hybridi FIFOn, Round- Robinin sekä prosessien priorisointien välillä (multilevel feedback queue). [6], [7] 13
5 MUISTINHALLINTA 5.1 Windows Windows-käyttöjärjestelmissä virtuaalimuistimanageri kontrolloi muistinvarauksen sekä hoitaa sivutuksen. Muistin maksimimäärän määrittää laitteisto. 32-bittisellä laitteistolla virtuaalimuistin muistiavaruuden koko on neljä gigatavua ja fyysisen muistin määrä vaihtelee 4:stä gigatavusta 128:aan gigatavuun. Windows 7-käyttöjärjestelmän mukana tosin fyysisen muistin ylärajat kasvoivat. 64-bittisella laitteistolla vastaavat ovat taas virtuaalimuistille 16 teratavua ja fyysisen muistin maksimimäärä vaihtelee 64:n gigatavun ja yhden teratavun välillä. Fyysisellä muistilla viitataan RAM-muistiin (Random Access Memory), jota käytetään päämuistina prosesseille. 32-bittisissä ympäristöissä virtuaalimuisti on jaettu siten, että jokaisella käyttäjäprosessilla on saatavilla 2 gigatavua muistia, koska käyttöjärjestelmä vie puolet muistista. Windowsin järjestelmissä on kuitenkin optio, joka mahdollistaa, että prosessikohtaista muistimäärää voidaan kasvattaa kolmeen gigatavuun, jolloin käyttöjärjestelmän käyttöön jää yksi gigatavu. Tämä ominaisuus on tarkoitettu tukemaan paljon muistia käyttäviä sovelluksia palvelimilla, joilla on käytössään useampi gigatavu käyttömuistia. 64-bitin ympäristöissä vastaavat luvut ovat 8 teratavua käyttäjäprosesseille ja 8 teratavua käyttöjärjestelmälle. Käyttäjäprosesessien muistiavaruudessa hoidetaan prosessikohtaista dataa sekä käyttäjätilan jaettuja kirjastoja (DLL = dynamic link library). Jokaisella prosessilla on oma kontekstinsa muistiavaruudessa, johon kuuluu itse koodi sekä data, jota prosessi tarvitsee. Prosessin ollessa ajossa, osa kontekstista nimeltään käyttöjoukko (working set) on muistissa. Käyttöjärjestelmän varaamassa osassa (system space, myös kernel space) muistiavaruudesta sijaitsee itse käyttöjärjestelmä sekä kernel-tason ajurit. Siihen pääsee käsiksi vain kernel-tason koodi. Nämä kaksi tilaa ovat erotettuja toisistaan tietoturvan takaamiseksi muistia käsitellessä. Käyttäjätason prosessi ei voi päästä käsiksi dataan, joka sijaitsee toisen prosessin kontekstissa tai käyttöjärjestelmän muistiavaruudessa. Rajoitukset takaavat siis sen, että käyttäjäprosessi ei voi lukea tai kirjoittaa dataa joka kuuluu toiselle prosessille, mikä voi johtaa jopa koko järjestelmän kaatumiseen. 14
Kernel-tason ajurit puolestaan ovat luotettuja, ja ne voivat päästä käsiksi myös käyttäjäprosessien muistiavaruuteen. Kun ajuria kutsutaan käyttäjäprosessin säikeessä, koko säikeen data pysyy käyttäjäprosessien muistiavaruudessa. Säikeellä tarkoitetaan tässä tapauksessa moniajojärjestelmissä suoritettavaa osatehtävää, joka on pienempi kuin kokonainen prosessi. Ajuri siis voi päästä käsiksi koko muistiavaruuteen, mutta käyttäjäprosessi ei pääse käsiksi kernel-tason ajurin muistiavaruuteen. Kuvassa 4 näkyy muistiavaruuden jaottelu 32-bittisessä järjestelmässä käyttäjäprosesseille sekä käyttöjärjestelmälle, kuvattuna on myös tila, jossa on käytössä kolme gigatavua virtuaalimuistia kahden sijaan (/3Gb switch). Alempi osa muistiavaruudesta on siis varattu käyttäjäprosesseille, ja ylempi osa on varattu käyttöjärjestelmälle. /3Gb switch -tilaa tukevat muun muassa Windows XP, Windows Server 2003 sekä Windows Advanced Server 2000. Kyseinen tila on hyödyllinen esimerkiksi sille, miten ajuri toimii rajoitetulla muistiavaruudella. Kuvasta 4 voi erottaa myös systeemin alueella olevat tilat paged pool sekä nonpaged pool. Paged pool -alue on siis yksinkertaisesti tila, jossa muisti on sivutettu, kun taas nonpaged pool -tilassa muisti ei ole sivutettua, vaan sitä käyttävät ajurit monille tilavaatimuksilleen. Prosessi voi periaatteessa käyttää hyväkseen koko kahden gigatavun tilaa muistiavaruudesta, joka on jaettu ennalta määrätyn kokoisiksi palasiksi, joita kutsutaan sivuiksi. Sivujen koko on vaihdellut Windows-käyttöjärjestelmien eri iteraatioiden välillä arkkitehtuurin mukaan. Sivun koot ovat vaihdelleet neljästä kilotavusta jopa yhteen gigatavuun 64-bittisellä arkkitehtuurilla. Kullakin sivulla on jokin tila, joka kuvaa miten kyseistä tilaa kullakin hetkellä käytetään. Sivu voi olla saatavilla, jolloin mikään prosessi ei käytä kyseisiä sivuja, sivu voi olla myös varattu, jolloin tietty määrä läheisiä sivuja on varattu jollekin prosessille, mutta kyseisiä sivuja ei lasketa sen prosessin maksimimäärää kohti. Vasta kun prosessin tarvitsee kirjoittaa muistiin, osa varatusta muistista otetaan käyttöön, jolloin sivuista tulee prosessiin sidottuja. Sidotussa tilassa virtuaalimuistimanageri on varannut tilaa sivuille sivutustiedostosta, mitkä kirjoitetaan muistiin ja poistetaan välittömästä päämuistista. 15
Kuva 4. 32-bittisen järjestelmän muistiavaruus. [8] Jokainen sivu virtuaalimuistissa on listattuna sivutaulussa, joka tunnistaa varsinaisen fyysisen osoitteen käyttömuistista, mihin virtuaalimuistissa olevalla osoittimella viitataan. Käyttöjärjestelmä sekä prosessori molemmat käyttävät informaatiota virtuaaliosoitteesta löytääkseen oikean merkinnän sivutaulusta tietylle sivulle. Tarkemmin kuvattuna virtuaaliosoite sisältää offset-tavun sekä useita indeksoituja arvoja, joiden avulla käyttöjärjestelmä sekä prosessori löytävät sivutaulusta kohdan, joka kartoittaa virtuaalisivun fyysisestä muistista. Kuvassa 5 nähdään yleisellä tasolla, kuinka fyysisen muistipaikan haku tapahtuu sivutaulun avulla. Windows käyttää järjestelmää nimeltään resident set management scheme, jossa jokaiselle prosessille määrätään oma käyttöjoukko sivuja, kun se luodaan. Prosessin viitatessa sivuun, joka ei löydy päämuistista tapahtuu heittovaihto, jossa päämuistissa olevia kyseiselle prosessille tarkoitettuja sivuja siirretään päämuistista massamuistiin, joka sijaitsee kiintolevyllä, ja tilalle tuodaan massamuistista viitatut sivut. Kun muistia 16
on riittävästi muistimanageri antaa aktiivisten prosessien käyttöjoukkojen kasvaa, ja keskeytyksen sattuessa uusia sivuja tuodaan päämuistiin, mutta vanhoja ei heittovaihdeta pois. Kun taas muisti on vähissä, muistimanageri vapauttaa muistia käyttöjärjestelmälle heittovaihtamalla vähän käytettyjä sivuja pois päämuistista täten pienentäen aktiivisten prosessien käyttöjoukkoja. [10] Kuva 5. Fyysisen muistipaikan haku sivutaulun avulla. [9] 5.2 Mac Muistinhallinta nykyään Mac OS-käyttöjärjestelmissä onnistuu myös Windowsin tapaan virtuaalimuistin avulla. Virtuaalimuistitekniikka Mac-käyttöjärjestelmissä perustuu Mach VM -systeemiin (Virtual Memory). Mach VM perustuu pitkälti konseptiin, jossa fyysinen muisti toimii välimuistina virtuaalimuistille. Mac OS:n fundamentaaliset perusteet ovat samat, mutta joitain eroja löytyy yksityiskohdista, kuten virtuaalimuistisysteemin tehostamisesta. Järjestelmä on täysin integroitu käyttöjärjestelmään eikä sitä saa pois päältä. 32-bittisissä järjestelmissä virtuaalimuistin raja per prosessi on sama kuin Windows-ympäristössä, eli 4 gigatavua. 64-bittiset järjestelmät tukevat Macin puolella 18 exatavun muistia prosessikohtaisesti. Myös heittovaihto on toteutettu mahdollistaen sivujen vaihdon massamuistiin ja takaisin. Prosessin osoiteavaruus koostuu mapatuista muistin alueista, joista jokainen kuvastaa tiettyä käyttöjoukkoa virtuaalimuistisivuja. 17
Korkeimmalla tasollaan Mach VM koostuu osoiteavaruuksista, ja tavoista manipuloida näitä osoiteavaruuksia tämän ulkopuolelta. Nämä muistiavaruudet ovat suojattuja, jotta voidaan kontrolloida, mitkä tehtävät pääsevät niihin käsiksi. Alemmalla tasolla, objektitasolla, virtuaalimuisti nähdään VM- sekä muistiobjekteina. Näitä objekteja voidaan muokata kutsuilla. jotka ovat saatavilla sekä tehtäville että sivuttajille. VM-objektit ovat sisäisiä virtuaalimuistijärjestelmälle, ja ne sisältävät tietoa siitä, kuinka muistia käsitellään. Muistiobjektit puolestaan tarjoaa sivuttaja. Mac OS:llä on kolme perussivuttajaa: oletusarvoinen sivuttaja, vnode sivuttaja sekä laitesivuttaja. Sivuttajat ovat linkitettyinä virtuaalimuistijärjestelmään vanhan Mach VMsivuttajan rajapinnan sekä UPL:ien kautta. UPL-rakenteita (Universal Page List) käytetään muuttamaan sivujen käyttäytymistä liittyen välimuistin käyttöön, oikeuksiin, kartoitukseen jne. Sivutus tapahtuu kutsumalla vm_allocate -funktiota, jonka pyynnöstä kernel suorittaa joukon osatehtäviä. Kun ohjelmalta tulee pyyntö kirjoittaa tai lukea muistia ja kernel toteaa, ettei fyysisessä- eikä virtuaalimuistissa vielä ole mitään, tapahtuu keskeytys. Tässä vaiheessa kernel suorittaa seuraavat toiminnot: 1. Varataan muistialue kirjoittamalla tarvittava määrä nollia 2. Kirjoitetaan viittaus VM-objektiin äsken varatusta alueesta. 3. Täytetään fyysinen muisti pyydetyllä tietorakenteella ja linkittää sen virtuaalimuistiin. [11] 18