Labback: an Extendible Platform for Secure and Robust In-The-Cloud Automatic Assessment of Student Programs

Total Page:16

File Type:pdf, Size:1020Kb

Labback: an Extendible Platform for Secure and Robust In-The-Cloud Automatic Assessment of Student Programs LabBack: an extendible platform for secure and robust in-the-cloud automatic assessment of student programs Master’s Thesis Vlad A. Vergu LabBack: an extendible platform for secure and robust in-the-cloud automatic assessment of student programs THESIS submitted in partial fulfillment of the requirements for the degree of MASTER OF SCIENCE in COMPUTER SCIENCE by Vlad A. Vergu born in Bucharest, Romania Software Engineering Research Group Department of Software Technology Faculty EEMCS, Delft University of Technology Delft, the Netherlands www.ewi.tudelft.nl c 2012 Vlad A. Vergu. Cover picture: The last straw, drawing by Maria I. Ionescu, 2012 LabBack: an extendible platform for secure and robust in-the-cloud automatic assessment of student programs Author: Vlad A. Vergu Student id: 1195549 Email: [email protected] Abstract In software engineering education manual assessment of students’ programs is a time consuming endeavour that does not scale to high numbers of pupils or to large amounts of practice material. Numerous automatic grading programs, aim- ing to alleviate this problem, have been developed since 1960. These, however, only support fixed programming languages and fixed assessment methods, thus prohibiting their reuse throughout different programming curricula. Educators investigating new grading methods either have to accept the engineering burden of creating a complete grading system or revert to manual grading. This thesis presents LabBack - a reusable automatic grading platform that is extendible with language- and assessment-specific functionality by means of plugins. LabBack provides the necessary infrastructure for building and hosting automatic grading functionality, eliminating the need to consider the issues of scalability and security against malicious programs. LabBack can be hosted in the cloud and provides immediate student feedback. Plugins providing automatic assessment for Scala, JavaScript and C have been implemented and LabBack has been validated in a university-level course with over 100 students. Thesis Committee: Chair: Dr. E. Visser, Faculty EEMCS, TU Delft University supervisor: Dr. E. Visser, Faculty EEMCS, TU Delft Committee member: Dr. A.E. Zaidman, Faculty EEMCS, TU Delft Committee member: Dr. ir. J.F.M. Tonino, Faculty EEMCS, TU Delft Preface About this thesis This thesis essentially consists of two parts. The first part (Chap- ter 1 to Chapter 5) presents the architecture of LabBack’s proof of concept - Lab- Back 2:0 - and its validation in a case study, serving as motivation for the second part. The second part (Chapter 6 to Chapter 8) describes the architecture, implementation and evaluation of LabBack 2:0 - an extendible and reusable platform for automatic grading that builds on LabBack 2:0’s main security concepts. Acknowledgements I am grateful to my supervisor Eelco Visser for the inspira- tional discussions and feedback sessions and for his development of WebLab, without whom this project would not have been possible. I would like to thank Karl Trygve Kalleberg for our interesting discussions during his visit to The Netherlands and Danny Groenewegen for his support with using WebDSL. Last, but certainly not least, I am grateful to my family for supporting me during my time at the university. Vlad A. Vergu Delft, The Netherlands October 30, 2012 iii Contents Preface iii Contents v List of Figures vii 1 Introduction 1 1.1 Research Questions . 3 1.2 Contributions . 4 1.3 Outline of this Thesis . 5 2 Background 7 2.1 Massive Open Online Course Platforms . 7 2.2 Case study: COPL . 9 2.3 WebLab . 10 2.4 Summary . 19 3 Analysis of LabBack Requirements 21 3.1 Functional Requirements . 21 3.2 Non-functional Requirements . 25 3.3 Summary . 32 4 Satisfying the Non-Functional Requirements of LabBack 33 4.1 Native Tooling . 33 4.2 Virtualised Solutions . 36 4.3 Build Tools . 38 4.4 Continuous Integration Systems . 39 4.5 Custom Solution . 40 4.6 Conclusion and Recommendation . 41 5 Proof of Concept: LabBack 1:0 43 5.1 Architecture . 43 5.2 Implementation Details . 56 5.3 Evaluation . 64 v CONTENTS 5.4 Conclusion . 67 6 LabBack 2:0 Architecture 69 6.1 Java Plugin Frameworks . 69 6.2 LabBack 2:0 Context . 71 6.3 System Decomposition . 72 6.4 Information Architecture . 77 6.5 Concurrency . 82 6.6 Business processes . 85 6.7 Services . 94 6.8 Security . 103 6.9 Deployment Requirements . 106 6.10 Conclusion . 107 7 LabBack 2:0 Implementation and Integration Details 109 7.1 WebDSL and Java code . 109 7.2 Plugin System . 111 7.3 WebLab as Client: Contributions to WebLab . 117 7.4 Summary . 119 8 Evaluation 121 8.1 Goals and Structure . 121 8.2 Evaluation of Correctness, Robustness and Security . 122 8.3 Evaluation of Scalability and Load Distribution . 127 9 Related work 141 9.1 Automatic Grading . 141 9.2 Web IDEs and Containment of Third-party Programs . 142 9.3 Load Balancing and Distribution . 144 10 Conclusion 145 10.1 Summary . 145 10.2 Conclusions . 147 10.3 Future Work . 150 Bibliography 153 A LabBack 1:0 Scheduler Implementation 159 B LabBack 1:0 Classloader Implementation 163 C CounterLogic Execution Implementation 165 D Plugin Loader Implementation of LabBack 2:0 167 vi List of Figures 2.1 Course edition dashboard in WebLab as seen by an instructor . 11 2.2 WebLab course information page for the COPL 2012 course. 12 2.3 WebLab course information page showing correlation plots. 13 2.4 WebLab page for editing a programming question. 13 2.5 Specification test template for Javascript question . 14 2.6 WebLab page for answering a programming question. 15 2.7 Editing of question’s grading options in WebLab . 16 2.8 Page for submission grading in WebLab. 17 2.9 WebLab architectural components. 18 2.10 Example unit tests using the Scalatest framework. 20 3.1 Summarised classification of LabBack requirements. 22 3.2 Classification of potential LabBack security attack vectors and their in- tended purposes. 26 3.3 Example of JVM memory starvation implemented in Java. 29 3.4 Example fork-bomb in C. 29 3.5 Example fork-bomb in Java. 29 4.1 Classification of ecosystem alternatives . 41 5.1 LabBack 1:0 context diagram. Arrows indicate usage. 44 5.2 LabBack 1:0 system decomposition. 45 5.3 Job data model. 48 5.4 Example XML representation of completed job. 50 5.5 LabBack 1:0 processes and threads. 51 5.6 Job state diagram. 51 5.7 BPMN blueprint of LabBack’s main process. 53 5.8 LabBack 1:0 security policy. 54 5.9 LabBack 1:0’s scheduler maintenance loop algorithm. 57 5.10 Custom class loader algorithm. 61 5.11 Usage example of LabBack’s custom class loader. 62 5.12 Example stoppable thread in Java. 64 vii LIST OF FIGURES 6.1 Comparison of Java plugin frameworks. Highlighted cells indicate critical limitations. 70 6.2 LabBack 2:0 multi-instance deployment tree. 71 6.3 LabBack 2:0 system decomposition. 72 6.4 Plugin manifest for the JavaScript plugin. 73 6.5 Class diagram of LabBack 2:0’s core data model. 78 6.6 Data model of LabBack 2:0’s job. 78 6.7 Data model of LabBack 2:0’s main plugin entity. 81 6.8 Process and thread model of LabBack 2:0 . 82 6.9 State model of a single job or a chains of jobs in LabBack 2:0. 84 6.10 Transition function of job chain state machine. 85 6.11 Bluepring of the Plugin Deployment (PD) process. 86 6.12 Blueprint of the Execution Loading (EL) process. 87 6.13 Partial blueprint of the Local Job Scheduling (LJS) process. 89 6.14 Schematic blueprint of Remote Job Scheduling (RJS) process. 91 6.15 Summary of job-related services offered by LabBack 2:0. 95 6.16 Meaning of flag combinations in response of queryJobStatus service. 98 6.17 Summary of plugin-related services offered by LabBack 2:0. 100 6.18 Comparison of LabBack 1:0 and LabBack 2:0 functional groups. 104 6.19 Software and hardware requirements of LabBack 2:0. 106 7.1 Definition of a WebDSL page with inter-thread message passing. 110 7.2 Processing steps of plug.sc.counter plugin. 111 7.3 Manifest of plug.sc.counter plugin. 112 7.4 Compulsory interface of all plugin entry points in LabBack 2:0. 112 7.5 Execution logic in CounterLogic. 114 7.6 Pseudocode specification of plugin loading mechanism. 115 7.7 Illustration of plugin detachment upon upgrade . 116 7.8 Summary UI contributions to WebLab. 117 7.9 Monitoring and configuration UI for LabBack 2:0 instances in WebLab. 118 7.10 WebLab’s Language configuration UI. 119 8.1 Distribution of job states and languages in evaluation dataset . 123 8.2 Differences between original and new grades in the failure cases. 124 8.3 Clustering of grade validation failures into questions. 125 8.4 Summary of variables for simulation control. 129 8.5 User interface of LabBack’s deployment simulator. 130 8.6 Simulation results for control experiment. 132 8.7 Simulation results for 10 node star topology. 133 8.8 Simulation results for 10 node tree of depth 6. 134 8.9 Simulation results for 10 node chain topology. 135 8.10 Simulation results for 30 node tree of degree 3. 136 8.11 Simulation results for 30 node tree of degree 5. 137 8.12 Simulation results for 100 node tree of degree 8. 138 8.13 Simulation results for 100 node tree of degree 8 and varying job durations. 139 viii Chapter 1 Introduction Covering all areas from smartphones, portable music players, cooking robots to In- ternet core-infrastructure, certificate registrars and nuclear power plants software con- tinues to increase its infiltration in all aspects of our modern societies.
Recommended publications
  • Histcoroy Pyright for Online Information and Ordering of This and Other Manning Books, Please Visit Topwicws W.Manning.Com
    www.allitebooks.com HistCoroy pyright For online information and ordering of this and other Manning books, please visit Topwicws w.manning.com. The publisher offers discounts on this book when ordered in quantity. For more information, please contact Tutorials Special Sales Department Offers & D e al s Manning Publications Co. 20 Baldwin Road Highligh ts PO Box 761 Shelter Island, NY 11964 Email: [email protected] Settings ©2017 by Manning Publications Co. All rights reserved. Support No part of this publication may be reproduced, stored in a retrieval system, or Sign Out transmitted, in any form or by means electronic, mechanical, photocopying, or otherwise, without prior written permission of the publisher. Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks. Where those designations appear in the book, and Manning Publications was aware of a trademark claim, the designations have been printed in initial caps or all caps. Recognizing the importance of preserving what has been written, it is Manning’s policy to have the books we publish printed on acid­free paper, and we exert our best efforts to that end. Recognizing also our responsibility to conserve the resources of our planet, Manning books are printed on paper that is at least 15 percent recycled and processed without the use of elemental chlorine. Manning Publications Co. PO Box 761 Shelter Island, NY 11964 www.allitebooks.com Development editor: Cynthia Kane Review editor: Aleksandar Dragosavljević Technical development editor: Stan Bice Project editors: Kevin Sullivan, David Novak Copyeditor: Sharon Wilkey Proofreader: Melody Dolab Technical proofreader: Doug Warren Typesetter and cover design: Marija Tudor ISBN 9781617292576 Printed in the United States of America 1 2 3 4 5 6 7 8 9 10 – EBM – 22 21 20 19 18 17 www.allitebooks.com HistPoray rt 1.
    [Show full text]
  • Twenty Years of Berkeley Unix : from AT&T-Owned to Freely
    Twenty Years of Berkeley Unix : From AT&T-Owned to Freely Redistributable Marshall Kirk McKusick Early History Ken Thompson and Dennis Ritchie presented the first Unix paper at the Symposium on Operating Systems Principles at Purdue University in November 1973. Professor Bob Fabry, of the University of California at Berkeley, was in attendance and immediately became interested in obtaining a copy of the system to experiment with at Berkeley. At the time, Berkeley had only large mainframe computer systems doing batch processing, so the first order of business was to get a PDP-11/45 suitable for running with the then-current Version 4 of Unix. The Computer Science Department at Berkeley, together with the Mathematics Department and the Statistics Department, were able to jointly purchase a PDP-11/45. In January 1974, a Version 4 tape was delivered and Unix was installed by graduate student Keith Standiford. Although Ken Thompson at Purdue was not involved in the installation at Berkeley as he had been for most systems up to that time, his expertise was soon needed to determine the cause of several strange system crashes. Because Berkeley had only a 300-baud acoustic-coupled modem without auto answer capability, Thompson would call Standiford in the machine room and have him insert the phone into the modem; in this way Thompson was able to remotely debug crash dumps from New Jersey. Many of the crashes were caused by the disk controller's inability to reliably do overlapped seeks, contrary to the documentation. Berkeley's 11/45 was among the first systems that Thompson had encountered that had two disks on the same controller! Thompson's remote debugging was the first example of the cooperation that sprang up between Berkeley and Bell Labs.
    [Show full text]
  • Programming in HTML5 with Javascript and CSS3 Ebook
    spine = 1.28” Programming in HTML5 with JavaScript and CSS3 and CSS3 JavaScript in HTML5 with Programming Designed to help enterprise administrators develop real-world, About You job-role-specific skills—this Training Guide focuses on deploying This Training Guide will be most useful and managing core infrastructure services in Windows Server 2012. to IT professionals who have at least Programming Build hands-on expertise through a series of lessons, exercises, three years of experience administering and suggested practices—and help maximize your performance previous versions of Windows Server in midsize to large environments. on the job. About the Author This Microsoft Training Guide: Mitch Tulloch is a widely recognized in HTML5 with • Provides in-depth, hands-on training you take at your own pace expert on Windows administration and has been awarded Microsoft® MVP • Focuses on job-role-specific expertise for deploying and status for his contributions supporting managing Windows Server 2012 core services those who deploy and use Microsoft • Creates a foundation of skills which, along with on-the-job platforms, products, and solutions. He experience, can be measured by Microsoft Certification exams is the author of Introducing Windows JavaScript and such as 70-410 Server 2012 and the upcoming Windows Server 2012 Virtualization Inside Out. Sharpen your skills. Increase your expertise. • Plan a migration to Windows Server 2012 About the Practices CSS3 • Deploy servers and domain controllers For most practices, we recommend using a Hyper-V virtualized • Administer Active Directory® and enable advanced features environment. Some practices will • Ensure DHCP availability and implement DNSSEC require physical servers.
    [Show full text]
  • Lab 6: Testing Software Studio Datalab, CS, NTHU Notice
    Lab 6: Testing Software Studio DataLab, CS, NTHU Notice • This lab is about software development good practices • Interesting for those who like software development and want to go deeper • Good to optimize your development time Outline • Introduction to Testing • Simple testing in JS • Testing with Karma • Configuring Karma • Karma demo: Simple test • Karma demo: Weather Mood • Karma demo: Timer App • Conclusions Outline • Introduction to Testing • Simple testing in JS • Testing with Karma • Configuring Karma • Karma demo: Simple test • Karma demo: Weather Mood • Karma demo: Timer App • Conclusions What is testing? Is it important? Actually, we are always doing some kind of testing.. And expecting some result.. And expecting some result.. Sometimes we just open our app and start clicking to see results Why test like a machine? We can write programs to automatically test our application! Most common type of test: Unit test Unit test • “Unit testing is a method by which individual units of source code are tested to determine if they are fit for use. A unit is the smallest testable part of an application.” - Wikipedia Good unit test properties • It should be automated and repeatable • It should be easy to implement • Once it’s written, it should remain for future use • Anyone should be able to run it • It should run at the push of a button • It should run quickly The art of Unit Testing, Roy Osherove Many frameworks for unit tests in several languages Common procedure • Assertion: A statement that a predicate is expected to always be true at that point in the code. -Wikipedia Common procedure • We write our application and want it to do something, so we write a test to see if it’s behaving as we expect Common procedure • Pseudocode: But how to do that in JS? Outline • Introduction to Testing • Simple testing in JS • Testing with Karma • Configuring Karma • Karma demo: Simple test • Karma demo: Weather Mood • Karma demo: Timer App • Conclusions Simple testing: expect library and jsbin Test passed: Test didn’t pass: This is ok for testing some simple functions.
    [Show full text]
  • Open Source Used in SD-AVC 2.2.0
    Open Source Used In SD-AVC 2.2.0 Cisco Systems, Inc. www.cisco.com Cisco has more than 200 offices worldwide. Addresses, phone numbers, and fax numbers are listed on the Cisco website at www.cisco.com/go/offices. Text Part Number: 78EE117C99-189242242 Open Source Used In SD-AVC 2.2.0 1 This document contains licenses and notices for open source software used in this product. With respect to the free/open source software listed in this document, if you have any questions or wish to receive a copy of any source code to which you may be entitled under the applicable free/open source license(s) (such as the GNU Lesser/General Public License), please contact us at [email protected]. In your requests please include the following reference number 78EE117C99-189242242 Contents 1.1 @angular/angular 5.1.0 1.1.1 Available under license 1.2 @angular/material 5.2.3 1.2.1 Available under license 1.3 angular 1.5.9 1.3.1 Available under license 1.4 angular animate 1.5.9 1.5 angular cookies 1.5.9 1.6 angular local storage 0.5.2 1.7 angular touch 1.5.9 1.8 angular ui router 0.3.2 1.9 angular ui-grid 4.0.4 1.10 angular-ui-bootstrap 2.3.2 1.10.1 Available under license 1.11 angular2-moment 1.7.0 1.11.1 Available under license 1.12 angularJs 1.5.9 1.13 bootbox.js 4.4.0 1.14 Bootstrap 3.3.7 1.14.1 Available under license 1.15 Bootstrap 4 4.0.0 1.15.1 Available under license 1.16 chart.js 2.7.2 1.16.1 Available under license 1.17 commons-io 2.5 1.17.1 Available under license Open Source Used In SD-AVC 2.2.0 2 1.18 commons-text 1.4 1.18.1
    [Show full text]
  • Background Goal Unit Testing Regression Testing Automation
    Streamlining a Workflow Jeffrey Falgout Daniel Wilkey [email protected] [email protected] Science, Discovery, and the Universe Bloomberg L.P. Computer Science and Mathematics Major Background Regression Testing Jenkins instance would begin running all Bloomberg L.P.'s main product is a Another useful tool to have in unit and regression tests. This Jenkins job desktop application which provides sufficiently complex systems is a suite would then report the results on the financial tools. Bloomberg L.P. of regression tests. Regression testing Phabricator review and signal the author employs many computer programmers allows you to test very high level in an appropriate way. The previous to maintain, update, and add new behavior which can detect low level workflow required manual intervention to features to this product. bugs. run tests. This new workflow only the The product the code base was developer to create his feature branch in implementing has a record/playback order for all tests to be run automatically. Goal feature. This was leveraged to create a Many of the tasks that a programmer regression testing framework. This has to perform as part of a team can be framework leveraged the unit testing automated. The goal of this project was framework wherever possible. to work with a team to automate tasks At various points during the playback, where possible and make them easier callback methods would be invoked. An example of the new workflow, where a Jenkins where impossible. These methods could have testing logic to instance will automatically run tests and update the make sure the application was in the peer review.
    [Show full text]
  • Javascript Unlocked Table of Contents
    JavaScript Unlocked Table of Contents JavaScript Unlocked Credits About the Author About the Reviewer www.PacktPub.com Support files, eBooks, discount offers, and more Why subscribe? Free access for Packt account holders Preface What this book covers What you need for this book Who this book is for Conventions Reader feedback Customer support Downloading the example code Errata Piracy Questions 1. Diving into the JavaScript Core Make your code readable and expressive Function argument default value Conditional invocation Arrow functions Method definitions The rest operator The spread operator Mastering multiline strings in JavaScript Concatenation versus array join Template literal Multi-line strings via transpilers Manipulating arrays in the ES5 way Array methods in ES5 Array methods in ES6 Traversing an object in an elegant, reliable, safe, and fast way Iterating the key-value object safely and fast Enumerating an array-like object The collections of ES6 The most effective way of declaring objects Classical approach Approach with the private state Inheritance with the prototype chain Inheriting from prototype with Object.create Inheriting from prototype with Object.assign Approach with ExtendClass Classes in ES6 How to – magic methods in JavaScript Accessors in ES6 classes Controlling access to arbitrary properties Summary 2. Modular Programming with JavaScript How to get out of a mess using modular JavaScript Modules Cleaner global scope Packaging code into files Reuse Module patterns Augmentation Module standards How to use asynchronous modules in the browser Pros and cons How to – use synchronous modules on the server Pros and cons UMD JavaScript’s built-in module system Named exports Default export The module loader API Conclusion Transpiling CommonJS for in-browser use Bundling ES6 modules for synchronous loading Summary 3.
    [Show full text]
  • Pdf'); Django.File('Another/Data.Pdf');
    django.js Documentation Release 0.8.2.dev Axel Haustant August 18, 2015 Contents 1 Compatibility 3 2 Installation 5 3 Documentation 7 3.1 Template tags...............................................7 3.2 Django javascript module........................................ 10 3.3 RequireJS integration.......................................... 12 3.4 Javascript test tools............................................ 13 3.5 Integration with other Django apps................................... 15 3.6 Management Commands......................................... 16 3.7 Settings.................................................. 19 3.8 API.................................................... 22 3.9 Contributing............................................... 28 3.10 Changelog................................................ 29 4 Indices and tables 35 Python Module Index 37 i ii django.js Documentation, Release 0.8.2.dev Django.js provides tools for JavaScript development with Django. Django.js is inspired from: • Miguel Araujo’s verbatim snippet. • Dimitri Gnidash’s django-js-utils. Note: This is currently a work in progress (API wil not be stable before 1.0) so don’t expect it to be perfect but please submit an issue for any bug you find or any feature you want. Contents 1 django.js Documentation, Release 0.8.2.dev 2 Contents CHAPTER 1 Compatibility Django.js requires Python 2.6+ and Django 1.4.2+. 3 django.js Documentation, Release 0.8.2.dev 4 Chapter 1. Compatibility CHAPTER 2 Installation You can install Django.js with pip: $ pip install django.js or with easy_install: $ easy_install django.js Add djangojs to your settings.INSTALLED_APPS. Add djangojs.urls to your root URL_CONF: urlpatterns= patterns('', ... url(r'^djangojs/', include('djangojs.urls')), ... ) Note: Be sure to set the settings.ALLOWED_HOSTS properly (especially on Django 1.5+). If not, you will have HTTP 500 errors. 5 django.js Documentation, Release 0.8.2.dev 6 Chapter 2.
    [Show full text]
  • Trademark List Can Be Found At
    OpenJS Foundation’s Trademarks The OpenJS Foundation’s Trademark Usage Guidelines can be found at https://trademark-policy.openjsf.org. The current version of this trademark list can be found at https://trademark-list.openjsf.org. Word Marks The OpenJS Foundation has the following registered trademarks in the United States and/or other countries: ● Appium ® ● Appiumconf ® ● Electron ® ● ESLint ® ● Globalize ® ● jQuery ® ● jQuery Mobile ® ● jQuery UI ® ● JS Foundation ® ● Lodash ® ● Moment.js ® ● Node-RED ® ● OpenJS Foundation ® ● QUnit ® ● RequireJS ® ● Sizzle ® ● Sonarwhal ® ● Webpack ® ● Write Less, Do More ® The OpenJS Foundation has registrations pending or trademarks in use for the following marks in the United States and/or other countries: ● AMP ™ ● Architect ™ ● Chassis ™ ● Dojo Toolkit ™ ● Esprima ™ ● Fastify ™ ● Grunt ™ ● HospitalRun ™ ● Interledger.js ™ ● Intern ™ ● Jed ™ ● JerryScript ™ ● Marko ™ ● Mocha ™ ● PEP ™ ● WebdriverIO ™ Logo Marks In addition, the OpenJS Foundation and its projects have visual logo trademarks in use and you must comply with any visual guidelines or additional requirements that may be included on the OpenJS Foundation’s or the applicable project’s site. The OpenJS Foundation has registered trademarks for the following logo marks in the United States and/or other countries: ● Appium Logo. US Reg. #5329685 ● Electron Logo. US Reg. #6059038 ● ESLint Logo. US Reg. #5376005 ● Globalize Logo. US Reg. #5184729 ● jQuery Logo. US Reg. #4764564 ● jQuery Mobile Logo. US Reg. #4772527 ● jQuery UI Logo. US Reg.
    [Show full text]
  • Insert Drive File Composição
    Ref.1990537-1 J9oo 77000 9968 r--e'-'-- I UNIDADES'7S TOP IT N TE RE S SA Este documento foi assinado eletronicamente. As assinaturas realizadas estão listadas em sua última página. SON TO rtt c-'AeY. •1 Sua autenticidade pode ser verificada no Portal do TCE/BA através QRCode ou endereço https://www.tce.ba.gov.br/autenticacaocopia, digitando o código de autenticação: G0MTG4MJYX W fl r s- - iii nu Ref.1990537-2 4 FuNDAcAOADM P PREsTAçA0 DE CONTAS PARCIAL P PARCELA CONVENIO N 001/2014 CELEBRADO ENTRE A SECRETARIA DO PLANEJAMENTO DO ESTADO DA BAHIA - SEPLAN E A FUNDAçAO ADM 55 Reuniâo Anual da Assembleja de Governadores do Barico Interamericano de Desenvolvimento - BIDe da 2W ReuniAo Anual cIa Assemblcia cli, Governadores da Este documento foi assinado eletronicamente. As assinaturas realizadas estão listadas em sua última página. Corporacao Interamericana de Investimento - CII Sua autenticidade pode ser verificada no Portal do TCE/BA através QRCode ou endereço https://www.tce.ba.gov.br/autenticacaocopia, digitando o código de autenticação: G0MTG4MJYX VOLUME II Salvador, abril de 2014. ia Agneto de Sn lo, ci D 110, Fad Vc ote, sa Ia 201 - Federaco, CE?. 40.210-245, Salvador - BaliI a Tel: (71)3235-0309/3033-4520 - wmtfundacaoadrn er&hr Ref.1990537-3 NUMERO: AuToRIzAcAo DE DESPESAS 01912014 PROJETO: CONTk COPNENIO 00112014- FADM I SEPLAN 66.774-0 CREDOR: F: Irc MaiidpatJRG: RM TOUR TRANSPORTES E I1JRMEEt7E91-99 413.377I-85 ENDERECO AV. MARIO LEA!. FERREI 381 SALVADOR/BA ___________ RANCO, CE; CIt ''S-I VAlOR (RI) ITEM ESPECIFICAcAO I HISTORICO OUMFI UN UNITARIO TOTAL 01 PAGMIENTO 1' PARCELA DA NFS W 029.
    [Show full text]
  • Operating Systems and Middleware: Supporting Controlled Interaction
    Operating Systems and Middleware: Supporting Controlled Interaction Max Hailperin Gustavus Adolphus College Revised Edition 1.1 July 27, 2011 Copyright c 2011 by Max Hailperin. This work is licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License. To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/3.0/ or send a letter to Creative Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA. Bibliography [1] Atul Adya, Barbara Liskov, and Patrick E. O’Neil. Generalized iso- lation level definitions. In Proceedings of the 16th International Con- ference on Data Engineering, pages 67–78. IEEE Computer Society, 2000. [2] Alfred V. Aho, Peter J. Denning, and Jeffrey D. Ullman. Principles of optimal page replacement. Journal of the ACM, 18(1):80–93, 1971. [3] AMD. AMD64 Architecture Programmer’s Manual Volume 2: System Programming, 3.09 edition, September 2003. Publication 24593. [4] Dave Anderson. You don’t know jack about disks. Queue, 1(4):20–30, 2003. [5] Dave Anderson, Jim Dykes, and Erik Riedel. More than an interface— SCSI vs. ATA. In Proceedings of the 2nd Annual Conference on File and Storage Technology (FAST). USENIX, March 2003. [6] Ross Anderson. Security Engineering: A Guide to Building Depend- able Distributed Systems. Wiley, 2nd edition, 2008. [7] Apple Computer, Inc. Kernel Programming, 2003. Inside Mac OS X. [8] Apple Computer, Inc. HFS Plus volume format. Technical Note TN1150, Apple Computer, Inc., March 2004. [9] Ozalp Babaoglu and William Joy. Converting a swap-based system to do paging in an architecture lacking page-referenced bits.
    [Show full text]
  • Operating Systems Principles and Practice, Volume 3: Memory
    Operating Systems Principles & Practice Volume III: Memory Management Second Edition Thomas Anderson University of Washington Mike Dahlin University of Texas and Google Recursive Books recursivebooks.com Operating Systems: Principles and Practice (Second Edition) Volume III: Memory Management by Thomas Anderson and Michael Dahlin Copyright ©Thomas Anderson and Michael Dahlin, 2011-2015. ISBN 978-0-9856735-5-0 Publisher: Recursive Books, Ltd., http://recursivebooks.com/ Cover: Reflection Lake, Mt. Rainier Cover design: Cameron Neat Illustrations: Cameron Neat Copy editors: Sandy Kaplan, Whitney Schmidt Ebook design: Robin Briggs Web design: Adam Anderson SUGGESTIONS, COMMENTS, and ERRORS. We welcome suggestions, comments and error reports, by email to [email protected] Notice of rights. All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transmitted in any form by any means — electronic, mechanical, photocopying, recording, or otherwise — without the prior written permission of the publisher. For information on getting permissions for reprints and excerpts, contact [email protected] Notice of liability. The information in this book is distributed on an “As Is" basis, without warranty. Neither the authors nor Recursive Books shall have any liability to any person or entity with respect to any loss or damage caused or alleged to be caused directly or indirectly by the information or instructions contained in this book or by the computer software and hardware products described in it. Trademarks: Throughout this book trademarked names are used. Rather than put a trademark symbol in every occurrence of a trademarked name, we state we are using the names only in an editorial fashion and to the benefit of the trademark owner with no intention of infringement of the trademark.
    [Show full text]