Publicado el 25 de Marzo del 2019
654 visualizaciones desde el 25 de Marzo del 2019
206,8 KB
38 paginas
Creado hace 23a (04/12/2001)
ditdit
UPM
Entorno de ejecución
Juan Antonio de la Puente
DIT/UPM
Índice
! Introducción
! Perfiles de ejecución
! Modelos de planificación
– cambio de contexto
– operaciones no desalojables
– tareas esporádicas
– manejador de reloj
©1997-2000 Juan Antonio de la Puente
1
Entorno de ejecución
aplicación
núcleo de ejecución
(run-time system)
sistema
operativo
hardware
! Comprende el hardware y el software sobre el que se desarrolla la
aplicación
– Incluye software gráfico, comunicaciones, etc..
©1997-2000 Juan Antonio de la Puente
2
Proceso de diseño
! Podemos ver el diseño como un proceso de refinamiento de
modelos con niveles de abstracción decrecientes
! En el proceso de refinamiento hay que considerar
– Compromisos, propiedades que ya no se cambiarán en los niveles
inferiores
– Obligaciones, que cubren aspectos del diseño que se dejan para
los niveles inferiores
! En el diseño se van transformando las obligaciones en
compromisos
– Este proceso está sujeto a restricciones impuestas por el entorno
de ejecución
– Los requisitos del sistema o los compromisos de diseño pueden
imponer restricciones sobre el entorno de ejecución
©1997-2000 Juan Antonio de la Puente
3
Niveles de descripción
! Dos niveles de diseño
– Modelo lógico - compromisos independientes del entorno de
ejecución
– Modelo físico - compromisos dependientes del entorno de
ejecución
! La arquitectura física debe tener en cuenta las
propiedades del entorno de ejecución
– Puede ser necesario modificar el diseño para adaptarlo al entorno
de ejecución
– Debe permitir el análisis de las propiedades no funcionales
» comportamiento temporal
» fiabilidad
©1997-2000 Juan Antonio de la Puente
4
Proceso de desarrollo
Definición de requisitos
Diseño de la arquitectura lógica
Diseño de la arquitectura física
y análisis temporal
Restricciones
Diseño detallado
Codificación y
cálculo de tiempos de ejecución
Restricciones
Pruebas
y medida de tiempos
©1997-2000 Juan Antonio de la Puente
5
Requisitos del entorno de ejecución
! Determinismo
– Compatible con las condiciones necesarias para poder analizar el
comportamiento temporal
! Eficiencia
– Se debe poder garantizar el cumplimiento de los requisitos
temporales
– Puede haber restricciones de memoria u otras que afecten a la
velocidad
! Simplicidad
– No se deben incluir funciones innecesarias
©1997-2000 Juan Antonio de la Puente
6
Índice
! Introducción
! Perfiles de ejecución
– Ada 95 (perfil de Ravenscar)
– POSIX
! Modelos de planificación
– cambio de contexto
– operaciones no desalojables
– tareas esporádicas
– manejador de reloj
©1997-2000 Juan Antonio de la Puente
7
Ajuste del entorno de ejecución
! Se trata de eliminar las funciones que no sean
necesarias para
– evitar un uso excesivo de recursos
– simplificar el software y facilitar la certificación de seguridad
– eliminar el software que no cumple ninguna función útil
! Algunos lenguajes y sistemas operativos permiten
definir configuraciones restringidas
– pragma Restrictions en Ada
– perfiles en POSIX
©1997-2000 Juan Antonio de la Puente
8
Restricciones en Ada
! Se pueden especificar restricciones para hacer que el
núcleo de ejecución sea simple y eficiente
pragma Restrictions (restriction{,restriction});
restriction ::= restriction_identifier
| restriction_parameter_identifier => expression
! Las restricciones se comprueban al compilar el sistema
Ejemplo:
pragma Restrictions (Max_Task_Entries => 0);
(no se permiten citas entre tareas)
©1997-2000 Juan Antonio de la Puente
9
Restricciones para sistemas
de tiempo real
! No_Task_Hierarchy
! No_Abort_Statements
! No_Terminate_Alternatives
! No_Task_Allocators
! No_Dynamic_Priorities
! No_Asynchronous_Control
! Max_Select_Alternatives => ...
! Max_Task_Entries => ...
! Max_Protected_Entries => ...
! Max_Tasks => ...
etc.
©1997-2000 Juan Antonio de la Puente
10
Otros requisitos para sistemas
de tiempo real
! Requisitos de implementación
– intervalos de prioridad
– valores de tiempo
! Documentación
– propiedades del reloj de tiempo real
– valor mínimo de un retardo que causa una suspensión de la tarea
! Métricas
– duración máxima de un tic de reloj y amplitud máxima de un salto de reloj
– cota superior de la deriva del reloj
– tiempo de ejecución de Clock, delay y delay until, y cota superior del
retraso de delay y delay until
– tiempo de ejecución de Set__Priority sin desalojo
– tiempo de ejecución de abort
– tiempo de ejecución de una selección asíncrona
etc.
©1997-2000 Juan Antonio de la Puente
11
Restricciones para seguridad
El anexo H del estándar de Ada incluye todas las restricciones
anteriores (con Max_Tasks => 0), y además otras como
– No_Protected_Types
– No_Allocators
– No_Exceptions
– No_Floating_Point
– No_Fixed_Point
– No_IO
– No_Delay
– No_Recursion
– No_Reeentrancy
etc.
©1997-2000 Juan Antonio de la Puente
12
Sistemas críticos
(HIS, High Integrity Systems)
! Son sistemas con requisitos de seguridad muy exigentes
– deben someterse a procesos de análisis estático y dinámico
especificados por organismos de certificación
! En Ada se sigue el documento ISO/IEC TR 15942:2000.
Guide for the use of the Ada programming language
in High Integrity Systems
! Se suele usar un subconjunto seguro del lenguaje
– tradicionalmente sin tareas (p.ej. SPARK)
– subconjunto seguro con tareas: perfil de Ravenscar
©1997-2000 Juan Antonio de la Puente
13
El perfil de Ravenscar
! Subconjunto de la parte concurrente de Ada para aplicaciones
críticas
! Estrategia:
– elminar elementos con tiempo de ejecución excesivo o imprevisible
– permitir el análisis temporal del sistema
– facilitar la implementación de la concurrencia mediante un núcleo de
tiempo real pequeño, eficiente y fiable
©1997-2000 Juan Antonio de la Puente
14
Modelo de tareas de Ravenscar
! Tareas y objetos protegidos estáticos
– no hay creación dinámica ni declaraciones anidadas
– las tareas no terminan
! Objetos protegidos con una entrada, como máximo, con
– barrera simple (varable booleana declarada en el mismo objeto
– una tarea como máximo esperando que se abra la barrera
! Control de tareas síncrono (objetos de suspensión)
! Paquete Ada.Real_Time y retardo absoluto (delay until)
! Protocolos FIFO within priorities y ceiling locking
! Manejadores de interrupciones con procedimientos protegidos
La adecuación al modelo se puede comprobar al compilar
mediante restricciones (excepto terminación y colas)
©1997-2000 Juan Antonio de la Puente
15
Elementos prohibidos en el
perfil de Ravenscar
! Task hierarchies
! Protected object hierarchies
! Dynamic POs and tasks
! Task entries
! Protected types with more than
one entry
! Complex barriers
! More than one task in one entry
queue
! Requeue
! ATC
! Select statement
! Abort
! Dynamic priorities
! Calendar package
! Relative delays
! Asynchronous task control
! User-defined task attributes
©1997-2000 Juan Antonio de la Puente
16
Elementos permitidos en el
perfil de Ravenscar
! Library level tasks and POs
! Task discriminants
! Task identifiers
! FIFO within priority and Ceiling
Locking policies
! Real-Time package
! Delay until statements
! Protected procedures as
interrupt handlers
! Synchronous task control
! Atomic and Volatile pragmas
! Count Attribute
(but not within entry barriers)
©1997-2000 Juan Antonio de la Puente
17
Restricciones del perfil de Ravenscar
Estándar en Ada 95
Nuevas
No_Task_Hierarchy
No_Abort_Statements
No_Task_Allocators
No_Dynamic_Priorities
No_Asynchronous_Control
Max_Task_Entries => 0
Max_Protected_Entries => 1
Max_Asynchronous_Select_Nesting => 0
Max_Tasks => N
Simple_Barrier_Variables
Max_Entry_Queue_Depth => 1
No_Calendar
No_Relative_Delay
No_Protected_Type_Allocators
No_Local_Protected_Objects
No_Requeue
No_Select_Statements
No_Task_Attributes
No_Task_Termination
©1997-2000 Juan Antonio de la Puente
18
Pragma Ravenscar
! Resumen de todas las restricciones
! Ejemplo: GNAT
-- file gnat.adc
pragma Ravenscar;
pragma Restrictions (Max Tasks => N);
pragma Task Dispatching Policy (FIFO Within Priorities);
pragma Locking Policy (Ceiling Locking);
-- otras restricciones de seguridad
pragma Restrictions (No_Allocators,
No_IO,
-- etc.
);
©1997-2000 Juan Antonio de la Puente
19
Ejemplo: GNAT/ORK
(Open Ravenscar Kernel)
RP-compliant Ada application
restricted GNARL
adapted GNULL
ORK (real-time kernel)
hardware
©1997-2000 Juan Antonio de la Puente
20
Proceso de compilacion con
GNAT/ORK
gnat.adc
application
sources
GNAT
compiler
RTS
ALI files
GNAT
binder
application
ALI files
application
object files
elaboration
code
RTS
specs
RTS &
library
object files
GNAT
linker
ELF
executable
©1997-2000 Juan Antonio de la Puente
21
Índice
! Introducción
! Perfiles de ejecución
– Ada 95 (perfil de Ravenscar)
– POSIX
! Modelos de planificación
– cambio de contexto
– operaciones no desalojables
– tareas esporádicas
– manejador de reloj
©1997-2000 Juan Antonio de la Puente
22
Perfiles de aplicación en POSIX
! Definen subconjuntos de servicios para distintos
tipos de aplicaciones
POSIX 13 : Perfiles para sistemas de tiempo real
– PSE50 : sistema de tiempo real mínimo
» sin gestión de memoria, ficheros ni terminal
» sólo threads (no procesos pesados)
– PSE51 : controlador de tiempo real
» tiene sistema de ficheros y terminal
– PSE52 : sistema de tiempo real dedicado
» tiene gestión de memoria y procesos pesados
– PSE53 : sistema de tiempo real generalizado
» sistema completo con todo tipo de servicios
©1997-2000 Juan Antonio de la Puente
23
Índice
! Introducción
! Perfiles de ejecución
! Modelos de planificación
– cambio de contexto
– operaciones no desalojables
– tareas esporádicas
– manejador de reloj
©1997-2000 Juan Antonio de la Puente
24
Entorno de ejecución y
comportamiento temporal
! Las características del núcleo de multiprogramación
Comentarios de: Entorno de ejecución (0)
No hay comentarios