Manejo Básico de Tareas

Documentos relacionados
Conmutación de Tareas

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

Arquitectura de Computadores II Clase 15

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

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

Procesadores de 64 bits

Procesamiento con Multitarea

Objetivo. Introducción. Tema: GENERACION DE CODIGO. Compiladores, Guía 11 1

El microprocesador 80386

Procesadores IA-32 e Intel R 64 Inicialización

V.- V.-El El manejo de de las las Interrupciones

Arquitectura (Procesador familia 80 x 86 )

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

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

Práctica 1. Introducción a la programación en ensamblador

MIPS: Modelo de programación. (I Parte)

Espacio de direcciones de un proceso

ESTRUCTURA DE MICROPROCESADORES

Arquitectura de Computadores II Clase #3

Apellidos Nombre DNI

Fundamentos de Arquitectura y Código Máquina

Taller de Sistemas Operativos. Direccionamiento de Memoria 2012

6-REGISTROS DEL 8086 Y DEL 80286

Entorno de Ejecución del Procesador Intel Pentium

Construyendo Programas más Complejos

ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA

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

Fig. 1: Tipos de datos que puede manejar el procesador

Práctica 4. Organización del Computador 1 12 de septiembre de Algunas consideraciones preliminares:

El Diseño de un Lenguaje Máquina

Arquitectura intel Preámbulo de OSO para alumnos formados en el procesador MIPS. Asignatura Sistemas Operativos Murcia abril de 2005

INTERRUPCIONES SOFTWARE y EXCEPCIONES

Práctica 3: El teclado del PC

Real Time Systems. Part 2: Cyclic schedulers. Real Time Systems. Francisco Martín Rico. URJC. 2011

Arquitectura de computadoras

Apunte sobre Bochs. Programación de Sistemas Operativos. 1. Introducción bochs - VM con Debugger... 2

La arquitectura del 8086/8088

Departamento de Sistemas e Informática

La tabla de páginas en Windows

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

Cisco CSS Series Content Services Switches

Conceptos de Arquitectura de Computadoras Curso 2015

ADAPTACIÓN DE REAL TIME WORKSHOP AL SISTEMA OPERATIVO LINUX

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

SISTEMAS OPERATIVOS Arquitectura de computadores

TEMA 4. ARQUITECTURA IA-64

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

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

Instituto Tecnológico de Costa Rica

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

Adaptación de la arquitectura linux lib de MaRTE OS a multiprocesadores

Condiciones y Reglas de la presentación de Declaración Sumaria de Salida (EXS)

Creating your Single Sign-On Account for the PowerSchool Parent Portal

Requerimientos Principales de un Sistema Operativo. Descripción y Control de Procesos. Proceso

ARQUITECTURA DEL MICROPROCESADOR 8086

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

Sistemas Operativos. Tema 1. Arquitectura Básica de los Computadores

Contenido. Procesos. Programas/Procesos. Programas/Procesos. Por qué hacer uso de los Procesos? Proceso

MANUAL EASYCHAIR. A) Ingresar su nombre de usuario y password, si ya tiene una cuenta registrada Ó

SISTEMAS BASADOS EN MICROPROCESADORES

3 - Arquitectura interna de un up

SUBSISTEMA DE ENTRADA-SALIDA. Arquitectura de Computadores I 4º tema

Microprocesadores, Tema 2:

Examen de Arquitectura de Computadores 2 22 de febrero del 2011

Sistemas Operativos. Curso 2014 Estructura de los sistemas operativos

Nueva confirmación de pedido de compra con cambios: proveedor ES

Tema 4. Lenguaje máquina y lenguaje ensamblador

INTRODUCCIÓN. Interrupciones.

UNIDAD 3 ARQUITECTURA DEL Z80. Microprocesadores Otoño 2011

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

Deep Security 9 SP1 p3 Supported Linux Kernels

Entrada/Salida. Polling e Interrupciones. Verano de Mariano Moscato. Organización del Computador 1

1.2.- EL MICROPROCESADOR.

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

Manipulación de procesos

ESTRUCTURA FÍSICA DEL µp 8086

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

Organización de Aviación Civil Internacional GRUPO DE EXPERTOS SOBRE MERCANCÍAS PELIGROSAS (DGP) VIGESIMOQUINTA REUNIÓN

MANEJO DEL MOUSE EN LENGUAJE C++

Escalada de privilegios mediante infección ELF

klib librería del núcleo

SISTEMA DE CONTROL LÓGICO PROGRAMABLE (PLC) SOBRE HARDWARE EMBEBIDO Y BAJO SISTEMA OPERATIVO LINUX

Arquitectura de Computadores II 8086 Parte II

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

Instructivo para Solicitud de Certificado de Servidor 080-ISS-I017

El nivel ISA (II)! Conjunto de Instrucciones

Arquitectura de Computadores II Introducción al 8086

Sistemas Operativos. Curso 2013 Virtualización

MONITOREO DE EVENTOS PARA PENTIUM CON MMX

Sistema de Control Domótico

ENSAMBLADOR DE ARCHIVO TASM MASM NASM GAS. Características de un Ensamblador de Archivo

Introducción a la arquitectura de computadores

Instalación X-Lite. Autor: Airsat 05-Abr-2010 Versión: 1.0

101 Sombras del Malware. Israel Aráoz Severiche C EH,C HFI,

NETWORK SPECIFICATIONS IN OPTIMAX SYSTEM

Tema: Study for the Analysis and the Conceptual Development of a European Port Access System. Ponente: Mario J. Moya Denia

LABORATORIO DE CONTROL POR COMPUTADOR 4º - INGENIERIA DE TELECOMUNICACION

Selección de caminos en s con HWMP (Hybrid Wireless Mesh Protocol)

Tendencias actuales en el diseño de computadoras

Transcripción:

13 de Junio de 2017

Introducción: Tareas Una tarea/task es una unidad de trabajo que el procesador puede despachar, ejecutar y suspender. La tarea se suele usar para ejecutar una instancia de un programa. La arquitectura provee mecanismos para salvar el estado de una tarea, para despachar una tarea para su ejecución y para conmutar tareas.

Introducción: Tareas Una tarea está compuesta por: 1. Espacio de ejecución: Segmento de código. Segmento de datos/pila (uno o varios). 2. Segmento de estado (TSS): Almacena el estado de la tarea (su contexto) para poder reanudarla desde el mismo lugar.

Introducción: Tareas TASK MANAGEMENT Estructura de una tarea Code Segment Task-State Segment (TSS) Data Segment Stack Segment (Current Priv. Level) Stack Seg. Priv. Level 0 Task Register CR3 Stack Seg. Priv. Level 1 Stack Segment (Priv. Level 2) Figure 7-1. Structure of a Task

Introducción: Identificación de una tarea Una tarea está identificada por el selector de segmento de su TSS. La TSS es un segmento. Debe estar descripto en la GDT del mismo modo que se describen los segmentos de código y datos. Además, el selector de segmento de la tarea que se está ejecutando actualmente se encuentra en el registro Task Register (TR).

TSS: Task-State Segment TASK MANAGEMENT 31 I/O Map Base Address 15 LDT Segment Selector GS FS DS SS CS ES EDI ESI EBP ESP EBX EDX ECX EAX EFLAGS EIP CR3 (PDBR) SS2 ESP2 SS1 ESP1 SS0 ESP0 Previous Task Link 0 T 100 96 92 88 84 80 76 72 68 64 60 56 52 48 44 40 36 32 28 24 20 16 12 8 4 0 bits. Set to 0. Figure 7-2. 32-Bit Task-State Segment (TSS) The processor updates dynamic fields when a task is suspended during a task switch. The following are dynamic fields: Organización General-purpose del Computador register fields II State Manejo of the EAX, Básico ECX, EDX, de Tareas EBX, ESP, EBP,

The busy flag (B) in the type field indicates whether the task is busy. A busy task is currently running or suspended. A type field with a value of 1001B indicates an inactive task; a value of 1011B indicates a busy task. Tasks are not recursive. The processor uses the busy flag to detect an attempt to call a task whose execution has been interrupted. To insure that there is only one busy flag is associated with a task, each TSS should have only one TSS descriptor that points to it. TSS: Descriptor de TSS TSS Descriptor 31 24 23 22 2120 19 16 15 14 13 12 11 8 7 0 Base 31:24 G 0 0 A V L Limit 19:16 P D P L Type 0 1 0 B 1 Base 23:16 4 31 16 15 0 Base Address 15:00 Segment Limit 15:00 0 AVL B BASE DPL G LIMIT P TYPE Available for use by system software Busy flag Segment Base Address Descriptor Privilege Level Granularity Segment Limit Segment Present Segment Type Figure 7-3. TSS Descriptor The base, limit, and DPL fields and the granularity and present flags have functions similar to their use in data-segment descriptors (see Section 3.4.5, Segment Descriptors ). When Organización the G del flag Computador is 0 in a II TSS descriptor Manejo Básico for dea Tareas 32-bit TSS, the limit field

it is normally used only by operating system software. On power up or reset of the processor, segment selector and base address are set to TSS: Encontrando the default value of 0; the limit la is TSS set to FFFFH. de la tarea acutal TSS + Task Register Visible Part Selector Base Address Invisible Part Segment Limit GDT TSS Descriptor Figure 7-5. Task Register 0

Conmutación de Tareas 1. Ejecutamos la instrucción jmp 0x20:0

Conmutación de Tareas 2. Se busca el descriptor correspondiente en la GDT.

Conmutación de Tareas 3. Como es un cambio de tarea, se lee el TR.

Conmutación de Tareas 4. Se busca el TSS apuntado por el TR.

Conmutación de Tareas 5. Se guarda el contexto actual.

Conmutación de Tareas 6. Se busca TSS apuntado por descriptor de tarea a ejecutar.

Conmutación de Tareas 7. Se obtiene el nuevo contexto.

Conmutación de Tareas 8. Se actualiza el TR.

Conmutación de Tareas 9. Se continúa le ejecución con el nuevo contexto.

Conmutación de Tareas: Tarea Inicial 1. Siempre que se salta a una tarea, hay un cambio de contexto. Siempre! 2. El procesador guarda el contexto actual de la tarea (identificada en TR) y carga el contexto de la tarea a la cual se está saltando.

Conmutación de Tareas: Tarea Inicial 1. Siempre que se salta a una tarea, hay un cambio de contexto. Siempre! 2. El procesador guarda el contexto actual de la tarea (identificada en TR) y carga el contexto de la tarea a la cual se está saltando. 3. Entonces, qué pasa la primera vez? Qué pasa cuando se salta a la primera tarea? Qué valor contiene TR? Dónde se guarda el contexto?

Conmutación de Tareas: Tarea Inicial 1. Siempre que se salta a una tarea, hay un cambio de contexto. Siempre! 2. El procesador guarda el contexto actual de la tarea (identificada en TR) y carga el contexto de la tarea a la cual se está saltando. 3. Entonces, qué pasa la primera vez? Qué pasa cuando se salta a la primera tarea? Qué valor contiene TR? Dónde se guarda el contexto? 4. Hay que crear una tarea inicial para proveer una TSS en donde el procesador pueda guardar el contexto actual. Esta tarea inicial tiene este único propósito.

El TP3 Ejercicio 6 a) Definir las entradas en la GDT que considere necesarias para ser usadas como descriptores de TSS. Minimamente, una para ser utilizada por la tarea inicial y otra para la tarea Idle. b) Completar la entrada de la TSS de la tarea Idle con la información de la tarea Idle. Esta información se encuentra en el archivo TSS.C. La tarea Idle se encuentra en la dirección 0x00016000. La pila se alojará en la misma dirección que la pila del kernel y será mapeada con identity mapping. Esta tarea ocupa 1 pagina de 4KB y debe ser mapeada con identity mapping. Además la misma debe compartir el mismo CR3 que el kernel.

El TP3 Ejercicio 6 d) Completar la entrada de la GDT correspondiente a la tarea inicial. e) Completar la entrada de la GDT correspondiente a la tarea Idle. f) Escribir el código necesario para ejecutar la tarea Idle, es decir, saltar intercambiando las TSS, entre la tarea inicial y la tarea Idle.

El TP3 Ejercicio 6 c) Construir una función que complete una TSS libre con los datos correspondientes a una tarea (zombi). El código de las tareas se encuentra a partir de la dirección 0x00010000 ocupando una pagina de 4kb cada una según indica la figura 1. Para la dirección de la pila se debe utilizar el mismo espacio de la tarea, la misma crecerá desde la base de la tarea. Para el mapa de memoria se debe construir uno nuevo utilizando la función mmu inicializar dir zombi. Además, tener en cuenta que cada tarea utilizará una pila distinta de nivel 0, para esto se debe pedir una nueva pagina libre a tal fin.

El TP3 Archivos para el ejercicio: gdt.h / gdt.c definición de la GDT kernel.asm código principal tss.h / tss.c definición estructura auxiliar de contextos y de TSS

Pequeños consejos 1. Al iniciar las tareas: completar EIP. completar ESP y EBP. completar selectores de segmento. completar CR3. completar EFLAGS. 2. Al saltar por primera vez a una tarea: tener un descriptor en la GDT de la tarea inicial. tener un descriptor en la GDT de la tarea a saltar. tener en TR algun valor válido para guardar contexto.

Pequeños consejos: cómo TASK MANAGEMENT NO completar una TSS 31 15 I/O Map Base Address LDT Segment Selector GS FS DS SS CS ES EDI ESI EBP ESP EBX EDX ECX EAX EFLAGS EIP CR3 (PDBR) SS2 ESP2 SS1 ESP1 SS0 ESP0 Previous Task Link bits. Set to 0. 0 T 100 96 92 88 84 80 76 72 68 64 60 56 52 48 44 40 36 32 28 24 20 16 12 8 4 0 en asm puaj! mov edi,<iniciotsss> add edi,104*<indice> mov eax,cr3 mov [edi+28],eax mov dword [edi+32],<eip> mov dword [edi+36],<flags> mov dword [edi+56],<pila> mov dword [edi+60],<pila> mov word [edi+72],<seg.dat> mov word [edi+76],<seg.cod> mov word [edi+80],<seg.dat> mov word [edi+84],<seg.dat> mov word [edi+88],<seg.dat> mov word [edi+92],<seg.dat> mov word [edi+102],0xffff Figure 7-2. 32-Bit Task-State Segment (TSS) The processor updates dynamic fields when a task is suspended during a task switch. The following are dynamic fields: General-purpose register fields State of the EAX, ECX, EDX, EBX, ESP, EBP, ESI, and EDI registers prior to Organización the task switch. del Computador II

Pequeños consejos: EFLAGS SYSTEM ARCHITECTURE OVERVIEW 31 22 21 20 19 18 17 16 ID Identification Flag VIP Virtual Interrupt Pending VIF Virtual Interrupt Flag AC Alignment Check VM Virtual-8086 Mode RF Resume Flag NT Nested Task Flag IOPL I/O Privilege Level IF Interrupt Enable Flag TF Trap Flag (set to 0) I D Figure 2-4. System Flags in the EFLAGS Register EFLAGS I F Ipor nterrupt defecto enable (bit 9) Controls the response of the processor to maskable hardware interrupt requests (see also: Section 6.3.2, Maskable 0x00000002 Hardware I nterrupts ). The flag 0x00000202 is set to respond to maskable hardware interrupts; cleared to inhibit maskable hardware interrupts. The I F flag does not affect the generation of exceptions or nonmaskable interrupts (NMI interrupts). The CPL, IOPL, and the state of the VME flag in control register CR4 determine whether the I F flag can be modified by the CLI, STI, POPF, V V I I P F A C V M R F 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 0 N T I O P L O F D I T S Z F F F F F 0 A F 0 P C F 1 F EFLAGS con Interrupciones habilitadas

e task; a value of 1011B indicates a busy task. Tasks are not recursive. The ocessor uses the busy flag to detect an attempt call a task whose execution ha Pequeños consejos: y el descriptor TSS? en interrupted. To insure that there is only one busy flag is associated with a task ch TSS should have only one TSS descriptor that points to it. Supongo que EDI tiene la dirección de la TSS TSS Descriptor 31 24 23 22 2120 19 16 15 14 13 12 11 8 7 0 Base 31:24 G 0 0 A V L Limit 19:16 P D P L 0 Type 1 0 B 1 Base 23:16 4 31 16 15 0 Base Address 15:00 Segment Limit 15:00 0 mov esi, gdt AVL Available for use by system shrsoftware edx, 16 B Busy flag add esi, <indice> mov byte [esi+4], dl BASE Segment Base Address mov word [esi], DPL 0x67 Descriptor Privilege Level mov byte [esi+5], 10001001b mov word [esi+2], G Granularity di mov byte [esi+6], 00010000b mov edx, edi LIMIT Segment Limit mov byte [esi+7], dh P Segment Present TYPE Segment Type Figure 7-3. TSS Descriptor

Pequeños consejos: intercambiando tareas Cargar la tarea inicial mov ax, <indice> ltr ax Cargar la nueva tarea jmp <sel.tarea_idle>:0

Preguntas?