2.1.3 Rakendusliides

Rakendusliides (API - Application Programming Interface) on liides, mis võimaldab luua ühenduse erinevate programmide vahel. Rakendusliides võib olla kaasatud erinevat moodi:
- Programmeerimiskeskkonda integreeritud näiteks C++ või Java API
- Spetsiifiliseks otstarbeks näiteks Google Maps API või Java API XML veebiteenusele. Google Maps API abil saab veebiteenuse pakkuja oma veebilehel rakendada kaarditeenust asukohtade lokaliseerimiseks kaardil läbi Google'i poolt pakutava rakendusliidese.
- OS'i rakendusliides on liides, mida kasutavad rakendused OS'i teenustele juurdepääsemiseks. Selline rakendusliides on näiteks Windows API. Viimane pakub rakendustele kõiki OS'i teenuseid ja igale OS'i teenusele vastab üks API protseduur.
![]() Joonis 2‑3. OS’i rakendusliides paikneb rakenduste ja kerneli vahel(Allikas: Learning Materials for Information Technology Professionals (EUCIP-Mat)) |
Erinevad teenused, mis läbi Windows API rakendusliidese kättesaadavaks tehakse on järgmised:
- Baasteenused (Base Services), mille hulka kuuluvad protsessihaldus, mäluhaldus, S/Vfunktsioonid ja turvalisus.
- Komponenditeenused (Component Services) - rakenduste omavaheliseks suhtlemiseks
- Kasutajaliidese teenused (User Interface Services) - erinevate menüüde ja akendega suhtlemiseks
- Graafika ja multimeedia teenused (Multimedia and Graphics Services)
- Sõnumivahetus ja koostöö (Messaging and Collaboration)
- Võrgundus (Networking)
- Veebiteenused (Web Services)
Kaasaegsed OS'id on juhitavad katkestuste kaudu (Interrupt driven). Sündmused käivituvad katkestuste või erandite poolt. Erandid (Exceptions või Trap) on tarkvara poolt genereeritud katkestused kas veaolukorra tekkimisel või kasutajarakenduse poolt OS'i teenuse nõudmiseks. Erinevate katkestuste täitmiseks on eraldi alamprogrammid OS'is. API poole pöördumine toimub kasutajarakendustel süsteemikutsete (System Call) abil. Turvakaalutlustel ei saa rakendused süsteemikutseid otse välja kutsuda, vaid vajavad selleks katkestuste mehanismi, millega tekitatakse tarkvaraline katkestus protsessorile, mis omakorda põhjustab katsetuste halduri käivituse OS'ikernelirežiimis. Käsk, millega süsteemiteenus välja kutsutakse sõltub protsessorist. Näiteks kaasaegsetel Inteli protsessoritel on see käsk sysenter ja selle väljakutse kasutamiseks salvestab OSkerneli süsteemihalduri alamprogrammi aadressi spetsiaalses registris MSR (MachineSpecific Register), mis on seotud selle käsuga. Käsu käivitamine tekitab lülituse kernelirežiimi ja süsteemiteenuse haldurprogrammi käivituse. Süsteemiteenuse number loetakse läbi protsessori EAX registri ja läbi EDX registri antakse edasi väljakutse argumendid. Kasutajarežiimi naasmine toimub protsessori sysexitvõi iretdkäsu abil. Süsteemiteenuste teenindusprogrammide aadressid on spetsiaalses tabelis, kust süsteemiteenuste haldur soovitud teenuse tuvastab.