Procesamiento con Multitarea

Procesamiento con Multitarea Técnicas Digitales III Ing. Gustavo Nudelman 2013 Universidad Tecnológica Nacional - Facultad Regional Buenos Aires I

19 downloads 104 Views 639KB Size

Recommend Stories


Procesamiento Analítico con Minería de Datos
Revista Iberoamericana de las Ciencias Computacionales e Informática ISSN: 2007-9915 Procesamiento Analítico con Minería de Datos Analytical Process

Evaluación multitarea de la carga física
Evaluación multitarea de la carga física V. M. IDOATE GARCÍA Licenciado en Medicina. Técnico superior en Ergonomía y Psicosociología Aplicada. Servic

Procesamiento Digital de Imágenes
Procesamiento Digital de Imágenes Apuntes del curso impartido por el Dr. Boris Escalante Ramírez Agosto, 2006 2. 2.1. Fundamentos de la Imagen Digit

Story Transcript

Procesamiento con Multitarea

Técnicas Digitales III Ing. Gustavo Nudelman 2013

Universidad Tecnológica Nacional - Facultad Regional Buenos Aires

Introducción •

Podemos definir como tarea, a código en ejecución al cual el sistema le asigna recursos especiales que hacen de que dicho código pueda definirse como una entidad.



Dichos recursos son: • Espacio de contexto de ejecución  Segmento TSS





Un segmento TSS posee un descriptor de sistema asociado



Espacio de ejecución  Paginas y/o segmentos asignados para código , datos y pila



Un mapa de I/O asociado que la tarea puede utilizar

Con estos recursos, el procesador puede ejecutar, detener y despachar esta instancia de código de manera controlada.

Universidad Tecnológica Nacional - Facultad Regional Buenos Aires

Introducción a la conmutación de tarea

t1

t2

tn

t3

t1

Frame de Ejecución

TSSn

TSS2

TSS1 CPU Universidad Tecnológica Nacional - Facultad Regional Buenos Aires

Concepto de Maquina Virtual •



El programador de sistemas, pone a disposición de cada tarea: •

Un set de recursos de ejecución de la CPU



Una rodaja (Slot) de tiempo de CPU en el cual el set de ejecución es de uso exclusivo de la tarea.



Un conjunto de segmentos o páginas para uso de la tarea



Acceso a I/O controlado

Se conoce a este set de recursos, como una máquina virtual, que la tarea puede utilizar de manera discontinua en el tiempo.

Universidad Tecnológica Nacional - Facultad Regional Buenos Aires

Estructuras y recursos asociados •

Segmento de estado de tarea (TSS)  Se trata de un segmento especial de memoria donde se almacena el contexto de ejecución en el que quedo suspendida una tarea



Descriptor de TSS  Es un descriptor de la GDT (del tipo sistema) Que “describe” al segmento TSS



Descriptor de puerta de Tarea  Descriptor de la IDT que produce una conmutación de tarea cuando se invoca a la interrupción asociada



Registro de Tarea (TR)  Es un registro de la CPU que apunta al descriptor de TSS de la tarea que se encuentra en ejecución.



Flag NT (bit 14 del EFLAGS)  Indica anidamiento de tareas

Universidad Tecnológica Nacional - Facultad Regional Buenos Aires

Estructura de la TSS en IA32 Su tamaño mínimo es de 104 bytes (67h) I/O Map Base Address: es el offset desde el inicio de la TSS hasta el inicio del mapa de I/O Cada bit del I/O MAP corresponde a un byte del sistema de I/O, y se habilita con un 0. El mapa no debe contener a todos los ports, ya que lo podemos limitar por el campo “límite” del descriptor El flag T sirve para generar una excepción de debug si está en 1. (Pentium en adelante)

Universidad Tecnológica Nacional - Facultad Regional Buenos Aires

Mapa de permisos de I/O en la TSS



Existe un campo del registro EFLAGS llamado IOPL que determina el nivel necesario que debe tener un código (CPL) para poder acceder a instrucciones de I/O, y este campo solo puede ser alterado por el nivel 0.



Cuando una tarea no posee el nivel establecido en el campo IOPL del registro EFLAG, el sistema chequea el mapa de bit de la TSS.



Cada bit de este mapa representa al puerto en cuestión, y se establece el permiso con 0. Universidad Tecnológica Nacional - Facultad Regional Buenos Aires

Selección de una tarea por parte de la CPU

Universidad Tecnológica Nacional - Facultad Regional Buenos Aires

Descriptor de TSS



El campo “Granularity” debe valer 0



Si la TSS no está correctamente definida, se obtendrá una excepción del tipo 0Ah (TSS Invalido) Universidad Tecnológica Nacional - Facultad Regional Buenos Aires

Despacho de tareas IA32 •

La maneras con la que el procesador puede realizar una conmutación de tareas son: •

Mediante la instrucción JMP

(Se ignora el offset)



Mediante la instrucción CALL

(Se ignota el offset)



Mediante un evento de interrupción/excepción para el cual se dispone de una puerta de tarea en la IDT Mediante la instrucción IRET estando el bit NT del registro EFLAGS en 1





Cualquiera de estos métodos cargara el selector TR con el nuevo descriptor de TSS, y esto producirá tanto la descarga del contexto de la tarea a abandonar, como la carga del mismo en la tarea a conmutar.



Luego de la conmutación de tarea, queda seteado el bit TS del registro CR0 (utilidad para punto flotante) Universidad Tecnológica Nacional - Facultad Regional Buenos Aires

Anidamiento de tareas (IA32)



Cuando se conmuta de tarea mediante un CALL, o mediante una puerta de tarea, el procesador copia el TR de la tarea actual en el campo “Previous Task Link” de la nueva tarea.



El bit Busy queda en 1 en ambas tareas anidadas



De esta forma, si la nueva tarea ejecuta en algún punto la instrucción IRET y el campo NT de EFLAGS está en 1, el procesador puede retomar la tarea previa gracias a que puede recuperar el selector de TSS del campo “Prevous Task Link”



La conmutación con JMP no produce ningún tipo de anidamiento Universidad Tecnológica Nacional - Facultad Regional Buenos Aires

Prevención de recursividad – Bit Busy •

Toda tarea en ejecución, o que haya quedado anidada, permanece con el bit “Busy” en 1.



Esto impide que se intente re-entrar en una tarea ocupada



El procesador genera una excepción de protección general si se intenta acceder a una tarea cuyo bit Busy se encuentra en 1.



La única excepción es acceder con IRET ya que esta es una condición esperada por el anidamiento.



Cuando se despacha una tarea con JMP, la CPU “Limpia” automáticamente el bit busy, ya que se asume el deseo intencional de abandonar la tarea.

Universidad Tecnológica Nacional - Facultad Regional Buenos Aires

Protección en conmutación de tareas •

La CPU siempre chequea que el tanto el CPL de la tarea que va a ser abandonada como el RPL del selector de segmento de la nueva tarea, deben ser menor o igual al DPL del descriptor de TSS de la tarea que se va a conmutar.



Si se realiza conmutación mediante la instrucción IRET, no se controla el nivel de privilegio.



La CPU controla que la tarea a abordar, este disponible (bit busy) a excepción de cuando se conmuta con IRET



Se controla que la TSS tenga una tamaño mayor o igual a 104 bytes, y que esté dentro de una misma página (si se esta trabajando con paginación)

Universidad Tecnológica Nacional - Facultad Regional Buenos Aires

Recursos no incluidos en la definición de contexto Intel •

Durante la evolución de la arquitectura IA32 se han incorporado recursos, que por razones de compatibilidad no se incluyeron en la TSS



El bit 3 de CR0 (Task Swiched) nos permite salvaguardar el contexto de x87 FPU/MMX/SSE/SSE2/SSE3/SSSE3/SSE4



Este bit es puesto a “1” cada vez que se realiza un cambio de tarea.



Permaneciendo en “1” ya comenzada la ejecución de la nueva tarea permite generar una excepción del tipo 7 (device-notavailable”), cuando se intenta ejecutar cualquier instrucción que involucre a estos recursos



El handler de esta excepción será entonces la oportunidad para resguardar y recuperar dicho contexto en una estructura propia del programador de sistemas, y luego “limpiar” el bit TS (instr. CLTS) Universidad Tecnológica Nacional - Facultad Regional Buenos Aires

Ejercicio teórico

Universidad Tecnológica Nacional - Facultad Regional Buenos Aires

Planificación – El scheduler

Subtitulo o nombre del capitulo Universidad Tecnológica Nacional - Facultad Regional Buenos Aires

Universidad Tecnológica Nacional

Diseño de un scheduler •

Se denomina “Scheduler” a la parte del código que se utiliza para: Gestionar el tiempo de CPU entre todas las tareas que deban ser ejecutadas en base a métricas y prioridades.



Se trata que código que siempre se ejecuta a nivel Kernel.



Utiliza una base de tiempo (Generalmente el Timer tick)



Utiliza una base de datos o lista conteniendo las tareas que deben ser ejecutadas



Basado en las métricas e impulsado por la base de tiempo, es quien decide realizar la conmutación de tarea



Debe optimizar el uso del sistema de acuerdo a la política de diseño del sistema

Universidad Tecnológica Nacional - Facultad Regional Buenos Aires

Métricas y políticas de scheduling T

t1

T

t2

Frame de Ejecución

tr

t1

t2

tr

Frame de Ejecución

• El scheduler reparte los tiempos de CPU dentro de un frame de ejecución • Las tareas pueden tener diferente asignación de tiempo dentro de un frame

• Las tareas “real time” deben tener un tiempo periódico asegurado dentro de cada frame

Universidad Tecnológica Nacional - Facultad Regional Buenos Aires

Scheduler – Contexto •

Sea un scheduler que se ejecuta en el handler de la IRQ0 para gestionar un sistema de n tareas



A que tarea pertenece el scheduler ?

 El scheduler es simplemente código del sistema que se ejecuta en el contexto de la tarea interrumpida  Para pasar desde la tarea n a la tarea n+1, el scheduler se ejecuta en la tarea n

Universidad Tecnológica Nacional - Facultad Regional Buenos Aires

Análisis para 2 tareas TR

TSS1 TSS2 CPU CPU

Se comienza a ejecutar el código del scheduler (contexto de la tarea 1)

Ejecutando tarea 1

------------------------------------------------------Jmp selTSS2:0 IRET

IRQ0

Universidad Tecnológica Nacional - Facultad Regional Buenos Aires

Scheduler - Conclusiones •

El procesador nos provee los recursos para realizar el cambio de contexto.



Sin embargo las políticas y manejo de las métricas deben ser implementadas por el programador



Es por eso que además de la TSS se acostumbra a almacenar mas información para cada tarea.



Se aconseja que el scheduler disponga de un área de datos donde pueda almacenar estructuras ordenadas para la información de las tareas (Ej. Listas simplemente enlazadas)



No todas las tareas de un sistema pueden ser ejecutadas por el scheduller



El scheduler no es quien debe encargarse de activar la posibilidad de ejecución de una tarea Universidad Tecnológica Nacional - Facultad Regional Buenos Aires

Gestión del espacio de direccionamiento en multitarea •

Se trata de como poner páginas o segmentos a disposición de cada tarea.



Esto incluye áreas de código, datos, pila, y áreas compartidas



Si trabajamos con paginación activada, el hecho de cambiar el valor de CR3 al conmutar de tarea nos permite cambiar el esquema de paginación permitiendo: •

Tener diferentes tareas que utilicen diferentes páginas aunque se refieran al mismo espacio lineal



Tener páginas compartidas referenciando las mismas direcciones físicas en los diferentes esquemas de paginación



Tener protección entre tareas

Universidad Tecnológica Nacional - Facultad Regional Buenos Aires

Ejemplo de diseño para 2 tareas (IA32-PAE) PTE(F) PTE (10h)

VIDEO

0xB8000

Cod Datos 2

0x10000

Cod/Datos 1

0xF000

PT2 PD2 PDPT2 PT1 PD1 PDPT1 Cod/Datos

0xE000

PTE (9) PTE (8) PTE (7) PTE (6) PTE (5) PTE (4) PTE (3) PTE (2) PTE (1)

PTE (0) PDE0 PDPTE0 Universidad Tecnológica Nacional - Facultad Regional Buenos Aires

0xD000 0xC000 0xB000 0xA000 0x9000 0x8000

Ejemplo de diseño s/protección (IA32-PAE) 0xB8000

PTE (D) PTE (C) PTE (B)

VIDEO

PTE (A) PTE (9) PTE (8) PTE (7) PTE (6) PTE (5) PTE (4) PTE (3)

Cod Datos 2

0xD000

PTE (2)

Cod/Datos 1

0xC000

PTE (1)

PT1 PD1 PDPT1 Cod/Datos

0xB000

PTE (0) PDE0 PDPTE0 Universidad Tecnológica Nacional - Facultad Regional Buenos Aires

0xA000 0x9000 0x8000

Lab: Tareas en IA32 • Presentación y análisis task32.asm

Subtitulo o nombre del capitulo Universidad Tecnológica Nacional - Facultad Regional Buenos Aires

Universidad Tecnológica Nacional

Tareas en IA32e

Subtitulo o nombre del capitulo Universidad Tecnológica Nacional - Facultad Regional Buenos Aires

Universidad Tecnológica Nacional

Introducción La evolución de los procesadores introdujo gradualmente nuevos recursos (registros de punto flotante, registros para operaciones empaquetadas, etc) Estos recursos no formaron parte del contexto (TSS) por razones de compatibilidad hacia atrás en IA32 La manipulación de estos recursos durante la conmutación de tarea debió realizarse por software ya que el procesador no brindó ningún mecanismo automático Debido a esta situación, los sistemas operativos decidieron definir su propia estructura de contexto, y solo utilizar la TSS para recuperar las pilas durante el cambio de nivel de privilegio.

Universidad Tecnológica Nacional - Facultad Regional Buenos Aires

Cambios en 64 bits Se mantienen solo los conceptos de tareas y contexto Dicho contexto lo diseña el programador de sistemas – El procesador no ofrece una estructura de contexto manejable El diseño, construcción y manipulación de las estructuras de contexto son responsabilidad del programador de sistemas Entonces. . . . Existe laTSS ? La TSS cumple solamente la función de almacenar los punteros a pila para los cambios de nivel de privilegio. No se puede realizar un JMP a un selector de TSS. Esto provocaría una excepción 0dh

Tampoco se soporta la puerta de tarea en la IDT.

Universidad Tecnológica Nacional - Facultad Regional Buenos Aires

Estructuras en IA32e En Modo 64 bits el procesador mantiene el TSS, pero su función ya no es la de almacenar el contexto de la tarea sino mantener: 1 Los valores de RSP para los Niveles de Privilegio 2, 1, y 0, en formato canónico. 2 La Tabla de Punteros a Stacks de Interrupciones (IST), punteros expresados también en su formato canónico. 3 El Offset al BitMap de E/S.

El sistema operativo de 64 bits debe crear al menos un TSS e inicializar el TR con el selector correspondiente a este segmento. Este segmento se utilizará tanto para tareas que ejecuten en el sub-modo 64 bits como en el sub-modo compatibilidad.

Universidad Tecnológica Nacional - Facultad Regional Buenos Aires

TSS para 64 bits

Universidad Tecnológica Nacional - Facultad Regional Buenos Aires

Descriptor de TSS para 64 bits

Universidad Tecnológica Nacional - Facultad Regional Buenos Aires

Lab: Tareas IA32e • Análisis en conjunto de como implementar un cambio de contexto

• Presentación y análisis task64.asm

Subtitulo o nombre del capitulo Universidad Tecnológica Nacional - Facultad Regional Buenos Aires

Universidad Tecnológica Nacional

Get in touch

Social

© Copyright 2013 - 2024 MYDOKUMENT.COM - All rights reserved.