MAC OS:N JA UNIXIN VERTAILEMINEN



Samankaltaiset tiedostot
Linux. 00 Keskeiset piirteet. Unix ja Linux Helsingin ammattikorkeakoulu Stadia Vesa Ollikainen (muokannut M.Mäki-Uuro) Kysymyksiä

Applen käyttöjärjestelmät

Sisältö. Unixin syntymätarina. Unixin tekniikka. Unix tänä päivänä. Avaruuspelistä moderniksi käyttöjärjestelmäksi Vuodet

Historiaa. Unix kirjoitettiin kokonaan uudestaan C-kielellä Unix jakautui myöhemmin System V ja BSDnimisiin. Kuutti, Rantala: Linux

Concurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo

Linux rakenne. Linux-järjestelmä koostuu useasta erillisestä osasta. Eräs jaottelu: Ydin Komentotulkki X-ikkunointijärjestelmä Sovellusohjelmat

Käyttöjärjestelmien historia. Joni Herttuainen Henri Jantunen Markus Maijanen Timo Saksholm Johanna Tjäder Eetu Turunen

WINE API ja Virtualisointiohjelmistot

KYMENLAAKSON AMMATTIKORKEAKOULU Tietotekniikan koulutusohjelma / Tietoverkkotekniikka

Tietokone. Tietokone ja ylläpito. Tietokone. Tietokone. Tietokone. Tietokone

Pertti Pennanen DOKUMENTTI 1 (5) EDUPOLI ICTPro

Unix-perusteet. Unix/Linux-käyttöjärjestelmä ja sen ominaisuudet

Käyttöjärjestelmät: prosessit

LINUX LINUX. Viisi hyvää syytä käyttää Linuxia MUISTA! GNU Free Documentation License

Menetelmäraportti - Konfiguraationhallinta

Alkuraportti. LAPPEENRANNAN TEKNILLINEN YLIOPISTO TIETOJENKÄSITTELYN LAITOS CT10A Kandidaatintyö ja seminaari

TI10 Joni Hämäläinen & Jan Lampikari

Linux palomuurina (iptables) sekä squid-proxy

ARKIPÄIVÄN SUOMEA-ohjelma vaatii toimiakseen multimedia-pc:n, jossa on seuraavat tekniset ominaisuudet ja ohjelmat asennettuna.

TIETOKONE JA TIETOVERKOT TYÖVÄLINEENÄ

2 Konekieli, aliohjelmat, keskeytykset

VALO-ohjelmat ja LTSP kouluissa. Elias Aarnio Innopark, AVO-hanke

UCOT-Sovellusprojekti. Asennusohje

Avoimen lähdekoodin kehitysmallit

Maastotietokannan torrent-jakelun shapefile-tiedostojen purkaminen zip-arkistoista Windows-komentojonoilla

Tietotekniikan koulutus Savonlinnassa

Luento 2. Timo Savola. 31. maaliskuuta 2006

SQLite selvitysraportti. Juha Veijonen, Ari Laukkanen, Matti Eronen. Maaliskuu 2010

SQL Server 2005 Express Edition tietokannan asennusohje

Ti LÄHIVERKOT -erikoistyökurssi. X Window System. Jukka Lankinen

Tietojenkäsittelyn perusteet 2. Lisää käyttöjärjestelmistä

Käyttöjärjestelmät. Teemu Saarelainen Tietotekniikka

CUDA. Moniydinohjelmointi Mikko Honkonen

Metropolia Ammattikorkeakoulu

Tekstinkäsittelystä. H4: Tekstinkäsittelyn perusharjoitus. Toimisto ohjelmista

Luento 3. Timo Savola. 7. huhtikuuta 2006

Tiedostojen siirto ja FTP - 1

Sisältö Tervetuloa Linuxin käyttäjäksi Olet tässä

CT50A2601 Käyttöjärjestelmät Androidin ja Symbianin vertailu Seminaarityö

Arkkitehtuurikuvaus. Ratkaisu ohjelmistotuotelinjan monikielisyyden hallintaan Innofactor Oy. Ryhmä 14

Tikon Ostolaskujenkäsittely versio SP1

Linuxissa uusi elämä 1

Älypuhelimet. Sisällysluettelo

Lisenssin hakeminen PTC:n verkkosivun kautta

KYMENLAAKSON AMMATTIKORKEAKOULU Tietotekniikan koulutusohjelma / Tietoverkkotekniikka. Joni Korjala APACHE WWW-PALVELIN Seminaarityö 2012

Haaga-Helia/IltaTiko ict2tcd005: Ohjelmiston suunnittelutaito 1/7 Anne Benson. Tällä opintojaksolla käytämme VS:n kolmen kokonaisuuden luomiseen:

HYÖDYNNÄ SUBSCRIPTION-ETUSI SUBSCRIPTION SOPIMUSTEN HALLINTA

KYMENLAAKSON AMMATTIKORKEAKOULU

Ongelma(t): Jotta tietokone olisi mahdollisimman yleiskäyttöinen ja suorituskykyinen, niin miten tietokoneen resurssit tulisi tarjota ohjelmoijalle,

1 Tivax siirto uuteen koneeseen

4. Lausekielinen ohjelmointi 4.1

Pedacode Pikaopas. Java-kehitysympäristön pystyttäminen

Pikaintro käyttöjärjestelmiin

OHJ-1010 Tietotekniikan perusteet 4 op Syksy 2012

Ongelma(t): Miten tietokoneen käyttöjärjestelmä toimii sisäisesti, jotta resurssit saadaan tehokkaaseen käyttöön?

Tehtävä: FIL Tiedostopolut

Tietokoneen muisti nyt ja tulevaisuudessa. Ryhmä: Mikko Haavisto Ilari Pihlajisto Marko Vesala Joona Hasu

OHJELMISTOKEHITYS -suuntautumisvaihtoehto

Sisältöä. Tietokoneen rakenne. Ch 1 - Ch 8 [Sta06] Valikoituja paloja TITO-kurssista. Tietokonejärjestelmä

Ubuntu - tiedostohallinta

ELM GROUP 04. Teemu Laakso Henrik Talarmo

Mikä on internet, miten se toimii? Mauri Heinonen

PRINCIPLES OF PROGRAMMING LANGUAGES - DEBUGGER

Kieliversiointityökalu Java-ohjelmistoon. Ohje

MP3 Manager Software for Sony Network Walkman

Unix-perusteet. Tiedosto-oikeudet

Ohjelmointi 1. Kumppanit

Laskennallisen fysiikan esimerkkejä avoimesta tutkimuksesta Esa Räsänen Fysiikan laitos, Tampereen teknillinen yliopisto

Mac OS:n ja Windowsin vertaileminen

Muistihierarkia Kiintolevyt I/O:n toteutus

Tietokonejärjestelmä. Tietokoneen rakenne. Ch 1 - Ch 8 [Sta06] Valikoituja paloja. TITO-kurssista. John von Neumann ja EDVAC, 1949.


Jouko Nielsen. Ubuntu Linux

Linux ylläpitäjän opas. Tärkeimmät komennot, logit ja muuta hömppä *^_^* by Hannu Laitinen ETA14KT

Rekursiolause. Laskennan teorian opintopiiri. Sebastian Björkqvist. 23. helmikuuta Tiivistelmä

Perussurffaajat: Tiia Tirkkonen, Teppo Porkka, Janne Tuomisto. Verkkopalvelun arviointisuunnitelma Spotify

Lisensointikuulumisia - Kustannustehokkuus Oracle lisensoinnissa

GNU/Linux kotikäytössä

Harjoituksen aiheena on tietokantapalvelimen asentaminen ja testaaminen. Asennetaan MySQL-tietokanta. Hieman linkkejä:

Nero 7:n Windows Vista TM -tuki

Visual Case 2. Miika Kasnio (C9767)

Virtualisoi viisaasti paranna palvelua. Iikka Taanila Systems Architect IBM Systems and Technology Group

Demo 13. Aihe: Linux. Opettaja: Antti Ekonoja. Tekijä: Heini Puuska

Käyttöjärjestelmän rakenne

Jussi Klemola 3D- KEITTIÖSUUNNITTELUOHJELMAN KÄYTTÖÖNOTTO

Näin asennat MS-DOS käyttöjärjestelmän virtuaalikoneeseen

Automaatiojärjestelmän hankinnassa huomioitavat tietoturva-asiat

Javan asennus ja ohjeita ongelmatilanteisiin

Tietoturvan Perusteet Yksittäisen tietokoneen turva

Virtualisointiympäristössä on kolme pääosaa: isäntä (host), virtualisointikerros ja vieras (guest).

Sisältö IT Linux 2001:n uudet ominaisuudet IT Linux 2001:n yhteensopivuus Red Hat 7.0:n kanssa Asennuksen valmistelu

Directory Information Tree

KYMENLAAKSON AMMATTIKORKEAKOULU Tietotekniikan koulutusohjelma / Tietoverkkotekniikka

Action Request System

ASENNUSOHJEET INTERNET-ASENNUS. Navita Yritysmalli. YHTEYSTIEDOT Visma Solutions Oy Mannerheiminkatu LAPPEENRANTA Puh.

FinFamily PostgreSQL installation ( ) FinFamily PostgreSQL

Standardit IEC (perustandardi) ja IEC (prosessit)

UNIXIN JA LINUXIN VERTAILEMINEN

TIETOKANNAT: MYSQL & POSTGRESQL Seminaarityö

Transkriptio:

Lappeenrannan teknillinen yliopisto Teknistaloudellinen tiedekunta Tietotekniikan koulutusohjelma Opintojakson Käyttöjärjestelmät seminaarityö Markus Hämäläinen, Ilkka Tommola ja Antti Laapas MAC OS:N JA UNIXIN 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 Markus Hämäläinen, Ilkka Tommola ja Antti Laapas Mac OS:n ja Unixin vertaileminen Seminaarityö 2010 25 sivua, 2 kuvaa Työn tarkastaja: Professori Heikki Kälviäinen Hakusanat: Unix, Mac OS, muistinhallinta, prosessien hallinta, tiedostojärjestelmä Keywords: Unix, Mac OS, memory management, process control, file system Tässä työssä tutkitaan kahden suositun käyttöjärjestelmän, Unixin ja Mac OS:n ominaisuuksia ja eroavuuksia. Unix on näistä kahdesta vanhempi ja eri kehitysversioiltaan haarautuneempi. Työssä luodaan kirjallisuuden perusteella katsaus Mac OS- ja Unixkäyttöjärjestelmien yleisiin toimintaperiaatteisiin sekä vertaillaan järjestelmiä toisiinsa mm. muistin- ja prosessien hallinnan sekä tiedostojärjestelmien osalta. Seminaarityö osoittaa, että eri käyttötapojen vuoksi järjestelmät ovat kehittyneet tietyiltä ominaisuuksiltaan selvästi toisistaan eroaviksi, joskin niiden toiminnassa sekä historiassa on myös selkeitä yhtymäkohtia. ii

ABSTRACT Lappeenranta University of Technology Faculty of Technology Management Degree Program in Information Technology Markus Hämäläinen, Ilkka Tommola and Antti Laapas Comparison of Mac OS and Unix Seminar Report 25 pages, 2 figures Examiner: Professor Heikki Kälviäinen Keywords: Unix, Mac OS, memory management, process control, file system In this report the properties and differences of two popular operating systems, Unix and Mac OS, are studied. Unix is the older one of these two and it has more different development branches. In the report, a review of general working principles of these systems is made and their differences in terms of process control, memory management and file systems are being compared based on literature. This seminar report indicates that because of different uses these systems have developed to clearly differ from each other by certain properties, although they have clear similarities in their operations and history. iii

ALKUSANAT Työ on tehty Lappeenrannan teknillisen yliopiston kurssin Käyttöjärjestelmät seminaarityönä. Haluamme kiittää perheenjäseniämme heidän tuestaan. Kiitämme myös Heikki Kälviäistä, joka työn ohjaajana antoi tärkeitä neuvoja raportin laadintaan. iv

SISÄLLYSLUETTELO 1 JOHDANTO... 3 1.1 TAUSTA...3 1.2 TAVOITTEET JA RAJAUKSET...3 1.3 TYÖN RAKENNE...3 2 UNIXIN JA MAC OS:N HISTORIA... 4 2.1 UNIX...4 2.2 MAC OS...6 3 UNIXIN JA MAC OS:N ESITTELY... 8 3.1 UNIX...8 3.2 MAC OS...10 4 MUISTINHALLINTA... 12 5 PROSESSIEN HALLINTA... 14 6 TIEDOSTOJÄRJESTELMÄ... 16 7 MUUT EROT MAC OS X:N JA UNIXIN VÄLILLÄ... 18 8 YHTEENVETO... 19 LÄHTEET... 20 1

SYMBOLI- JA LYHENNELUETTELO 2D Two-Dimensional 3D Three-Dimensional A/UX Apple Unix BSD Berkeley Software Distribution BIOS Basic Input-Output System CSRG Computer Systems Research Group CPU Central Processing Unit GNU GNU's Not Unix IEEE Institute for Electrical and Electronics Engineers I/O Input/Output Mac OS Mac Operating System MIT Massachusetts Institute of Technology Multics Multiplexed Information and Computing Service NB New B OSF Open Systems Foundation POSIX Portable Operating Systems Interface RAM Random Access Memory SCO Santa Cruz Operation SPARC Scalable Processor Architecture SUS Single Unix Specification SVR4 Unix System V Release 4 TCP/IP Transmission Control Protocol/Internet Protocol UCB University of California, Berkeley 2

1 JOHDANTO 1.1 Tausta Unix ja Mac OS ovat eri versioineen suosittuja käyttöjärjestelmiä. Näistä Unix on selvästi vanhempi ja eri kehitysversioiltaan haarautuneempi. Mac OS:n (Operating System) viimeisin versio Mac OS X on vahvasti Unixiin pohjautuva, mutta sitä ei kuitenkaan lueta perinteisten Unix-järjestelmien joukkoon. Mac OS on perinteisesti ollut suosittu työpöytäkäytössä, Unix puolestaan on nykyään yleinen palvelinkäytössä. Näiden eri käyttötapojen johdosta molempien järjestelmien ominaisuudet ovat kehittyneet tietyissä määrin toisistaan eroaviksi. 1.2 Tavoitteet ja rajaukset Työn tavoitteena on luoda katsaus Mac OS- ja Unix-käyttöjärjestelmien yleisiin toimintaperiaatteisiin sekä vertailun tekeminen näiden kahden järjestelmän välillä. Työssä keskitytään erityisesti muistin- ja prosessien hallintaan sekä tiedostojärjestelmiin kyseisissä käyttöjärjestelmissä. Työssä käsitellään käyttöjärjestelmää kernelin eli ytimen lisäksi kokoelmana välttämättömiä apuohjelmia ja kirjastoja. Mac OS:ää käsitellessä paneudutaan lähinnä sen tuoreimpaan työpöytä- ja palvelinkoneissa käytettävään versioon eli Mac OS X:ään. Työssä ei perehdytä käyttöliittymien eroihin. 1.3 Työn rakenne Luvussa 2 esitellään käsiteltyjen käyttöjärjestelmien historiaa. Luvussa 3 käydään läpi joitakin yleisiä asioita molemmista järjestelmistä. Luvussa 4 perehdytään järjestelmien muistinhallintaan, luvussa 5 järjestelmien prosessinhallintaan ja luvussa 6 järjestelmien tiedostojärjestelmiin. Luvussa 7 luodaan vielä katsaus järjestelmien välisiin muihin eroavaisuuksiin, jotka eivät liity aiemmissa luvuissa käsiteltyihin asioihin. Lopuksi työn avainasiat kootaan yhteenvedossa (luku 8). 3

2 UNIXIN JA MAC OS:N HISTORIA 2.1 Unix Vuonna 1965 ryhmä General Electricin ja Bell Labsin tiedemiehiä liittyi MIT-yliopiston (Massachusetts Institute of Technology) projektiin, jossa tavoitteena oli luoda Multicsosituskäyttöjärjestelmä (Multiplexed Information and Computing Service) suurtietokoneita varten. Projektissa ei saavutettu sille asetettuja tavoitteita ja vuonna 1969 Bell Labs vetäytyi yhteistyöstä. Multics kehittyi lopulta toimivaksi järjestelmäksi, mutta siitä tuli suppeampi kuin alun perin oli tarkoitettu. (The Creation of the UNIX* Operating System 2007) Muutama Bell Labsin työntekijä alkoi kehitellä vaihtoehtoista järjestelmää Multicsille. Varsinainen alkusysäys Unixille tapahtui vuoden 1969 keväällä, jolloin tutkijat keskustelivat siitä, millainen tietokoneen käyttöjärjestelmän tulisi olla. Ken Thompson ja Dennis Ritchie kirjoittivat ensin mainitun aiemmin luomasta Space Travel -pelistä version PDP-7-koneelle, mitä varten he joutuivat luomaan myös joitakin alijärjestelmiä. Nyt koneella oli jo jonkinlainen järjestelmä ei kuitenkaan vielä varsinainen käyttöjärjestelmä. (The Creation of the UNIX* Operating System 2007) Kesän 1969 aikana Thompson jatkoi järjestelmän kehittämistä ja toteutti mm. tiedostojärjestelmän, käyttäjätason apuohjelmia sekä komentotulkin. Järjestelmä alkoi olla valmis ja vuonna 1970 Brian Kernighan ehdotti nimeä "Unix", joka muodostui sanaleikkinä nimestä "Multics". Vanhentuneen PDP-7:n tilalle hankittiin PDP-11, ja järjestelmän kirjoittaminen sille alkoi joulukuussa 1970. Ensimmäinen käytännön sovellus järjestelmälle oli tekstinkäsittely Bell Labsin patenttiosastolla. (The Creation of the UNIX* Operating System 2007) Alun perin Unix oli kirjoitettu symbolisella konekielellä, mutta Thompsonin tavoite oli kirjoittaa se korkeamman tason kielellä. Aluksi hän kokeili Fortrania, josta kuitenkin luopui nopeasti. Thompson loi yksinkertaisen kielen, jota hän kutsui nimellä "B". Seuraava vaihe oli NB eli "New B" ja lopulta kesällä 1972 alkoi Unixin uudelleenkirjoittaminen C- kielellä. Työ valmistui seuraavan vuoden kesällä. Unixia levitettiin aluksi edullisilla 4

akateemisilla lisensseillä ja vuodesta 1975 alkaen hallituksellisella sekä kaupallisilla lisensseillä. (The Creation of the UNIX* Operating System 2007) 1976 77 Thompson toimi vierailevana professorina Kalifornian yliopiston Berkeleyn kampuksella (UCB, University of California, Berkeley), jossa hän opetti Unixia ja kehitti järjestelmää, josta myöhemmin tuli Versio 6. Järjestelmästä tuli välittömästi suosittu ja Berkeleyn opiskelijat ja professorit jatkoivat sen parantelua. Lopulta muodostettiin järjestelmä nimeltä BSD (Berkeley Software Distribution) Versio 4.2, joka ostettiin myös moniin muihin yliopistoihin. (The Creation of the UNIX* Operating System 2007) UCB:ssa perustettu CSRG-ryhmä (Computer Systems Research Group) oli tärkeä tekijä Unixin levittämisessä ja kehittämisessä. CSRG mm. teki suurimman osan työstä TCP/IPprotokollien luomisessa ja Unix olikin tärkeässä asemassa Internetin alkuaikoina. Unix oli levinnyt yliopistomaailmaan ja lopulta liikeyritykset saivat tietää järjestelmästä palkatessaan uusia ohjelmoijia, jotka olivat käyttäneet sitä yliopistossa. Uusi liiketoimintamahdollisuus sai nopeasti alkunsa: Unixille alettiin kirjoittaa kaupalliseen käyttöön tarkoitettuja ohjelmia. Unix oli houkutteleva liiketoimintasovelluksiin osituskäyttö- ja moniajomahdollisuuksiensa vuoksi. Lisäksi järjestelmä oli yhteensopiva eri toimittajien koneiden kanssa ja sisälsi mahdollisuuden sähköpostin käyttöön. (The Creation of the UNIX* Operating System 2007) 1980- ja 90-luvuilla kehitystyö Unixin parissa jatkui ja useita eri levitysversioita julkaistiin. Bell Labsin julkaisuja olivat Versiot 6 ja 7, System III ja System V. Bell Labsin virallisten versioiden lisäksi tärkeitä olivat Berkeleyn BSD-julkaisut. 1993 Novell osti Unixin AT&T:ltä, mutta myi kaksi vuotta myöhemmin koko Unix-liiketoimintansa Santa Cruz Operationille (SCO). Bell Labsissa jatkettiin kehitystyötä koko ajan ja järjestelmästä kehitettiin versiot 8, 9 ja 10. Nykyisin Unix-pohjaisia järjestelmiä on saatavilla lukuisilta yhtiöiltä. Näitä ovat mm. Sun Microsystemsin Solaris, Hewlett-Packardin HP-UX, IBM:n AIX ja Compaqin Tru64 UNIX. Lisäksi on olemassa useita vapaasti saatavilla olevia Unixja Unix-yhteensopivia versioita, kuten Linux, FreeBSD ja NetBSD. (The Creation of the UNIX* Operating System 2007) Suurin osa Unix-pohjaisista järjestelmistä perustuu jompaankumpaan kahdesta perusversiosta - AT&T:n System V:hen tai Berkeleyn BSD:hen. Näiden kahden väliset 5

erot ovat saatavilla olevissa apuohjelmissa ja tiedostorakenteen toteutuksessa. Useimmat Unix-järjestelmät sisältävät ominaisuuksia molemmista perusversioista, mikä on osoitus Unixille tyypillisestä tavasta tarjota joustavuutta ja mahdollisuus tehdä asiat usealla vaihtoehtoisella tavalla. (Love et al. 2005) Koska Unix-versioita on useita, käyttäjälle tarjoutuu mahdollisuus valita järjestelmä, joka parhaiten vastaa hänen tarpeitaan ja järjestelmälle asetettuja vaatimuksia. Tämä valinnanvapaus on monien mielestä vahvuus, mutta jotkut näkevät sen myös heikkoutena. Toisistaan poikkeavat versiot ovat joiltakin osin epäyhteensopivia. Unixista ei ole olemassa "oikeaa" versiota - ainoastaan erilaisia toteutuksia. (Love et al. 2005) IEEE (Institute for Electrical and Electronics Engineers) loi standardin 1003 (IEEE 1003), joka tunnetaan myös nimellä POSIX (Portable Operating Systems Interface). POSIX yhdistettiin SUS-standardin (Single Unix Specification) kanssa ja siitä tuli yksi yhtenäinen standardi Unix-versioita varten. Kaikki Unixit eivät noudata POSIX:ia tarkasti, mutta suurin osa noudattaa siinä hahmoteltuja pääperiaatteita. (Love et al. 2005) Aikaiset Unix-versiot olivat pääasiassa kaupallisia. Vuonna 1984 insinööri Richard Stallman aloitti GNU-projektin (GNU's Not Unix). Projektin tarkoituksena oli luoda Unixin kaltainen käyttöjärjestelmä, jota kuka tahansa voisi levittää ja käyttää ilmaiseksi. Stallman johtaa nykyisin Free Software Foundation -järjestöä, ja monet hänen ja tukijoidensa luomista ohjelmista ovat käytössä sekä kaupallisissa että avoimen lähdekoodin Unix-versioissa. (Love et al. 2005) Vuoden 1994 oikeusjutun sopimusratkaisun jälkeen BSD Unix on ollut vapaasti levitettävänä ja siitä ovat muodostuneet NetBSD, FreeBSD ja OpenBSD -projektit. BSD:n tekniikan pohjalta on luotu myös Darwin, johon puolestaan Mac OS X perustuu. (Love et al. 2005) 2.2 Mac OS Vuonna 1976 Steve Wozniak, Steve Jobs ja Ronald Wayne perustivat yhtiön nimeltä Apple. Yhtiön ensimmäinen tuote oli Apple I -tietokone, jonka käyttöjärjestelmänä toimi hyvin yksinkertainen "System Monitor". Seuraavaa mallia, Apple II:sta, valmistettiin 6

useina eri versioina ja niitä varten luotiin useita eri käyttöjärjestelmiä. Vuonna 1984 julkistettiin Macintosh, jonka käyttöjärjestelmänä toimi "Mac System Software", joka oli yhden käyttäjän yksiajokäyttöjärjestelmä. Muutaman seuraavan vuoden aikana Apple paranteli Macintoshin käyttöjärjestelmää ja loi muutaman muun huomionarvoisen järjestelmän, mm. Unix-versio A/UX:n (Apple Unix) vuonna 1988. A/UX yhdisti monia Macintosh-käyttöjärjestelmän ominaisuuksia Unixiin. Merkillepantavaa oli erityisesti järjestelmän helppo asennus. A/UX:n viimeinen versio julkaistiin vuonna 1995. System Softwaresta julkaistiin vuonna 1991 versio 7, joka oli suuri harppaus eteenpäin edellisistä Macintosh-järjestelmistä. Siinäkin oli kuitenkin puutteita, kuten vain yhteistoiminnallinen moniajo ja muistinsuojauksen puute. Järjestelmästä, jonka nimi vaihdettiin version 7.6 yhteydessä Mac OS:ksi, julkaistiin vielä versiot 8 ja 9, viimeinen versio oli 9.2.2 vuonna 2001. (Singh 2004) Vuonna 1985 Steve Jobs jätti Applen ja perusti yrityksen NeXT Computer, Inc. Yritys julkaisi ensimmäisen tietokoneensa vuonna 1988. Käyttöjärjestelmänä siinä toimi NEXTSTEP 0.8, joka perustui Mach 2.5:een ja 4.3BSD:hen. The Mach Project Home Pagen (1997) mukaan Mach on käyttöjärjestelmä, jonka kehittäminen aloitettiin vuonna 1985 Carnegie Mellon -yliopistossa, jossa kehitystyö jatkui vuoteen 1994 asti. NEXTSTEP:in viimeiseksi versioksi jäi 3.3 vuodelta 1995. Järjestelmän seuraajasta, OPENSTEP:istä, julkaistiin kolme versiota vuosina 1996-97. 1990-luvun puolivälin aikoihin Apple yritti epätoivoisesti kehittää Microsoftin Windows-käyttöjärjestelmälle kilpailijaa, ja päätyi lopulta ostamaan NeXT:in. Apple nimesi tulevan NeXT-perustaisen järjestelmänsä Rhapsodyksi, josta julkaistiin kaksi kehittäjäversiota. Vuonna 1999 julkaistiin sekä Rhapsodyyn että Mac OS:ään perustuva Mac OS X. (Singh 2003) Vuonna 1999 julkaistu Mac OS X kulki nimellä Server 1.0, ja syksyllä 2000 julkaistiin ns. julkinen betaversio Mac OS X:sta 29,95 dollarin hintaan käyttäjäkokemuksien keräämiseksi. Tämän jälkeisiin Mac OS X:n julkaisuihin on viitattu nimellä suuret kissat, koska jokaisen julkaistun version koodinimi on nimetty jonkin kissapedon mukaan: esim. heinäkuussa 2001 julkaistun version 10.0 koodinimi on Cheetah. Tuorein versio on lokakuussa 2010 julkaistu 10.7, koodinimeltään Lion. (Mac OS X 2010) 7

3 UNIXIN JA MAC OS:N ESITTELY 3.1 Unix Unix on kerrosmalliin perustuva monen käyttäjän moniajojärjestelmä. Siihen voi siis olla kirjautuneena useita käyttäjiä samanaikaisesti. Lisäksi jokainen käyttäjä voi ajaa useita ohjelmia yhtä aikaa. Käyttöjärjestelmän olennainen osa tunnetaan Unix-terminologiassa nimellä kernel. Kernelin tehtävä on pitää käyttäjät ja prosessit erillään ja säädellä pääsyä laitteistoon. (Fiamingo et al. 1998) Kernel hallinnoi prosesseja, input/output-laitteita, tiedostojärjestelmäoperaatioita ja kaikkia muita käyttöjärjestelmän vaatimia kriittisiä toimintoja. Kernel myös vastaa muistinhallinnasta. Kaikki edellämainitut ovat itsenäisiä toimintoja, sillä käyttäjän prosessit eivät ohjaa niiden suoritusta. Juuri kernel mahdollistaa moniajon ja usean käyttäjän tilan. (Love et al. 2005) Kernel rakennetaan juuri sille laitteistolle, jolla sitä suoritetaan. Esimerkiksi Sun:in Sparctietokoneelle (Scalable Processor Architecture) rakennettu kernel ei toimi Intelprosessorilla varustetussa tietokoneessa ilman muutoksia. Koska kernel käsittelee hyvin matalan tason toimintoja, kuten kiintolevyn ohjausta tai moniajon hallintaa, ei käyttäjä yleisesti ottaen pääse siihen käsiksi suoraan. (Love et al. 2005) Kuten muutkin käyttöjärjestelmät, Unix toimii välikerroksena laitteiston ja tietokoneella ajettavien ohjelmien välillä. Itse asiassa Unix on enemmän kuin pelkkä käyttöjärjestelmä. Sen erottaa perinteisistä järjestelmistä standardisoidut kirjastot ja sovellukset, joita käyttäjät ja kehittäjät voivat käyttää. Standardisoitu käyttöliittymä mahdollistaa sovellusten siirrettävyyden ja tarjoaa käyttäjille tutun ympäristön. (UNIX Unleashed 1997) Unixin kerrosmalli UNIX Unleashed:in (1997) mukaan: laitteisto tiedostojärjestelmä ja prosessienhallinta kirjastot sovellukset 8

Kuten myös kuvasta 1 on nähtävissä, laitteiston yläpuolella toimivat tiedostojärjestelmä ja prosessienhallinta. Välissä sijaitsevat kirjastot, ja ylimpänä kerroksena toimivat sovellukset. Järjestelmän käyttäjä käyttää kirjastoja ja sovelluksia, joista Unixin käyttöliittymä muodostuu. (UNIX Unleashed 1997) Kuva 1. Unixin kerrosmalli (UNIX Unleashed 1997). Käyttäjätason ohjelmien ei tarvitse olla tietoisia laitteistosta - ainoastaan siitä, kuinka kernelin kanssa kommunikoidaan. Koska käyttäjätason ohjelmat eivät ole riippuvaisia laitteistotasosta, ovat ne helposti siirrettävissä. Käyttäjän ohjelmat kommunikoivat kernelin kanssa standardisoitujen järjestelmäkutsujen avulla. Nämä kutsut pyytävät kerneliltä palveluja, kuten tiedoston avaaminen, sulkeminen, lukeminen ja siihen kirjoittaminen, pääsyoikeuksien muuttaminen, hakemiston vaihtaminen sekä prosessien luominen ja sulkeminen. (Fiamingo et al. 1998) Ohjelmien siirrettävyys tarkoittaa käytännössä sitä, että samaa ohjelmaa voidaan ajaa erityyppisillä tietokonelaitteistoilla ilman muutoksia. Tämä on mahdollista, mikäli sovellus käyttää standardoitua Unixin käyttöliittymää laitteiston hallintaan. Sovelluskehittäjän on 9

siis pienellä vaivalla mahdollista tukea samaa sovellusta monilla eri laitteistoalustoilla, mikä pienentää kehityskuluja ja laajentaa potentiaalista asiakaskuntaa. Käyttäjille etuna ohjelmien siirrettävyyden lisäksi on se, että tarjolla on laajempi valikoima ohjelmia. (Unix Unleashed 1997) Vuonna 1984 MIT:ssä Unixeille alettiin kehittää X Window Systemiä (lyh. X), graafista käyttöliittymää, joka toimii abstraktiokerroksena käyttäjän ja laitteiden välillä. X käyttää palvelin-asiakas-mallia, jossa X-palvelin tarjoaa käyttöliittymäkomponentit, joita käyttääkseen X-asiakas ottaa yhteyden palvelimeen. X-palvelin ja X-asiakas eivät välttämättä sijaitse samalla koneella, koska kommunikointi tapahtuu verkkoläpinäkyvästi. Käyttäjän on ensin autentikoiduttava palvelimelle X display managerin kautta. Nykyisin Unix-klooneissa suositaan freedesktop.org-yhteisön kehittämää X.orgia, jonka tavoitteena on saavuttaa yhteensopivuus eri työpöytäympäristöjen välillä. Alkuperäisestä X Window Systemistä poiketen X.orgia voidaan laajentaa moduuleilla, kun taas X Window System oli monoliittinen. Modulaarisuus helpottaa uusien kirjastojen ja laiteajureiden lisäämistä. (Baclit et al. 2009) 3.2 Mac OS Kuten Unixia, myös Mac OS X:ää voidaan tarkastella kerrosmallina. Alemmilla kerroksilla on välttämättömät palvelut, joihin kaikki ohjelmistot pohjautuvat; ylemmillä kerroksilla on edistyneempää teknologiaa ja palveluita, jotka rakentuvat alempien kerroksien pohjalle sekä täydentävät niitä. Kuva 2 havainnollistaa tätä kerrosrakennetta. (Mac OS X Technology Overview 2009) Pohjakerroksen tärkein komponentti on Darwin, jota voidaan pitää Mac OS X:n ytimenä. Se pohjautuu FreeBSD-ympäristöön, joka puolestaan on variantti BSD:n Unixympäristöstä. Darwiniin sisältyvät kernel-ympäristö, laitteiden ajurit, prosessien välisen kommunikoinnin tuki sekä matalan tason komennot ja palvelut, joita kaikki käyttöjärjestelmän ohjelmat käyttävät. Darwinin lisäksi pohjakerroksessa on useita muita ydinpalveluita ja -teknologioita, jotka monesti ovat korkeamman tason kokoajia Darwinin datatyypeistä ja funktioista. Ydinpalveluihin lukeutuvat mm. muistinhallinta, prosessien 10

hallinta, matalan tason verkkokommunikaatiot sekä datan muotoilu. (Mac OS X Technology Overview 2009) Kuva 2. Mac OS X:n rakenne (Mac OS X Technology Overview 2009) Seuraavana Mac OS X:n kerrosmallissa on grafiikka ja media kerros, jonka avulla järjestelmä esittää 2D- (Two-Dimensional) ja 3D- (Three-Dimensional) grafiikoita sekä esittää videota ja audiota. Grafiikoiden esityksessä tärkeimpiä teknologioita on Quartz; videon ja audion esittämisessä QuickTime. Sovelluskehyskerrokseen sisältyy perusteknologioita, joilla voidaan rakentaa sovelluksia. Käyttäjäkokemus-kerroksen teknologioilla omat sovellukset voidaan saada mukautumaan paremmin Mac OS X:ään. (Mac OS X Technology Overview 2009) Mac OS X:n versiot 10.6 jälkeen sisältävät 64-bittisen kernelin. Tämän myötä kernel tukee suuria muistikonfiguraatioita tehokkaammin, ja buffer-välimuisti kasvaa nopeuttaen I/Osuorituskykyä (Input/Output). (Mac OS X Technology Overview 2009) 11

4 MUISTINHALLINTA Minkä tahansa järjestelmän avainosa on muisti. Kernelin vastuulla on tarjota kaikille prosesseille asianmukainen määrä muistia. Jotkut prosessit vaativat muistia jopa niin paljon, että senhetkinen käytettävissä oleva muisti ei riitä. Tähän voi olla syynä esimerkiksi se, että muita prosesseja on liian paljon suorituksessa. Ongelmaan ratkaisuna toimii virtuaalimuisti, joka tarkoittaa sitä, että järjestelmä vapauttaa prosessille fyysistä muistia siirtämällä osia siitä kiintolevylle. Kun kiintolevylle siirrettyä prosessin osaa taas tarvitaan, se palautetaan fyysiseen muistiin. Tätä menetelmää kutsutaan sivutukseksi, ja sen ansiosta järjestelmä voi tarjota moniajomahdollisuuden myös silloin, kun fyysisen muistin määrä on hyvin rajoitettu. (Love et al. 2005) Toinen näkökohta virtuaalimuistin käyttöön on vaihdanta. Tällöin kernel tunnistaa vähiten kiireellisen prosessin tai prosessin, joka ei vaadi välitöntä suoritusta. Kernel siirtää tämän prosessin kokonaisuudessaan pois RAM-muistista (Random Access Memory) kiintolevylle. Kun prosessia taas tarvitaan, sitä voidaan suorittaa joko kiintolevyltä tai fyysisestä RAM-muistista. Kahden kuvatun menetelmän erona on se, että sivutuksessa ainoastaan osa prosessista siirretään kiintolevylle, kun taas vaihdannassa koko prosessi siirretään. (Love et al. 2005) Kiintolevyn osa, jota käytetään virtuaalimuistina, on Unixissa nimeltään swap space eli "vaihdantatila". Jos tämä tila loppuu, seuraa vakavia ongelmia - jopa järjestelmävika on mahdollinen. Virtuaalimuistille tulisikin aina varata riittävästi tilaa. Koska levyt ovat huomattavasti hitaampia kuin fyysinen RAM-muisti, heikkenee suorituskyky merkittävästi kun virtuaalimuistia joudutaan käyttämään. Tätä ilmiötä voidaan ehkäistä hankkimalla järjestelmään riittävä määrä RAM-muistia. (Love et al. 2005) Unixin aiemmat versiot käyttivät yksinkertaista osiointia ilman virtuaalimuistia ja uudemmat Unixin versiot käyttävät sivutettua virtuaalimuistia. Unixin SVR4-versiossa (System V Release 4) on itse asiassa kaksi muistinhallintatapahtumaa. Sivutussysteemi allokoi sivuja keskusmuistilta prosesseille ja myös sivuja kiintolevyn puskuriin, mikä on tehokasta muistinhallintaa käyttäjän prosesseille ja levyjen I/O:lle. Sivutettu virtuaalinen 12

muisti sopii kuitenkin huonommin kernelin muistin allokointiin, mistä syystä sille on oma prosessinsa. (Stallings 2005) Mac OS X:n kernel pohjautuu Mach 3.0:aan, joka huolehtii Mac OS X:n muistinhallinnasta. Mach varmistaa, ettei sovellus pysty kirjoittamaan dataa toisen sovelluksen tai käyttöjärjestelmän muistiin. Eristämällä sovellukset toisistaan sekä käyttöjärjestelmän prosesseista Mach tekee käytännössä mahdottomaksi sen, että haitallisesti käyttäytyvä sovellus voisi vahingoittaa muuta käyttöjärjestelmää. Mikäli sovellus kaatuu oman virhekäyttäytymisensä takia, vaikuttaa se vain tähän sovellukseen itseensä eikä muuhun käyttöjärjestelmään. (Mac OS X Technology Review 2009) Mac OS X:ssä virtuaalimuisti on tavallaan "päällä" kaiken aikaa. Virtuaalimuistisysteemi antaa jokaiselle prosessille oman yksityisen virtuaaliosoitetilan. Mach ylläpitää osoitekarttoja, jotka kontrolloivat sovelluksen virtuaaliosoitteiden kääntämisen fyysiseen muistiin ja tyypillisesti vain osa sovelluksen virtuaalimuistin datasta tai koodista on fyysisessä muistissa missään vaiheessa. Kun sivuja tarvitaan, ne ladataan fyysiseen muistiin. Mach laajentaa näitä muistiobjektien abstraktiolla: matalalla tasolla toimiva tehtävä pystyy muokkaamaan muistikarttoja. (Mac OS X Technology Review 2009) 13

5 PROSESSIEN HALLINTA Yksi kernelin tärkeimmistä tehtävistä on prosessien luominen ja hallinta. Prosessit ovat suorituksessa olevia ohjelmia, joita kutsutaan joissakin käyttöjärjestelmissä myös "tehtäviksi" tai "töiksi". Prosesseilla on omistaja - ihminen tai järjestelmä - joka aloittaa niiden kutsumisen tai suorituksen. Näiden hallitseminen voi olla hyvin monimutkaista, koska usein yksi prosessi kutsuu toista. Usein prosessien tarvitsee myös kommunikoida toistensa kanssa. Tämä tarkoittaa sitä, että ne lähettävät ja vastaanottavat informaatiota, joka mahdollistaa muiden toimintojen suorittamisen. Kernel hallitsee kaikkia edellä mainittuja toimenpiteitä ilman, että käyttäjä on tietoinen siitä. (Love et al. 2005) Unixissa prosessit käyttävät toistensa kanssa kommunikointiin ohjelmistokeskeytyksiä, joita kutsutaan signaaleiksi. Esim. kun lapsiprosessi päättyy, se ilmoittaa poistumisesta emoprosessilleen signaalilla. UNIX Versio 7 käyttää 15 signaalia ja SVR4 sekä 4.3BSD käyttävät 31 signaalia. Prosessit voivat lähettää signaaleja itsellensä tai toisille prosesseille, jos lähettävän käyttäjän todellinen tai efektiivinen käyttäjä on sama kuin vastaanottajalla. Pääkäyttäjä voi kuitenkin aina lähettää signaaleja ilman rajoituksia. Tyypillinen Unixissa käytettävä ohjelma, jolla käyttäjä lähettää signaaleja toisille prosesseille, on kill. Vaikka killiä käytetään yleensä prosessien päättämiseen, sillä on muitakin hyödyllisiä käyttötapoja. Koska Unixin kehityshaarat käsittelivät signaaleja eri tavalla, yhteiset signaalinkäsittelytavat päätettiin määritellä POSIX.1-standardissa. (Şimşek 2005) Lewinen (1991) mukaan signaalien käsite on yhtä vanha kuin Unix itse. Hän huomauttaa, että aikaisissa Unixin versioissa signaalimekanismissa oli lukuisia suunnitteluvirheitä. Nämä korjattiin myöhemmin BSD-versiossa, johon POSIX-standardi suurilta osin perustuu. Lewine mainitsee yhtenä merkittävistä ongelmista sen, että kun signaalin käsittely alkaa, signaalinkäsittelijää häiritseviä signaaleja ei voida blokata. Toisaalta myös signaalimekanismien laajennettavuudessa oli parantamisen varaa. Alkuvaiheessa Ritchien (1984) mukaan Unix pystyi ajamaan kerrallaan vain yhtä prosessia per terminaali eli taustaprosesseja ei voinut olla ajossa. Kun Unix kehittyi lisää, siihen lisättiin järjestelmäkutsut fork ja wait, joiden avulla ohjelmien ajaminen Ritchien mukaan tapahtuu seuraavalla tavalla (tässä fork, exec, wait ja exit ovat siis järjestelmäkutsuja): 14

1. Käyttäjä syöttää komennon terminaalilla komentotulkille. 2. Komentotulkki luo lapsiprosessin fork-kutsulla. 3. Lapsiprosessi käyttää exec-kutsua, joka käynnistää ohjelman tiedostosta. 4. Sillä aikaa emokomentotulkki käyttää wait-kutsua ja odottaa lapsiprosessin päättymistä exit-kutsulla. 5. Komentotulkki palaa kohtaan 1. Mac OS X:ssä prosessit jakavat CPU:n (Central Processing Unit) eli suorittimen tehokkaasti. Prosessien hallinta perustuu Mac OS X:ssä Mach 3.0:aan, joka priorisoi tehtäviä niin, että aktiivisuustaso on maksimitasolla sekä varmistaa sen, että jokainen tehtävä saa tarvitsemansa resurssit. Mach käyttää tiettyjä kriteereitä määritelläkseen, kuinka tärkeä kukin tehtävä on ja kuinka paljon aikaa sille on annettava. (Mac OS X Technology Review, 2009) Mach jakaa Unixin prosessin abstraktiotason kahteen komponenttiin: tehtävään ja säikeeseen. Machissa tehtävä koostuu käyttöjärjestelmän resurssien kokoelmasta osoiteavaruus mukaan lukien. Tehtävä voidaan ajatella osana Unix-prosessia, joka koostuu esim. osoiteavaruudesta, tiedoston kuvauksista ja resurssien käyttöinformaatiosta; lyhyesti ottaen tehtävä on siis prosessi ilman kontrollivirtaa. Machin säie puolestaan on suorituksen perusyksikkö, joka ajetaan täsmälleen yhteen tehtävään liittyen. Säikeet ajetaan valerinnakkaisina yhden prosessorin tapauksessa, ja usean prosessorin tapauksessa useita säikeitä voidaan ajaa rinnakkain. Perinteinen BSD-prosessi on siis Machissa tehtävä, jolla on kontrolloiva säie. (Tevanian Jr. et al. 1987) Säie on Machissa aina jossakin seuraavista tiloista: (1) running, jolloin se joko on suoritettuna jollain prosessorilla tai sillä on käyttäjän lupa tulla suoritetuksi; (2) willsuspend -tilassa, jolloin se voi edelleen olla ajettuna jollakin prosessorilla, kunnes thread_wait-kutsu suoritetaan tai (3) suspended-tilassa, jolloin säiettä ei suoriteta millään prosessorilla, ennen kuin se palaa running tilaan. Kaikki nämä tilat pätevät myös tehtäviin. Tehtävän tila vaikuttaa kaikkiin säikeisiin, jotka ajetaan tehtävän yhteydessä, ja niinpä säie voidaan suorittaa vain siinä tapauksessa, mikäli se ja sen tehtävä ovat joko running- tai will-suspend tilassa. (Tevanian Jr. et al. 1987) 15

6 TIEDOSTOJÄRJESTELMÄ Tiedostojärjestelmä on looginen kokoelma tiedostoja levyllä tai levyosiolla. Levyosio on eräänlainen säiliö informaatiota varten, ja se voi käsittää koko kiintolevyn. Yhdellä levyosiolla on yleensä vain yksi tiedostojärjestelmä, mikä mahdollistaa erilaisten tiedostojärjestelmien loogisen hallinnan ja ylläpidon. Levyosiot ovat näkymättömiä käyttäjälle, jotka voivat liikkua vaivattomasti useiden tiedostojärjestelmien välillä ilman että he edes huomaavat siirtyneensä yhdestä toiseen. (Love et al. 2005) Unix-järjestelmissä tiedostojärjestelmä on komponentti, joka mahdollistaa käyttäjille tallennusmedialla olevien tiedostojen ja hakemistojen tarkastelemisen, järjestämisen, suojaamisen ja vuorovaikuttamisen niiden kanssa. Unixissa on erityyppisiä tiedostojärjestelmiä. Näitä ovat levy-, verkko-, erikois- sekä virtuaalitiedostojärjestelmät. (Love et al. 2005) Mac OS X:n tiedostojärjestelmän asettelu poikkeaa huomattavasti perinteisistä Unixjärjestelmistä, mutta silti usein samat työkalut ovat käytössä myös Mac OS X - järjestelmässä. Toinen merkittävä ero on se, että Unix erottelee isot ja pienet kirjaimet, kun taas Mac OS X ei tee tätä. (Love et al. 2005) Koska Unixissa isoilla ja pienillä kirjaimilla on eri merkitys, ovat esimerkiksi tiedostot real_file, Real_file ja REAL_FILE kolme eri tiedostoa. Yleensä Unixin tiedostonimet on kirjoitettu pelkillä pienillä kirjaimilla, näin erityisesti järjestelmätiedostojen ollessa kyseessä. Mac OS X:n tapa käsitellä tiedostonimiä aiheuttaa sen, että real_file, Real_file ja REAL_FILE käsitellään samana tiedostona - vain yksi näistä voi olla olemassa kerrallaan. Vaikka Mac OS X ei välitä isoista ja pienistä kirjaimista, tallentaa se jokaisen merkin juuri sellaisena kuin se on järjestelmään syötetty - siis isona tai pienenä kirjaimena. Nämä erot järjestelmien välillä tulee ottaa huomioon, kun tiedostoja siirretään Mac OS X:n ja muiden Unix-järjestelmien välillä. (Love et al. 2005) Ritchie & Thompson (1974) jaottelevat Unixin käyttäjälle näkyvät tiedostojärjestelmän osaset näin: 16

Tavalliset tiedostot. Tiedostot voivat sisältää mitä tahansa käyttäjä haluaa niissä säilyttää, esim. tekstiä tai ohjelmia. Tekstitiedostot koostuvat tekstiriveistä ja ohjelmat ovat binäärisiä merkkijonoja. Järjestelmän ei tarvitse puuttua tiedostojen rakenteeseen, vaan se määrittyy tiedostoja käyttävien ohjelmien kautta. Tiedostoilla on nimi, joka koostuu korkeintaan 14 merkistä mukaan lukien vapaaehtoinen tiedostopääte. Hakemistot. Tiedostojärjestelmä koostuu tiedostoista, jotka sijoitetaan puumaisesti juurihakemiston alle siten, että juuri haarautuu alihakemistoihin. Esim. ohjelmat voidaan sijoittaa yleisesti sovittuun hakemistoon juuren alle, josta järjestelmää käyttävät ihmiset löytävät ne helposti, joskaan tämä ei ole välttämätöntä. Jokaisella käyttäjällä on yleensä oma kotihakemisto henkilökohtaisia tiedostoja varten. Toisaalta juuren alle voidaan kiinnittää hakemistoja, jotka sijaitsevat fyysisesti eri medialla. Hakemistoihin viitattaessa erottimena käytetään vinoviivaa (/). Jos hakemistopolku alkaa vinoviivalla, viitataan juurihakemistoon muussa tapauksessa polku on sen hakemiston alla, jossa ollaan (/alpha/beta/gamma vrt. alpha/beta). Jokainen hakemisto koostuu vähintään kahdesta merkinnästä: "." viittaa hakemistoon itseensä ja ".." on linkki hakemistopuun ylempään haaraan eli siihen hakemistoon, jonka alihakemistossa ollaan. Erikoistiedostot. Kaikkia Unixin laitteita (tallennusvälineet, verkkolaitteet yms.) voidaan käsitellä samaan tapaan kuin mitä tahansa tiedostoa. Laitetiedostot sijaitsevat /dev-hakemiston alla. Unixin tapa pitää kaikkea tiedostoina mahdollistaa yhtenäisen tavan resurssien käsittelemiseen ja tarjoaa käyttäjälle yhtenäisen mekanismin kanssakäymiseen järjestelmän kanssa. Näistä syistä johtuen on helppo ymmärtää, että tiedostojärjestelmät ovat keskeinen osa Unix-käyttöjärjestelmää. (Love et al. 2005) Fiamingo et al. (1998) määrittelee hakemiston siten, että se on tiedosto, joka sisältää taulukon muodossa listan siihen kuuluvista tiedostoista ja yhdistää tiedostot niihin liittyviin inode-numeroihin. Inode on erityinen tiedosto, jonka kautta ydin lukee kunkin tiedoston metatiedot, kuten tiedoston oikeudet, omistajuuden, datablokkien fyysisen sijainnin levyllä ja päivämääräkirjanpidon tiedoston luonnista, muokkauksesta ja käyttämisestä. 17

7 MUUT EROT MAC OS X:N JA UNIXIN VÄLILLÄ Mac OS X perii edeltäjältään NEXTSTEP:iltä hakemistopalveluiden konseptin ja siihen liittyvän NetInfo-tietokannan. Tämä aiheuttaa sen, että perinteisiä Unixin /etc-hakemiston sisältämiä tiedostoja ei oteta huomioon Mac OS X -järjestelmän normaalin toiminnan yhteydessä. Kun muissa Unixeissa järjestelmän ylläpitäjä tarkistaa tai muokkaa asetuksia /etc-hakemiston tiedostoissa, tapahtuvat vastaavat toimenpiteet Mac OS X:n puolella NetInfo-tietokantaan käyttäen komentorivipohjaista käyttöliittymää tai graafista "NetInfo Manager"-työkalua. (Love et al. 2005) Suurin ero Mac OS X:n ja muiden Unixien välillä on käynnistysprosessi. Mac OS X noudattaa samantyylistä prosessia kuin standardit Unix-järjestelmät, mutta tapahtumien järjestys on hieman erilainen. Kun Mac-tietokone käynnistetään, hallitsee konetta aluksi firmware, joka vastaa standardin PC-tietokoneen BIOS:ia (Basic Input Output System). Kun firmware on suorittanut tehtävänsä, luovuttaa se komennon BootX-lataajalle, joka käynnistää Mach-mikrokernelin. Seuraavaksi laiteajureista vastaava alijärjestelmä, I/O Kit, valmistellaan, ja suoritetaan juuritiedostojärjestelmän liittäminen. Näiden toimenpiteiden jälkeen ladataan mach_init, joka huolehtii Mach-mikrokernelistä. Lopulta BSD:n initprosessi käynnistetään ja sille annetaan prosessitunnus "1", kuten standardeissa Unixjärjestelmissä. (Love et al. 2005) Koska Mac OS X:n tiedostojärjestelmässä on säilytetty yhteensopivuus aikaisempien Mac OS -käyttöjärjestelmien tiedostomuotojen kanssa, aiheuttaa perinteisten Unix-ohjelmien mv ja cp käyttäminen tiedostojen siirtämiseen ja kopiointiin tiettyjä ongelmia, joiden välttämiseksi Apple on luonut omat työkalunsa tiedostojen siirtoa varten. (Love et al. 2005) 18

8 YHTEENVETO Unixin neljän vuosikymmenen pituinen historia on huomattavasti pidempi kuin Mac OS - järjestelmien, jotka ovat lähtöisin 1980-luvulta. Unix kehitettiin yksinkertaisten käytännöllisten tarpeiden takia ja se laajeni lopulta erittäin monipuoliseksi käyttöjärjestelmäksi. Mac OS -järjestelmät kehitettiin nimenomaan Applen tietokoneita varten. Yhtymäkohta näiden järjestelmien historiassa on 2000-luvun taite, jolloin Unixiin perustuva Mac OS X näki päivänvalonsa. Sekä Unix että Mac OS X perustuvat samoihin periaatteisiin ja järjestelmät ovat pitkälti samankaltaisia pinnan alla. Unixin ja Mac OS:n välillä on kuitenkin oleellisia eroavaisuuksia. Unix-pohjaisissa järjestelmissä käytetään erilaisia kerneleitä, joiden toteutukset muistin- ja prosessien hallinnassa vaihtelevat versiosta toiseen. POSIX-standardin johdosta Unixin eri versioilla on kuitenkin tietyt standardoidut ominaisuudet. Myös Mac OS X on suunniteltu noudattamaan suurta osaa POSIX-standardista, vaikka sen kernel ei olekaan peräisin Unixista, vaan on Applen kehittämä versio Machista. Tiedostojärjestelmissä Unix ja Mac OS X eroavat hakemistorakenteidensa lisäksi sen suhteen, miten ne käsittelevät tiedostonimiä. Myös järjestelmäasetusten sijainneissa ja käynnistysprosesseissa on merkittäviä eroavaisuuksia. 19

LÄHTEET Baclit, R., Sicam, C., Membrey, P., Newbigin, J. 2009. Foundations of Centos Linux. Apress, pp. 105 132. Fiamingo, F., DeBula, L., Condron, L. 1998. Introduction to Unix. University Technology Services. The Ohio State University. Lewine, D. 1991. POSIX Programmer's Guide: Writing Portable UNIX Programs with the POSIX.1 Standard. O'Reilly, Fifth Edition. Love, P., Merlino, J., Zimmerman, C., Reed, J., Weinstein, P. 2005. Beginning Unix. Wiley Publishing, Inc.. Mac OS X. [Wikipedian www-sivuilla]. Päivitetty 6.11.2010. [viitattu 9.11.2010]. Saatavissa: http://en.wikipedia.org/wiki/mac_os_x Mac OS X Technology Overview [Apple Inc:n www-sivuilla]. Päivitetty 14.8.2009. [viitattu 3.11.2010]. Saatavissa: http://developer.apple.com/library/mac/#documentation/macosx/conceptual/osx_techn ology_overview/osx_technology_overview.pdf Ritchie, D. M. 1984. The Evolution of the Unix Time-sharing System. AT&T Bell Laboratories Technical Journal 63 No. 6 Part 2, October 1984, pp. 1577-93. Ritchie, D. M. & Thompson, K. 1974. The UNIX Time-Sharing System. The Bell System Technical Journal 57 no. 6, part 2 (July-August 1978). Şimşek, B. 2005. Signals [verkkojulkaisu]. [viitattu 8.11.2010]. Saatavissa: http://www.enderunix.org/docs/signals.pdf Singh, A. 2004. A History of Apple's Operating Systems, [verkkojulkaisu]. [viitattu 2.11.2010]. Saatavissa: http://www.kernelthread.com/publications/appleoshistory/index.html 20

Singh, A. 2003. What is Mac OS X? [verkkojulkaisu]. [viitattu 2.11.2010]. Saatavissa: http://osxbook.com/book/bonus/ancient/whatismacosx//index.html Stallings, W. 2005. Operating Systems - Internals and Design Principles. Pearson Education, Inc. Tevanian Jr., A. & Rashid, R.F. & Golub, D.B. & Black, D.L. & Cooper, E. & Young, M.W. 1987. Mach Threads and the Unix Kernel: The Battle for Control. Department of Computer Science, Carnegie-Mellon University, Pittsburgh. The Creation of the UNIX* Operating System. [Bell Labsin www-sivuilla]. Päivitetty 29.3.2007. [viitattu 1.11.2010]. Saatavissa: http://www.bell-labs.com/history/unix/ The Mach Project Home Page [Carnegie Mellon -yliopiston www-sivuilla]. Päivitetty 21.2.1997. [viitattu 2.11.2010]. Saatavissa: http://www- 2.cs.cmu.edu/afs/cs/project/mach/public/www/mach.html UNIX Unleashed, System Administrator's Edition [verkkojulkaisu]. Päivitetty 18.9.1997. [viitattu 4.11.2010]. Saatavissa: http://www.math.iitb.ac.in/resources/manuals/unix_unleashed/vol_1 21