Promotoren: prof. dr. ir. Bjorn De Sutter, prof. dr. ir. Koen De Bosschere Begeleider: ir. Niels Penneman

Maat: px
Weergave met pagina beginnen:

Download "Promotoren: prof. dr. ir. Bjorn De Sutter, prof. dr. ir. Koen De Bosschere Begeleider: ir. Niels Penneman"

Transcriptie

1 Virtualisatie van Android Henri De Veene Promotoren: prof. dr. ir. Bjorn De Sutter, prof. dr. ir. Koen De Bosschere Begeleider: ir. Niels Penneman Masterproef ingediend tot het behalen van de academische graad van Master in de ingenieurswetenschappen: computerwetenschappen Vakgroep Elektronica en Informatiesystemen Voorzitter: prof. dr. ir. Jan Van Campenhout Faculteit Ingenieurswetenschappen en Architectuur Academiejaar

2 Voorwoord Mijn interesse voor het onderwerp van deze masterproef komt voort uit mijn interesse in Linux en in het algemeen openbronsoftware. Gelet op het feit dat smartphones en tablets met Android de laatste jaren alomtegenwoordig geworden zijn en dat virtualisatie aan een opmars bezig is, zowel in de serverwereld als in de wereld van mobiele toestellen, was dit het ideale onderwerp voor mijn masterproef. De masterproef is echter niet van een leien dakje verlopen en ik wil daarom de mensen bedanken die mij het afgelopen jaar gesteund hebben. Eerste en vooral zou ik mijn begeleider Niels Penneman en mijn promotor prof. Bjorn De Sutter willen bedanken voor alle hulp tijdens de maanden dat ik op het Technicum kwam werken en voor alle opbouwende feedback op mijn werk. Uiteraard wil ik hen ook bedanken om mij de kans te geven om mijn masterproef dit jaar nog af te werken, zelfs na het tijdverlies door mijn ongeval. Ik wil natuurlijk ook mijn ouders, broers en zussen bedanken voor het geduld dat ze hebben moeten uitoefenen, niet enkel dit jaar maar gedurende de afgelopen vijf jaar. Het was niet altijd even gemakkelijk maar ze zijn mij altijd blijven steunen en geloven. Een speciale dankjewel gaat naar mijn oudste zus Elise om mijn thesis volledig te controleren op taalfouten! Mijn vriendin Karen wil ik natuurlijk ook bedanken. Het was niet gemakkelijk om mij telkens opnieuw zien te verdwijnen in de examenperiodes. Toch heeft ze me ook altijd gesteund in al mijn werk. Als laatste wil ik nog mijn vrienden van de scouts, The Woods,... bedanken om in de gaten te houden dat ik niet zou veranderen in een computer. Bedankt allemaal! Henri De Veene 21 juni 2012 i

3 Toelating tot bruikleen De auteur geeft de toelating deze masterproef voor consultatie beschikbaar te stellen en delen van de masterproef te kopiëren voor persoonlijk gebruik. Elk ander gebruik valt onder de beperkingen van het auteursrecht, in het bijzonder met betrekking tot de verplichting de bron uitdrukkelijk te vermelden bij het aanhalen van resultaten uit deze masterproef. Henri De Veene 21 juni 2012 ii

4 Virtualisatie van Android door Henri De Veene Masterproef ingediend tot het behalen van de academische graad van Master in de ingenieurswetenschappen: computerwetenschappen Academiejaar Universiteit Gent Faculteit Ingenieurswetenschappen en Architectuur Vakgroep Elektronica en Informatiesystemen Voorzitter: prof. dr. ir. Jan Van Campenhout Promotoren: prof. dr. ir. Bjorn De Sutter, prof. dr. ir. Koen De Bosschere Begeleiders: ir. Niels Penneman, dr. Jonas Maebe Samenvatting In deze masterproef wordt het werk voorgesteld dat uitgevoerd werd om Android te ondersteunen met een ARM hypervisor. De ARM architectuur en de werking van de initiële hypervisor worden eerst besproken om de lezer inzicht te laten krijgen in de huidige problemen. Daarna wordt in meer detail uitgelegd wat de problemen zijn en hoe deze opgelost werden. Ten slotte worden de conclusies gemaakt en de wordt een overzicht gegeven van het werk dat in de toekomst nog moet gebeuren om het werk te voltooien. Trefwoorden: virtualisatie, hypervisor, Android, OMAP, ARM iii

5 Virtualizing Android Henri De Veene Supervisor(s): prof. Bjorn De Sutter, prof. Koen De Bosschere, Niels Penneman Abstract This article presents the work that has been done to improve an ARM hypervisor in order to support Android. The work can be subdivided in several areas: adding support for the Thumb- 2 instructionset, improving the memory management system, improving virtual hardware support and adding unittest functionality. Keywords Hypervisor, ARM, OMAP, Android, virtualization IMPROVEMENTS and progress in the technical field made the development of high-performance mobile devices possible, which incorporate a number of different functionalities. This, however, is achieved by combining several dedicated processing units together which leads to an inefficient device because the different processing units will never be fully in use, all at the same time. With virtualization it is possible to eliminate this inefficiency by letting all the software share a single powerful processing unit. This requires a hypervisor which manages the different software components to run together without the possibility of interference between the different components. In a collaboration between The University of Manchester and Ghent University a hypervisor for the ARM architecture is being developed. The hypervisor does not yet support Android, which is the subject of this Master s thesis. I. Android Google Android is currently the most popular mobile operating system. It is an opensource operating system and uses the Linux-kernel, which is also opensource software. Because Android is an excellent OS to support with the hypervisor because it is opensource software which can make development easier. The most popular version of Android uses version of the Linux-kernel. This is important because it has much better support for the OMAP System-on-Chip (SoC) than the Linux version which has been used to develop the hypervisor prior to this Master s thesis. The OMAP SoC includes the ARM Cortex-A8 processor and is part of the BeagleBoard hardware on which the hypervisor is currently being developed. II. The hypervisor The hypervisor is a type 1 hypervisor which uses the technique full virtualization for its virtual machines [1]. This means that the virtual hardware behaves the same way as the real hardware and no modifications need to be made to the guestsoftware, as opposed to paravirtualization. To achieve full virtualization, the hypervisor uses dynamic binary translation (DBT). This technique replaces sensitive instructions in guest code with supervisor calls (SVC). A sensitive instruction is an instruction that depends on the configuration of the hardware [2]. Because guestcode is executed in user mode an exception will be thrown when executing an SVC instruction. This exception is catched by the hypervisor which will then emulate the replaced instruction. With DBT, the hypervisor can control the hardware and guarantee the proper execution of a guest OS. The hypervisor uses shadow page tables to share the physical memory between serveral guest operating systems. Each guest maintains its own page tables, but these are not used for address translation. Instead the hypervisor copies the structure of the guest page table to the shadow page table and configures the hardware to use this table for address translation. With shadow page tables, the hypervisor can control which regions of the physical memory are used by which guest OS. III. Shortcomings There are three major areas in which the hypervisor does not yet suffice to support the Android operating system. Firstly: the support for the Thumb-2 lacks support for conditional execution of instructions. This instruction set is used by the just-intime compiler of Android and should thus be fully supported. Secondly: the memory management has some problems preventing Linux from booting. And thirdly: not all the hardware used by Linux has been virtualized. IV. Unittesting When testing certain parts of the hypervisor, in particular concerning corner cases, it is not favorable to run an entire operating system. This approach has two problems: it will be slow and execution may not be deterministic. For these reasons, the unittest functionality was added to the hypervisor. Unittests will be small compared to an OS and are used to test only a few features. Unittests

6 can also be saved, to use in a later stage of the development of the hypervisor to test for regression bugs. V. Thumb-2 support An important improvement that has been made to the hypervisor is the support for conditional execution of instructions in Thumb-2 code. In contrast with ARM instructions, which can (almost) all be executed conditionally by default, Thumb-2 instructions can not because they do not contain a condition code field. However, using the Thumb-2- only IT instruction it is possible to make up to four following instructions conditional. These instructions are called the IT block. The initial implementation of the DBT did not take the IT instructions into account, which can cause SVC instructions, inside an IT block, not to be executed. The hypervisor then loses control over the virtual machine. This problem was solved by taking the ITSTATE field into account when replacing sensitive instructions. This field holds all the information needed to execute instructions conditionally in Thumb-2 code. Now, only sensitive instructions that will actually be executed will be replaced by the improved DBT. Another improvement is the improved support for interworking branches, which are used to swich instruction sets in the code. VI. Memory management The memory management of the hypervisor is mainly the focus of development at The University of Manchester. However, to be able to virtualize Android some changes needed to be made to succesfully boot the Linux-kernel. The changes include the implementation of extra cases when the guest OS adds page table entries and the fixing of bugs causing the hypervisor to crash. These changes are not very substantial but the problems underlying these changes were sometimes very hard to detect. Mainly because of the limited debug opportunities. There were more problems discovered with the memory management, but these could be (temporarily) bypassed. These problems are described in the thesis and were reported to the people working on the memory management system. outdated Linux-kernel with very limited support for the OMAP3530 SoC. In this Master s thesis extra virtual hardware has been added to the VM. But, it was also necessary to add dummy modules and registers because Linux seems to use hardware that is not described in the OMAP manual. When this happened, the behaviour of the real hardware was mimicked in the hypervisor. Mostly, this means that a load retuns zero and a store is ignored. In one particular case, a load had to return another value because Linux expects this behaviour. VIII. Results It is now possible to boot Linux to the command line interface with the hypervisor. However, it is not possible to input commands because of a problem with global interrupts. The unittest framework is able to boot tests using the hypervisor. IX. Conclusion The work in this Master s thesis improved the hypervisor substantially but, considering the timeframe and the work that had to be done, it was not possible to fully support Android. However, this work can serve as a basis for further development towards supporting Android and other mobile operating systems. With the addition of unittesting framework it is now possible to avoid regression bugs by being able to test the hypervisor more systematic and more directed. This can improve the development speed. References [1] J.E. Smith and R. Nair., Virtual machines: versatile platforms for systems and processes. Morgan Kaufmann, [2] Gerald J. Popek and Robert P. Goldberg. Formal requirements for virtualizable thirdgeneration architectures. Commun. ACM, 17(7):412421, July 1974 VII. Hardware As mentioned before, the guest OS runs in a virtual machine. This VM consists of virtual copies of the real hardware. The actual virtual hardware was however very limited in the hypervisor. This was due to the hypervisor being developed with an

7 Inhoudsopgave Voorwoord Toelating tot bruikleen Inhoudsopgave i ii vii 1 Inleiding Probleemstelling Doelstelling Overzicht van de masterproef Gerelateerd werk Virtualisatie Efficiënt virtualiseren Paravirtualisatie en volledige virtualisatie Type 1 en type 2 hypervisors ARM architectuur De ARM processoren Uitvoeringstoestand van de processor Voorwaardelijke uitvoering Thumb-2 instructieset Geheugenbeheer Het ontwikkelplatform Android De architectuur van Android Verschillende versies van Android De hypervisor Type 1 met volledige virtualisatie Dynamische binaire vertaling Gevirtualiseerd geheugenbeheer Gevirtualiseerde hardware Besluit vi

8 3 Unittest functionaliteit Gastbesturingssysteem Uitbreidbaarheid Thumb-2 ondersteuning Voorwaardelijke uitvoering Probleem met initiële DBT algoritme Aanpassingen DBT algoritme Overige aanpassingen Resultaten Besluit Gevirtualiseerd geheugenbeheer Oplossingsmethoden en debuggen Aanpassingen Geheugenadres van de gastpaginatabel Probleem met invalideren Overige aanpassingen Besluit Gevirtualiseerde hardware Oplossingsmethoden Energiebeheer Beveiligingsmechanisme Onbekende timer Bijkomende aanpassingen Besluit Besluit 50 8 Toekomstig werk 51 A Conditiecodes 52 B Unittesten 53 Bibliografie 56 vii

9

10 Hoofdstuk 1 Inleiding In de afgelopen jaren zijn mobiele toestellen zoals smartphones en tablets steeds populairder geworden. Deze toestellen combineren doorgaans een groot aantal functies zoals GPS, MP3-speler, camera en uiteraard telefoon, welke vroeger allemaal aparte toestellen waren. Door deze combinatie van functionaliteiten zijn de toestellen intern een samensmelting van verschillende soorten hardware en software, gemaakt door verschillende fabrikanten. Aangezien voor elk van deze functies een eigen processor aanwezig is, zorgt dit voor inefficiëntie verdeling van de werklast over de beschikbare hardware met excessief batterijverbruik als gevolg. Deze inefficiëntie kan verholpen worden door de verschillende functies de hardware te laten delen. Dit is slechts mogelijk als de beschikbare hardware krachtig genoeg is om al deze verschillende functies tegelijk te ondersteunen. Gelukkig zorgt de populariteit van mobiele toestellen ervoor dat de ontwikkeling niet stil staat en bijgevolg zijn de mobiele processoren de afgelopen jaren dan ook steeds krachtiger geworden en kunnen zich soms al meten met processoren in laptops. Het delen van één krachtige processor heeft als gevolg dat de verschillende kleinere processoren achterwege gelaten kunnen worden waardoor de hardwarekost van mobiele toestellen verminderd kan worden. Hardware kan echter niet zomaar gedeeld worden. Ten eerste moet de software van de verschillende fabrikanten van elkaar afgeschermd worden opdat vertrouwelijke informatie in de software niet zomaar beschikbaar zou zijn voor andere software. Ten tweede moet de software enkel in staat zijn de hardware aan te sturen die het nodig heeft om zijn functie uit te voeren. Dit zou anders, door bijvoorbeeld defecte of kwaadwillige software, tot ernstige schade kunnen leiden aan het toestel zoals een batterij die ontploft. Wat uiteraard ook ernstige gevolgen kan hebben voor de gebruiker. Door het gebruik van virtualisatie kan de beschikbare hardware veilig gedeeld worden door verschillende toepassingen. Iedere toepassing wordt dan uitgevoerd in een afgeschermde omgeving met gevirtualiseerde hardware. Een dergelijke omgeving wordt een virtuele machine (VM) genoemd. Dit concept wordt afgebeeld in Figuur 1.1. De virtuele 1

11 Figuur 1.1: Virtuele machines. hardware kan een volledige kopie van de fysieke hardware zijn of enkel delen daarvan, zie respectievelijk links en rechts op de figuur. Sommige types van virtualisatie laten zelf toe dat de gevirtualiseerde hardware volledig verschillend is van de echte hardware. De software die voor de goede werking van deze virtuele machines zorgt noemt een virtuelemachinemonitor (VMM) of hypervisor. Voor mobiele toestellen is op het vlak van hardware een ARM processor het meest populair [22]. Op het vlak van software is Google Android op het moment van schrijven het meest gebruikte mobiele besturingssysteem voor toestellen gebaseerd op een ARM processor [12]. Android gebruikt als basis de Linux-kernel en is, net als de Linux-kernel, als openbronsoftware vrij beschikbaar op het internet. Voor deze masterproef is Android dus een heel geschikt platform om door de hypervisor te ondersteunen. 1.1 Probleemstelling Op dit moment is er nog geen hypervisor beschikbaar die volledige virtualisatie van de ARM-architectuur aankan en die Android kan virtualiseren. In samenwerking met The University of Manchester is op de Universiteit Gent sinds enkele jaren een dergelijke hypervisor in ontwikkeling. Deze hypervisor heeft echter nog enkele belangrijke beperkingen die het virtualiseren van Android tegenhouden. Om Android te kunnen virtualiseren moeten de eisen van Android grondig onderzocht worden en nagegaan worden waar de hypervisor nog niet aan deze eisen kan voldoen. Aangezien Android gebruik maakt van de Linux-kernel is het belangrijk om te onderzoeken welke versie van de kernel het meest gebruikt wordt. Dit is niet zo eenvoudig omdat Google 2

12 de kernel niet opgenomen heeft in de broncode van Android en er veel verschillende versies van Android beschikbaar zijn op het internet. De ontwikkeling van de hypervisor gebeurt op een BeagleBoard waarvoor een Android project bestaat [8]. Voor de populairste versie van Android, versie 2.3.7, wordt Linuxkernel versie gebruikt [20]. Ook andere Android projecten gebruiken voor deze Android versie dezelfde versie van de kernel [3]. Deze kernel heeft heel wat meer hardwareondersteuning voor de ARM architectuur gekregen, in vergelijking met de kernel die gebruikt werd voor de ontwikkeling van de hypervisor. De hardware die gebruikt wordt door deze kernel, en dus door Android, zal dus gevirtualiseerd moeten worden. Momenteel wordt er door de Linuxgemeenschap gewerkt aan het integreren van de aanpassingen die nodig zijn voor de ondersteuning van Android in recentere versies van de Linux-kernel [24]. Het doel is om meer recente versies te gebruiken in Android-toestellen. Versie 3.3 van de Linux-kernel bevat al een deel van de aanpassingen, en in de huidige ontwikkeling van versie 3.4 zullen nog meer aanpassingen komen [25]. Om dus mee te zijn met de ontwikkeling van Android is het belangrijk om ook recentere versies te ondersteunen. Bovenop de Linux-kernel draait het eigenlijke Android systeem [21]. Een belangrijk onderdeel van Android is de proces-vm waarin alle gebruikersapplicaties draaien. Deze virtuele machine maakt gebruik van de Thumb-2 instructieset van de ARM architectuur. Aangezien de ondersteuning van deze instructieset niet voldoende is, moet hier ook aandacht aan besteed worden. 1.2 Doelstelling Het doel van deze masterproef was om het mobiele besturingssysteem Android te virtualiseren. Om dit te realiseren was echter heel wat werk nodig in verschillende onderdelen van de hypervisor waarvoor in deze masterproef geen tijd genoeg was. Daarom werd er voor gekozen om enkel de ondersteuning van de volgende eisen van Android te verbeteren. Eerst werd de ondersteuning van de Thumb-2 instructieset verbeterd, aangezien deze door Android zeker gebruikt wordt. Daarna werd de ondersteuning voor de bijhorende Linuxkernel verbeterd. Dit bestaat uit twee delen: de uitbreiding van de virtuele hardware en het aanpassen van het gevirtualiseerd geheugenbeheer. Naast deze doelstellingen was het ook de bedoeling om de hypervisor robuuster te maken. Daarom werd er ondersteuning voor unittesten ingebouwd waarmee delen van de 3

13 hypervisor herhaaldelijk getest kunnen worden. Met deze unittesten is het mogelijk om problemen te isoleren waardoor ze gemakkelijker opgelost kunnen worden. 1.3 Overzicht van de masterproef In hoofdstuk 2 van deze masterproef wordt het gerelateerd werk besproken. Hierin wordt eerst algemeen uitgelegd wat virtualisatie inhoudt en hoe dit van toepassing is op deze masterproef. Daarna wordt de staat en werking van de hypervisor waarmee de ontwikkeling is begonnen besproken samen met de problemen die het virtualiseren van Android in de weg staan. Het volgende hoofdstuk bespreekt de unittest functionaliteit die toegevoegd werd aan de hypervisor. Hoofdstuk 4 beschrijft de problemen omtrent de ondersteuning van de Thumb-2 instructieset, en hoe deze werden opgelost. Verder wordt in hoofdstuk 5 de aandacht gevestigd op het gevirtualiseerd geheugenbeheer. Ten slotte wordt in hoofdstuk 6 uitgelegd hoe de ondersteuning van specifieke hardware is verbeterd. 4

14 Hoofdstuk 2 Gerelateerd werk In dit hoofdstuk zal eerst informatie gegeven worden over virtualisatie: waarom wordt aan virtualisatie gedaan en wat zijn de vereisten van een architectuur om dit efficiënt te realiseren? Daarna worden de verschillende types virtualisatie toegelicht en de wat gebruikelijke technieken zijn. Hierbij zal ook verantwoord worden waarom er gekozen werd voor een bepaald type virtualisatie. Nadien zal de ARM architectuur in meer detail uitgelegd worden en de invloed hiervan op het ontwerp van de hypervisor. Ook worden kort de gebruikte hardware en de ontwikkelmethoden besproken. Daarna wordt de architectuur van Android behandeld en de verschillende versies die ervan beschikbaar zijn. Als laatste wordt de staat van de hypervisor bij aanvang van deze masterproef besproken. Daarbij wordt aandacht geschonken aan de werking van verschillende onderdelen en de openstaande problemen. 2.1 Virtualisatie Het virtualiseren van hardware wordt om verschillende redenen toegepast [33]. In de context van mobiele systemen zijn de energie-efficiëntie en het plaatsgebruik van hardware de belangrijkste redenen om voor virtualisatie te kiezen. Door middel van virtualisatie is het immers mogelijk om hardware te delen waardoor er minder hardware nodig is om aan de eisen van eenzelfde aantal softwarecomponenten te voldoen. Dit heeft dan weer een positieve invloed op het energieverbruik. Er zijn echter ook nadelen verbonden aan het delen van hardware. Softwarecomponenten die zich niet gedragen volgens de regels, al dan niet opzettelijk, zijn schadelijker wanneer de hardware gedeeld wordt. Een voorbeeld hiervan is het volledig opeisen van de hardware door één softwarecomponent waardoor deze niet meer kan gebruikt worden door andere softwarecomponenten. Wanneer softwarecomponenten niet goed van elkaar afgeschermd zijn kan bovendien vertrouwelijke informatie lekken naar alle softwarecomponenten die van dezelfde hardware gebruik maken. Deze nadelen kunnen echter vermeden worden door een goed ontwerp van de virtualisatiesoft- 5

15 ware. Om de softwarecomponenten van elkaar te isoleren maakt de virtualisatiesoftware voor iedere softwarecomponent een eigen virtuele machine (VM) aan. In deze masterproef is de softwarecomponent meestal een besturingssysteem, daarom wordt verder in deze masterproef de term (gast)besturingssysteem gebruikt in plaats van softwarecomponent. Een VM is een voorstelling van de hardware zoals het gastbesturingssyteem die zou zien mocht die rechtstreeks op de fysieke hardware draaien. De virtualisatiesofware is verantwoordelijk voor de goede werking van deze VMs en wordt ook een virtuele machinemonitor (VMM) genoemd, of een hypervisor. Er zijn twee grote categorieën: systeem-vms en proces-vms. Zoals de naam aangeeft kan binnenin een proces-vm één enkel proces uitvoeren. Voorbeelden van proces-vms zijn de Java VM en de Dalvik VM gebruikt door Android [29, 21]. Systeem-VMs virtualiseren een volledig hardwareplatform en ondersteunen dus de uitvoering van een volledig besturingssyteem. Voorbeelden van hypervisors die gebruik maken van dit type VMs zijn VirtualBox en Xen Hypervisor [7, 11]. De hypervisor die het onderwerp is van deze masterproef wordt ontwikkeld voor mobiele toestellen en moet ondersteuning bieden voor volledige (mobiele) besturingssystemen. Deze hypervisor hoort dus bij de categorie van systeem-vms Efficiënt virtualiseren Voor het implementeren van een hypervisor is het interessant om te kijken hoe dit best aangepakt wordt. Een paper van Popek en Goldberg beschrijft hypervisors theoretisch. Volgens de paper moet een volwaardige hypervisor voldoen aan drie eigenschappen: controle over de hardware, gelijkheid en efficiëntie [30]. Het is vanzelfsprekend dat de hypervisor de volledige controle over de hardware moet hebben zodat de gastbesturingssystemen niet zomaar de configuraties van de gedeelde hardware, zoals het geheugen en de processor, kunnen lezen of aanpassen. Gelijkheid wijst er op dat besturingssystemen binnenin een VM hetzelfde gedrag vertonen alsof ze rechtstreeks op de fysieke hardware zouden uitvoeren, met uitzondering van een verschil in snelheid. Dit verschil zal door het gebruik van virtualisatie altijd aanwezig zijn aangezien de hypervisor moet ingrijpen om te voldoen aan de vorige eigenschap. Om de laatste eigenschap uit te leggen moet eerst het verschil tussen verschillende types instructies behandeld worden: enerzijds tussen bevoorrechte en onbevoorrechte instructies en anderzijds tussen gevoelige en ongevoelige instructies. 6

16 Een bevoorrechte instructie zal een exceptie opwerpen wanneer deze uitgevoerd wordt in een onbevoorrechte modus. Onbevoorrechte instructies zijn instructies die hetzelfde gedrag vertonen in alle uitvoeringsmodi. Gevoelige instructies worden opgedeeld in twee types: controle- en gedragsgevoelige instructies. Controlegevoelige instructies zijn instructies die het fysieke geheugen of de uitvoeringsmodus van de processor proberen aanpassen en die de controle-eigenschap kunnen schenden. Gedragsgevoelige instructie zijn instructies waarvan het gedrag afhangt van de plaats in het fysiek geheugen of van de uitvoeringsmodus van de processor. Een instructie die noch controle- of gedragsgevoelig is, wordt een ongevoelige instructie genoemd. Met deze definities kan de laatste eigenschap als volgt uitgelegd worden: efficiëntie vereist dat alle ongevoelige instructies rechtstreeks op de hardware uitgevoerd moeten worden, en dat dus enkel gevoelige instructies geëmuleerd worden door de hypervisor. Enkel wanneer alle gevoelige instructies ook bevoorrechte instructies zijn kan een hypervisor, volgens de theorie van Popek en Goldberg, efficiënt geïmplementeerd worden [30]. Dit is echter niet het geval voor de ARM architectuur waar bijvoorbeeld de CPS instructie, die de processor modus wil veranderen, als NOP wordt behandeld in de onbevoorrechte modus [14]. Dit is dus een gevoelige instructie, maar ze is niet bevoorrecht omdat ze geen exceptie opwerpt. In de praktijk is het echter wel mogelijk om een efficiënte hypervisor te ontwikkelen door gebruik te maken van technieken zoals dynamische binaire vertaling of met een andere architectuur die hardwareondersteuning voor virtualisatie heeft Paravirtualisatie en volledige virtualisatie De beschikbare technieken voor het realiseren van systeemvirtualisatie kunnen ingedeeld worden in paravirtualisatie en volledige virtualisatie. Bij volledige virtualisatie wordt de fysieke hardware volledig geëmuleerd en zal het bovenliggende besturingssysteem er zich niet van bewust zijn dat het te maken heeft met virtualisatie. Een besturingssysteem dat zonder problemen op de fysieke hardware kan uitvoeren zal dus zonder aanpassingen op de hypervisor kunnen uitvoeren. De hypervisor moet in dit geval wel alle gevoelige instructies onderscheppen en emuleren. Volledige virtualisatie zorgt voor een grote virtualisatiekost maar heeft als voordeel dat de besturingssystemen niet aangepast moeten worden. Deze virtualisatiekost kan vermeden worden wanneer er hardwareondersteuning voor virtualisatie is. Deze hardwareondersteuning is momenteel nog niet beschikbaar voor de ARM architectuur. 7

17 (a) Type 1 of bare-metal: hypervisor draait rechtstreeks op de hardware. (b) Type 2 of hosted: hypervisor draait bovenop een besturingssysteem. Figuur 2.1: Type 1 en type 2 hypervisors. Bij paravirtualisatie wordt het gastbesturingssysteem gedeeltelijk aangepast zodat het een interface herkent die aangeboden wordt die de moeilijk virtualiseerbare eigenschappen van de architectuur omzeilt [35]. Op die manier wordt de virtualisatiekost zo veel mogelijk gereduceerd. Dit zorgt echter wel voor grote onderhoudsproblemen. Voor ieder mogelijke combinatie van besturingssysteem en hypervisor moeten deze aanpassingen immers gemaakt worden. Zowel bij een update van het besturingssysteem als bij de hypervisor is het dus mogelijk dat de aanpassingen opnieuw doorgevoerd moeten worden. Voor de hypervisor die gebruikt wordt in deze masterproef werd voor volledige virtualisatie gekozen aangezien er geen aanpassingen aan de gastbesturingssystemen nodig zijn. Er kan dus met verschillende gastbesturingssystemen gewerkt worden Type 1 en type 2 hypervisors Hypervisors kunnen ook ingedeeld worden op basis van de plaats die ze innemen in de hardware/software-stapel. Wanneer de hypervisor rechtstreeks uitvoert op de hardware spreken we van een type 1 of bare-metal hypervisor. Het is ook mogelijk dat de hypervisor een gebruikersprogramma is dat zelf een besturingssysteem nodig heeft om uit te voeren. Deze hypervisors zijn type 2 of hosted hypervisors. In Figuur 2.1 worden deze twee types voorgesteld. Een type 1 hypervisor draait rechtstreeks op de hardware en dus zal het ontwerp ervan op enkele punten gelijkaardig zijn aan dat van een traditioneel besturingssysteem. Zo moeten er drivers voor de hardware zijn en moet de hardware geïnitialiseerd worden. 8

18 Een type 2 hypervisor steunt voor de aansturing van de hardware op de drivers van het besturingssysteem. Aangezien er geen drivers ontwikkeld en ingebouwd moeten worden voor een type 2 hypervisor kan de ontwikkeling ervan een stuk sneller verlopen en is het gemakkelijker om te debuggen. Een traditioneel besturingssysteem zal echter naast de hypervisor nog andere processen uitvoeren die ook de nodige verwerkingstijd zullen innemen. Alle instructies van een gastbesturingssysteem moeten bovendien nog door een extra laag software. De prestaties van een type 2 hypervisor zullen dus steeds lager zijn dan de prestaties van een type 1 hypervisor [32]. Daarom werd voor de hypervisor van dit werk gekozen voor een type 1 implementatie. Voorbeelden van type 1 en type 2 hypervisors zijn respectievelijk Xen en VirtualBox [7, 11]. 2.2 ARM architectuur De ARM processor is met meer dan 90% marktaandeel de populairste processor voor mobiele toestellen [17, 22]. Daarom werd er gekozen om met de hypervisor de ARM architectuur te virtualiseren en is het dus belangrijk om deze in meer detail te bespreken. In wat volgt zullen de aspecten van de ARM architectuur, die voor deze masterproef interessant zijn, besproken worden. Eerst wordt algemeen informatie gegeven over de verschillende ARM processoren en de verschillende modi waarin een processor kan uitvoeren. Daarna komt de voorwaardelijke uitvoering van instructies aan bod. Daarna wordt uitleg gegeven over de verschillende instructiesets van de architectuur: ARM, Thumb en Thumb-2. Ten slotte zal wordt het geheugenbeheer besproken De ARM processoren ARM processoren zijn beschikbaar in verschillende types: van processoren voor smartcards tot processoren voor krachtige mobiele toestellen zoals smartphones en tablets. De processoren worden ingedeeld in drie profielen: Cortex-A, Cortex-R en Cortex-M [2]. De processoren voor ingebedde systemen maken deel uit van het Cortex-M en Cortex-R profiel. Het Cortex-R profiel bevat de processoren voor real-time toepassingen, waar een goede afweging wordt gemaakt tussen laag energieverbruik en hoge prestaties. Processoren voor microcontrollers, waar er vooral gefocust wordt op laag energieverbruik, komen terecht in het Cortex-M profiel. Het Cortex-A profiel bevat de toepassingsprocessoren die 9

19 Figuur 2.2: Schema van het PSR. Figuur 2.3: Schema van het APSR. hoge prestaties leveren en zijn bedoeld voor gebruik in mobiele toestellen zoals smartphones en tablets. Iedere processor implementeert een bepaalde variant van de ARM architectuur. Processoren uit het Cortex-A profiel ondersteunen de ARMv7-A architectuur, die in dit werk gevirtualiseerd wordt. De ARMv7-A architectuur wordt verder in dit werk de ARM architectuur genoemd. Deze architectuur implementeert de ARM en Thumb-2 instructiesets en biedt ondersteuning voor geheugenbeheer met geheugenbescherming en adresvertaling die gebruik maakt van paginatabellen. Deze eigenschappen worden verder in meer detail besproken Uitvoeringstoestand van de processor De uitvoeringstoestand van de processor wordt bijgehouden in het Current Program Status Register (CPSR). Figuur 2.2 toont dit register met aanduiding van de verschillende velden. De grijze bits zijn gereserveerd en geven bij het uitlezen altijd de waarde nul terug. Dit zijn de belangrijkste velden van het CPSR die verder in meer detail behandeld zullen worden: N, Z, C, V: dit zijn conditiecode vlaggen en worden gewijzigd na het uitvoeren van instructies die de vlaggen willen wijzigen. De verschillende vlaggen zijn: N: Negatieve conditiecode vlag, Z: Nul conditiecode vlag, C: Carry conditiecode vlag, V: Overflow conditiecode vlag. IT 7:2, IT 1:0: Deze velden vormen samen het ITSTATE veld dat de uitvoeringstoestand bijhoudt voor een IT instructie. Deze velden zijn enkel zinvol als de 10

20 processor zich in Thumb-2 modus bevindt. T: Bepaalt, samen met de J bit, de instructieset modus van de processor. De J bit wordt niet gebruikt in deze masterproef en staat altijd op 0. Als de T bit op 1 staat is de instructieset Thumb-2 anders is deze ARM. M: Bepaalt de uitvoeringsmodus van de processor. De enige onbevoorrechte modus is de user modus en wordt gecodeerd als 0b Alle andere, geldige, modi zijn wel bevoorrecht. De ARM architectuur beschikt over zeven verschillende uitvoeringsmodi waarin de processor zich kan bevinden. De user modus (USR) is de enige onbevoorrechte modus van de architectuur. De bevoorrechte modi zijn: system (SYS), supervisor (SVC), abort (ABT), undefined (UND), interrupt (IRQ) en fast interrupt (FIQ). Het CPSR kan enkel uitgelezen of aangepast worden in een bevoorrechte modus. Een deel van dit register is ook beschikbaar in de gebruikersmode en wordt het Application Program Status Register (APSR) genoemd. Dit is geen apart register maar een gemaskeerde versie van het CPSR, zie Figuur 2.3. Voor iedere uitvoeringsmodus, met uizondering van de gebruikersmodus, is er een Saved Program Status Register (SPSR), dat hetzelfde formaat heeft als het CPSR en de waarde van het CPSR register bijhoudt wanneer van de gebruikersmodus naar een bevoorrechte modus veranderd wordt. Wanneer er dan terug gewisseld wordt naar de gebruikersmodus wordt het SPSR teruggeschreven naar het CPSR. De hypervisor zal altijd uitvoeren in een van de bevoorrechte modi. Het gastbesturingssysteem zal enkel uitvoeren in de gebruikersmodus. Dit is nodig opdat de hypervisor de controle over de hardware zou kunnen behouden Voorwaardelijke uitvoering Een belangrijk kenmerk van de ARM architectuur is de voorwaardelijke uitvoering van het grootste deel van de instructies. Dit kenmerk wordt ook wel de geprediceerde uitvoering van instructies genoemd. Aangezien bijna alle instructies voorwaardelijk uitgevoerd kunnen worden, zijn er minder voorwaardelijke spronginstructies nodig. Daarom wordt de code een stuk compacter wat voordelig is voor het cachegebruik [26]. Bekijk als voorbeeld de pseudocode uit Figuur 2.4(a). In dit voorbeeld wordt R2 bij R1 opgeteld als R1 nul is, anders wordt R3 opgeteld bij R1. Na compilatie wordt de code 11

21 if (R1 == 0) R1 = R1 + R2; else R1 = R1 + R3; (a) Pseudocode CMP R1, #0 BNE L1 ADD R1, R1, R2 B L2 L1 ADD R1, R1, R3 L2... (b) Zonder predicaten CMP R1, #0 ADDEQ R1, R1, R2 ADDNE R1, R1, R3 (c) Met predicaten Figuur 2.4: Voorwaardelijke uitvoering van ARM code. uit Figuur 2.4(b) genereerd als enkel de spronginstructies geprediceerd zijn. Wanneer alle instructies geprediceerd zijn, wordt de code uit Figuur 2.4(c) gegenereerd. Zonder geprediceerde instructies neemt dit stukje code vijf ARM instructies in, er zijn immers twee spronginstructies nodig om over één van de twee ADD instructies te springen. Met geprediceerde instructies zijn geen spronginstructies nodig om dezelfde functionaliteit te verkrijgen. In dit voorbeeld zorgt het gebruik van geprediceerde instructies dus voor 40% minder instructies. De eerste vier bits van een geprediceerde ARM instructie bepalen de conditiecode. De conditiecode wordt vergeleken met de conditievlaggen uit het CPSR register, zie Sectie voor het formaat van dit register. De conditiecode op zich bestaat uit twee delen: de eerste drie bits vormen de basisconditie, de laatste bit geeft aan of deze basisconditie tegengesteld moet worden. Bijvoorbeeld, de conditiecode EQ (equal), gecodeerd als 0b0000, geeft aan dat de Z (zero) vlag op 1 moet staan. De conditiecode NE (not equal) 0b0001 geeft aan dat de vlag op 0 moet staan. EQ is het omgekeerde van NE. Voor sommige instructies zijn de eerste vier bits gelijk aan 0b1111. Deze instructies kunnen niet voorwaardelijk gemaakt worden en zullen dus altijd onvoorwaardelijk uitgevoerd worden [14]. In bijlage A worden de verschillende conditiecodes samen met hun codering en betekenis opgesomd Thumb-2 instructieset De ARM instructieset bestaat uitsluitend uit 32-bit instructies [14]. Ingebedde systemen beschikken echter niet over veel cachegeheugen en moeten energiezuinig zijn: om deze reden werd de 16-bit Thumb instructieset geïntroduceerd. Thumb code zal in het algemeen kleiner zijn dan ARM code waardoor er minder instructies opgehaald moeten worden en de cache minder energie zal verbruiken [23]. 12

22 De Thumb instructieset is een deelverzameling van de ARM instructieset en bestaat uitsluitend uit 16-bit instructies. Om de codering van instructies compacter te maken werd de conditiecode weggelaten en kunnen enkel registers R0 tot en met R7 gebruikt worden. Door de halvering van het aantal bits is de expressiviteit van Thumb-instructies wel verminderd. In vergelijking met ARM code zullen hierdoor meer instructies nodig zijn om dezelfde functionaliteit te verkrijgen, maar door de kleinere instructies zal de code gemiddeld 30% compacter zijn [18]. Om optimale gecompileerde code te verkrijgen wordt code, waar de prestatie kritisch is, gecompileerd naar ARM en code, waar compactheid belangrijker is, gecompileerd naar Thumb [18, 23]. Deze menging van Thumb en ARM code kan gebeuren met heel grove granulariteit (per softwaremodule) tot heel fijne granulariteit (binnenin een functie). Om de geschikte menging te bepalen zijn echter extra hulpmiddelen zoals een profiler nodig die werkt op basis van heuristieken [31, 23]. Ook zijn er nog andere nadelen zoals het beperkt aantal instructies en het weglaten van de voorwaardelijke uitvoering. Daarom werd de Thumb-2 instructieset geïntroduceerd. Thumb-2 bestaat uit zowel 16- als 32-bit instructies die gemakkelijk door elkaar gebruikt kunnen worden zonder de processormodus te veranderen [31]. Dit reduceert ook de extra instructies die nodig zijn om de instructieset te wijzigen. Ook Thumb-2 instructies bevatten geen conditiecode maar kunnen wel voorwaardelijk uitgevoerd worden met behulp van een nieuwe instructie, de IT of If-Then instructie. De IT instructie bepaalt een IT-blok die één tot vier instructies bevat die voorwaardelijk uitgevoerd zullen worden. De syntax voor deze instructie is als volgt: ITxyz conditiecode. De operand van de IT instructie bepaalt de conditiecode voor de eerste instructie in het IT blok. De conditiecodes van de volgende instructies worden bepaald door de waarde van de condities x, y en z, voor respectievelijk de eerste, tweede en derde instructie. Deze condities zijn optioneel en kunnen ofwel T ofwel E zijn. Wanneer de conditie T is wordt dezelfde conditiecode gebruikt als die van de eerste instructie, als de conditie E is wordt de tegengestelde conditiecode gebruikt. In Figuur 2.5 wordt de Thumb-2 code gegeven voor het voorbeeld van Figuur 2.4(a). Het IT blok bevat twee instructies waarbij de conditiecode EQ is en de conditie voor de ander instructie E is. Het enige verschil tussen de ARM en Thumb-2 code is de IT instructie die de conditiecodes voor de volgende twee instructies bepaalt. Na het uitvoeren van de IT instructie worden de ITSTATE velden van het CPSR register ingesteld. De eerste drie bits van ITSTATE zijn de basisconditie voor het ITblok, de laatste vijf bits bepalen de grootte van het IT-blok en de minst significante bit 13

23 CMP R1, #0 ITE EQ ADD R1, R1, R2 ADD R1, R1, R3 Figuur 2.5: Voorwaardelijke uitvoering van Thumb-2 code. Tabel 2.1: Opeenvolgende toestanden van ITSTATE. ITSTATE: [7:5] [4] [3] [2] [1] [0] Toestand basisconditie b1 b2 b3 b4 1 IT-blok met 4 instructies basisconditie b1 b2 b3 1 0 IT-blok met 3 instructies basisconditie b1 b IT-blok met 2 instructies basisconditie b IT-blok met 1 instructie Geen IT-blok van de conditiecode voor iedere instructie uit het IT-blok. De grootte van het IT-blok wordt bepaald door de positie van de minst significante 1 bit. Met de ITSTATE heeft de processor dus genoeg informatie om de instructies in het IT-blok voorwaardelijk uit te voeren. Na het uitvoeren van een voorwaardelijke instructie worden de vijf laatste bits verschoven naar links. Als na het uitvoeren van een voorwaardelijke instructie de laatste drie bits van ITSTATE nul zijn, wordt ITSTATE gereset op nul en wordt uit het IT-blok gegaan. In Tabel 2.1 worden de opeenvolgende toestanden gegeven waarbij b1 staat voor de minst significante bit van de conditiecode van de eerst volgende instructie, b2 voor de tweede, enzovoort. De conditiecode voor de eerste instructie is dan de samenvoeging van basisconditie en b1, voor de tweede instructie de samenvoeging van basisconditie en b2, enzovoort. Thumb-2 reduceert de grootte van de code met gemiddeld 20% en behoudt tot 98% van de prestaties in vergelijking met ARM code [31]. Dit is een heel stuk beter dan de resultaten van Thumb. Andere voordelen van de Thumb-2 instructieset tegenover de Thumb instructieset zijn dat de Thumb-2 instructieset bijna alle instructies uit de ARM instructieset bevat en er niet gewisseld moet worden van processormode om 16- en 32-bit instructies door elkaar te gebruiken [14]. Het is mogelijk om tijdens de uitvoering de instructieset te wijzigen door het gebruik van een speciale spronginstructie: de interworking branch. Een interworking branch kan voorkomen bij spronginstructies maar ook bij POP, LDR en LDM instructies, deze laden één of meerdere registers in van het geheugen waaronder eventueel de programmateller waardoor ook een sprong kan gebeuren. Bij een interworking branch bepalen de laatste 14

24 twee bits van het doeladres de instructieset. Als deze bits 0b00 zijn wordt gesprongen naar ARM code. Als de minst significante bit 1 is wordt gesprongen naar Thumb-2 code en moet deze bit op 0 gezet worden om een juiste uitlijning te verkrijgen. Als de bits 0b10 zijn, is het sprongadres verkeerd uitgelijnd en is dus ongeldig. Als dit voorkomt zal een exceptie opgeworpen worden. De ondersteuning voor de Thumb-2 instructieset werd geïmplementeerd ter ondersteuning van FreeRTOS. FreeRTOS is een klein real-time besturingssysteem [9]. In tegenstelling tot Linux ondersteunt het zowel de ARM instructieset als de Thumb-2 instructieset en kan dus gebruikt worden om de Thumb-2 ondersteuning te testen Geheugenbeheer Virtueel geheugen is een belangrijk aspect van geavanceerde besturingssystemen omdat dit de mogelijkheid biedt om meerdere processen op transparante wijze gebruik te laten maken van het fysiek geheugen. De geheugenadressen, gebruikt in de software, worden dan logische of virtuele adressen genoemd. De virtuele adressen worden door het gebruikte geheugenbeheersysteem vertaald naar fysieke adressen. Deze vertaling gebeurt in de Memory Management Unit (MMU). Enkel wanneer de MMU aangeschakeld is, worden virtuele geheugenadressen vertaald naar fysieke geheugenadressen. Wanneer de MMU uitgeschakeld is, zijn de virtuele adressen gelijk aan de fysieke adressen. De structuur en werking van het geheugenbeheer van ARM is belangrijk voor de ontwikkeling van de hypervisor omdat dit ook gevirtualiseerd moet worden. Verschillende gastbesturingssystemen mogen immers niet in staat zijn elkaars toegewezen geheugen zomaar te lezen of aan te passen. Het geheugenbeheer van de ARMv7-A architectuur heet Virtual Memory System Achitecture (VMSAv7) en maakt gebruik van een 2-niveau vertalingsschema. Het fysiek geheugen wordt ingedeeld in vier paginagroottes: supersectie, sectie, grote pagina en kleine pagina. Deze hebben respectievelijk een grootte van 16 MB, 1 MB, 64 KB en 4 KB. In de paginatabel kunnen verschillende types verwijzingen voorkomen die wijzen naar een pagina of een paginatabel op het tweede niveau. De paginatabel op het eerste niveau bevat verwijzingen naar secties, supersecties en paginatabellen op het tweede niveau. Op het tweede niveau wordt verwezen naar kleine en grote pagina s. Op beide niveaus kunnen ook lege plaatsen voorkomen. Het type van een verwijzing wordt bepaald door de laatste twee bits van de verwijzing. Voor een paginatabel op het eerste niveau zijn de mogelijke 15

25 waarden: 0b01 voor een verwijzing naar een paginatabel op het tweede niveau en 0b10 voor een sectie of supersectie. Het verschil tussen een sectie of supersectie wordt bepaald door een andere bit in de verwijzing. Voor een paginatabel op het eerste niveau zijn de mogelijke waarden: 0b01 voor een grote pagina en 0b1x voor een kleine pagina, waarbij x zowel 1 als 0 kan zijn. Op beide niveaus is een verwijzing waarbij de laatste twee bits 0b00 zijn een lege verwijzing, dit wordt gezien als een ongeldige verwijzing. Alle geldige verwijzingen bevatten het basisadres van de pagina, of paginatabel waar ze naar verwijzen. Naast dit basisadres en de bits die het type bepalen worden nog andere bits bijgehouden die onder andere belangrijk zijn voor de toegangsbeperking. Deze bits kunnen bijvoorbeeld aanduiden dat een sectie in de onbevoorrechte modus enkel gelezen mag worden maar niet mag worden aangepast. In Figuur 2.6 wordt een deel van het fysiek geheugen voorgesteld met een sectie en enkele grote pagina s. Om de figuur leesbaar te houden werd het fysiek geheugen voorgesteld in blokken van 64 KB, de grootte van een grote pagina. De pijlen wijzen naar het eerste adres van de pagina of paginatabel. Dit is dus het basisadres. Een vertaling van een virtueel adres naar een fysiek adres gebeurt op de volgende manier. In een speciaal register, het Translation Table Base Register (TTBR), wordt de locatie van de paginatabel op het eerste niveau opgeslagen. Een deel van het virtueel adres wordt gebruikt als index in deze tabel. Als op die plaats in de tabel een verwijzing naar een sectie of supersectie zit, wordt het virtueel adres vertaald door het basisadres van de (super)sectie en de paginaindex uit het virtueel adres samen te voegen. Anders wordt de paginatabel op het tweede niveau opgehaald waar naar verwezen wordt. In deze paginatabel wordt opnieuw een deel van het virtueel adres als index gebruikt, deze keer voor de tabel op het tweede niveau. De vertaling van het virtueel adres gebeurt dan via een kleine of grote pagina. In Figuur 2.7 wordt een virtueel adres (VA) vertaald naar een fysiek adres (FA) wanneer dit fysiek adres zich in een kleine pagina bevindt. In de figuur staat N1 voor het eerste niveau en N2 voor het tweede niveau. Bij het vertalen van een virtueel adres kunnen er verschillende fouten optreden. Wanneer een adres verwijst naar een lege plaats zal er een vertaalfout opgeworpen worden. Iedere verwijzing in de paginatabel heeft toegangsbits die worden nagekeken wanneer een virtueel adres gebruikt wordt. Wanneer een bepaalde lees- of schrijfopdracht niet geoorloofd is, zal er een permissiefout opgeworpen worden. Beide fouten worden algemeen een datafout genoemd. Als een datafout optreedt, wordt het virtueel geheugenadres en het 16

26 Figuur 2.6: Paginatabellen op het eerste en tweede niveau. fouttype bijgehouden. proberen afhandelen. Met deze twee gegevens moet het besturingssysteem de fouten Het ontwikkelplatform De huidige ontwikkeling van de hypervisor gebeurt op een BeagleBoard [15]. Dit bord is gemaakt met het oog op de ontwikkeling van openbronsoftware op openbronhardware. Openbronhardware wil zeggen dat alle documentatie over de hardware en het ontwerp ervan vrij beschikbaar is. Voor deze masterproef zijn belangrijkste onderdelen van het BeagleBoard de Texas Instruments (TI) OMAP3530 System-on-Chip (SoC), de JTAG en UART voor het debuggen en communiceren over de seriële poort naar de computer en de SD/MMC geheugenkaartlezer. Een SoC combineert al de nodige hardwarecomponenten voor een bepaald systeem op één chip. De OMAP is gericht op het gebruik in mobiele ingebedde systemen zoals smartphones [34]. De OMAP kan opgedeeld worden in verschillende subsystemen. Het Microprocessor Unit (MPU) subsysteem bevat de ARM rekenkern met onder andere een ARM Cortex-A8 17

Geheugenbeheer. ICT Infrastructuren 2 december 2013

Geheugenbeheer. ICT Infrastructuren 2 december 2013 Geheugenbeheer ICT Infrastructuren 2 december 2013 Doelen van geheugenbeheer Reloca>e (flexibel gebruik van geheugen) Bescherming Gedeeld/gemeenschappelijk geheugen Logische indeling van procesonderdelen

Nadere informatie

MyDHL+ Van Non-Corporate naar Corporate

MyDHL+ Van Non-Corporate naar Corporate MyDHL+ Van Non-Corporate naar Corporate Van Non-Corporate naar Corporate In MyDHL+ is het mogelijk om meerdere gebruikers aan uw set-up toe te voegen. Wanneer er bijvoorbeeld meerdere collega s van dezelfde

Nadere informatie

Les 11: systeemarchitectuur virtuele machines

Les 11: systeemarchitectuur virtuele machines Les 11: systeemarchitectuur virtuele machines Geavanceerde computerarchitectuur Lieven Eeckhout Academiejaar 2008-2009 Universiteit Gent Virtuele machines Motivatie Interfaces Virtualisatie: inleiding

Nadere informatie

Machinevirtualisatie. Raphael kena Poss Universiteit van Amsterdam. Besturingsystemen

Machinevirtualisatie. Raphael kena Poss Universiteit van Amsterdam. Besturingsystemen Machinevirtualisatie Raphael kena Poss Universiteit van Amsterdam Besturingsystemen 1 vandaag... zal je leren: wat machinevirtualisatie is waarvoor het wordt gebruikt hoe het werkt het verschil tussen

Nadere informatie

SAMPLE 11 = + 11 = + + Exploring Combinations of Ten + + = = + + = + = = + = = 11. Step Up. Step Ahead

SAMPLE 11 = + 11 = + + Exploring Combinations of Ten + + = = + + = + = = + = = 11. Step Up. Step Ahead 7.1 Exploring Combinations of Ten Look at these cubes. 2. Color some of the cubes to make three parts. Then write a matching sentence. 10 What addition sentence matches the picture? How else could you

Nadere informatie

Ondersteuning voor zelfwijzigende code in een ARM hypervisor

Ondersteuning voor zelfwijzigende code in een ARM hypervisor Ondersteuning voor zelfwijzigende code in een ARM hypervisor Peter Van Bouwel Promotoren: prof. dr. ir. Bjorn De Sutter, prof. dr. ir. Koen De Bosschere Begeleiders: ir. Niels Penneman, dr. Jonas Maebe

Nadere informatie

Classification of triangles

Classification of triangles Classification of triangles A triangle is a geometrical shape that is formed when 3 non-collinear points are joined. The joining line segments are the sides of the triangle. The angles in between the sides

Nadere informatie

CTI SUITE TSP DETAILS

CTI SUITE TSP DETAILS CTI SUITE TSP DETAILS TAPI allows an application to access telephony services provided by a telecom PABX. In order to implement its access to ETRADEAL, a TAPI interface has been developed by Etrali. As

Nadere informatie

Introductie in flowcharts

Introductie in flowcharts Introductie in flowcharts Flow Charts Een flow chart kan gebruikt worden om: Processen definieren en analyseren. Een beeld vormen van een proces voor analyse, discussie of communicatie. Het definieren,

Nadere informatie

WWW.EMINENT-ONLINE.COM

WWW.EMINENT-ONLINE.COM WWW.EMINENT-OINE.COM HNDLEIDING USERS MNUL EM1016 HNDLEIDING EM1016 USB NR SERIEEL CONVERTER INHOUDSOPGVE: PGIN 1.0 Introductie.... 2 1.1 Functies en kenmerken.... 2 1.2 Inhoud van de verpakking.... 2

Nadere informatie

Het Effect van Verschil in Sociale Invloed van Ouders en Vrienden op het Alcoholgebruik van Adolescenten.

Het Effect van Verschil in Sociale Invloed van Ouders en Vrienden op het Alcoholgebruik van Adolescenten. Het Effect van Verschil in Sociale Invloed van Ouders en Vrienden op het Alcoholgebruik van Adolescenten. The Effect of Difference in Peer and Parent Social Influences on Adolescent Alcohol Use. Nadine

Nadere informatie

Settings for the C100BRS4 MAC Address Spoofing with cable Internet.

Settings for the C100BRS4 MAC Address Spoofing with cable Internet. Settings for the C100BRS4 MAC Address Spoofing with cable Internet. General: Please use the latest firmware for the router. The firmware is available on http://www.conceptronic.net! Use Firmware version

Nadere informatie

Add the standing fingers to get the tens and multiply the closed fingers to get the units.

Add the standing fingers to get the tens and multiply the closed fingers to get the units. Digit work Here's a useful system of finger reckoning from the Middle Ages. To multiply $6 \times 9$, hold up one finger to represent the difference between the five fingers on that hand and the first

Nadere informatie

General info on using shopping carts with Ingenico epayments

General info on using shopping carts with Ingenico epayments Inhoudsopgave 1. Disclaimer 2. What is a PSPID? 3. What is an API user? How is it different from other users? 4. What is an operation code? And should I choose "Authorisation" or "Sale"? 5. What is an

Nadere informatie

Geheugenbeheer. ICT Infrastructuren. hoofdstukken 7 en 8.1

Geheugenbeheer. ICT Infrastructuren. hoofdstukken 7 en 8.1 Geheugenbeheer ICT Infrastructuren hoofdstukken 7 en 8.1 Eenvoudig geheugenbeheer OS gebruikt een klein stukje geheugen rest is voor gewone processen OS vrij 0 1000 Eenvoudig geheugenbeheer OS gebruikt

Nadere informatie

ICARUS Illumina E653BK on Windows 8 (upgraded) how to install USB drivers

ICARUS Illumina E653BK on Windows 8 (upgraded) how to install USB drivers ICARUS Illumina E653BK on Windows 8 (upgraded) how to install USB drivers English Instructions Windows 8 out-of-the-box supports the ICARUS Illumina (E653) e-reader. However, when users upgrade their Windows

Nadere informatie

S e v e n P h o t o s f o r O A S E. K r i j n d e K o n i n g

S e v e n P h o t o s f o r O A S E. K r i j n d e K o n i n g S e v e n P h o t o s f o r O A S E K r i j n d e K o n i n g Even with the most fundamental of truths, we can have big questions. And especially truths that at first sight are concrete, tangible and proven

Nadere informatie

Functioneren van een Kind met Autisme. M.I. Willems. Open Universiteit

Functioneren van een Kind met Autisme. M.I. Willems. Open Universiteit Onderzoek naar het Effect van de Aanwezigheid van een Hond op het Alledaags Functioneren van een Kind met Autisme M.I. Willems Open Universiteit Naam student: Marijke Willems Postcode en Woonplaats: 6691

Nadere informatie

MyDHL+ ProView activeren in MyDHL+

MyDHL+ ProView activeren in MyDHL+ MyDHL+ ProView activeren in MyDHL+ ProView activeren in MyDHL+ In MyDHL+ is het mogelijk om van uw zendingen, die op uw accountnummer zijn aangemaakt, de status te zien. Daarnaast is het ook mogelijk om

Nadere informatie

FOR DUTCH STUDENTS! ENGLISH VERSION NEXT PAGE. Toets Inleiding Kansrekening 1 8 februari 2010

FOR DUTCH STUDENTS! ENGLISH VERSION NEXT PAGE. Toets Inleiding Kansrekening 1 8 februari 2010 FOR DUTCH STUDENTS! ENGLISH VERSION NEXT PAGE Toets Inleiding Kansrekening 1 8 februari 2010 Voeg aan het antwoord van een opgave altijd het bewijs, de berekening of de argumentatie toe. Als je een onderdeel

Nadere informatie

Karen J. Rosier - Brattinga. Eerste begeleider: dr. Arjan Bos Tweede begeleider: dr. Ellin Simon

Karen J. Rosier - Brattinga. Eerste begeleider: dr. Arjan Bos Tweede begeleider: dr. Ellin Simon Zelfwaardering en Angst bij Kinderen: Zijn Globale en Contingente Zelfwaardering Aanvullende Voorspellers van Angst bovenop Extraversie, Neuroticisme en Gedragsinhibitie? Self-Esteem and Fear or Anxiety

Nadere informatie

Activant Prophet 21. Prophet 21 Version 12.0 Upgrade Information

Activant Prophet 21. Prophet 21 Version 12.0 Upgrade Information Activant Prophet 21 Prophet 21 Version 12.0 Upgrade Information This class is designed for Customers interested in upgrading to version 12.0 IT staff responsible for the managing of the Prophet 21 system

Nadere informatie

L.Net s88sd16-n aansluitingen en programmering.

L.Net s88sd16-n aansluitingen en programmering. De L.Net s88sd16-n wordt via één van de L.Net aansluitingen aangesloten op de LocoNet aansluiting van de centrale, bij een Intellibox of Twin-Center is dat de LocoNet-T aansluiting. L.Net s88sd16-n aansluitingen

Nadere informatie

Tim Mallezie Architectuur van besturingssystemen: Vraag A2.

Tim Mallezie Architectuur van besturingssystemen: Vraag A2. Procesbeheer: kenmerken van moderne besturingssystemen. 1. Bespreek de (drie) meest typische kenmerken van moderne besturingssystemen. 2. In hoeverre beantwoorden UNIX, Linux en Windows NT hieraan? Geef

Nadere informatie

Beter, Sneller, Mooier. Processoren 12 januari 2015

Beter, Sneller, Mooier. Processoren 12 januari 2015 Beter, Sneller, Mooier Processoren 12 januari 2015 Beter! Sneller! Krachtigere CPU: maak instructies die meer doen Snellere CPU: pipeline, out-of-order execution Sneller RAM: cache meer mogelijkheden...

Nadere informatie

Behandeleffecten. in Forensisch Psychiatrisch Center de Rooyse Wissel. Treatment effects in. Forensic Psychiatric Centre de Rooyse Wissel

Behandeleffecten. in Forensisch Psychiatrisch Center de Rooyse Wissel. Treatment effects in. Forensic Psychiatric Centre de Rooyse Wissel Behandeleffecten in Forensisch Psychiatrisch Center de Rooyse Wissel Treatment effects in Forensic Psychiatric Centre de Rooyse Wissel S. Daamen-Raes Eerste begeleider: Dr. W. Waterink Tweede begeleider:

Nadere informatie

FAAC DRIVER. Driver install procedure for FAAC boards. Installatieprocedure voor driver voor FAAC-kaarten.

FAAC DRIVER. Driver install procedure for FAAC boards. Installatieprocedure voor driver voor FAAC-kaarten. FAAC DRIVER Driver install procedure for FAAC boards Installatieprocedure voor driver voor FAAC-kaarten www.record-toegangstechniek.nl 1 When a FAAC board (E124 or E145) is connected to the USB port, it

Nadere informatie

B1 Woordkennis: Spelling

B1 Woordkennis: Spelling B1 Woordkennis: Spelling Bestuderen Inleiding Op B1 niveau gaan we wat meer aandacht schenken aan spelling. Je mag niet meer zoveel fouten maken als op A1 en A2 niveau. We bespreken een aantal belangrijke

Nadere informatie

Firewall van de Speedtouch 789wl volledig uitschakelen?

Firewall van de Speedtouch 789wl volledig uitschakelen? Firewall van de Speedtouch 789wl volledig uitschakelen? De firewall van de Speedtouch 789 (wl) kan niet volledig uitgeschakeld worden via de Web interface: De firewall blijft namelijk op stateful staan

Nadere informatie

OVERGANGSREGELS / TRANSITION RULES 2007/2008

OVERGANGSREGELS / TRANSITION RULES 2007/2008 OVERGANGSREGELS / TRANSITION RULES 2007/2008 Instructie Met als doel het studiecurriculum te verbeteren of verduidelijken heeft de faculteit FEB besloten tot aanpassingen in enkele programma s die nu van

Nadere informatie

Het beheren van mijn Tungsten Network Portal account NL 1 Manage my Tungsten Network Portal account EN 14

Het beheren van mijn Tungsten Network Portal account NL 1 Manage my Tungsten Network Portal account EN 14 QUICK GUIDE C Het beheren van mijn Tungsten Network Portal account NL 1 Manage my Tungsten Network Portal account EN 14 Version 0.9 (June 2014) Per May 2014 OB10 has changed its name to Tungsten Network

Nadere informatie

Een.NET-besturingssysteemtoolkit. Discovering Cosmos. Sijmen J. Mulder

Een.NET-besturingssysteemtoolkit. Discovering Cosmos. Sijmen J. Mulder Een.NET-besturingssysteemtoolkit Discovering Cosmos Sijmen J. Mulder Agenda Boek 1 Cosmos: a very short introduction Boek 2 Modern Operating Systems Pauze Boek 3 The Design and Implementation of the Cosmos

Nadere informatie

Dynamic VM Memory Allocation using Cache Hit Ratio

Dynamic VM Memory Allocation using Cache Hit Ratio VM 1 2 1 Dynamic VM Memory Allocation using Cache Hit Ratio KOUYA HINAGAWA 1 KOUSUKE TAKEUCHI 2 SANEYASU YAMAGUCHI 1 In virtualized environment, allocation memory size of virtual machines can be dynamically

Nadere informatie

Projectplan. Elektronica-ICT Artesis. Auteur: Coopman Tom Interne Promotor: Peeters Tom Externe Promotor: Delepierre Bruno, Adforce

Projectplan. Elektronica-ICT Artesis. Auteur: Coopman Tom Interne Promotor: Peeters Tom Externe Promotor: Delepierre Bruno, Adforce Elektronica-ICT Artesis Projectplan Auteur: Coopman Tom Interne Promotor: Peeters Tom Externe Promotor: Delepierre Bruno, Adforce Projectplan ter voorbereiding van de bachelorproef en stage Academiejaar

Nadere informatie

LONDEN MET 21 GEVARIEERDE STADSWANDELINGEN 480 PAGINAS WAARDEVOLE INFORMATIE RUIM 300 FOTOS KAARTEN EN PLATTEGRONDEN

LONDEN MET 21 GEVARIEERDE STADSWANDELINGEN 480 PAGINAS WAARDEVOLE INFORMATIE RUIM 300 FOTOS KAARTEN EN PLATTEGRONDEN LONDEN MET 21 GEVARIEERDE STADSWANDELINGEN 480 PAGINAS WAARDEVOLE INFORMATIE RUIM 300 FOTOS KAARTEN EN PLATTEGRONDEN LM2GS4PWIR3FKEP-58-WWET11-PDF File Size 6,444 KB 117 Pages 27 Aug, 2016 TABLE OF CONTENT

Nadere informatie

Beïnvloedt Gentle Teaching Vaardigheden van Begeleiders en Companionship en Angst bij Verstandelijk Beperkte Cliënten?

Beïnvloedt Gentle Teaching Vaardigheden van Begeleiders en Companionship en Angst bij Verstandelijk Beperkte Cliënten? Beïnvloedt Gentle Teaching Vaardigheden van Begeleiders en Companionship en Angst bij Verstandelijk Beperkte Cliënten? Does Gentle Teaching have Effect on Skills of Caregivers and Companionship and Anxiety

Nadere informatie

Inleiding Practicum Operating Systems

Inleiding Practicum Operating Systems Inleiding Practicum Operating Systems Mattias Holm & Kristian Rietveld Doel - In komende 3 practica zullen we gaan werken met een custom OS. - Kort introduceren van: - Hardware. - Kernel. - Tools. - De

Nadere informatie

Non Diffuse Point Based Global Illumination

Non Diffuse Point Based Global Illumination Non Diffuse Point Based Global Illumination Karsten Daemen Thesis voorgedragen tot het behalen van de graad van Master of Science in de ingenieurswetenschappen: computerwetenschappen Promotor: Prof. dr.

Nadere informatie

Virtualizatie bij SIN

Virtualizatie bij SIN Virtualizatie bij SIN Inhoud 1 Waarom...2 2 Mogelijkheden:...2 3 Features:...2 3.1 Xen server...2 3.2 HyperV...3 3.3 ESXi...3 4 Pros Cons voor SIN:...3 4.1 Xen Server...3 4.2 HyperV...3 4.3 ESXi...3 5

Nadere informatie

AE1103 Statics. 25 January h h. Answer sheets. Last name and initials:

AE1103 Statics. 25 January h h. Answer sheets. Last name and initials: Space above not to be filled in by the student AE1103 Statics 09.00h - 12.00h Answer sheets Last name and initials: Student no.: Only hand in the answer sheets! Other sheets will not be accepted Write

Nadere informatie

COGNITIEVE DISSONANTIE EN ROKERS COGNITIVE DISSONANCE AND SMOKERS

COGNITIEVE DISSONANTIE EN ROKERS COGNITIVE DISSONANCE AND SMOKERS COGNITIEVE DISSONANTIE EN ROKERS Gezondheidsgedrag als compensatie voor de schadelijke gevolgen van roken COGNITIVE DISSONANCE AND SMOKERS Health behaviour as compensation for the harmful effects of smoking

Nadere informatie

Handleiding Installatie ADS

Handleiding Installatie ADS Handleiding Installatie ADS Versie: 1.0 Versiedatum: 19-03-2014 Inleiding Deze handleiding helpt u met de installatie van Advantage Database Server. Zorg ervoor dat u bij de aanvang van de installatie

Nadere informatie

Four-card problem. Input

Four-card problem. Input Four-card problem The four-card problem (also known as the Wason selection task) is a logic puzzle devised by Peter Cathcart Wason in 1966. It is one of the most famous tasks in the study of deductive

Nadere informatie

Geheugenstrategieën, Leerstrategieën en Geheugenprestaties. Grace Ghafoer. Memory strategies, learning styles and memory achievement

Geheugenstrategieën, Leerstrategieën en Geheugenprestaties. Grace Ghafoer. Memory strategies, learning styles and memory achievement Geheugenstrategieën, Leerstrategieën en Geheugenprestaties Grace Ghafoer Memory strategies, learning styles and memory achievement Eerste begeleider: dr. W. Waterink Tweede begeleider: dr. S. van Hooren

Nadere informatie

Gebruikershandleiding

Gebruikershandleiding Gebruikershandleiding Xperia P TV Dock DK21 Inhoudsopgave Inleiding...3 Overzicht achterkant TV Dock...3 Aan de slag...4 LiveWare -beheer...4 LiveWare -beheer bijwerken...4 TV Dock gebruiken...5 De telefoon

Nadere informatie

My Inspiration I got my inspiration from a lamp that I already had made 2 years ago. The lamp is the you can see on the right.

My Inspiration I got my inspiration from a lamp that I already had made 2 years ago. The lamp is the you can see on the right. Mijn Inspiratie Ik kreeg het idee om een variant te maken van een lamp die ik al eerder had gemaakt. Bij de lamp die in de onderstaande foto s is afgebeeld kun je het licht dimmen door de lamellen open

Nadere informatie

Memory Management. Virtual Memory. Eisen Memory Management. Verdelen geheugen over meerdere processen

Memory Management. Virtual Memory. Eisen Memory Management. Verdelen geheugen over meerdere processen Memory Management Process control information Entry point to program Process Control Block Verdelen geheugen over meerdere processen Program Branch instruction Virtual Memory Data Reference to data Processen

Nadere informatie

[BP-ebMS-H-000] Welke versie van Hermes moet er gebruikt worden?

[BP-ebMS-H-000] Welke versie van Hermes moet er gebruikt worden? [BP-ebMS-H-000] Welke versie van Hermes moet er gebruikt worden? Gebruik altijd de laatste versie omdat er serieuse bug-fixes in kunnen zitten. Check altijd de release notes en openstaande bugs. Er is

Nadere informatie

L.Net s88sd16-n aansluitingen en programmering.

L.Net s88sd16-n aansluitingen en programmering. De L.Net s88sd16-n wordt via één van de L.Net aansluitingen aangesloten op de LocoNet aansluiting van de centrale, bij een Intellibox of Twin-Center is dat de LocoNet-T aansluiting. L.Net s88sd16-n aansluitingen

Nadere informatie

de Rol van Persoonlijkheid Eating: the Role of Personality

de Rol van Persoonlijkheid Eating: the Role of Personality De Relatie tussen Dagelijkse Stress en Emotioneel Eten: de Rol van Persoonlijkheid The Relationship between Daily Stress and Emotional Eating: the Role of Personality Arlette Nierich Open Universiteit

Nadere informatie

Mobile Devices, Applications and Data

Mobile Devices, Applications and Data Mobile Devices, Applications and Data 1 Jits Langedijk Senior Consultant Jits.langedijk@pqr.nl Peter Sterk Solution Architect peter.sterk@pqr.nl Onderwerpen - Rol van Mobile IT in Tomorrow s Workspace

Nadere informatie

FRAME [UPRIGHT MODEL] / [DEPTH] / [HEIGHT] / [FINISH] TYPE OF BASEPLATE P Base plate BP80 / E alternatives: ZINC finish in all cases

FRAME [UPRIGHT MODEL] / [DEPTH] / [HEIGHT] / [FINISH] TYPE OF BASEPLATE P Base plate BP80 / E alternatives: ZINC finish in all cases FRAME XS UPRIGHT BASE PLATE UPRIGHT HORIZONTAL PROFILE DIAGONAL PROFILE DESCRIPTION A vertical structure consisting of 2 uprights, joined by a system of bracing profiles, and base plates intended to support

Nadere informatie

Procedure Reset tv-toestellen:

Procedure Reset tv-toestellen: Procedure Reset tv-toestellen: Volgende procedure is te volgen wanneer er een tv-toestel, op een van de kamers niet meer werkt. TV Re-installation Factory Default Her-installeren van de TV Fabrieksinstellingen

Nadere informatie

Risk & Requirements Based Testing

Risk & Requirements Based Testing Risk & Requirements Based Testing Tycho Schmidt PreSales Consultant, HP 2006 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice Agenda Introductie

Nadere informatie

De Relatie tussen Werkdruk, Pesten op het Werk, Gezondheidsklachten en Verzuim

De Relatie tussen Werkdruk, Pesten op het Werk, Gezondheidsklachten en Verzuim De Relatie tussen Werkdruk, Pesten op het Werk, Gezondheidsklachten en Verzuim The Relationship between Work Pressure, Mobbing at Work, Health Complaints and Absenteeism Agnes van der Schuur Eerste begeleider:

Nadere informatie

ALGORITMIEK: answers exercise class 7

ALGORITMIEK: answers exercise class 7 Problem 1. See slides 2 4 of lecture 8. Problem 2. See slides 4 6 of lecture 8. ALGORITMIEK: answers exercise class 7 Problem 5. a. Als we twee negatieve (< 0) getallen bij elkaar optellen is het antwoord

Nadere informatie

Verschillen in het Gebruik van Geheugenstrategieën en Leerstijlen. Differences in the Use of Memory Strategies and Learning Styles

Verschillen in het Gebruik van Geheugenstrategieën en Leerstijlen. Differences in the Use of Memory Strategies and Learning Styles Verschillen in het Gebruik van Geheugenstrategieën en Leerstijlen tussen Leeftijdsgroepen Differences in the Use of Memory Strategies and Learning Styles between Age Groups Rik Hazeu Eerste begeleider:

Nadere informatie

The genesis of the game is unclear. Possibly, dominoes originates from China and the stones were brought here by Marco Polo, but this is uncertain.

The genesis of the game is unclear. Possibly, dominoes originates from China and the stones were brought here by Marco Polo, but this is uncertain. Domino tiles Dominoes is a game played with rectangular domino 'tiles'. Today the tiles are often made of plastic or wood, but in the past, they were made of real stone or ivory. They have a rectangle

Nadere informatie

z x 1 x 2 x 3 x 4 s 1 s 2 s 3 rij rij rij rij

z x 1 x 2 x 3 x 4 s 1 s 2 s 3 rij rij rij rij ENGLISH VERSION SEE PAGE 3 Tentamen Lineaire Optimalisering, 0 januari 0, tijdsduur 3 uur. Het gebruik van een eenvoudige rekenmachine is toegestaan. Geef bij elk antwoord een duidelijke toelichting. Als

Nadere informatie

Workflow en screenshots Status4Sure

Workflow en screenshots Status4Sure Workflow en screenshots Status4Sure Inleiding Het Status4Sure systeem is een ICT oplossing waarmee de transportopdrachten papierloos door het gehele proces gaan. De status kan gevolgd worden door de logistieke

Nadere informatie

Type Dementie als Oorzaak van Seksueel Ontremd Gedrag. Aanwezigheid van het Gedrag bij Type Alzheimer?

Type Dementie als Oorzaak van Seksueel Ontremd Gedrag. Aanwezigheid van het Gedrag bij Type Alzheimer? Type Dementie als Oorzaak van Seksueel Ontremd Gedrag Aanwezigheid van het Gedrag bij Type Alzheimer? Type of Dementia as Cause of Sexual Disinhibition Presence of the Behavior in Alzheimer s Type? Carla

Nadere informatie

3HUIRUPDQFH0HDVXUHPHQW RI'\QDPLFDOO\&RPSLOHG -DYD([HFXWLRQV

3HUIRUPDQFH0HDVXUHPHQW RI'\QDPLFDOO\&RPSLOHG -DYD([HFXWLRQV 3HUIRUPDQFH0HDVXUHPHQW RI'\QDPLFDOO\&RPSLOHG -DYD([HFXWLRQV Tia Newhall and Barton P. Miller {newhall *, bart}@cs.wisc.edu Computer Sciences University of Wisconsin 1210 W. Dayton St. Madison, WI 53706

Nadere informatie

DALISOFT. 33. Configuring DALI ballasts with the TDS20620V2 DALI Tool. Connect the TDS20620V2. Start DALISOFT

DALISOFT. 33. Configuring DALI ballasts with the TDS20620V2 DALI Tool. Connect the TDS20620V2. Start DALISOFT TELETASK Handbook Multiple DoIP Central units DALISOFT 33. Configuring DALI ballasts with the TDS20620V2 DALI Tool Connect the TDS20620V2 If there is a TDS13620 connected to the DALI-bus, remove it first.

Nadere informatie

Inhoud vandaag. Interrupts. Algemeen ARM7 AIC

Inhoud vandaag. Interrupts. Algemeen ARM7 AIC Inhoud vandaag Interrupts Algemeen ARM7 AIC Interrupts Wat is een interrupt? Een interrupt is een onderbreking van de huidige bezigheden ten gevolge van een externe gebeurtenis, zodanig dat de bezigheden

Nadere informatie

De bijsluiter in beeld

De bijsluiter in beeld De bijsluiter in beeld Een onderzoek naar de inhoud van een visuele bijsluiter voor zelfzorggeneesmiddelen Oktober 2011 Mariëtte van der Velde De bijsluiter in beeld Een onderzoek naar de inhoud van een

Nadere informatie

Wat is Arduino? Arduino = microprocessor (Atmel)

Wat is Arduino? Arduino = microprocessor (Atmel) Intro tot Arduino Wat is Arduino? Volgens de website: Arduino is an open-source electronics prototyping platform based on flexible, easy-to-use hardware and software. It's intended for artists, designers,

Nadere informatie

NMOZTMKUDLVDKECVLKBVESBKHWIDKPDF-WWUS Page File Size 9,952 KB 29 May, 2016

NMOZTMKUDLVDKECVLKBVESBKHWIDKPDF-WWUS Page File Size 9,952 KB 29 May, 2016 NAVIJVEN MINILAMPJES OM ZELF TE MAKEN KERSTFIGUREN UIT DE LAPPENMAND VOOR DE KINDERSSALOON EN COWBOYS VAN LOLLYSTOKJES KAMERBREED BOEKENREK VOOR EEN SMAL BUDGETGEBAKKEN KOEKFIGUURTJES HANGEN WE IN DE KERSTBOOM

Nadere informatie

Emotionele Arbeid, de Dutch Questionnaire on Emotional Labor en. Bevlogenheid

Emotionele Arbeid, de Dutch Questionnaire on Emotional Labor en. Bevlogenheid Emotionele Arbeid, de Dutch Questionnaire on Emotional Labor en Bevlogenheid Emotional Labor, the Dutch Questionnaire on Emotional Labor and Engagement C.J. Heijkamp mei 2008 1 ste begeleider: dhr. dr.

Nadere informatie

Intermax backup exclusion files

Intermax backup exclusion files Intermax backup exclusion files Document type: Referentienummer: Versienummer : Documentatie 1.0 Datum publicatie: Datum laatste wijziging: Auteur: 24-2-2011 24-2-2011 Anton van der Linden Onderwerp: Documentclassificatie:

Nadere informatie

Luister alsjeblieft naar een opname als je de vragen beantwoordt of speel de stukken zelf!

Luister alsjeblieft naar een opname als je de vragen beantwoordt of speel de stukken zelf! Martijn Hooning COLLEGE ANALYSE OPDRACHT 1 9 september 2009 Hierbij een paar vragen over twee stukken die we deze week en vorige week hebben besproken: Mondnacht van Schumann, en het eerste deel van het

Nadere informatie

Software Test Plan. Yannick Verschueren

Software Test Plan. Yannick Verschueren Software Test Plan Yannick Verschueren Maart 2015 Document geschiedenis Versie Datum Auteur/co-auteur Beschrijving 1 November 2014 Yannick Verschueren Eerste versie 2 December 2014 Yannick Verschueren

Nadere informatie

Group work to study a new subject.

Group work to study a new subject. CONTEXT SUBJECT AGE LEVEL AND COUNTRY FEATURE OF GROUP STUDENTS NUMBER MATERIALS AND TOOLS KIND OF GAME DURATION Order of operations 12 13 years 1 ste year of secundary school (technical class) Belgium

Nadere informatie

Appendix A: List of variables with corresponding questionnaire items (in English) used in chapter 2

Appendix A: List of variables with corresponding questionnaire items (in English) used in chapter 2 167 Appendix A: List of variables with corresponding questionnaire items (in English) used in chapter 2 Task clarity 1. I understand exactly what the task is 2. I understand exactly what is required of

Nadere informatie

De causale Relatie tussen Intimiteit en Seksueel verlangen en de. modererende invloed van Sekse en Relatietevredenheid op deze relatie

De causale Relatie tussen Intimiteit en Seksueel verlangen en de. modererende invloed van Sekse en Relatietevredenheid op deze relatie Causale Relatie tussen intimiteit en seksueel verlangen 1 De causale Relatie tussen Intimiteit en Seksueel verlangen en de modererende invloed van Sekse en Relatietevredenheid op deze relatie The causal

Nadere informatie

De Invloed van Religieuze Coping op. Internaliserend Probleemgedrag bij Genderdysforie. Religious Coping, Internal Problems and Gender dysphoria

De Invloed van Religieuze Coping op. Internaliserend Probleemgedrag bij Genderdysforie. Religious Coping, Internal Problems and Gender dysphoria De Invloed van Religieuze Coping op Internaliserend Probleemgedrag bij Genderdysforie Religious Coping, Internal Problems and Gender dysphoria Ria de Bruin van der Knaap Open Universiteit Naam student:

Nadere informatie

Ius Commune Training Programme 2015-2016 Amsterdam Masterclass 16 June 2016

Ius Commune Training Programme 2015-2016 Amsterdam Masterclass 16 June 2016 www.iuscommune.eu Dear Ius Commune PhD researchers, You are kindly invited to attend the Ius Commune Amsterdam Masterclass for PhD researchers, which will take place on Thursday 16 June 2016. During this

Nadere informatie

Genetic code. Assignment

Genetic code. Assignment Genetic code The genetic code consists of a number of lines that determine how living cells translate the information coded in genetic material (DNA or RNA sequences) to proteins (amino acid sequences).

Nadere informatie

Find Neighbor Polygons in a Layer

Find Neighbor Polygons in a Layer Find Neighbor Polygons in a Layer QGIS Tutorials and Tips Author Ujaval Gandhi http://google.com/+ujavalgandhi Translations by Dick Groskamp This work is licensed under a Creative Commons Attribution 4.0

Nadere informatie

Inleiding Practicum Operating Systems

Inleiding Practicum Operating Systems Inleiding Practicum Operating Systems Mattias Holm & Kristian Rietveld Tot nu toe Shell: verkennen interface tussen user-space en kernelspace. User space System calls Kernel space Doel van deze presentatie

Nadere informatie

Innovative SUMP-Process in Northeast-Brabant

Innovative SUMP-Process in Northeast-Brabant Innovative SUMP-Process in Northeast-Brabant #polis14 Northeast-Brabant: a region in the Province of Noord-Brabant Innovative Poly SUMP 20 Municipalities Province Rijkswaterstaat Several companies Schools

Nadere informatie

Academisch schrijven Inleiding

Academisch schrijven Inleiding - In this essay/paper/thesis I shall examine/investigate/evaluate/analyze Algemene inleiding van het werkstuk In this essay/paper/thesis I shall examine/investigate/evaluate/analyze To answer this question,

Nadere informatie

Interaction Design for the Semantic Web

Interaction Design for the Semantic Web Interaction Design for the Semantic Web Lynda Hardman http://www.cwi.nl/~lynda/courses/usi08/ CWI, Semantic Media Interfaces Presentation of Google results: text 2 1 Presentation of Google results: image

Nadere informatie

Annual event/meeting with key decision makers and GI-practitioners of Flanders (at different administrative levels)

Annual event/meeting with key decision makers and GI-practitioners of Flanders (at different administrative levels) Staten-Generaal Annual event/meeting with key decision makers and GI-practitioners of Flanders (at different administrative levels) Subject: Sustainable Flemish SDI Nature: Mobilising, Steering Organisers:

Nadere informatie

Virtualization. Universiteit Leiden. Bij ons leer je de wereld kennen

Virtualization. Universiteit Leiden. Bij ons leer je de wereld kennen Virtualization Definitie "A virtual machine is taken to be an efficient, isolated duplicate of the real machine". Popek en Goldberg, 1974. A little history... Jaren '50 '60. Computers waren groot en kostbaar.

Nadere informatie

Introduction Henk Schwietert

Introduction Henk Schwietert Introduction Henk Schwietert Evalan develops, markets and sells services that use remote monitoring and telemetry solutions. Our Company Evalan develops hard- and software to support these services: mobile

Nadere informatie

Published in: Onderwijs Research Dagen 2013 (ORD2013), mei 2013, Brussel, Belgie

Published in: Onderwijs Research Dagen 2013 (ORD2013), mei 2013, Brussel, Belgie Samenwerkend leren van leerkrachten : leeropbrengsten gerelateerd aan activiteiten en foci van samenwerking Doppenberg, J.J.; den Brok, P.J.; Bakx, A.W.E.A. Published in: Onderwijs Research Dagen 2013

Nadere informatie

Virtual Enterprise Centralized Desktop

Virtual Enterprise Centralized Desktop Virtual Enterprise Centralized Desktop Het gebruik van virtuele desktops en de licensering daarvan Bastiaan de Wilde, Solution Specialist Microsoft Nederland Aanleiding Steeds meer gebruik van Virtuele

Nadere informatie

Wat heeft een tester aan ASL en BiSL?

Wat heeft een tester aan ASL en BiSL? TestNet Noord, Heerenveen, 20 november 2012 Wat heeft een tester aan ASL en BiSL? Eibert Dijkgraaf Intro Wie zit er in een typische beheer omgeving? Wat is kenmerkend voor testen : IN BEHEER? IN ONDERHOUD?

Nadere informatie

Registratie- en activeringsproces voor de Factuurstatus Service NL 1 Registration and activation process for the Invoice Status Service EN 10

Registratie- en activeringsproces voor de Factuurstatus Service NL 1 Registration and activation process for the Invoice Status Service EN 10 QUICK GUIDE B Registratie- en activeringsproces voor de Factuurstatus Service NL 1 Registration and activation process for the Invoice Status Service EN 10 Version 0.19 (Oct 2016) Per May 2014 OB10 has

Nadere informatie

Waarmaken van Leibniz s droom

Waarmaken van Leibniz s droom Waarmaken van Leibniz s droom Artificiële intelligentie Communicatie & internet Operating system Economie Computatietheorie & Software Efficiënt productieproces Hardware architectuur Electronica: relais

Nadere informatie

Virtualisatie. en KVM. Oscar Buse 14 februari 2017 NLUG

Virtualisatie. en KVM. Oscar Buse 14 februari 2017 NLUG Virtualisatie en KVM Oscar Buse 14 februari 2017 NLUG Overzicht onderwerpen Terminologie. Historie. Definitie van virtualisatie? KVM, QEMU en libvirt. KVM - command line en grafisch. Virtuele netwerken.

Nadere informatie

Leeftijdcheck (NL) Age Check (EN)

Leeftijdcheck (NL) Age Check (EN) Leeftijdcheck (NL) Age Check (EN) [Type text] NL: Verkoopt u producten die niet aan jonge bezoekers verkocht mogen worden of heeft uw webwinkel andere (wettige) toelatingscriteria? De Webshophelpers.nl

Nadere informatie

Emotioneel Belastend Werk, Vitaliteit en de Mogelijkheid tot Leren: The Manager as a Resource.

Emotioneel Belastend Werk, Vitaliteit en de Mogelijkheid tot Leren: The Manager as a Resource. Open Universiteit Klinische psychologie Masterthesis Emotioneel Belastend Werk, Vitaliteit en de Mogelijkheid tot Leren: De Leidinggevende als hulpbron. Emotional Job Demands, Vitality and Opportunities

Nadere informatie

Security Les 1 Leerling: Marno Brink Klas: 41B Docent: Meneer Vagevuur

Security Les 1 Leerling: Marno Brink Klas: 41B Docent: Meneer Vagevuur Security Les 1 Leerling: Klas: Docent: Marno Brink 41B Meneer Vagevuur Voorwoord: In dit document gaan we beginnen met de eerste security les we moeten via http://www.politiebronnen.nl moeten we de IP

Nadere informatie

Het Verband Tussen Persoonlijkheid, Stress en Coping. The Relation Between Personality, Stress and Coping

Het Verband Tussen Persoonlijkheid, Stress en Coping. The Relation Between Personality, Stress and Coping Het Verband Tussen Persoonlijkheid, Stress en Coping The Relation Between Personality, Stress and Coping J.R.M. de Vos Oktober 2009 1e begeleider: Mw. Dr. T. Houtmans 2e begeleider: Mw. Dr. K. Proost Faculteit

Nadere informatie

TECHNISCHE UNIVERSITEIT EINDHOVEN Faculteit Wiskunde en Informatica. Examination 2DL04 Friday 16 november 2007, hours.

TECHNISCHE UNIVERSITEIT EINDHOVEN Faculteit Wiskunde en Informatica. Examination 2DL04 Friday 16 november 2007, hours. TECHNISCHE UNIVERSITEIT EINDHOVEN Faculteit Wiskunde en Informatica Examination 2DL04 Friday 16 november 2007, 14.00-17.00 hours. De uitwerkingen van de opgaven dienen duidelijk geformuleerd en overzichtelijk

Nadere informatie

Waarmaken van Leibniz s droom

Waarmaken van Leibniz s droom Waarmaken van Leibniz s droom Artificiële intelligentie Communicatie & internet Operating system Economie Computatietheorie & Software Efficiënt productieproces Hardware architectuur Electronica: relais

Nadere informatie

Computerarchitectuur. App. B. Review of Memory Hierarchy

Computerarchitectuur. App. B. Review of Memory Hierarchy Computerarchitectuur App. B. Review of Memory Hierarchy Kristian Rietveld http://ca.liacs.nl/ Caching De memory wall is een zeer groot probleem dat vraagt om oplossingen. De gebruikelijke oplossing is

Nadere informatie

Virtualization. Universiteit Leiden. Bij ons leer je de wereld kennen

Virtualization. Universiteit Leiden. Bij ons leer je de wereld kennen Virtualization Definitie "A virtual machine is taken to be an efficient, isolated duplicate of the real machine". Popek en Goldberg, 1974. A little history... Jaren '50 '60. Computers waren groot en kostbaar.

Nadere informatie

ANT S KINGDOM Here is some advice for setting up your Master Ant Farm!

ANT S KINGDOM Here is some advice for setting up your Master Ant Farm! ANT S KINGDOM Master NL EN Instructies Mierenboerderij Master Bedankt voor je bestelling van de Mierenboerderij Master. De beste keus! Installatie NL Naast de informatie die te lezen is in ons boekje

Nadere informatie