Esittely latautuu. Ole hyvä ja odota

Esittely latautuu. Ole hyvä ja odota

Kurssin historia Tuomo Kortesmaan pitämät kurssit pohjana.

Samankaltaiset esitykset


Esitys aiheesta: "Kurssin historia Tuomo Kortesmaan pitämät kurssit pohjana."— Esityksen transkriptio:

0 Reaaliaikaohjelmointi (Osa 1)
Hannu Laine Copyright  Hannu Laine

1 Kurssin historia Tuomo Kortesmaan pitämät kurssit pohjana.
Reaaliaikaiset sulautetut järjestelmät -moduuli haluttiin säilyttää. Miksi Hannu Laine tässä opintojaksossa. Erot aikaisempiin järjestelyihin nähden. Sisällön runko suurin piirtein entinen, mutta huomioidaan uudet standardit. HL

2 Mitä hyötyä opintojaksosta
Opitaan ymmärtämään ja ratkaisemaan käytännössä reaaliaikajärjestelmien ohjelmointiin liittyviä asioita. Kyseiset asiat opitaan POSIX-mallin mukaan, jolloin niiden suora soveltaminen käytännön työelämässä on mahdollista. Opitaan ohjelmoimaan Unix/Linux-alustalla. Syntyy selkeä kuva siitä kuinka tietokonejärjestelmä toimii kokonaisuutena. Mistä opintojakso muodostuu Luennot Labratehtävät Ryhmätyöharjoitus Tentti Kurssimateriaali Kurssin kotisivu Luentokalvot Tuntimuistiinpanot Labraharjoitukset Kirjat (seuraava sivu) HL

3 Kirjoja Richard Stevens and Stephen Rago: Advanced Programming in the UNIX Environment (Second edition, 2005) Kay A. Robbins & Steven Robbins: UNIX Systems Programming (Cummunications, Concurrency and Threads) (2003) Marc J. Rochkind : Advanced Unix Programming (Second Edition 2004) Other books: Bill O. Gallmeister : Programming for the Real Word POSIX.4 (O’Reilly). Rafeeq Ur Rehman & Christopher Paul : The Linux Development Platform Butenhof : Programming with Posix Threads Gregory R. Andrews : Foundations of Multithreaded, Parallel, and Distributed Programming (Addison-Wesley). Bradford Nichols, Dick Buttlar & Jacqueline Proulx Farrel: Pthreads Programming (O’Reilly). HL

4 Reaaliaikaiset järjestelmät
Tietojärjestelmät toimivat yleensä jonkin systeemin osana. Reaaliaikaisuus tarkoittaa, että järjestelmä ”vastaa” systeemistä tulleisiin input tietoihin systeemin vaatimusten mukaisessa ajassa. Tietyissä systeemeissä reaaliaikavaatimus voi olla hyvinkin tiukka ja vahingot suuret, jos järjestelmä ei täytä vaatimuksia (monet prosessin säätöjärjestelmät). Reaaliaikavaatimukset voivat olla eri tasoisia (hard real time systems, soft real time systems). ”Ongelma” syntyy siitä, että tehtäviä on useita ja samoin tapahtumia, jotka vaativat ”vastausta” on yleensä useita (voi olla jopa satoja tai tuhansia). Tietokone Fysikaalinen systeemi HL

5 Esimerkkejä reaaliaikasysteemeistä
Lista voisi olla lähes äärettömän pitkä, mutta tässä muutamia esimerkkejä. Tekstinkäsittelyohjelma (erityisesti monen käyttäjän) Webbipalvelin Varausjärjestelmät (lipun-, hotellin, matkan-, jne) Prosessinvalvonta/säätöjärjestelmät (voimalan, paperikoneen, pakkauslinjan, valvonta ja ohjausjärjestelmät) Puhelinvaihde Ilmastoinnin ohjausjärjestelmä Varaston valvontajärjestelmä Digitaalisen videon esitysjärjestelmä Jne. HL

6 Perusteet reaaliaikaisuudelle
”Rinnakkaisuus” (concurrency) on tyypillinen piirre reaaliaikajärjestelmissä. Useita ohjelmia (prosesseja) ajetaan ”yhtä aikaa” vaikka vaikka tietokoneessa olisi vain yksi prosessori. Tietokoneissa, joissa on moniprosessorinen järjestelmä, ohjelmia ajetaan aidosti rinnakkain. Nyt tarkastellaan pääasiassa tilannetta, jossa tietokoneessa on yksi prosessori. Vaikka prosessori voi suorittaa kerrallaan vain yhtä ohjelmaa, tilanne saadaan näyttämään ja tuntumaan siltä, kuin useita ohjelmia suoritettaisiin ”yhtä aikaa”. Tämä johtuu siitä, että prosessori pystyy suorittamaan käskyjä suurella nopeudella, verrattuna ulkopuolisen systeemin (esimerkiksi ihmisen tai säädettävän prosessin) aikaskaalaan verrattuna. Prosessoriaikaa voidaan siksi jakaa vuorotellen eri prosessien kesken. Input ja output oheislaitteille on suhteellisesti erittäin hidasta prosessorin aikaskaalalla. Myös tämän takia prosessorin ei kannata antaa odottaa i/o:n valmistumista vaan prosessori voi suorittaa sillä aikaa muita ohjelmia. Esimerkki prosessorin käskyjakson ja i/o:n aikaskaalan suuresta erosta: Kahden gigahertsin prosessorilla käskyjakso on 0.5 ns (”1 sekunti”) Tyypillisen levyn saantiaika voi olla 7 ms (”162 päivää”) HL

7 Rinnakkaiset prosessit
Käyttöjärjestelmä tukee reaaliaikaisen toiminnallisuuden toteuttamista jakamalla prosessoriaikaa eri prosesseille (tehtäville). Seuraavan kuvan avulla voidaan valaista prosessien rinnakkaista toimintaa: Memory Process A Process B Process C Processor IP IR HL

8 Prosessien tilat Ohjelmaa ajetaan aina käyttöjärjestelmän alaisena prosessina. Tällaisen prosessin tilakaavio näyttää seuraavalta: odottaa (blocked) valmis ajettavaksi (ready) ajossa (running) ajovuoro saatu aikasiivu käytetty i/o-pyyntö tehty i/o valmis prosessi luotu päätös HL

9 Havainnollistus Tietokone pystyy siis antamaan välittömiä vastauksia yhtä aikaa ympäröivän maailman aikaskaalassa useisiin eri inputeihin. Kuinka tämä toimii voidaan havainnollistaa kaupan kassarobotilla seuraavasti Ihmisten ominaisuudet: Laittaa tavaroita korista hihnalle 1 tavara / 2 s Ottaa lompakon ja maksuvälineen taskusta 2 s:ssa Kassarobotti Robotin ominaisuudet: Liikkuu kassalta toiselle mikrosekunnissa Lukee viivakoodin tuotteesta mikrosekunnissa Ottaa maksun vastaan mikrosekunnissa Ylläkuvatunlaisessa tilanteessa kaikista asiakkaista tuntuu, että he saavat koko ajan välitöntä palvelua, vaikka kassarobotteja on vain yksi. HL

10 Käyttöjärjestelmät Reaaliaikajärjestelmä voidaan toteuttaa ”ilman käyttöjärjestelmää” eli projektin yhteydessä tehdyssä ”käyttöjärjestelmässä” On olemassa useita reaaliaikakäyttöjärjestelmiä erilaisiin prosessoriympäristöihin, jotka tukevat reaaliaikaisten järjestelmien toteutusta. Esimerkkejä: Posix: QNX Neutrino, QNX4, eCos, RTLinux Muita: AMX, DeltaOs, µC/OS-II, eRTOS HL

11 POSIX standardi Käyttöjärjestelmiäkin on pyritty standardoimaan.
Aikaisemmin kilpailevia standardeja. Nyt on: ”Single Unix Specification, Version 3” IEEE Std (2004; 2008) POSIX (Portable Operating System Interface) Viimeinen X tarkoittaa Unix-like systems. Standardi muodostuu nykyään neljästä osasta: Base Definitions volume (XBD) System Interfaces volume (XSH) Shell and Utilities volume (XCU) Rationale (Informative) volume (XRAT) Aikaisemmin alaosia olivat: POSIX.1 Basic OS interface (C language) POSIX.1a Misc. extensions (symlinks, etc.) POSIX.1b Real-time and I/O extensions (was: POSIX.4) POSIX.1c Threads (was: POSIX.4a) POSIX.1d More real-time extensions (was: POSIX.4b) POSIX.1e Security extensions, ACLs (was: POSIX.6) POSIX.1f Transparent network file access (was: POSIX.8) POSIX.1g Protocol independent communication, sockets (was: POSIX.12) POSIX.2 Shell and common utility programs POSIX.3 Test methods POSIX.7 System administration HL

12 Tietokonejärjestelmän hierarkiatasot
Alla on kuvattu tietokonejärjestelmien hierarkiatasot. Sovellukset eivät pääse suoraan käyttämään laitteita laitetasolta. Niiden pitää käyttää käyttöjärjestelmä API-rajapintaa. Edellisellä sivulla kuvattu POSIX-standardi määrittelee juuri tämän API-rajapinnan. Kurssilla keskitytään tähän rajapintaan. Tietokonejärjestelmän hierarkiatasot: Applications Library functions Operating system API / System calls Devices HL

13 Sisältö lyhyesti Johdanto Ohjelmankehitys Linux/Unix-ympäristössä
Käyttöjärjestelmän peruspalvelut sovellusohjelmille Prosessit ja niiden vuorovaikutus Prosessien synkronointitarve ja -välineet Signaalit Putket ja FIFOt Asynkroninen ja multipleksattu i/o Ajoitukset, timerit ja timeoutit Semaforit Jaettu muisti Viestijonot Soketit ja streamit Säikeet ja niiden synkronointi HL

14 Käyttöjärjestelmän palvelut
Tiedostojen ja hakemistojen hallinta Muistin hallinta Prosessien hallinta Laitteiden hallinta Verkon hallinta Ajan hallinta HL

15 Ohjelmiston kehitysvälineet
Kuten aikaisemmin on mainittu, kurssilla asiat käsitellään pääsääntöisesti Posix-standardin mukaan ja käyttöjärjestelmänä on Linux. Labratehtävät voi tehdä millä Linux/Unix-koneella tahansa. Oppilaitoksen labroissa on käytettävissä Edunix-kone pääteyhteyden kautta tai paikallisessa Windows-koneessa toimiva linux virtuaalikone Fedora. Jos käytät Edunix-konetta pääteyhteydellä, niin käytettävissä ei ole X-ikkunointijärjestelmää, jolloin on tyydyttävä komentorivipohjaisiin välineisiin, joita seuraavassa: Editori Voit valita itse Emacs ViM Jed Pico jne Kääntäjä GCC GNU Compiler Collection Tukee C:tä ja C++:aa. Tukee myös muita kieliä. Käyttää erilaisia apuohjelmia hyväksi. HL

16 Ohjelmiston kehitysvälineet
Linkkeri ld gcc kutsuu linkkeriä, joten sen eksplisiittistä kutsua ei yleensä tarvita. Yksinkertainen ohjelman kääntäminen ja ajo: Kääntäminen (executable tiedostoon ohjelma.exe): ...$ gcc -o ohjelma.exe ohjelma.c Ajaminen: ....$ ./ohjelma.exe Muita apuohjelmia komentoriviympäristössä gdb GNU debugger ar ohjelmakirjastojen tekoon (library) as assembler make ohjelmistojen rakentamiseen useasta osasta Jos käytät Fedora-virtuaalikonetta, niin käytettävissä on myös integroitu graafinen kehitysympäristö Eclipse. HL

17 Yhteenveto työkaluista
Tapa 1. Pääteyhteys Edunixiin. Tehdään Edunixin komentorivityökaluilla kaikki asiat (myös editointi) Tapa 2. Pääteyhteys Edunixiin. Buildaaminen ja ajaminen Edunixin komentorivityökaluilla. Editointi paikallisella Windows konella esim notepad++:lla. Tapa 3. Käytetään Fedora virtuaalikoneessa esimerkiksi gedit-editoria editointiin ja komentorivityökaluja (gcc) terminaali-ikkunasta samassa Fedora-koneessa. Tapa 4. Käytetään Fedora virtuaalikoneessa Eclipseä, joka on integrated development environment. Ylläolevat menettelytavat ovat käytetettävissä labrassa B114. Huomautus. Kotityöskentelyä voi tehdä 1) koneella, johon on asennettu linux (esim Ubuntu tms), 2) Windows-koneella asentamalla VMPlayer ja lataamalla siihen fedora virtuaalikone koulun verkosta tai 3) käyttämällä Mac-tietokonetta, jossa Mac OsX käyttöjärjestelmä. HL


Lataa ppt "Kurssin historia Tuomo Kortesmaan pitämät kurssit pohjana."

Samankaltaiset esitykset


Iklan oleh Google