1. Yleistä

Linux on suomalainen, Linus Torvaldsin kehittämä, Unix-käyttöjärjestelmä Intel- suorittimella (386, 486, PENTIUM) varustetuille koneille. Aluksi Linux oli vain pieni harjoitustyön pohja, josta vähitellen kehittyi kokonainen käyttöjärjestelmä. Se hyödyntää monipuolisesti x86-prosessorin moniajo- ja muistiominaisuuksia. Prosessori toimii Linuxin alla suojatussa tilassa, jolloin prosessit on suojattu toisiltaan laitteistotasolla. Linuxissa on nykyään monia erityispiirteitä, joita ei kaikista Unix-versioista löydy. Näitä ovat muun muassa virtuaalikonsolit, matematiikkaprosessoriemulaattori ja kernelin ladattavat moduulit.

Linuxin kirjoittamiseen on osallistunut satoja ihmisiä ympäri maapalloa, ja sillä on satojatuhansia käyttäjiä. Tästä suuresta ohjelmoijien ja testaajien määrästä johtuen Linuxin kehitys on nopeaa, ja mahdolliset virheet tulee korjattua usein jo parin tunnin päästä uuden version ilmestymisestä. Linux ei ole Public Domain -ohjelma, vaan se on 'free software' eli sitä voi kopioida vapaasti, mutta lähdekoodi pitää toimittaa kopion mukana. Samoin jos muuttaa Linuxia, pitää julkaista näiden muutosten lähdekoodi. On myös laillista myydä Linuxia, mutta silloinkin pitää lähdekoodi toimittaa mukana.

Linux on todellinen monen käyttäjän moniajojärjestelmä, toisin kuten esimerkiksi OS/2 (yhden käyttäjän moniajojärjestelmä) tai DOS (yhden käyttäjän järjestelmä). Linux-konetta voi siis käyttää yhtäaikaa useampi käyttäjä konsolilta, sarjaportin välityksellä, tai Ethernet- verkon kautta. Jokainen käyttäjä voi myös ajaa samanaikaisesti useampia prosesseja.

2. Historia

Linuxin kehitys alkoi, kun Linus opiskeli 80386-prosessorin moniajoa ja muistinhallintaa. Alkuperältään 'Linux' oli vain kaksi prosessia, jotka tulostivat moniajona 'AAA...' ja 'BBB...'. Paranneltuaan prosessinvaihtoa ja lisättyään terminaalit oli Linussilla virinnyt ajatus kokonaisesta käyttöjärjestelmästä tämän prosessinvaihto-ohjelman pohjalta. Vuoden 1991 syyskuussa Linus ilmoitti comp.os.minix-uutisryhmässä saaneensa valmiiksi Linux- käyttöjärjestelmän(linux-history):

> From: torvalds klaava.Helsinki.FI (Linus Benedict Torvalds)
> Newsgroups: comp.os.minix Subject: What would you like to see most
> in minix?  Summary: small poll for my new operating system
> Message-ID: <1991Aug25.205708.9541@klaava.Helsinki.FI> Date: 25 Aug
> 91 20:57:08 GMT Organization: University of Helsinki Hello everybody
> out there using minix - I'm doing a (free) operating system (just a
> hobby, won't be big and professional like gnu) for 386(486) AT
> clones.  This has been brewing since april, and is starting to get
> ready.  I'd like any feedback on things people like/dislike in
> minix, as my OS resembles it somewhat (same physical layout of the
> file-system (due to practical reasons) among other things).  I've
> currently ported bash(1.08) and gcc(1.40), and things seem to work.
> This implies that I'll get something practical within a few months,
> and I'd like to know what features most people would want.  Any
> suggestions are welcome, but I won't promise I'll implement them :-)
> Linus (torvalds kruuna.helsinki.fi) PS.  Yes - it's free of any
> minix code, and it has a multi-threaded fs.  It is NOT protable
> (uses 386 task switching etc), and it probably never will support
> anything other than AT-harddisks, as that's all I have :-(.
Linux-version 0.01 koodi oli kuitenkin epätäydellinen, eikä sitä voinut kääntää kokonaisuudessaan, mutta lähdekoodi oli saatavissa nic.funet.fi-koneesta.

Linus julkaisi version 0.02 lokakuussa -91. Tämä versio oli täydellinen ja toimiva, se vaati kuitenkin Minix-käyttöjärjestelmän käynnistämiseen. Pahimpia puutteita oli levykeasemaohjaimen ja virtuaalimuistin puute. Tässä versiossa toimi kuitenkin jo gcc- kääntäja, bash-komentotulkki ja muita gnu-ohjelmia. Seuraavaksi tulivat versiot 0.03 ja 0.10. Versio 0.11 ilmestyi joulukuussa, parannuksina tarvelataus(demand loading), muistin jako prosessien välillä ja levykeohjain. Tammikuussa -92 ilmestyi versio 0.12, jossa oli vihdoin virtuaalimuisti. Tämä oli ensimmäinen todella toimiva versio, sekä ensimmäinen jossa oli muidenkin kirjoittamia osia.

3. Ominaisuuksia

3.1. Muistinhallinta

Linux osaa käyttää kaiken koneessa olevan muistin hyväksi, lukuunottamatta jatkettua muistia (ems). 386SX-prosessorilla varustetuissa koneissa muistin yläraja on 16MB, ja muissa koneissa 4GB. Fyysisen muistin lisäksi Linux osaa käyttää virtuaalimuistia eli käyttää osaa kovalevyä fyysisen muistin jatkona. Virtuaalimuistia voi olla enimmillään n. 2GB, joka pitää kuitenkin varata 16:ssa 128 MB:n osassa.

Prosessori toimii Linuxin alla suojatussa tilassa, jolloin prosessit on suojattu toisiltaan ja yhden ohjelman kaatuminen ei kaada koko systeemiä. Koska suojauksen hoitaa prosessori, ei siihen voi vaikuttaa ohjelmallisesti, joten laitteiston turvallisuus paranee.

Tehokkaaseen muistinhallintaan kuuluvat myös tarveladattavat ohjelmat, jaetut muistisivut ohjelmien välillä, ohjelmien suoritus välimuistista ja dynaamisesti linkitetyt kirjastot (DLL). Tarveladattavasta ohjelmasta Linux lataa vain tarvitsemansa osan muistiin ja lataa lisää vasta tarvittaessa. Jos yhdestä ohjelmasta suoritetaan samanaikaisesti usempaa kopiota, ei muistiin ladata kuin yksi ohjelmakopio, ja vasta kun jokin ohjelmista kirjoittaa tähän muistisivuun, se kopioidaan (shared copy-on-write pages). Samoin useamman ohjelman käyttäessä samaa kirjastorutiinia on muistissa vain yksi kirjastorutiini, jota kaikki kutsuvat. Muistia säästävä ja toimintaa nopeuttava ominaisuus on ohjelmien suoritus valimuistista, koska yleensä Unix- käyttöjärjestelmät kopioivat suoritettavat ohjelmat välimuistista muualle muistiin suoritettavaksi. Tällöin ohjelmasta tulee muistiin kaksi identtistä kopiota ja aikaa kuluu kopioimiseen.

3.2. Tiedostojärjestelmä

Linux osaa käyttää monia yleisiä tiedostojärjestelmiä, muun muassa Minix-, Xenix-, System V-, MSDOS-, HPFS-2- (OS/2) ja CD-ROM-tiedostojärjestelmiä. Linuxilla on kaksi omaa tiedostojärjestelmää: EXT ja EXT-2. EXT on vanhempi järjestelmä, josta luovutaan sen huonon laajennettavuuden takia. EXT-2 tarjoaa 255 merkin tiedostonimet, maksimissaan 4TB levykoon ja siihen kehitetään Undelete-toimintoa. EXT-2-tiedostojärjestelmä pyrkii estämään tiedostojen pirstoitumista ja pitämään tiedostot yhdessä mahdollisimman suuressa palassa. Joskus tämä kuitenkin epäonnistuu jostain syystä ja siksi EXT-2-järjestelmään kehitetään defragment-toimintoa. Tällä toiminnolla ympäri levyä pirstoituneet tiedostot liitetään yhdeksi kokonaisuudeksi. Tämä nopeuttaa tiedostojen lukua huomattavasti.

Msdos-tiedostojärjestelmän avulla Linux voi käyttää Msdos-levykkeitä ja Msdos-kovalevyjä. Samoin HPFS-2-järjestelmä tarjoaa pääsyn OS/2-tiedostoihin.

3.3. Verkko-ominaisuudet

Linux sisältää täydellisen TCP/IP -protokollan. Verkkopalveluja voi kayttää joko verkkokortin välityksellä, SLIP - tai PLIP -protokollilla. SLIP-protokollaa käyttäen voidaan tietokone liittää Internet-verkkoon puhelinlinjan välityksellä tai kaksi tietokonetta voidaan yhdistää lähiverkoksi modeemien tai sarjakaapelin avulla. Internet-yhteys muodostetaan ottamalla asiakaskoneesta modeemiyhteys Internetissä olevaan palvelinkoneeseen, joka tarjoaa SLIP-palveluja. Palvelinkoneen SLIP-ohjelma muuntaa IP-protokollan paketit sarjasiirtoon sopivaksi ja asiakaskoneessa nämä muunnetaan takaisin IP-protokollaan. PLIP- protokolla käyttää puolestaan rinnakkaisporttia ja on rinnakkaisen tiedonsiirronsa ansiosta hieman SLIPiä nopeampi.

TCP/IP-protokollan avulla Linux tarjoaa monia verkkopalveluja: sähköposti, uutiset (usenet- news), NFS , FTP , HTTP . Sähköposti ja uutiset toimivat joko koneen sisäisesti tai verkon välityksellä muihin koneisiin. Ulkopuoliset yhteydet voidaan hoitaa joko TCP/IP- tai UUCP -protokollalla

3.4. Muita ominaisuuksia

Linux pyrkii noudattamaan yleisimpiä Unix-standardeja, kuten POSIX, System V ja BSD. Näiden standardien mukaan kirjoitettu ohjelmakoodi kääntyy Linuxissa yleensä ilman ongelmia. Linux pystyy ajamaan myös BSD- ja SCO-unixien binääritiedostoja.

Posix-prosessikontrollijärjestelmä on myös toteutettu Linuxissa, eli prosesseja voidaan siirtää vuoroin tausta- ja vuoroin edusta-ajoon.

Kernelin ladattavia moduuleita ollaan lisäämässä Linuxiin. Ladattavat moduulit ovat kernelin osia, jotka liitetään kerneliin vasta niitä tarvittaessa. Ladattavat moduulit voidaan myös irroittaa kernelistä, kun niitä ei enää tarvita ja ne pienentävät kernelin kokoa sekä lisäävät muunneltavuutta.

4. X-Ikkunointijärjestelmä

X-ikkunointijärjestelmä on MITin kehittämä Unix-koneille tarkoitettu standardi ikkunointijärjestelmä. XFree86 on x86-koneille tarkoitettu versio X-ikkunointijärjestelmästä, joka on saatavissa myöskin Linuxiin. XFree86-versio 2.0 tukee kaikkia X11R5-standardin mukaisia ominaisuuksia, X11R6-standardia ollaan lisäämässä XFree86:n seuraaviin versioihin.

Ikkunanhallintaohjelmia on Linuxille saatavana useita, yleisimpinä twm, olwm ja fvwm. Twm on hyvin rajoittunut standardiin X-pakettiin kuuluva ikkunanhallintaohjelma. Olwm on Sun Microsystemsin kehittämä monipuolinen ikkunanhallintaohjelma. Olwm:sta on myös virtuaaliversio Olvwm, jossa voi olla useita virtuaalisia 'työpöytiä'. Fvwm on monipuolinen ikkunanhallintaohjelma, joka voidaan konfiguroida vastaamaan monia kaupallisia ikkunan- hallintaohjelmia, muun muassa Mwm (Dec) ja 4Dwm (Silicon Graphics). Myös Fvwm sisältää virtuaalikonsolit.

Kuva 1. X-Windows ikkunointijärjestelmä ja Fvwm-ikkunanhallintaohjelma

Kaupallisista ikkunointijärjestelmistä Sun Microsytemsin OpenWindows ilmaisena ja Motif maksullisena ovat saatavissa kokonaisuudessaan Linuxiin.

5. Wine ja Dosemu

Winen avulla voidaan Linuxissa ajaa Windows-ohjelmia. Wine emuloi Microsoft Windows- ohjelman kutsuja ja kääntää ne X-windowsille. Se ei tarvitse Windowsin kirjastotiedostoja, joten Windowsin ei tarvitse olla asennettuna koneeseen ajettaessa ohjelmia. Winen avulla voidaan Windows-ohjelmia ajaa verkon välityksellä toisista koneista. Winen kehitys on vasta aluillaan, mutta jo joitain Windows-ohjelmia voi ajaa siinä, muun muassa Winmine ja Solitaire toimivat täydellisesti. Muiden ohjelmien toiminnassa on puutteita tai ne eivät toimi ollenkaan.

Dosemu on bios -emulaattori, jolla luodaan Linux-koneeseen virtuaalinen kone, jonne voidaan ladata Msdos-käyttöjärjestelmä. Monet Msdos-ohjelmista toimivat vielä keskeneräisessä Dosemussa. Ohjelmat, jotka käyttävät x86-prosessorin protected- tai vm86- tiloja, eivät toimi Dosemussa, koska Linux toimii suojatussa tilassa ja vain yksi ohjelma kerrallaan voi hallita tätä tilaa. Joitain näistä ohjelmista voidaan ajaa Dosemussa, kunhan siihen saadaan toteutettua DPMI -rajapinta. DPMI mahdollistaa useamman ohjelman yhtäaikaisen pääsyn suojattuun tilaan.

Kuva 2. Dosemu sekä Microsoft Windows ohjelma Minesweep

6. Linuxin tulevaisuus

Linuxin kehitys jatkuu edelleen nopeasti. Uusia ominaisuuksia lisätään ja virheitä korjataan jatkuvasti. Päivityksiä tulee noin 1 - 7 päivän välein. Työn alla ovat vielä ladattavat modulit, tiedostojärjestelmän Undelete ja Defregment toiminnot, Dosemu ja Wine. Winen ja Dosemun merkitys Linuxille on erityisen tärkeä, koska niiden avulla Linuxiin saadaan monia hyötyohjelmia. Undelete-toiminto on merkittävä sikäli, ettei sitä ole toteutettu vielä missään Unix-ympäristössä.

Linuxia on muokattu Maciin, Amigaan ja joihinkin Unix-koneisiin. Hankaluutena muunnostyössä on prosessorien erilaisuus, koska Linux käyttää kaikkia x86-prosessorin muistinhallinta- ja moniajo-ominaisuuksia, joita ei ole kaikissa muissa prosessoreissa.

7. Tiivistelmä

Linux on suomalaisen Linus Torvaldsin kehittämä Unix-käyttöjärjestelmä. Se on tehty Intel x86-prosessorilla varustetuille mikrotietokoneille. Linux käyttää monipuolisesti hyväkseen x86-prosessorin muisti- ja moniajo-ominaisuuksia. Koska Linux on täysin ilmainen ja sen lähdekoodi on vapaasti saatavilla, on Linuxin kehittämiseen osallistunut satoja ihmisiä ympäri maapallon. Linuxissa on toteutettu pääosin kaikki standardi Unixin ominaisuudet, muun muassa moniajo- ja verkko-ominaisuudet. Lähes kaikki Unixiin tehdyt ohjelmat kääntyvät myös Linuxissa, koska Linux noudattaa tarkoin Posix- ja System V-standardeja.

Transport Control Protocol/Internet Protocol Serial Line Internet Protocol ParallerLine Internet Protocol Network File System File Transfer Protocol HyperText Transfer Protocol Unix to Unix Copy Massachusetts Institute of Technology Basic Input Output System Dos Protected Mode Interface