
Ymmärtämisen kautta tehokäyttöön
TIETOKONEEN SIELU
Miten tietokone toimii?Tietokoneen kehitys
Mekaaniset laskukoneet
Reikäkortit, levymuisti, ferriittirengasmuisti, DRAM
Putket, transistorit, mikropiirit, VLSI
Hysterical raisins, Historical reasons -- taaksepäin yhteensopivuusTietokoneen käyttö
Erikoiskäyttö -> yleiskäyttö
Sulautetut järjestelmät.
Ohjelmointikielten (ja ohjelmoijien) maailmankuva: Abstraktiot, objektiorientoitunut ohjelmointi, ...
Tietojenkäsittelyn teorian edistyminen.Tietokone koneena
Tietokone on periaatteessa hyvin tyhmä laite, jossa ohjelmalla ohjataan laitteen osien toimintoja.
Yleensä ohjelmapuoli jaetaan eri tasoihin, kuten käyttöjärjestelmään, laitteisto-ohjaimiin, sovellusohjelmiin, jne.

Tällainen tietokoneen rakenne, missä kaikki koneen osat ovat saman ja yhden tietoväylän välityksellä toisiinsa yhteydessä, kutsutaan von Neumannin arkkitehtuuriksi.
Muitakin vaihtoehtoja on: Harvard-arkkitehtuuri, moniprosessorikoneet, hyperkuutio, ...Tiedon käsittely: Mikroprosessori
Tiedon tallennus: Muisti
Pitkäaikainen tallennus: Massamuisti
Näkyvä toiminta: Syöttö ja tulostus
Miten tämä kaikki toimii yhteen?
Käyttöjärjestelmä
Käyttöjärjestelmien kehittyminen
Ohjelma ohjaa suoraan tietokonetta -> monitori -> time sharing
Tehokkuus? Koneen vai käyttäjän tehokkuus?
Mikrotietokone?Käyttöjärjestelmän rooli ja palvelut
Käyttöjärjestelmä tarjoaa laitteistosta abstraktioita ohjelmille ja käyttäjälle. Tämä toteutetaan rajapintoina ja eri tasoisina liittyminä järjestelmän todellisiin osiin.
Esimerkkejä abstraktioista on Unixissa esim. se, että kaikki (myös oheislaitteet) ovat tiedostoja, joita voidaan käsitellä pääosin samalla yksinkertaisella tavalla (lue, kirjoita, siirry). Oheislaitteita on Unixissa kahta eri tyyppiä, merkki (character device) esim. pääte tai sarjaportti ja rakenteinen (block) esim. levy tai muisti.
Abstraktiot voidaan toteuttaa sitten eri tavoilla. Esim. Unixista on erilaisia toteutuksia, missä käyttöjärjestelmän ydin on joko yksi suuri massiivinen ohjelma, tai se on jaettu moneen pienempään osaan (mikrokernelin ympärille).
Käyttöjärjestelmän palvelut.
Käyttöjärjestelmien käsitteitä.

Ohjelmat, prosessi
Kun ohjelmaa ajetaan järjestelmässä, kutsutaan sitä prosessiksi. Sama ohjelma voi olla samaan aikaan monta kertaa ajossa.
Käyttöjärjestelmä luo prosessin ympäristön.

Käyttöjärjestelmä jakaa suoritusaikaa ja resursseja prosessien kesken.

C --cc,as--> konekieli --> prosessi <--ympäristö,malli-- Käyttöjärjestelmä.Resurssien hallinta
Muisti, levy, I/O, verkkoMonta käyttäjää yhtä aikaa?
Koska kunnollinen käyttöjärjestelmä sallii useiden ohjelmien ajamisen yhtäaikaa ja ohjelmien syöte ja tulostus voidaan ohjata minne vain, voi samaa konetta käyttää useampi käyttäjä yhtäaikaa melko luonnollisesti.Turvallisuus ja luotettavuus
UNIX TAUSTAA
Unixin historiaa
Unixin monipuolisuus on pitkälti perua sen syntyvaiheista -- Unixin kirjoitti alkujaan pari häkkeriä kun eivät olleet tyytyväisiä olemassaoleviin "suuriin ja mutkikkaisiin" käyttöjärjestelmiin.Bell labs
Hulking giants, Multics -> 1969, Pdp7, 5 ihmisen ryhmä -> Documenters Workbench, AT&T sisäinen käyttö, yliopistot -> AT&T Divestiture -> kaupallinen käyttö.
Hakkerikulttuuri -- solmiokulttuuri.Eri laitteet
Unix oli ensimmäisiä käyttöjärjestelmiä jotka ohjelmoitiin, ei konekielellä, vaan korkeamman tason ohjelmointikielellä. Unixin kehityksen rinnalla kehitettiin C-kieltä, jolla Unixkin on kirjoitettu.
Koska Unix on kirjoitettu C:llä, on siitä laitteistoriippuvaa vain noin 5%. Unixin siirtäminen laitteistosta toiselle onkin siis melko helppoa verrattuna moneen muuhun käyttöjärjestelmään.Yliopistot
Berkeley, VAX -> BSD Unix
CMU, MachVersiot
Antiikin aika: System V, BSD, Solaris, ...
Nykyaika: Mach (mikrokerneli + käyttöjärjestelmä-palvelimet), ...
Kaupalliset: Solaris, IRIX, HP/UX, ...
Vapaat versiot: Linux, FreeBSD, Mach, NetBSD, ...Mitä Unix tarkoittaa?
Käyttäjän näkemä ympäristö? Shell, komennot, ...
Ohjelmoijan näkemä ympäristö? C, kirjastot, ...
Käyttöjärjestelmän toteutus?
Tietokoneen rakenne?
Käyttöjärjestelmän abstraktiot?
Kaikki ohjelmat?Posix
Posix-standardit ovat Unix-järjestelmän standardeja, mm. systeemikutsuista, komennoista, komentojen toiminnasta jne. Käytännössä kaikki Unix-järjestelmät ovat nykyään (järkeviltä osin) Posix-määritysten mukaisia.Unixin perusrakenne

Prosessit
Stdin, -out, -err


Shell
Turvallisuus
Mikä on riittävä turvallisuuden taso?
Security by obscurity?
Fyysinen turvallisuus.Unixin turvallisuusominaisuudet
Unixin turvajärjestelyt ovat yksinkertaisia, mutta toimivia.
Suurin osa surullisenkuuluisista Unix-turvallisuusongelmista on ollut, ei Unixissa itsessään, vaan verkko-ohjelmissa. Ohjelmien nykyiset versiot ovat jo pääosin luotettavia.
Unix on hyvin paljon käytetty käyttöjärjestelmä ja avoin, joten sen turvallisuusongelmat ovat tulleet esille (ja ne on pystytty nopeasti korjaamaan). Muissakin käyttöjärjestelmissä on vastaavia ongelmia, mutta niitä ei löydetä tai kerrota yhtä avoimesti.
Vielä lisää turvallisuutta voidaan saada käyttämällä kehittyneempiä työkaluja, kuten esim. krypto-turvallisia pääteyhteyksiä (ssh).
Ilmaisissa Unixeissa on vielä se hyvä puoli, että asiantuntevissa käsissä ongelmat voidaan korjata heti itse (tai konsultti voi korjata) ilman että joudutaan odottamaan jonkin valmistajan toimittamia korjauksia.Tiedostojen oikeudet.
Omistaja, ryhmä, muut. Hakemistot.Ohjelmien oikeudet.
Ohjelman ajajan oikeuksilla.
Set-uid voi sallia eri tai laajemmat oikeudet.Käyttäjän oikeudet
Käyttäjä id, ryhmät, salasana.Virallisia turvaluokituksia
DoD Orange Book, D, C (C2), B, A.Luotettavuus
Ohjelmat? Defensive programming.
Laitteet? UPS (katkoton virtalähde)! Replikointi (monistaminen).Entä Windows? Mac? OS/2?
UNIX JA VERKOT
Internet
Rakenne
Nopeus (bandwidth) -- viive (delay)
Data (paketit, burst ok) -- Mediadata (vakiokaista, ei katkoja)perusteknologiat
Unixin graafinen käyttöliittymä
X-Window System, verkossa hajautettavaTekstitiedostot
Suurin osa Unixin ylläpitotiedostoista on myös tekstimuodossa. Ylläpitäjän tehtäviin kuuluu näiden tiedostojen tietojen muuttaminen tarpeen mukaan, levytilan riittävyyden valvominen (lokitiedostot), ongelmatilanteiden ratkominen, palvelinohjelmien konfigurointi, jne.
Ylläpitäjä joutuu oppimaan kaiken Unixista.
Joitakin esimerkkejä ylläpitoon liittyvistä tiedostoista:
- /etc/passwd
- Sisältää käyttäjien tiedot, käyttäjätunnuksen, salatun salasanan, käyttäjänumeron, käyttäjänumeron, nimen, kotihakemiston ja komentotulkin.
- /etc/group
- Sisältää käyttäjien lisäryhmät. Kullakin rivillä on ryhmän nimi, numero ja lista käyttäjistä jotka kuuluvat ko. ryhmään. Sisään logatessa järjestelmä lisää käyttäjän niihin ryhmiin missä hän on mainittu.
- /etc/aliases
- Sisältää sähköpostialiakset muodossa alias: osoite,osoite,... . Käyttäjillä voi olla myös omia henkilökohtaisia sähköpostin ohjauksia, mikä onnistuu laittamalla omaan kotihakemistoon .forward niminen tiedosto, joka sisältää uuden sähköpostiosoitteen. Aliastiedoston avulla voidaan myös luoda yksinkertaisia sähköpostilistoja.
- /etc/sendmail.cf
- Sähköpostiohjelman konfigurointitiedosto. Tunnettu erikoisen sekavasta muodostaan.
- /etc/crontab
- Sisältää systeemin ohjeet siitä, mitä komentoja milloinkin pitäisi suorittaa. Jokaisella käyttäjällä on myös oma crontab, mitä voi editoida crontab -e komennolla.
- /p/etc/httpd.conf
- HTTP-palvelimen (www-palvelin) konfigurointitiedosto. Sisältää mm. tiedot siitä, ketkä saavat käyttää kirjaston proxy-cachea.
- /etc/rc.d/.../...
- Täällä sijaitsevat Unixin käynnistykseen liittyvät shell-scriptit. Unix käynnistyessään ajaa yhden ohjelman järjestelmän toimesta (init), ja tämä ohjelma sitten suorittaa näitä scriptejä ja yleensä niissä käynnistetään palvelimet ja muut tarvittavat taustaohjelmat.
UNIX-VERTAILUA
Unix, Linux, NetBSD, FreeBSD, Solaris, IRIX, HP-UX, ...
Suhteellisen samanlaisia, mutta kuitenkin pieniä eroja. Linux on suhteellisen hyvä ja toimiva. Joustavin komentorivijärjestelmä.DOS
Simppeli, ei oikea käyttöjärjestelmäWindows 3.1, 95
DOSsin päällä oleva graafinen käyttöliittymäviritys. Tehokäyttäjälle paljon kompastuskiviä. Sovellusohjelmia paljon (miljoona huonoa ohjelmaa ei voi olla väärässä).Windows NT
Periaatteessa oikea käyttöjärjestelmä, mutta suunniteltu vain yhdelle käyttäjälle, tietoturvaominaisuudet eivät kovin hyödyllisiä. Ei miljoonia sovellusohjelmia, mutta kaikkeen löytyy yksi tai pari hyvää ohjelma.Mac
Pelkästään graafinen ympäristö, ei ollenkaan komentoriviä itse järjestelmässä. Muuten melko tavallinen "käyttöjärjestelmä".VMS, CMS, MVS, ...
Suurkoneiden järjestelmät ovat myös yleensä komentorivipohjaisia, mutta eivät suinkaan niin joustavia kuin Unix, vaikka itse käyttöjärjestelmässä olisikin kaikki ominaisuudet.