Procesamiento con Multitarea

Documentos relacionados
Microprocesadores. Procesadores IA-32 e Intel R 64 Tareas. Alejandro Furfaro

Conmutación de Tareas

Procesadores de 64 bits

Procesadores IA-32 e Intel R 64 Inicialización

Arquitectura de Computadores II Clase 15

Microprocesadores. Procesador IA-32 e Intel R 64 Protección. Alejandro Furfaro

Taller de Sistemas Operativos. Direccionamiento de Memoria 2012

Microprocesadores. Procesador IA-32 - Gestión de Memoria en 64 bits. Alejandro Furfaro

Intel Arquitectura. Programación en Ensamblador Ing. Marcelo Tosini

Introducción a la Computación. Capítulo 10 Repertorio de instrucciones: Características y Funciones

Arquitectura de computadoras

Arquitectura (Procesador familia 80 x 86 )

Tema 3 SUBRUTINAS. Estructura de Computadores OCW_2015 Nekane Azkona Estefanía

ADMINISTRACION DE LA MEMORIA. En memoria 1 solo proceso Desventajas:

Procesadores IA-32 e Intel R 64 Gestión de Interrupciones

El microprocesador 80386

Introducción a los Sistemas Operativos

El nivel ISA (II)! Conjunto de Instrucciones

Aprendiendo Sistemas Operativos: Programación de Procesadores de Arquitectura IA-32

Introducción a la arquitectura de computadores

Tema 6 Organización y gestión de la memoria

Microprocesadores. Procesador IA-32 - Gestión de Memoria. Alejandro Furfaro

Funcionamiento de la computadora

Procesadores IA-32 e Intel R 64 Gestión de Interrupciones

Espacio de direcciones de un proceso

Arquitectura de Computadores II Clase #7

Práctica 2: Sector de arranque

Herramientas Informáticas I Software: Sistemas Operativos

La Pila en los Procesadores IA-32 e Intel c 64

Sistema electrónico digital (binario) que procesa datos siguiendo unas instrucciones almacenadas en su memoria

Sistemas Operativos. Daniel Rúa Madrid

Manipulación de procesos

Diseño de compiladores. Organización de memoria. Organización de memoria. Organización de memoria. Zona de código 04/05/2014 ORGANIZACIÓN DE MEMORIA

Memoria Virtual. Memoria Virtual

BUAP FACULTAD DE CIENCIAS DE LA COMPUTACIÓN SISTEMAS OPERATIVOS 2 PRACTICA 2 JAIME MORALES FLORES

Tema 11. Soporte del Sistema Operativo REQUERIMIENTOS DE LOS SISTEMAS OPERATIVOS MULTIPROGRAMACIÓN.

Ejercicios del tema 4. El procesador

TEMA 3. CONCEPTOS FUNDAMENTALES DEL NIVEL DEL SISTEMA OPERATIVO. Definición y objetivos de un S.O

Sistemas Operativos. Dr. Luis Gerardo de la Fraga. Departamento de Computación Cinvestav

F1131 Fundamentos de sistemas operativos 1/12

Sist s em e a m s s O per e ativos o. s Unidad V Entrada Sali l d i a.

Unidad I: Organización del Computador. Ing. Marglorie Colina

Arquitectura de Computadores II Clase #3

Planificador de Linux (Scheduler)

GESTIÓN DE ARCHIVOS. Presentado por: Alba Arosemena Alma Vargas Hospicia Mendoza Roselvira Fernández Ahías Arosemena

Objetivos. Objetivos. Arquitectura de Computadores. R.Mitnik

Usuario. Programas de Aplicación. Sistema Operativo. Hardware. Figura 1. Sistema de cómputo estructurado por capas.

Sistemas Operativos. Introducción. Tema 6

Notas técnicas de JAVA Nro. 5 Tip en detalle

FUNDAMENTOS DE LOS SISTEMAS OPERATIVOS

UNIVERSIDAD DE GUADALAJARA

CENSOS NACIONALES 2007: XI DE POBLACION Y VI DE VIVIENDA SISTEMA DE CONSULTA DE RESULTADOS CENSALES GUÍA DEL USUARIO OFICINA TÉCNICA DE INFORMÁTICA

Concurrencia y paralelismo

Sistemas Operativos. Curso 2016 Sistema de Archivos

Manejo de Entrada-Salida. Arquitectura de Computadoras

Recopilación presentada por 1

SISTEMAS OPERATIVOS Arquitectura de computadores

Instituto Tecnológico de Costa Rica

Velocidades Típicas de transferencia en Dispositivos I/O

Tema: Microprocesadores

Práctica 5MODBUS: Bus Modbus

Sistemas Operativos. Clase 2: Administración de procesos.

Tema 20 Gestión de memoria

Microprocesadores, Tema 2:

Práctica 3: El teclado del PC

INTERRUPCIONES. Existen 256 interrupciones En el modo real cada una tiene un vector asociado Vectores de 4 bytes: segmento + offset 32 F0 50 8A

Capítulo 1. Sistemas de Asignación Contigua Basados en Particiones

Administración de la memoria

CICLOS DEL PROCESADOR

28/09/2012. Interfaz con Dispositivos de Salida. Interfaz con Dispositivos de Entrada. Port Mapped. Memory mapped. Interfaz con Dispositivos I/O

Tema 5 Repertorios de instrucciones: Modos de direccionamiento y formato

Desde los programas más simples escritos en un lenguaje de programación suelen realizar tres tareas en forma secuencial.

Estructura del Computador

Fecha de Introducción. Velocidad de reloj. Anchura del bus. Número de transistores. (microns) Memoria direccionable.

Definición de Memoria

Tutoría 2. Banco de memoria de 8 y 16 bits (8086)

CONTROL DE PROCESOS (LVPROSIM), MODELO 3674

Tema 1: Arquitectura de ordenadores, hardware y software

Introducción a los Sistemas Operativos

Tema 5: La pila, las macros y los procedimientos

Construyendo Programas más Complejos

Estructura de Microprocesadores. Profesor Ing. Johan Carvajal Godínez

Organización del Computador I. Introducción e Historia

Manejo de Entrada-Salida. Arquitectura de Computadoras

Principios de Computadoras II

AUTOMATIZACIÓN INDUSTRIAL

Tema 6. Administración de memoria

FUNDAMENTOS DE INFORMÁTICA. Principios Básicos de Sistemas Operativos. Definición de Sistema Operativo

Definición de Sistema Operativo

Ensamblador. Introducción. Dpto. Física y Arquitectura de Computadores. Universidad Miguel Hernandez

Informática Electrónica Manejadores de Dispositivos (Device Drivers)

Tema V Generación de Código

TEMA 1: Concepto de ordenador

Contenido TEMA 2 ENTRADA / SALIDA. Interfaz HW: buses del sistema. Interfaz HW de E/S

Arquitectura de Computadores II

Líneas de Responsabilidad y Funciones. para la Estructura de Puestos de Caja Rural de Teruel

El Diseño de un Lenguaje Máquina

Qué es un programa informático?

Threads, SMP y Microkernels. Proceso

Transcripción:

Procesamiento con Multitarea Técnicas Digitales III Ing. Gustavo Nudelman 2013

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.

Introducción a la conmutación de tarea t1 t2 t3 tn t1 Frame de Ejecución TSSn TSS2 TSS1 CPU

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.

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

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)

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.

Selección de una tarea por parte de la CPU

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)

Despacho de tareas IA32 La maneras con la que el procesador puede realizar una conmutación de tareas son: Mediante la instrucción JMP <seltss:0> (Se ignora el offset) Mediante la instrucción CALL <seltss:0> (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)

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

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.

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)

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)

Ejercicio teórico

Planificación El scheduler Subtitulo o nombre del capitulo 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

Métricas y políticas de scheduling T T t1 t2 tr t1 t2 tr Frame de Ejecución 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

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

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

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

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

Ejemplo de diseño para 2 tareas (IA32-PAE) PTE (F) PTE (10h) VIDEO 0xB8000 PDPTE0 PDE0 PTE (9) PTE (8) PTE (7) PTE (6) PTE (5) PTE (4) PTE (3) PTE (2) PTE (1) PTE (0) Cod Datos 2 Cod/Datos 1 PT2 PD2 PDPT2 PT1 PD1 PDPT1 Cod/Datos 0x10000 0xF000 0xE000 0xD000 0xC000 0xB000 0xA000 0x9000 0x8000

Ejemplo de diseño s/protección (IA32-PAE) PTE (D) PTE (C) 0xB8000 PTE (B) PTE (A) VIDEO PDPTE0 PDE0 PTE (9) PTE (8) PTE (7) PTE (6) PTE (5) PTE (4) PTE (3) PTE (2) PTE (1) PTE (0) Cod Datos 2 Cod/Datos 1 PT1 PD1 PDPT1 Cod/Datos 0xD000 0xC000 0xB000 0xA000 0x9000 0x8000

Lab: Tareas en IA32 Presentación y análisis task32.asm Subtitulo o nombre del capitulo Universidad Tecnológica Nacional

Tareas en IA32e Subtitulo o nombre del capitulo 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.

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.

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.

TSS para 64 bits

Descriptor de TSS para 64 bits

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