Building Parallel, Embedded, and Real-Time Applications with Ada Год издания: 2011 Автор: McCormick John W., Singhoff Frank, Hugue Jérôme / Маккормик Джон В., Сингхофф Франк, Хьюг Джером Издательство: Cambridge University Press ISBN: 978-0-521-19716-8 Язык: Английский Формат: PDF Качество: Издательский макет или текст (eBook) Интерактивное оглавление: Нет Количество страниц: 396 Описание:
The arrival and popularity of multi-core processors has sparked a renewed interest in the development of parallel programs. Similarly, the availability of low-cost microprocessors and sensors has generated a great interest in embedded real-time programs. This book provides students and programmers whose backgrounds are in traditional sequential programming with the opportunity to expand their capabilities into parallel, embedded, real-time and distributed computing. It also addresses the theoretical foundation of real-time scheduling analysis, focusing on theory that is useful for actual applications. Written by award-winning educators at a level suitable for undergraduates and beginning graduate students, this book is the first truly entry-level textbook in the subject. Complete examples allow readers to understand the context in which a new concept is used, and enable them to build and run the examples, make changes, and observe the results.
Примеры страниц
Оглавление
Contents Illustrations Tables Foreword Preface Resources Acknowledgments 1 Introduction and overview 1.1 Parallel programming 1.1.1 Flynn’s taxonomy 1.1.2 Concurrent programming 1.2 Distributed programming 1.3 Real-time systems 1.3.1 Classification of real-time systems 1.3.2 Embedded systems Summary Exercises 2 Sequential programming with Ada 2.1 Control structures 2.1.1 If statements 2.1.2 Case statement 2.1.3 Loop statements 2.2 Subprograms 2.2.1 Procedures Parameter modes Scope 2.2.2 Functions 2.3 The Ada type model 2.3.1 Scalar types Real types 2.3.2 Discrete types Enumeration types Integer types 2.3.3 Subtypes 2.3.4 Array types Constrained and unconstrained array types Array attributes Strings 2.3.5 Record types Record aggregates Discriminants 2.3.6 Derived types 2.3.7 Access types General access types and aliased objects 2.4 Blocks and exceptions 2.5 Programming in the large 2.5.1 Packages Definition packages Service packages Data abstraction packages 2.5.2 Private types 2.5.3 Generic packages 2.5.4 Child packages 2.6 Object-oriented programming 2.7 Low-level programming 2.7.1 Representations Memory mapped I/O Port mapped I/O 2.7.2 A device driver for an analog to digital converter Record representation clauses 2.7.3 Unchecked conversions 2.7.4 Machine code insertion Summary Exercises 3 Task basics 3.1 Defining tasks 3.2 The task life cycle 3.2.1 Task creation 3.2.2 Task activation 3.2.3 Task execution 3.2.4 Task finish 3.3 Task hierarchies 3.3.1 Parent-child 3.3.2 Master-dependent 3.4 Exceptions 3.5 The implementation of Ada tasking 3.6 Other task features 3.6.1 Aborting tasks 3.6.2 Task identification 3.6.3 Task attributes Summary Exercises 4 Communication and synchronization based on shared objects 4.1 Mutual exclusion 4.2 The protected object 4.3 Synchronization 4.4 The protected entry 4.5 Restrictions 4.6 Entry queues 4.7 Some useful concurrent patterns 4.7.1 Semaphores 4.7.2 Barriers 4.7.3 Broadcasts 4.8 Requeue and private operations 4.9 Pragmas Atomic and Volatile 4.10 Interrupts Summary Exercises 5 Communication and synchronization based on direct interaction 5.1 The rendezvous 5.2 The selective accept statement 5.2.1 The accept alternative 5.2.2 Guarded alternatives 5.2.3 The terminate alternative 5.2.4 The delay alternative Relative delays Absolute delays 5.2.5 The else part 5.3 Entry call options 5.3.1 Timed entry calls 5.3.2 Conditional entry calls 5.4 State machines 5.4.1 Implementing state machines for passive objects Nested case statements State transition tables 5.4.2 Implementing state machines for active objects Summary Exercises 6 Distributed systems with Ada 6.1 What are distributed systems? 6.1.1 Why distribute systems? 6.1.2 Family of middleware 6.1.3 Misconceptions of distributed systems 6.2 Middleware, architectures, and concepts 6.3 DSA, the Distributed Systems Annex 6.3.1 Introduction to the Distributed Systems Annex 6.3.2 Categorization pragmas Pragma Pure Pragma Remote Call Interface Pragma Remote Types Pragma Shared Passive Categorization and dependencies Conclusion 6.4 PolyORB: compilation chain and run-time for the DSA 6.5 Advanced DSA concepts 6.5.1 Exceptions 6.5.2 pragma Asynchronous 6.5.3 pragma All Calls Remote 6.5.4 Starting and terminating a distributed application Elaboration and consistency Naming of partitions Abortion Termination 6.5.5 Some final comments on the DSA 6.6 CORBA, the Common Object Request Broker Architecture 6.6.1 CORBA concepts 6.6.2 CORBA IDL 6.6.3 IDL-to-Ada mapping 6.6.4 Implementing the servant 6.6.5 Setting up the server node 6.6.6 Setting up the client node 6.7 Advanced CORBA concepts 6.7.1 CORBA naming service 6.7.2 Asynchronous requests 6.7.3 How does CORBA work? GIOP and CDR marshalling The Interoperable Object Reference (IOR) The Portable Object Adapter (POA) 6.7.4 Details of a CORBA remote invocation 6.7.5 Revisiting the CORBA architecture 6.7.6 Some final comments on CORBA 6.8 CORBA versus the DSA Summary Exercises 7 Real-time systems and scheduling concepts 7.1 Task characteristics 7.1.1 Task types 7.1.2 Scalar properties of periodic tasks 7.2 Real-time schedulers 7.2.1 Fixed priority scheduling Properties and assumptions How it works Checking deadlines 7.2.2 Earliest Deadline First, a dynamic priority scheduler Properties and assumptions How it works Checking deadlines 7.2.3 EDF versus fixed priority scheduling 7.3 Dependent tasks 7.3.1 Shared resource problems 7.3.2 Shared resource protocols 7.3.3 Feasibility tests extended with shared resources 7.3.4 Precedence constraints Summary Exercises 8 Real-time programming with Ada 8.1 Expressing time 8.2 Implementing periodic tasks 8.2.1 Implementing periodic release times 8.2.2 The Ada priority model 8.3 Ada implementation of the car application 8.4 Handling shared resources 8.4.1 Locking policies 8.4.2 Queuing policies 8.5 The Ada scheduling model 8.5.1 Conceptual design of an Ada scheduler 8.5.2 Task dispatching policies 8.6 Ravenscar 8.7 POSIX 1003.1b and its Ada binding 8.7.1 Scheduling model 8.7.2 POSIX Application Programming Interface Implementing periodic POSIX processes POSIX scheduling Handling shared resources 8.8 POSIX implementation of the car application 8.9 Ada tasks versus POSIX processes Summary Exercises 9 Tools for building and verifying real-time applications 9.1 Ada run-times to implement real-time applications Question 1: How are Ada features handled? Question 2: Do I need to use the operating system scheduling services? Question 3: How are portability issues handled? Question 4: How do I write an Ada run-time? 9.2 Some variants of the GNAT run-time 9.2.1 Architecture of the GNAT run-time 9.2.2 ORK+, a bare board run-time 9.2.3 MaRTE OS, a minimum POSIX run-time 9.2.4 RTEMS, a complete POSIX run-time 9.3 Validating scheduling of a system 9.3.1 Impact of the Ada run-time 9.3.2 From source code to analyzable systems 9.3.3 Applying scheduling analysis 9.3.4 Computation of the worst case execution time (WCET) Summary Exercises References Index
адовцы на форуме восстали из =АДа= ====== когда учился в 90х какой херни нам только не преподавали.
pl1 fortran forte (кстати очень интересный) а вот до АДА не дошло!! хотя там были идеи оперж. времена.. пакеты public interfaces .. жаль!!!!!!
88558829когда учился в 90х какой херни нам только не преподавали.
pl1 fortran forte (кстати очень интересный) а вот до АДА не дошло!!
Почему херни? Поверхностное знание Фортрана или PL/I тебе как-то повредило? Заняло весь ограниченный объём памяти и ты не смог освоить Си самостоятельно, не нашёл работу и умер с голоду? Что за forte? Ты, походу, Forth неправильно написал, и ничего особенно интересного в нём не было. Forth какой-то извращённый язык: в то время как нормальные люди создают человеческо-ориентированные языки и заставляют работать компьютер (транслируют Паскаль в P-код, который исполняется виртуальной P-машиной, или транслируют Яву в байт-код, который исполняется виртуальной машиной), создатель Forth всю работу спихнул на программиста: валяй, пиши на ассемблере виртуальной стековой машины.
88558829когда учился в 90х какой херни нам только не преподавали.
pl1 fortran forte (кстати очень интересный) а вот до АДА не дошло!!
Почему херни? Поверхностное знание Фортрана или PL/I тебе как-то повредило? Заняло весь ограниченный объём памяти и ты не смог освоить Си самостоятельно, не нашёл работу и умер с голоду? Что за forte? Ты, походу, Forth неправильно написал, и ничего особенно интересного в нём не было. Forth какой-то извращённый язык: в то время как нормальные люди создают человеческо-ориентированные языки и заставляют работать компьютер (транслируют Паскаль в P-код, который исполняется виртуальной P-машиной, или транслируют Яву в байт-код, который исполняется виртуальной машиной), создатель Forth всю работу спихнул на программиста: валяй, пиши на ассемблере виртуальной стековой машины.
вы гражданин сирота? мама с папой не учили вас не тыкать не знакомым людям? печалька!!
книжку купите хорошие манеры и как себя вести в социуме! ===== что касается всего остального! знаете как говорят = opinions are like assholes, everyone has one =
надеюсь английский на уровне 4 класса вы знаете! удачи!