Specifikation Abstrakt OO OS-API Rev Specifikation. Abstrakt, objektorienteret operativsystem-api
|
|
|
- Vibeke Winther
- 10 år siden
- Visninger:
Transkript
1 Specifikation Abstrakt, objektorienteret operativsystem-api
2 Indhold 1 Indledning Introduktion Formål Overordnede krav Ressourcer i OS-API et Tråde Timere Semaforer Binære Semaforer Tællesemaforer Mutexer Mailboxe Eksempler Thread-wrapper til Windows... 7 Revisionshistorie Revision Dato/Initialer Ændring /TFJ Indledende revision /TFJ Ændret efter MUP-møde /TFJ Thread::start() tilføjet /TFJ Thread::start() tilføjet i eksempel /TFJ Ændret ifm. udfasning af RTKernel /TFJ Monitor fjernet. Binære semaforer, tællesemaforer og mutexes indført /TFJ Småfejl rettet Småfejl rettet Side 2 af 8
3 1 Indledning 1.1 Introduktion Denne note specificerer et abstrakt, objekt-orienteret Operativsystem-Application Programmer s Interface (OS API) implementeret som en række klasser der wrapper de mest almindelige OS-ressourcer. Disse klasser kaldes herefter wrappers. OS-API et er implementeret for Microsoft Windows XP (win32) og Wind River VxWorks 6.x. Wrappers til andre operativsystemer bør overholde det specificerede interface. Noten beskæftiger sig udelukkende med specifikationen af OS-API et. Det forudsættes at læseren er bekendt med de wrappede OS-ressourcer, og er bekendt med deres funktion (sikring af udelelig adgang etc.). 1.2 Formål Formålet med et abstrakt, objektorienteret OS-API er primært: At stille et OO-interface til de mest almindelige OS-resourcer til rådighed og dermed tillade en pæn overgang mellem designet og implementationen af et flertrådet system udviklet med OO-metoder At give et rent snit til OS- ressourcer, så undervisning i brug af et OS kan fokusere på den generelle anvendelse og ikke på et OS-specifik implementation af ressourcer At tillade en let overgang fra et OS til et andet og dermed tillade kørsel af en applikation skrevet til OS-API et at køre på flere forskellige platforme med et minimum af ændringer ideelt set uden ændringer. 1.3 Overordnede krav Formålene stillet op i 1.2 giver anledning til følgende overordnede krav til OS-API et: OS-API et skal implementeres som klasser OS-API et skal fokusere på forståelighed og læsbarhed, om nødvendigt på bekostning af funktionalitet. Det må samtidig ikke blive så abstrakt at typisk OS-opførsel indkapsles. OS-API et skal indkapsle OS et på en sådan måde, at der kun er brug for et minimum af OS-specifik applikationskode, såsom bootstrapping og anden initiering. Side 3 af 8
4 2 Ressourcer i OS-API et Følgende ressourcer stilles til rådighed i OS-API et: Tråde Timere Semaforer (binære, tælle- og mutex er) Mailboxe Specifikationen af de individuelle ressourcer er givet i de følgende afsnit 2.1 Tråde Tråde er wrappet i den abstrakte klasse Thread. Aktive objekter nedarver fra Thread og implementerer run(), som er task-funktionen, typisk indeholdende en uendelig løkke. Klassen har følgende interface: ThreadPriority Enum. Anvendes til specification af et Thread-objekts prioritet ved initiering eller under programafvikling. Specificerer følgende prioriteter: PRIORITY_LOW, PRIORITY_BELOW_NORMAL, PRIORITY_NORMAL, PRIORITY_ABOVE_NORMAL, PRIORITY_HIGH Thread start ~Thread setpriority getpriority getname Constructor. Opretter Thread-objektet med prioritet pri (default PRIORITY_NORMAL) og navnet name (default ). Starter run() skal kaldes explicit efter at objektet er oprettet. Destructor. Sætter Thread-objektets prioritet til pri Returnerer Thread-objektets aktuelle prioritet Returnerer Thread-objektets navn Side 4 af 8
5 2.2 Timere Simple sleep-timere er wrappet af klassen SleepTimer. Klassen tillader den kaldende tråd at blive suspended i et givet antal millisekunder. Klassen har følgende interface: SleepTimer ~SleepTimer sleep Constructor Destructor Suspender tråden i ms millisekunder 2.3 Semaforer OS API et specificerer tre forskellige typer semaforer: Binære semaforer, tællesemaforer og mutexer. Alle semafortyper implementerer standard semafor-egenskaber. Desuden: Binære semaforer kan haves af en tråd ad gangen. Her gælder specielt, at signalering til en ledig semafor ikke har nogen effekt. Tællesemaforers kan haves af flere tråde ad gangen. Her gælder specielt, at signalering til en ledig semafor vil tælle semaforen én op, og at tage en ledig semafor vil tælle semaforen én ned. Mutexer virker som binære semaforer. Specielt for RT-systemer gælder, at de bør implementere beskyttelse imod trådsynkroniseringsproblemer (priority inversion, task deletion og recursive ressource access) Binære Semaforer Binære semaforer er wrappet af klassen BinarySemaphore. Klassen har følgende interface: BinarySemaphore ~BinarySemaphore wait signal Constructor. Initierer pr. default semaforen til at være ikke-taget (fuld) Destructor. Standard semafor wait-funktionalitet Standard semafor signal-funktionalitet Tællesemaforer Tællesemaforer er wrappet af klassen CountingSemaphore. Klassen har følgende interface: CountingSemaphore ~CountingSemaphore wait signal Constructor. Sætter det initielle antal til initcount Destructor. Standard semafor wait-funktionalitet Standard semafor signal-funktionalitet Side 5 af 8
6 2.3.3 Mutexer Mutexer er wrappet af klassen Mutex.. Klassen har følgende interface: Mutex ~Mutex wait signal Constructor. Initierer Mutex-objektet Destructor. Nedlægger Mutex-objektet Standard Mutex wait-funktionalitet Standard Mutex signal-funktionalitet 2.4 Mailboxe Mailboxe er wrappet af klassen Mailbox., en parametriseret klasse som tillader overførsel af objekter med statisk størrelse mellem to brugere. Klassen har følgende interface: Mailbox ~Mailbox put get Constructor. Opretter et Mailbox-objekt med plads til cap objekter Destructor. Nedlægger Mailbox-objektet Tilføjer et Item-objekt til mailboxen Returnerer et Item-objekt fra mailboxen Side 6 af 8
7 3 Eksempler I dette afsnit gives eksempler på hvordan wrappers kan implementeres. 3.1 Thread-wrapper til Windows Thread.h #pragma once #include<windows.h> #include<string> using namespace std; // // T H R E A D // class Thread public: // Thread priorities enum ThreadPriority PRIORITY_LOW = THREAD_PRIORITY_LOWEST, PRIORITY_BELOW_NORMAL = THREAD_PRIORITY_BELOW_NORMAL, PRIORITY_NORMAL = THREAD_PRIORITY_NORMAL, PRIORITY_ABOVE_NORMAL = THREAD_PRIORITY_ABOVE_NORMAL, PRIORITY_HIGH = THREAD_PRIORITY_HIGHEST, ; Thread(ThreadPriority pri = Thread::PRIORITY_NORMAL, string _name = ""); ~Thread(); bool setpriority(threadpriority pri); ThreadPriority getpriority(); string getname(); virtual void run() = 0; private: ThreadPriority priority; string name; HANDLE handle; static DWORD WINAPI threadmapper(void* p) ((Thread*)p)->run(); return 0; ; Side 7 af 8
8 Thread.cpp #include"thread.h" // NAME: Thread // FUNC: Thread::Thread(ThreadPriority pri, string _name) : priority(pri), name(_name) // NAME: ~Thread() // FUNC: Thread::~Thread() // NAME: start() // FUNC: Creates the thread. void Thread::start() handle = CreateThread(NULL, 0, threadmapper,(void*) this, 0, NULL); SetThreadPriority(handle, priority); // NAME: getname() // FUNC: string Thread::getName() return name; // NAME: setpriority // FUNC: Attempts to change the Thread's priority to pri. // RET: true if successful, false otherwise bool Thread::setPriority(ThreadPriority pri) priority = pri; if(setthreadpriority(handle, priority) == 0) return true; else return false; // NAME: getpriority // FUNC: Thread::ThreadPriority Thread::getPriority() return priority; Side 8 af 8
Abstrakte datatyper C#-version
Note til Programmeringsteknologi Akademiuddannelsen i Informationsteknologi Abstrakte datatyper C#-version Finn Nordbjerg 1/9 Abstrakte Datatyper Denne note introducerer kort begrebet abstrakt datatype
AAU, Programmering i Java Intern skriftlig prøve 18. maj 2007
AAU, Programmering i Java Intern skriftlig prøve 18. maj 2007 Opgavebesvarelsen skal afleveres som enten en printerudskrift eller som et passende dokument sendt via email til [email protected]. Besvarelsen skal
METODER ARV KLASSER. Grundlæggende programmering Lektion 5
METODER KLASSER ARV Grundlæggende programmering Lektion 5 1 METODER Sekvenser af kode om samme emne 2 REPETITION Række af statements der udfører en handling Mindst én metode der hedder main Forskellen
Tredjepart webservices
Tredjepart webservices 4. juni 2015 USS Dok. Klik her for at angive tekst. 1/12 Indholdsfortegnelse Introduktion... 3 Miljøer... 3 Adgang... 3 API kald... 4 GET: /authorizations... 4 Input 4 Output 4 Output
F# - hvorfor, hvordan og til hvad? Rune Ibsen Jyske Bank
F# - hvorfor, hvordan og til hvad? Rune Ibsen Jyske Bank 03-10-2018 Rune Ibsen Softwareudvikling Seniorkonsulent Mentoring 10 konsulenter F# Programmeringssprog som oversættes til.net Functional-first,
PROGRAM. using System; using System.Collections.Generic; using System.Text; using System.Collections;
PROGRAM using System; using System.Collections.Generic; using System.Text; using System.Collections; namespace EventManager class Program static void Main(string[] args) string hovedmenu = ""; string svar;
Skriftlig eksamen i Datalogi
Roskilde Universitetscenter side 1 af 9 sider Skriftlig eksamen i Datalogi Modul 1 Vinter 1999/2000 Opgavesættet består af 6 opgaver, der ved bedømmelsen tillægges følgende vægte: Opgave 1 5% Opgave 2
Andreas Nordbek & Kristoffer Skude Jensen. DMX Styring 31-05-2010. Side 1 af 15
Andreas Nordbek & Kristoffer Skude Jensen DMX Styring 31-05-2010 Side 1 af 15 Indholdsfortegnelse 1 Indledning... 3 2 DMX... 4 3 Arkitektur... 5 4 Hardware design... 6 4.1 SPI... 9 5 Software... 10 5.1
Synkronisering af sekventielle processer
Synkronisering af sekventielle processer Klaus Hansen, Niels Elgaard Larsen, Maz Spork, Jørgen Sværke Hansen 15. februar 2005 1 Introduktion Ved en multiprogram forstår vi et program, hvori vi kan specificere,
Objektorienteret Programmering
Objektorienteret Programmering Struktureret Systemudvikling Jan Bendtsen Automation and Control Indhold Lidt om programmeringssprog Klasser i Java Klasser i C++ Oversættelse og kørsel af kode Et eksempel:
SWC eksamens-spørgsmål. Oversigt
SWC eksamens-spørgsmål Oversigt #1 Typer og variable #2 Aritmetik og logik #3 Klasser (definition, objekter) #4 Klasser (metoder) #5 Klasser (nedarvning, polymorfi) #6 Conditional statements #7 Repetition
Kursusarbejde 3 Grundlæggende Programmering
Kursusarbejde 3 Grundlæggende Programmering Arne Jørgensen, 300473-2919 klasse dm032-1a 21. november 2003 Indhold 1. Kode 2 1.1. forestillinger.h............................................. 2 1.2. forestillinger.cc.............................................
Videregående Programmering Obligatorisk opgave - 3. semester, efterår 2004
Overvågningssystem Beskrivelse Bagagesorteringssystemet består af et antal skranker (check-in) til modtagelse og registrering af bagage, et automatiseret sorteringsanlæg samt et antal terminaler (gates),
A Profile for Safety Critical Java
A Profile for Safety Critical Java Martin Schoeberl Hans Søndergaard Bent Thomsen Anders P. Ravn Præsenteret af: Henrik Kragh-Hansen November 8, 2007 Forfatterne Martin Schoeberl Udvikler af JOP processoren
Videregående Programmering for Diplom-E Noter
Videregående Programmering for Diplom-E Noter 1. Uddelegering Ét af de væsentlige principper i objektorienteret programmering er, at enhver klasse selv skal kunne "klare ærterne". Enhver klasse skal altså
DANMARKS TEKNISKE UNIVERSITET
DANMARKS TEKNISKE UNIVERSITET Skriftlig prøve, 14. december 2018, 4 timer Side 1 af 18 Kursus navn: 02101 Indledende Programmering Kursus : 02101 Tilladte hjælpemidler: Ikke-digitale skriftlige hjælpemidler
Software Construction 1 semester (SWC) Spørgsmål 1
Spørgsmål 1 Objekter #1 Giv en kort præsentation af begrebet objekt, samt hvorledes du erklærer(declare), opretter(create) og bruger objekter Du kan beskrive o Datatyper o Variable / Instans variable /
Kursusarbejde 2 Grundlæggende Programmering
Kursusarbejde 2 Grundlæggende Programmering Arne Jørgensen, 300473-2919 klasse dm032-1a 31. oktober 2003 Indhold 1. Kode 2 1.1. hotel.h.................................................... 2 1.2. hotel.cc...................................................
Algoritmeskabeloner: Sweep- og søgealgoritmer C#-version
Note til Programmeringsteknologi Akademiuddannelsen i Informationsteknologi Algoritmeskabeloner: Sweep- og søgealgoritmer C#-version Finn Nordbjerg 1/9 Indledning I det følgende introduceres et par abstrakte
BOSK F2011, 1. del: Udsagnslogik
( p q) p q February 1, 2011 Sandhedsværdier og udsagnsvariable I dag handler det om logiske udsagn. Mere præcist om de logiske udsagn vi kan bygge ud fra sandhedsværdier, udsagnsvariable og logiske konnektiver.
Integrationsmanual. Anvendelse af webservice til kursusoversigt i Campus. Brugervejledning til udviklere
Integrationsmanual Anvendelse af webservice til kursusoversigt i Campus Brugervejledning til udviklere Moderniseringsstyrelsen Webservice manual til udviklere 2016 1 1. Indholdsfortegnelse Nyt kapitel
Dag 10 Flertrådet programmering
Videregående programmering i Java Dag 10 Flertrådet programmering Fremlæggelse af programmering/status for projekter Dokumentation med javadoc Flertrådede designmønstre: Arbejdstråd, Producent Konsument,
Citrix CSP og Certificate Store Provider
Project Name Document Title TDC Citrix Citrix og Certificate Store Provider Version Number 1.0 Status Release Author jkj Date 5-10-2006 Trademarks All brand names and product names are trademarks or registered
Introduktion til ActionScript, fortsat
Introduktion til ActionScript, fortsat Kaspar Rosengreen Nielsen [email protected] i n t e r a c t i v e s p a c e s. n e t Kaspar Nielsen, [email protected] 1 Dagens program Opsamling
Tree klassen fra sidste forelæsning
Programmering 1999 Forelæsning 12, fredag 8. oktober 1999 Oversigt Abstrakte klasser. Grænseflader. Programmering 1999 KVL Side 12-1 Tree klassen fra sidste forelæsning class Tree { int age; // in years
Kursus navn: Indledende programmering Kursus nr. 02101
Danmarks Tekniske Universitet Side 1 af 8 sider Skriftlig prøve, den 15. december 2007 Kursus navn: Indledende programmering Kursus nr. 02101 Tilladte hjælpemidler: Alle skriftlige hjælpemidler Vægtning
Mandatory Assignment 1
Mandatory Assignment 1 Morten Franck Peter Hansen 9. oktober 2003 Gruppe 4, Parallelle Systemer (02220) Indhold 1 Trin 1 Petri Net 1 1.1 Model af pass().................................... 1 1.2 Model
I3PRG3+I3DTM3+I3ISY1-3. semester
INGENIØRHØJSKOLEN I ÅRHUS Elektro- og IKT-afdelingen Side 1 af 5 Varighed: 4 timer - fra kl. 9.00 til kl. 13.00 Ingeniørhøjskolen udleverer: 3 omslag samt papir til kladde og renskrift Særlige bemærkninger:
MySQL i Java. Tutorial lavet af Jákup W. Hansen TSU 2006 2.semester 05.januar 2007
MySQL i Java Tutorial lavet af Jákup W. Hansen TSU 2006 2.semester 05.januar 2007 Hvad er MySQL? Det er et database system, som er gratis for os at bruge. Det er lidt mere besværligt i starten at bruge
Threads i Java. Denne artikel giver en introduktion til threads i Java. Den beskriver hvad tråde er og forklarer hvordan de bruges i Java
Denne guide er oprindeligt udgivet på Eksperten.dk Threads i Java Denne artikel giver en introduktion til threads i Java. Den beskriver hvad tråde er og forklarer hvordan de bruges i Java Den forudsætter
Program Dokumentation PC Software Skrevet af. Gruppen. Version 1.0
Program Dokumentation PC Software Skrevet af Gruppen. Version 1.0 Indholds fortegnelse 1. INDLEDNING...3 1.1. FORMÅL...3 1.2. REFERENCER...3 1.3. VERSIONSHISTORIE...3 1.4. DEFINITIONER...3 1.5. DOKUMENTATIONENS
Ugeseddel 4 1. marts - 8. marts
Ugeseddel 4 1. marts - 8. marts Læs følgende sider i kapitel 6 i lærebogen: s. 233 258 og s. 291 317 (afsnit 6.3 overspringes). Begynd at overveje, hvad afleveringsopgaven skal omhandle. Læs vejledningen,
Objektorientering. Programkvalitet
1 PROSA-Bladet nr. 4 1993 Objektorientering = Programkvalitet? Af Finn Nordbjerg, adjunkt ved Datamatikeruddannelsen, Aalborg Handelskole 1. Indledning Objektorientering er blevet et edb-fagets mest udbredte
Singleton pattern i Java
Denne guide er oprindeligt udgivet på Eksperten.dk Singleton pattern i Java Denne artikel beskriver Singleton pattern og implementation i Java. Den forudsætter kendskab til Java men ikke til Singleton.
Eksempel: et ordresystem note 5 Lagdeling s. 1
Eksempel: et ordresystem note 5 Lagdeling s. 1 Eksempel: et ordre-system NiceHair er et firma, som sælger udstyr, inventar og frisørartikler til frisørsaloner over hele landet. Det er ejet af et ægtepar
[MARKONLINE I CITRIX]
2012 [Type text] Udarbejdet af Udarbejdet for Optimering af MarkOnline I Citrix miljøer Indholdsfortegnelse Baggrundsinfo... 2 Symptomerne... 3 MarkOnline starter ikke... 3 MarkOnline startes, men download
Objektorienteret design med arv og polymorfi:
Note til Programmeringsteknologi Akademiuddannelsen i Informationsteknologi Objektorienteret design med arv og polymorfi: Substitutionsprincippet Composite Design Pattern Finn Nordbjerg Side 1 Objektorienteret
Metoder Klasser Arv. Operatorer Løkker. Praksis eksempel. Grundlæggende programmering Lektion 3
Praksis eksempel Operatorer Løkker Metoder Klasser Arv Grundlæggende programmering Lektion 3 Praksis eksempel Et program der benytter Unity til at lave et 3D spil Praksis eksempel Spil der benytter Unity
Webserverprogrammering
Webserverprogrammering WSP fortsat - dag 11 Behandling af XML (StAX) Syndikering og RSS med XML JAXB - XML Java-objekter Projekthjælp Dette materiale er under Åben Dokumentlicens, se http://www.sslug.dk/linuxbog/licens.html
Indledning. Hvorfor det forholder sig sådan har jeg en masse idéer om, men det bliver for meget at komme ind på her. God fornøjelse med læsningen.
Indledning...2 Variabler...13 Eksempel: 1...13 Eksempel 2:...13 Eksempel 3:...15 Eksempel 4:...16 Metoder...17 Metode (intet ind og intet ud)...17 Metode (tekst ind)...18 Metode (tekst ind og tekst ud)...19
En textbox har et Validating event, med dette kan vi samme med en errroprovider checke input:
Inputvalidering i Windows Forms Applikationer Rolf Therkildsen (6. nov 2008) Krav til inputvalidering Brugeren må aldrig blive forhindret i at flytte til en anden kontrol. Brugeren skal informeres om fejl
Arkitektur principper og design mønstre til realisering af enterprise applikationer baseret på rige domænemodeller (og.net)
Arkitektur principper og design mønstre til realisering af enterprise applikationer baseret på rige domænemodeller (og.net) Kim Harding Christensen EOS A/S Margrethepladsen 3 8000 Århus TLF: 8732 8787
DM507 Algoritmer og datastrukturer
DM507 Algoritmer og datastrukturer Forår 2016 Projekt, del I Institut for matematik og datalogi Syddansk Universitet 29. februar, 2016 Dette projekt udleveres i tre dele. Hver del har sin deadline, således
Specifikationsdokument for PDF Validator API
Nets DanID A/S Lautrupbjerg 10 DK 2750 Ballerup T +45 87 42 45 00 F +45 70 20 66 29 [email protected] www.nets-danid.dk CVR-nr. 30808460 Specifikationsdokument for PDF Validator API DanID A/S 17. august 2012
JavaScript. nedarvning.
JavaScript er et sprog, der kan give en hjemmeside mere funktionalitet og gøre den interaktiv, så den reagerer på læsernes handlinger. CGI (Common Gateway Interface) har hidtil været de protokoller, man
DM507 Algoritmer og datastrukturer
DM507 Algoritmer og datastrukturer Forår 2019 Projekt, del I Institut for matematik og datalogi Syddansk Universitet 27. februar, 2019 Dette projekt udleveres i tre dele. Hver del har sin deadline, således
Specifikationsdokument for PDF Validator API
Nets DanID A/S Lautrupbjerg 10 DK 2750 Ballerup T +45 87 42 45 00 F +45 70 20 66 29 www.nets.dk CVR-nr. 30808460 Specifikationsdokument for PDF Validator API DanID A/S december 2016 Side 1-8 Indholdsfortegnelse
Programmering I Java/C#
Programmering I Java/C# Dit første projekt Datatekniker Intro to C# C# (C Sharp) Et enkelt, moderne, generelt anvendeligt, objektorienteret programmeringssprog Udviklet af Microsoft, ledet af danskeren
Schedulering. dopsys 1
Schedulering dopsys 1 Re: Schedulering af processer.. administration af CPU-resursen. Ready List (RL) list af processer i ready_a tilstand. dopsys 2 Re: Schedulering af processer.. administration af CPU-resursen.
SAX Simple API for XML.
SAX Simple API for XML. En API (Application Programming Interface) et bibliotek eller et sæt af funktioner eller metoder. SAX er et sådant bibliotek af abstrakte metoder som f. eks. startdocument() eller
Klasser. Grundlæggende Programmering med Projekt. Peter Sestoft Tirsdag 2. september 2008. (Tak til Jakob Bardram for nogle slides) Dagens begreber
Klasser Grundlæggende Programmering med Projekt Peter Sestoft Tirsdag 2. september 2008 (Tak til Jakob Bardram for nogle slides) Dagens begreber Felt (field) Metode (method) Parameter (parameter) Sætning,
Objektorienterede metoder
Objektorienterede metoder Denne gang: Designmønstre Skabende designmønstre: Fabrikeringsmetode/Fabrik, Singleton, Abstrakt fabrik (Toolkit), Prototype, Objektpulje Singleton eksempel: Forskellige slags
Projekt E1PRJ1 Emne: Strukturering Softdrink-Automat Gruppe: 6 Dato: 20. marts 2006 Medlemmer: Benjamin Sørensen, Jacob Nielsen, Klaus Eriksen,
Fag: Projekt E1PRJ1 Emne: Strukturering Softdrink-Automat Gruppe: 6 Dato: 20. marts 2006 Medlemmer: Benjamin Sørensen, Jacob Nielsen, Klaus Eriksen, Mikkel Larsen og Tomas Stæhr Hansen Indholdsfortegnelse
