22
Cronograma de Actividades Previsto A continuación se plantea el cronograma de actividades para el ciclo lectivo basado en 32 clases de acuerdo con el calendario académico. Clase 1: semana del 28 de Marzo Introducción a los Sistemas basados en Microprocesadores de 32 bits – Caso práctico: la PC. Objetivo: Situar los conocimientos adquiridos por los alumnos en TDII en un motherboard comercial de PC y mostrar la generación de aplicaciones utilizando esos recursos. Se busca consolidar estos conceptos y orientarlos hacia la arquitectura de trabajo del año en curso. Material de la cátedra: Arquitectura PC (Clase 1 y 2).pdf Teórica: 3:00hs Breve Introducción al temario de la asignatura, exponiendo sus objetivos, el resumen de los contenidos a abordar y el enfoque con que se llevará a cabo su estudio. Introducción a los procesadores de 16 y 32 bits. Evolución. Familia iAPx86. Concepto de compatibilidad ascendente fundado por esta arquitectura. Descripción de la estructura básica de una PC IBM compatible: Mapa de Memoria y de E/S. Power On Self Test. –BIOS: Estructura de servicios de E/S. Ejemplos de Programación sencillos de los periféricos más comunes. Destacar que su uso solo es válido en Modo Real. Limitaciones en Modo Protegido. Función y modos de programación de los Controladores de E/S vistos en TDII (no se requiere explicar su funcionamiento interno), 1. Controlador de interrupciones. Modo de trabajo en la PC: IRQ activadas por flanco, Modo cascada (2do. PIC a partir de la AT286), Fin de Interrupción Automático. Asignación de IRQs (IRQ0-IRQ15). 2. Temporizador Programable 8254: Dirección de E/S y función de cada timer dentro del sistema. Relación con los demás componentes (PIC, y refresco de memoria RAM dinámica). 3. Interfaces serie y paralelo. Direcciones de E/S. IRQs asociadas. Ejemplos de manejo. Práctica: 1:00 hs. Entorno de desarrollo Nasm + Bochs. Uso de los principales comandos de debugging. Uso de las principales directivas del lenguaje ensamblador. Prácticas sobre Windows y sobre LINUX. Portabilidad de fuentes entre ambos sistemas operativos. Comandos básicos del shell de Linux. Formatos de archivos ejecutables bajo DOS (dentro de Bochs) y su relación con los modelos de segmentación del procesador: archivos .COM, y .EXE. TRABAJO PARA PROXIMA CLASE: - Lectura de los temas desarrollados en esta clase. - Ejercicio de aplicación en assembler: Rutina de conversión de word en formato hexadecimal a su representación ASCII. Entregable en formato electrónico, programa fuente y programa objeto. Herramientas: NASM.

Cronograma de Actividades Previsto filetrabajo del año en curso. Material de la cátedra: ... Uso de las principales directivas del lenguaje ensamblador. Prácticas sobre Windows

  • Upload
    lekhanh

  • View
    218

  • Download
    0

Embed Size (px)

Citation preview

Cronograma de Actividades Previsto A continuación se plantea el cronograma de actividades para el ciclo lectivo basado en 32 clases de acuerdo con el calendario académico.

Clase 1: semana del 28 de Marzo Introducción a los Sistemas basados en Microprocesadores de 32 bits – Caso práctico: la PC. Objetivo: Situar los conocimientos adquiridos por los alumnos en TDII en un motherboard comercial de PC y mostrar la generación de aplicaciones utilizando esos recursos. Se busca consolidar estos conceptos y orientarlos hacia la arquitectura de trabajo del año en curso. Material de la cátedra: Arquitectura PC (Clase 1 y 2).pdf Teórica: 3:00hs Breve Introducción al temario de la asignatura, exponiendo sus objetivos, el resumen de los contenidos a abordar y el enfoque con que se llevará a cabo su estudio. Introducción a los procesadores de 16 y 32 bits. Evolución. Familia iAPx86. Concepto de compatibilidad ascendente fundado por esta arquitectura. Descripción de la estructura básica de una PC IBM compatible: Mapa de Memoria y de E/S. Power On Self Test. –BIOS: Estructura de servicios de E/S. Ejemplos de Programación sencillos de los periféricos más comunes. Destacar que su uso solo es válido en Modo Real. Limitaciones en Modo Protegido. Función y modos de programación de los Controladores de E/S vistos en TDII (no se requiere explicar su funcionamiento interno), 1. Controlador de interrupciones. Modo de trabajo en la PC: IRQ activadas por

flanco, Modo cascada (2do. PIC a partir de la AT286), Fin de Interrupción Automático. Asignación de IRQs (IRQ0-IRQ15).

2. Temporizador Programable 8254: Dirección de E/S y función de cada timer dentro del sistema. Relación con los demás componentes (PIC, y refresco de memoria RAM dinámica).

3. Interfaces serie y paralelo. Direcciones de E/S. IRQs asociadas. Ejemplos de manejo.

Práctica: 1:00 hs. Entorno de desarrollo Nasm + Bochs. Uso de los principales comandos de debugging. Uso de las principales directivas del lenguaje ensamblador. Prácticas sobre Windows y sobre LINUX. Portabilidad de fuentes entre ambos sistemas operativos. Comandos básicos del shell de Linux. Formatos de archivos ejecutables bajo DOS (dentro de Bochs) y su relación con los modelos de segmentación del procesador: archivos .COM, y .EXE. TRABAJO PARA PROXIMA CLASE: - Lectura de los temas desarrollados en esta clase. - Ejercicio de aplicación en assembler:

• Rutina de conversión de word en formato hexadecimal a su representación ASCII.

• Entregable en formato electrónico, programa fuente y programa objeto. • Herramientas: NASM.

Clase 2: Semana del 4 de Abril Arquitectura de Sistemas de 32 bits: Caso práctico la PC. Objetivo: Ampliar el universo de aplicación del alumno avanzando en el análisis del hardware básico contenido en un motherboard comercial e incorporando nuevos recursos para desarrollo de aplicaciones. Material de la cátedra: Arquitectura PC (Clase 1 y 2).pdf Entregables:

• Ejercicio solicitado en la clase anterior. Test de Lectura N° 1 sobre los temas de Arquitectura de la PC vistos en la clase anterior. Práctica: 1:00 hs. A partir de estos dispositivos ya conocidos trabajar en el laboratorio de PCs en el desarrollo de programas en modo real cuyo nivel de complejidad vaya aumentando para introducir conceptos de programación avanzada útiles a la hora de trabajar en modo protegido en las clases subsiguientes. Se estimulará el uso de las herramientas de desarrollo en entorno LINUX de modo de familiarizar a los alumnos con dicho entorno que será el que utilizará en el segundo cuatrimestre. Agregar conceptos de programación avanzada en Assembler: Macros, y Estructuras a los diferentes programas que se vayan desarrollando. Combinación de programas escritos en lenguajes mixtos: C y Assembler Teórica: 3:00hs Descripción de los restantes componentes básicos de un motherboard. Principales características de cada controlador y conceptos asociados: 1. Controlador de DMA: Concepto de DMA. Breve descripción del 8237, aclarando

su uso solo en aplicaciones legacy (compatibilidad). Breve descripción de los sistemas modernos DMA (Ultra DMA, Bus Mastering).

2. Controlador de teclado en la PC. Explicación de la lógica de Hardware, Controlador 8042: Breve descripción y funciones de hardware que cumple en el sistema además del teclado. Interrupción 9h: Funcionamiento, direcciones de estado de teclas modificadoras, buffer circular. Ejemplos simples de programación y de acceso al port 60h en un handler de Interrupción.

3. Manejo de la pantalla de Video en modo texto. Adelanto al tema controlador de Video que se verá en el segundo cuatrimestre

4. Reloj de tiempo real. Detalle de sus registros internos. Técnicas de Programación. Memoria CMOS. Uso de la Interrupción IRQ15.

5. Bus ISA de 8 bits y de 16 bits. Wait states. Técnicas de Diseño de placas en esta estructura. Uso de las señales más importantes: Uso de las señales AEN. Explicar la redundancia de usar en este bus las líneas de Address mas allá de A0-A9 para mapeo de dispositivos de E/S. Mapeo de memorias FLASH (A0 – A19).

6. Introducción al Bus PCI. TRABAJO PARA PROXIMA CLASE: - Lectura de los temas desarrollados en esta clase. - Ejercicio de aplicación en C y Assembler:

• Programa en C que muestre en pantalla el estado de la mascara del PIC 1 utilizando la rutina de conversión de word en formato hexadecimal a su

representación ASCII realizada la clase anterior y una rutina en assembler adicional que acceda al PIC y devuelva su máscara de interrupciones.

• Entregable en formato electrónico, programa fuente y programa objeto. • Herramientas: NASM + GCC + LD + make.

Clase 3: Semana del 11 de Abril Procesadores x86 – Introducción al Modo Protegido Objetivo: A partir de una breve revisión de los conceptos vistos para el procesador 8088 en TDII, se retoma la arquitectura interna del procesador 80386, en lo referente al modelo de registros de propósito general, modelo de segmentación, y se sitúa al alumno en el concepto de Modo Real como emulación de un 8088. A partir de allí se introducen los conceptos de Modo Protegido. Material de la cátedra: Procesador IA-32 – Clase1.pdf Entregables:

• Ejercicio solicitado en la clase anterior. Test de Lectura N° 2 sobre los temas vistos en la clase anterior. Teórica: 2:30 hs. Presentación de la arquitectura denominada IA-32: El Procesador 80386 1. Modo Real. Segmentación, modelo de registros de 16 y 32 bits, interrupciones (vector de interrupciones), capacidad de direccionamiento en Modo Real. Similitudes y diferencias con el 8088 en el modo real que introduce el 80386. Uso de la arquitectura de 32 bits en Modo Real. 2. Introducción al Sistema de Protección. 2.a. Requerimiento de los Sistemas Operativos Multitasking a los procesadores

avanzados de 32 bits. Memoria virtual: Concepto y funcionamiento de un subsistema clásico de

Memoria Virtual. Entorno de protección entre tareas: Áreas de memoria públicas y privadas Multitasking: Sistemas Operativos Multitasking por Time Slicing y Real Time. Capacidad de direccionamiento: Relación con el alojamiento de múltiples

tareas en memoria. Capacidad de procesamiento: Necesidad de ejecutar y conmutar a gran

velocidad las tareas en curso. 2.b. Recursos que emplean los procesadores de Intel 80386 y superiores para

satisfacer estos requerimientos: 2.c. Modelos de Programación:

Programación de Aplicaciones: Registros del procesador (propósito general). Programación de Sistemas: Registros del procesador (propósito general mas

registros de debug, control, tareas, tablas de descriptores). 2.d. Administración de los privilegios de las aplicaciones: Introducción al

modelo de anillos. 2.e. Unidad de Gestión de Memoria (MMU) Parte I: Unidad de Segmentación. Segmentación: Datos necesarios para describir un segmento en Modo Protegido. Selectores (Registros) de segmento: tamaño de un registro de segmento vs. Información necesaria para describir un segmento: Necesidad de emplear estructuras auxiliares al procesador: Descriptores de Segmento: Estructura y tipos, Tablas de

descriptores Global y Locales. Mecanismo de acceso a un segmento por parte de la MMU a partir de un selector. Estructura de un selector. Registros asociados del procesador para el manejo de las tablas de descriptores en memoria. Análisis de los bits de Atributos de un descriptor. Atributos, Bit S=1. Bits de atributos para manejo de memoria virtual (P, y A). Presentación de un algoritmo de Administración de memoria virtual basado en segmentación. 3. Introducción a la programación en Modo protegido. Modos de organización de las

tablas de descriptores. Pasos para poner al procesador en Modo Protegido. Práctica 1:30 hs. Laboratorio. Exposición Práctica a cargo del docente, usando las herramientas de desarrollo bajo LINUX. Desarrollo de programas para pasar al Modo Protegido. Metodología de dificultad incremental. Se parte de un pequeño y simple programa que pone al procesador en Modo Protegido y sale sin mas. Se continúa tratando de acceder a segmentos agregando GDT con un mínimo de descriptores. Programas con segmentos de mas de 64K. Big Real Mode. Ejemplos. Inicialización. Armado de estructuras para los segmentos. Técnicas de armado de código para limpiar las colas internas del procesador y salto largo para cargar el descriptor de código en el caché del CS TRABAJO PARA PROXIMA CLASE: - Lectura de los temas desarrollados en esta clase. - Ejercicio de aplicación en C y Assembler:

• Realizar un programa en Assembler que pase a Modo Protegido al procesador y llame a una rutina en C que imprima la frase “Hola Mundo” en pantalla.

Clase 4: Semana del 18 de Abril Procesadores x86. Modo Protegido. Manejo de Interrupciones y Excepciones Objetivo: Introducir el manejo de excepciones e interrupciones en modo protegido. Material de la cátedra: Procesador IA-32 – Clase2.pdf Entregables:

• Entrega del ejercicio solicitado en la clase anterior. • Trabajo práctico de entrega obligatoria de Bus ISA

Test de Lectura N° 3 sobre los temas vistos en la clase anterior. Teórica 1:30 hs. 1. Interrupciones y Excepciones en Modo Protegido

Repaso de la estructura de un descriptor. Atributos, Bit S=0. Descriptor de sistema, enfoque como mecanismo de acceso a recursos o procedimientos en lugar de medio de acceso a un segmento específico. Descriptores de Interrupción. Tabla de Descriptores de Interrupción. Registros Asociados. Excepciones: Descriptores de Excepción. Principales casos vistos hasta el momento: Fallo de Página, segmento no presente.

Práctica 2:30 hs Laboratorio. Exposición Práctica a cargo del docente, utilizando las herramientas de desarrollo bajo LINUX. Continuación del programa visto en la clase 3 con la incorporación de interrupciones. Manejo de excepciones. Tablas de descriptores Interrupción. Inicialización.

Problemática planteada por la superposición de las interrupciones del PIC1 con las excepciones del procesador. Modalidades de tratamiento para resolver la situación al manejar excepciones. Soluciones que aplican los Sistemas Operativos en la práctica. Acceso al controlador de Interrupciones. Manejo de Interrupciones. Manejo de teclado y timer tick, port serie. TRABAJO PARA PROXIMA CLASE: - Lectura de los temas desarrollados en esta clase. - Ejercicio de aplicación en Assembler:

• Realizar un programa en Assembler que pase a Modo Protegido al procesador y espere 5 segundos antes de volver a Modo Real (utilice el timer tick para tal fin).

Clase 5: Semana del 25 de Abril Laboratorio. Práctica a cargo del ayudante de TP. Objetivo: Introducir al alumno a la programación en Modo Protegido. Se debe lograr que el alumno desarrolle su código. La misión de los docentes es asistirlo en el uso de las herramientas de programación y en la adquisición mediante la práctica de las técnicas de programación y debugging. Entregables:

• Entrega del ejercicio solicitado en la clase anterior. Test de Lectura N° 4: sobre los temas vistos en la clase anterior. Práctica 3:45 hs. Desarrollo de programas por parte de los alumnos con la asistencia de los docentes. Se estimulará el uso de las herramientas de desarrollo en entorno LINUX de modo de familiarizar a los alumnos con dicho entorno que será el que utilizará en el segundo cuatrimestre. Combinar las aplicaciones desarrolladas en las clases 1 y 2, para que trabajen en Modo protegido. Introducción a la programación en diferentes archivos fuentes. Uso del debugger de Bochs para la detección de bugs en los programas de modo protegido. Estimular en los alumnos la aplicación de una metodología para la deducción del problema. Técnicas de depuración de programas en Modo Protegido: Generación de archivos LST para combinar con la información del debugger de Bochs en la identificación del punto de falla. Armado de rutinas de manejo de excepciones que permitan obtener información del problema. Uso de los comandos info gdt e info idt para visualización de las tablas de descriptores. TRABAJO PARA PROXIMA CLASE: - Lectura de la documentación de bochs. - Ejercicio de uso de bochs

• Tomar el programa entregado en esta clase que pone en Modo Protegido al procesador y espera 5 segundos antes de volver a Modo Real utilizando el timer tick, y setearle un breackpoint en el inicio de la rutina de timer tick, dumpear la variable de memoria que contiene la cuenta necesaria para esperar 5 segundos. Capturar las pantallas correspondientes al primer y el último dump, de modo que se vea claramente el sitio del programa en el

que está detenido, y el valor de la variable junto con los comandos que utilizó para setear el breack point y dumpear la variable. Elaborar un informe con las conclusiones y los gráficos de captura de pantalla.

Clase 6: Semana del 2 de Mayo Laboratorio. Práctica a cargo del ayudante de TP. Objetivo: Lograr que el alumno pueda hacer funcionar su código de manejo de interrupciones y pasaje a modo protegido. Trabajar en diferentes variantes de las operaciones básicas que realiza el programa. Se debe trabajar en desestructurar la tendencia a memorizar “la forma de resolver” y reemplazarla por un razonamiento lógico que le permita generar código de manera natural en base a los conceptos teóricos tratados en el curso. El alumno debe alcanzar este logro antes del primer parcial. Entregables:

• Entrega del ejercicio solicitado en la clase anterior. Test de Lectura N° 5 sobre los temas vistos en la clase anterior (bochs debugger) Práctica 3:45 hs. Desarrollo de los programas de la guía de TP a cargo de los alumnos con la asistencia de los docentes. Se estimulará el uso de las herramientas de desarrollo en entorno LINUX de modo de familiarizar a los alumnos con dicho entorno que será el que utilizará en el segundo cuatrimestre. Intensificación del uso del debugger de Bochs para la detección de bugs en los programas de modo protegido. TRABAJO PARA PROXIMA CLASE: - Lectura de la documentación de nasm - Ejercicio de uso avanzado de nasm.

• Tomar el programa entregado para esta clase y modificarlo de modo de usar al menos una subrutina escrita en un archivo .asm separado, y utilizando estructuras para los descriptores. El programa principal debe tener un comentario en su encabezado con los comandos necesarios para compilar cada módulo, y linkear el conjunto.

Clase 7: Semana del 9 de Mayo Procesadores x86 - Modo Protegido: Multitasking y Mecanismos de Protección. Objetivo: Incorporar al temario de trabajo del alumno las capacidades de conmutación de tareas y los mecanismos de protección del procesador. El alumno debe comprender ambos mecanismos desde los fundamentos teóricos basados en la arquitectura hasta su aplicación. Material de la cátedra: Procesador IA-32 – Clase3.pdf Entregables:

• Entrega del ejercicio solicitado en la clase anterior. Test de Lectura N° 6 sobre los temas vistos en la clase anterior (nasm, compilación) Teórica: 2:15 hs. Mecanismos y Niveles de Protección. Puertas de llamada. Cambio de nivel de privilegio a través de compuertas de Interrupción. Manejo del stack en cambios de nivel. Mecanismos de seguridad para evitar accesos indebidos (escenario del caballo de Troya).

Instrucciones privilegiadas y protegidas. Impacto en el desarrollo de software en Modo Protegido. Conmutación de tareas. Registros asociados. Contexto de ejecución del procesador. Segmento de Estado de Tareas. Mecanismos para la conmutación de tareas. Puertas de tarea. Práctica 1:30 hs. Se intensificará el uso de las herramientas de desarrollo en entorno LINUX de modo de familiarizar a los alumnos con dicho entorno que será el que utilizará en el segundo cuatrimestre. Tomar el programa entregado para esta clase por el alumno y proponer modificarlo de manera que el timer tick se maneje mediante una puerta de tarea en la IDT. Desarrollo en el handller del timer tick de un scheduler sencillo que conmute dos tareas. El código de la tarea a presentar será trivial. Lo importante es presentar el mecanismo de conmutación. Reemplazar la puerta de tarea en el descriptor de la IDT correspondiente al timer tick por una puerta de interrupción. Analizar las modificaciones que se requieren en el código del scheduler debidas a este cambio en el descriptor. Deseable: avanzar con puertas de llamada, mostrando el mecanismo de acceso a tareas de nivel 0 que acceden al hardware, desde tareas de nivel 3, sin tales privilegios. TRABAJO PARA PROXIMA CLASE: - Lectura de los temas vistos en teoría en esta clase - Uso de Bochs para analizar los casos de puerta de interrupción y de tarea en el scheduler del timer tick.

• Ejecutar paso a paso en Bochs ambos programas de scheduler con puerta de tarea y con puerta de interrupción en la IDT. Redactar un informe con el análisis de los siguientes ítems

o Como se manejan los contextos de ejecución en cada caso. Elaborar conclusiones.

o Cual es el punto de inicio del handler de interrupción en cada caso, al generarse una nueva interrupción.

Clase 8: : Semana del 16 de Mayo Procesadores x86 - Modo Protegido: Paginación de memoria Objetivo: Introducir al alumno en el manejo de la memoria incorporando la unidad de paginación del procesador. Material de la cátedra: Procesador IA-32 – Clase1.pdf Entregables:

• Entrega del ejercicio solicitado en la clase anterior. Test de Lectura N° 7 sobre los temas vistos en la clase anterior Teórica: 1:30 hs. 1. Unidad de Gestión de Memoria (MMU) Parte II: Unidad de Paginación.

Paginación: Inconvenientes en la Administración de la memoria virtual por segmentos. Presentación de la Administración de memoria por páginas: Características fundamentales de la paginación. Ventajas de su uso en la Administración de Memoria Virtual. Mejoras en el algoritmo de Administración por segmentación. Acceso a las páginas por parte del procesador: Necesidad de un Descriptor de Página. Administración de los descriptores de páginas mediante

estructuras en árbol: Motivación e implementación. Implementación de esta forma de organización en la IA-32: Directorio de Tablas de Páginas, tablas de descriptores de página. Concepto de Dirección Lineal y Dirección Física. Mecanismos de acceso a una página por parte de la MMU. Mejoras de la paginación en el manejo de VM. Implementación en los sistemas operativos reales.

Laboratorio. Prácticas a cargo del ayudante Objetivo: Explicar un programa de manejo de memoria por paginación anticipando este importante punto de administración de un sistema operativo. Práctica 2:15 hs. Exposición por parte de los docentes de un programa que habilite la Unidad de Paginación del procesador, inicialice el Directorio de tablas de páginas, y las páginas necesarias. Análisis de cómo quedan las direcciones física y lógica. En el tiempo restante de clase, desarrollar un scheduler que maneje una lista de n tareas en donde n no es constante. Debugging de tareas con Bochs y los archivos LST generados por el ensamblador. Trabajo en la puesta a punto de los programas de la guía. TRABAJO PARA PROXIMA CLASE: - Lectura de los temas vistos en teoría en esta clase - Resolución de un problema de paginación de memoria a nivel numérico. La instrucción mov ax, [esi] corresponde a una tarea que al momento de su ejecución tiene: ds:esi = 23h:9F0A02EBh, y CR3 = 0000F000h. ds está inicializado con un selector que en la GDT corresponde a un segmento de 4 Gbytes con base en 0h y DPL = 00. Las tablas de descriptores de página se ubicarán en memoria física a continuación del Directorio de Tabla de Páginas (DTP), en el mismo orden en el que se encuentran sus descriptores correspondientes en el DTP. De modo que el modelo

queda del siguiente modo: Determinar: a. Los valores de Base_DTP, n, Base_TP, y m. b. El valor de PTBAn, que debe llevar el descritor Nro. n del DPT de acuerdo a los datos del problema. c. El valor de PBAm para que el objeto seleccionado por es:edi mapee sobre la dirección 100012Ebh

Clase 9: Semana del 23 de Mayo Laboratorio. Prácticas a cargo del ayudante de TP Objetivo: Consolidar los conceptos de conmutación de tareas a través de su aplicación práctica

Tablas de Página

Base_TP0 1

mPBAm Indexm

Directorio de Tablas de Página (DTP)

Base_DTP 01

nPTBAn Indexn

Entregables: • Entrega del ejercicio solicitado en la clase anterior.

Test de Lectura N° 8 sobre los temas vistos en la clase anterior Práctica 3:45 hs. Análisis de un scheduler que maneje una lista de tareas cuya cantidad pueda variar. Las tareas siempre deben ser sencillas, haciéndose especial énfasis en la administración de las mismas. Trabajo en la puesta a punto de los programas de la guía combinando C y Assembler. Es conveniente que los alumnos traigan los archivos fuente pre desarrollados para terminar de ponerlos en condiciones de funcionamiento en el laboratorio. Desarrollo de programas que manejen tareas en diferentes niveles de privilegio. Aplicación de las Técnicas cambio de nivel de privilegio de tareas. Debugging de estas tareas con Bochs y los archivos LST generados por el ensamblador. Trabajo en la puesta a punto de los programas de la guía. TRABAJO PARA PROXIMA CLASE: - Lectura de los temas vistos en teoría en esta clase - Ejercicio.

• Entregar un scheduler genérico para un número variable de tareas con prioridad medida en ciclos de timer tick.

Clase 10: Semana del 30 de Mayo Procesadores de 32 bits – Micro Arquitecturas IA-32 Objetivo: Introducir al alumno en los detalles de Arquitectura de los procesadores de 32 bits por medio del análisis de una arquitectura en particular de modo de transmitir un enfoque práctico y concreto. Pasando de conceptos generales a casos particulares donde pueda hacerse tangible el concepto general. Se toma como caso particular la arquitectura IA-32 por ser la mas completa y que además presta especial utilidad para transmitir la idea de escalabilidad . Se debe llegar a exponer el estado del arte de esta arquitectura, y su comparación con otras similares. Material de la cátedra: Procesador IA-32 – Clase4.pdf Entregables:

• Entrega del ejercicio solicitado en la clase anterior. Test de Lectura N° 10 sobre los temas vistos en la clase anterior Teórica 3:45 hs. Arquitectura de un procesador de 32 bits. Procesadores superescalares. Paralelización de instrucciones. Limitaciones del modelo. Modelo CISC vs. Modelo RISC. Memoria caché. Su finalidad. Criterios de Vecindad espacial y temporal para la administración de su contenido. Controlador de Memoria Cache - Mapeo directo - Mapeo Asociativo n vías. Bus local. Introducción a la arquitectura del IA-32. Arquitectura Pipeline del 80386. El 80486 y el segundo nivel de caché. Procesadores Pentium: Arquitectura Superescalar, Ejecución paralela, Branch Prediction. Pentium Pro: Super integración del Caché de 2do. Nivel Ventajas. Evolución de la Arquitectura Superescalar. Ampliación de unidades de ejecución. Ejemplos con procesadores Pentium II, III, y IV (Micro Arquitectura Net Burst).

Estado del arte Hyper threading. Multiprocesamiento. Capacidades y Sistema Avanzado de Interrupciones (APIC) TRABAJO PARA PROXIMA CLASE: - Lectura de los temas vistos en teoría en esta clase - Comentarios del paper “Deborah T. Marr et. al. Hyper-Threading Technology Architecture and Microarchitecture”. Documento Word de 2 carillas verdana 10 p, interlineado simple, A4, márgenes default.

Clase 11: Semana del 6 de Junio Procesadores IA -32 – Extensiones Multimedia – Introducción al Procesamiento Digital de Señales Objetivo: Presentar el modelo de Ejecución SIMD, y su implementación en los procesadores IA-32, a través de las Tecnologías MMX, SSE, SSE2, SSE3, 3D-Now. Desarrollar aplicaciones de Procesamiento de Señales. Material de la cátedra: Procesador IA-32 – Clase5.pdf Entregables:

• Entrega del ejercicio solicitado en la clase anterior. Test de Lectura N° 9 sobre los temas vistos en la clase anterior Modelo de ejecución SIMD. Necesidades de procesamiento Multimedial. Formatos numéricos. Representación en punto flotante. Standard IEEE 574. Tecnología MMX. Puede un procesador de estas características emplearse en Procesamiento Digital de Señales? Operaciones empaquetadas. Aritmética Saturada y de desborde. Set de instrucciones. Extensiones para Procesamiento Digital de Señales: Tecnologías SSE, SSE2, SSE3. Algoritmos empleando la implementación del modelo SIMD en procesadores IA-32. TRABAJO PARA PROXIMA CLASE: - Lectura de los temas vistos en teoría en esta clase - Ejercicio.

• Escriba el código de una rutina que calcule la convolución entre dos arreglos de valores discretos utilizando extensiones multimedia.

Clase 12: Semana del 13 de Junio Laboratorio. Prácticas a cargo del ayudante Objetivo: Consolidar los conceptos de conmutación de tareas a través de su aplicación práctica Entregables:

• Entrega del ejercicio solicitado en la clase anterior. • Entrega del Trabajo Práctico Obligatorio de Modo Protegido.

Test de Lectura N° 11 sobre los temas vistos en la clase anterior Práctica 3:45 hs. Puesta a punto de la rutina de convolución traída por los alumnos como entregable de clase. Desarrollo de rutinas de Procesamiento Digital de Señales utilizando las instrucciones SIMD. Estas rutinas se escriben íntegramente en assembler en archivos separados de modo de incluirlas en estos ejemplos de modo protegido como tareas, o para ser utilizadas en el segundo cuatrimestre invocándolas desde programas de procesamiento de Audio bajo Linux.

Introducción al in-line assembler desde un programa en C. Criterios de utilización de esta alternativa frente a un archivo .asm separado. TRABAJO PARA PROXIMA CLASE: - Lectura adelantada de material para la clase próxima: Paper “USB in a nutshell”. Fuente página de TDIII en http://www.electron.frba.utn.edu.ar - Ejercicio

• Escribir en in-line assembly, un programa que copie un buffer de memoria a otro sitio de la RAM. Ambos punteros se reciben como argumentos.

Clase 13: Semana del 20 de Junio Arquitectura de la PC -Buses de expansión: El Universal Serial Bus Objetivo: Capacitar al alumno en la comprensión del protocolo que maneja el USB enfocándolo a los aspectos necesarios para construir dispositivos periféricos conectables a este bus. Entregables:

• Entrega del ejercicio solicitado en la clase anterior. Test de Lectura N° 12 sobre “USB in a nutshell” Material de la cátedra: USB.pdf Descripción y uso del USB. Características principales. Especificación 1.1 e introducción a USB especificación 2.0. Especificaciones eléctricas, detección del attach de un dispositivo y condiciones de alimentación de los dispositivos. Normas para desarrollo de un host controller. Hubs. Descripción pormenorizada del frame de datos: Concepto de Transacción, Paquetes que componen cada transacción (Token, Data , Handshake), Estructura de un paquete (PID, Info Adicional, CRC). Definición de Endpoint, Pipe, Interfaz, y Configuración. Tipos de transferencias: características distintivas y casos de aplicación. Proceso de Enumeración: Descripción de los pasos que se siguen desde la conexión de un dispositivo al USB hasta que se llega a la condición de poder operar con él. Clases de dispositivos. La clase HID. Ventajas de simular un dispositivo personalizado como HID. Criterios de selección de hardware: Controlador stand alone (9603) vs. Controladores embebidos (AN2131, C8051F320/321, basados en 8051, o PIC’s de Microchip). Ventajas y fortalezas de cada modelo. Tendencias. Estructura de un controlador de nodo USB: SIE (Serial Interface Engine), MAC (Media Access Control), lógica de endpoints, registros de clock, manejo de interrupciones hacia el microprocesador. TRABAJO PARA PROXIMA CLASE: - Lectura de los temas vistos en teoría en esta clase - Resolución del trabajo práctico Obligatorio de USB.

Clase 14: : Semana del 27 de Junio Laboratorio. Prácticas a cargo del ayudante Objetivo: Consolidar los del primer cuatrimestre a través de su aplicación práctica Entregables:

• Trabajo práctico de entrega obligatoria de USB. Test de Lectura N° 13 sobre los temas vistos en la clase anterior

Práctica 3:45 hs. Desarrollo por parte de los alumnos de programas que manejen tareas. Aplicación de las Técnicas de conmutación de tareas por parte de los alumnos asistidos por los docentes del curso. Debugging de tareas con Bochs y los archivos LST generados por el ensamblador. Trabajo en la puesta a punto de los programas de la guía. TRABAJO PARA PROXIMA CLASE: - Entrega de la versión final corregida del trabajo práctico Obligatorio de Modo Protegido.

Clase 15: Semana del 4 de Julio Laboratorio. Prácticas a cargo del ayudante Objetivo: Consolidar los del primer cuatrimestre a través de su aplicación práctica Entregables:

• Versión final corregida del trabajo práctico Obligatorio de Modo Protegido. Test de Lectura N° 14 sobre los temas vistos en la clase anterior Práctica 3:45 hs. Desarrollo por parte de los alumnos de programas que manejen tareas. Aplicación de las Técnicas de conmutación de tareas por parte de los alumnos asistidos por los docentes del curso. Debugging de tareas con Bochs y los archivos LST generados por el ensamblador. Trabajo en la puesta a punto de los programas de la guía. Ejercicios tipo Parcial.

Vacaciones / Mesas de examen Final Clase 16: Semana del 1 de Agosto

1er. Examen Parcial. Clase 17: Semana del 8 de Agosto Sistemas Operativos Multitasking: Objetivo: Introducir al alumno al conocimiento de la arquitectura de los sistemas operativos multitasking basados en procesadores de 32 bits. Articular cada concepto de este tema con los procesadores estudiados en el primer cuatrimestre, analizando el uso o descarte de cada recurso del procesador en el diseño de un Sistema Operativo tomado como caso práctico de aplicación, para lo cual se trabajará con uno ampliamente difundido. Material de la cátedra: presentacion_td3_linux.v.5.pdf Teórica 3:45 hs. 1. Introducción general a los sistemas operativos multitasking. Clasificación de los diferentes sistemas operativos. Enunciación de las características principales y distintivas de cada tipo. Estructura de un Sistema Operativo Multitasking. Concepto de Máquina Virtual. Características de los Sistemas Operativos Modernos: Arquitectura Microkernel, Multithreading, Multiproceso Simétrico. Diseño Orientado a Objetos. Sistemas Operativos Distribuidos 1. Caso de estudio detallado: Linux. Descripción del kernel:

1.a. Arquitectura: Modelo de ejecución en modo User y en Modo Kernel, Manejo de los stacks, reentrancia. System Calls.

1.b. Manejo de la memoria. Modelo de Segmentación utilizado en Linux. Definición en el Sistema de los Segmentos basados en los recursos que provee la arquitectura IA-32 estudiada en el primer cuatrimestre. Modelo de Gestión de la Memoria Virtual: Uso de la Paginación en el sistema.

1.c. Manejo de los procesos. Process Descriptor. Task Array. Estados de ejecución de los procesos. Identificación de un proceso (PID). La lista de Procesos. Parentesco entre procesos. Como se retoma un proceso puesto a dormir: Colas de Espera. Limitaciones en cantidad de procesos.

1.c.i. Conmutación de procesos. Relación con la TSS de lso procesadores IA-32 estudiados en el primer cuatrimestre.

1.c.ii. Creación de procesos. Clone ( ), Fork ( ), vfork ( ). Terminación de procesos exit ( ).

1.c.iii. Threads. Concepto diferencia entre crear una imagen del proceso actual con fork ( ), y un thread con pthread_create ( ). POSIX Threads versus Linux Threads.

1.c.iv. Concepto de Kernel Threads. El proceso swapper o proceso 0. INIT el proceso 1. 1.c.v. Comandos del shell para el control y visualización de los procesos: “ps" “top”.

Espacio de Direccionamiento del proceso (Understanding the Linux Kernel – Bovet Pág. 183).

1.c.vi. Ejecución de Múltiples hilos (Multithreading). Las primitivas fork( ) system( ) excecl ( ) execlp( ). Explicación de la función de cada tipo de primitiva y del manejo que hace con el espacio de direcciones del proceso. Ejemplos.

TRABAJO PARA PROXIMA CLASE: - Lectura de los temas desarrollados en esta clase. - Ejercicio de aplicación en C:

• Escriba un programa que cree un proceso hijo mediante fork. El programa tendrá una variable global, inicializada en 0. Luego de crear el proceso hijo el padre imprime el contenido de la variable global. El proceso hijo incrementa la variable global y luego la presenta

• Elabore una discusión acerca del orden de los mensajes en stdout y el valor de la variable global en cada caso.

Clase 18: Semana del 15 de Agosto Estructura de un Sistema Operativo Multitasking. Caso de estudio detallado: Linux. Objetivo: Continuar el análisis de la arquitectura de los sistemas operativos multitasking basados en procesadores de 32 bits, ya inmersos en el caso de estudio del curso: LINUX. Se continuará articulando cada concepto con los conocimientos adquiridos al estudiar los procesadores IA-32. Material de la cátedra: presentacion_td3_linux.v.5.pdf , y discos.pdf Entregables:

• Entrega del ejercicio solicitado en la clase anterior. Test de Lectura N° 15 sobre temas vistos en la clase anterior Teórica 3:45 hs. 1. El Scheduler.

Política de scheduling. Preemption. El Algoritmo de scheduling. La función schedule ( ). System Calls relacionadas con el scheduler: nice ( ), setpriority ( ), getpriority (

). System Calls relacionadas con Procesos Real Time: sched_getscheduler( ), sched_setscheduler( ), sched_getparam( ), sched_setparam( ), sched_yield( ), sched_get_priority_min( ) and sched_get_priority_max( ), sched_rr_get_interval( ).

2. Manejo de Interrupciones y Excepciones. Armado de la IDT. Relación con los procesadores IA-32 estudiados en el primer cuatrimestre.

3. Arquitectura SMP Introducción. Área de Memoria Común. Sincronización de Caché. Manejo distribuido de Interrupciones Control del sistema APIC.

4. File System. 4.a. Disco Flexible:

Breve exposición de la estructura y funcionamiento de un drive y estructura de los discos de 3 ½”. Formato del sector de arranque para disquetes con formato DOS (se utiliza este formato ya que es reconocido por todos los Sistemas Operativos, aún los que no son de autoría de Microsoft. Objetivo: Poder generar nuestros propios programas de arranque. Uso de la INT 13h del BIOS. Formato de un disco bajo DOS: Directorio Raíz, cluster, FAT.

4.b. Disco Rígido: Estructura de los discos rígidos: Drive y controlador, Master Boot Record. Concepto de Partición de disco. Mecanismos que utilizan los Programas Maestros de arranque para seleccionar una partición: LILO, o GRUB para LINUX, o el Master Boot de Windows 2000, o programas de terceras partes. Interfaz ATAPI: Direcciones de E/S y Registros asociados. Ejemplos de acceso físico al disco.

4.c. Concepto general de File System. Estructura lógica del disco en Linux. Concepto, estructura y contenido de un i-nodo. Comandos del shell para la visualización y manejo del sistema de archivos: ls, cp, mkdir, rm, df.

TRABAJO PARA PROXIMA CLASE: - Lectura de los temas desarrollados en esta clase. - Ejercicio de aplicación en C:

• Para el programa realizado para esta clase modificar la prioridad del proceso hijo en el momento de su creación desde el proceso padre, de modo que sea la mas alta posible.

• Elabore una discusión acerca de cómo tuvo que ejecutar el programa para que opere de acuerdo con lo requerido.

Clase 19: Semana del 22 de Agosto Estructura de un Sistema Operativo Multitasking. Caso de estudio detallado: Linux. Objetivo: Capacitar al alumno en los primeros recursos de programación en el entorno del sistema operativo Linux. Uno de los puntos mas salientes es la intercomunicación de procesos, además de las llamadas al kernel mas comunes. Todos estos conceptos se articularán con los conocimientos de ANSI C traídos por los alumnos de Informática I y II. Entregables:

• Entrega del ejercicio solicitado en la clase anterior. Test de Lectura N° 16 sobre temas vistos en la clase anterior Teórica 1:45 hs.

Mecanismos de Intercomunicación de Procesos (IPCs). Señales. Pipes. FIFOs. File Locking. Semáforos, Colas de Mensajes, Shared Memory Segments. Práctica 2:00 hs. Uso del entorno Linux para desarrollo de aplicaciones en lenguaje C. Concepto de sesión. Desarrollo de aplicaciones sencillas para familiarizar al alumno con el entorno. Manejo del gcc. Programas simples con manejo de procesos y algunos IPCs sencillos. Uso de fork () conceptos de proceso hijo y proceso padre. Comando kill. Primitiva kill (). Señales TRABAJO PARA PROXIMA CLASE: - Lectura de los temas desarrollados en esta clase. - Ejercicio de aplicación en C:

• Primer ejercicio de señales y de FIFO’s de la guía de Trabajos prácticos.

Clase 20: : Semana del 29 de Agosto Laboratorio. Prácticas a cargo del ayudante Objetivo: Aplicar los conceptos vistos en las clases teóricas a cargo del profesor en el manejo de aplicaciones que optimicen el consumo de recursos para el sistema Entregables:

• Entrega del ejercicio solicitado en la clase anterior. Test de Lectura N° 17 sobre temas vistos en la clase anterior Práctica 3:45 hs. Desarrollo de programas. Uso de system calls. Manejo de archivos. Uso de IPCs: Señales y pipes. FIFO’s y colas de mensajes. Introducción del concepto de reemplazo de un proceso por otro. Primitiva excelp (). Ejecución de shell scripts para monitoreo del sistema y comprobación del consumo de los recursos del sistema involucrados en los programas de aplicación. Visualización de pipes entre aplicaciones existentes. Operador '|'. Búsqueda de procesos. TRABAJO PARA PROXIMA CLASE: - Lectura de los temas desarrollados en esta clase. - Ejercicio de aplicación en C:

• Programa que cree un message queue, y dos procesos hijos. Cada proceso recibe solo aquellos mensajes que tengan como mtype su propio PID.

Clase 21: Semana del 5 de Setiembre Laboratorio. Prácticas a cargo del ayudante Objetivo: Aplicar los conceptos vistos en las clases teóricas a cargo del profesor en el manejo de aplicaciones que optimicen el consumo de recursos para el sistema Entregables:

• Entrega del ejercicio solicitado en la clase anterior. Test de Lectura N° 18 sobre temas vistos en la clase anterior Práctica 3:45 hs. Desarrollo de programas de manejo de threads. Cotejando los resultados con los programas que hacen uso de fork () para crear hilos de procesamiento en procesos separados, obtener conclusiones. Uso de semáforos mutex para sincronizar el acceso a recursos comunes entre threads. TRABAJO PARA PROXIMA CLASE:

- Lectura de los temas desarrollados en esta clase. - Ejercicio de aplicación en C:

• Tome el programa solicitado en la clase 17 y reemplace la system call fork () por otra que en lugar de crear un proceso cree un thread.

• Reelabore la discusión en función del resultado por stdout de su ejecución

Clase 22: Semana del 12 de Setiembre Estructura de un Sistema Operativo Multitasking. Caso de estudio detallado: Linux. Diseño de Device Drivers. Objetivo: En base a los conceptos de Protección estudiados durante el primer cuatrimestre, y en base a la implementación práctica realizada con lso procesadores IA-32, introducir el concepto de acceso a los dispositivos de E/S en un entorno de protección, a través de módulos especiales del Sistema Operativo denominados Device Drivers. Poner en términos prácticos estos conceptos, presentando al alumno la plataforma de soporte del Sistema Operativo Linux para diseñar Device Drivers. Posibilitarle con estos elementos la capacidad de manejar su propio Hardware u otro diseñado por terceros. Material de la cátedra: presentacion_td3_linux.v.5.pdf Entregables:

• Entrega del ejercicio solicitado en la clase anterior. Test de Lectura N° 19 sobre temas vistos en la clase anterior Teórica 2:00hs Acceso a la E/S en sistemas Multitasking. Problemas de la concurrencia de accesos. Necesidad de administración de cada dispositivo mediante un software que permita regular el acceso desde los diferentes procesos que lo requieran. Device Drivers: Función dentro de un Sistema Operativo. Clasificación: Caracter, Bloque, Network, y Misceláneos. Características de cada uno. Caso de implementación : LINUX. Modelo de programación de Device Drivers. El directorio /dev. Números Mayor y Menor. Tratamiento del driver como un archivo. Mapeo del API del sistema Operativo sobre el hardware: La estructura "file_operations". Instalación de un device driver: Método en las viejas versiones UNIX: Relinkeo contra el kernel, Método actual: ejecución como Modulo. Ventajas y desventajas de cada caso. Estructura de un módulo en Linux. Instalación y desinstalación. Comandos de shell necesarios. Ejecución desde root: motivos. Funciones del módulo que trabajan de entry point en cada caso. Funciones del kernel utilizables por los drivers. Registro del driver. Manejo del buffer de datos desde especio User a espacio Kernel y viceversa. Uso de interrupciones de hardware desde el driver. El file system /proc. Práctica 1:45hs Ejemplos de desarrollo. Análisis exhaustivo del código de "serial.c": (driver genérico para un port serie standard). Manejo de las Interrupciones: Funciones del kernel relacionadas. Uso de las funciones internas del kernel para:

Intercambio de los datos desde el buffer de memoria de Modo User al de Modo Kernel

Creación de colas de espera para despertar al proceso cuando arribe una interrupción

Manejo del estado del proceso cuando es necesario esperar datos desde el dispositivo de hardware.

Instalación y remoción del driver. Registro y desregistro. Demostración práctica de su funcionamiento. Análisis del file system virtual /proc para monitorear los recursos asignados y la instalación del módulo. TRABAJO PARA PROXIMA CLASE: - Lectura de los temas desarrollados en esta clase. - Ejercicio de aplicación en C:

• Tome el código presentado en clase, y compilelo en un kernel 2.4.x. • Conecte al port serie controlado por el driver un equipo que sea capaz de

enviar caracteres • Vuelque sobre stdout el contenido de /proc/interrupts, y /proc/modules. • Instálelo y vea el resultado en /proc/modules. • Escriba un programa que lo lea y presente en stdout los caracteres que recibe.

Una vez abierto el nodo /dev/ser vea el contenido de /proc/interrupts nuevamente

• A medida que sigue recibiendo chequee el contenido de /proc/interrupts y documente los cambios acaecidos.

• Elabore un informe con los resultados, explicando las causas de los comportamientos descriptos.

Clase 23: Semana del 19 de Setiembre Laboratorio. Prácticas a cargo del ayudante Objetivo: Trabajar en el desarrollo de aplicaciones uniendo conceptos en manejo de recursos del sistema en IPCs, archivos, y drivers. Concepto de acceso simultáneo a múltiples recursos que bloquean al proceso hasta responder con los datos solicitados. Entregables:

• Entrega del ejercicio solicitado en la clase anterior. Test de Lectura N° 20 sobre temas vistos en la clase anterior Práctica 3:45hs. Desarrollo de procesos más elaborados. Uso de select () y fcntl (), para manejo de acceso simultáneo a múltiples recursos bloqueantes. Generación de alarmas. Syscall alarm (). Acceso a drivers standard del sistema. Acceso al /dev/dsp para el manejo de la placa de sonido del sistema desde una aplicación. Desarrollo de aplicaciones de Procesamiento Digital de Señales con la señal de entrada del dispositivo de audio. Combinar estos programas con los módulos escritos en Assembler utilizando instrucciones SIMD durante el primer cuatrimestre. TRABAJO PARA PROXIMA CLASE: - Lectura de los temas desarrollados en esta clase. - Ejercicio de aplicación en C:

• Escriba un programa que espere datos desde un FIFO, el dispositivo serie del programa entregado en esta clase, y que además genere una demora de 60 segundos luego de los cuales no continúe esperando datos y finalice su ejecución.

• Analice el comportamiento si se envía una señal cualquiera mientras está bloqueado

• Incluya la espera de un mensaje por una message queue • Elabore un informe con los resultados, explicando las causas de los

comportamientos descriptos.

Clase 24: Semana del 26 de Setiembre Laboratorio. Prácticas a cargo del ayudante Objetivo: Trabajar en el desarrollo de aplicaciones de Procesamiento Digital de Señales utilizando el dispositivo de audio. Limitaciones del kernel No Real Time de Linux. Entregables:

• Entrega del ejercicio solicitado en la clase anterior. Test de Lectura N° 21 sobre temas vistos en la clase anterior Práctica 3:45hs. Desarrollo de programas de filtrado digital, y demás rutinas típicas de Procesamiento Digital de Señales. Efectos de audio. Eco simple y doble Comparación de tiempos de ejecución entre rutinas de DSP en C y en assembler utilizando el modelo SIMD. TRABAJO PARA PROXIMA CLASE: - Lectura de los temas desarrollados en esta clase. - Ejercicio de aplicación en C y Assembler:

• Escriba un programa que lea audio desde el dispositivo /dev/dsp y aplique el algoritmo de convolución presentado en la clase 12 (1er. Cuatrimestre). tomando de a 1024 muestras.

• Efectúe el mismo algoritmo en C • Mediante la lectura del registro TSC del procesador calcule la cantidad de ciclos

de clock insumidos en cada caso. • Elabore un informe con los resultados, explicando las causas de los

comportamientos descriptos.

Clase 25: Semana del 3 de Octubre Redes de Datos. Objetivo: Capacitar al alumno para comprender el funcionamiento de un sistema de comunicaciones de datos desde el punto de vista del diseño de aplicaciones como las vistas hasta el momento, agregando la capacidad de intercomunicarlas a través de una red de datos. Se opta por el protocolo TCP/IP como base de trabajo por ser el mas ampliamente difundido. Material de la cátedra: Sistemas de Comunicaciones de datos.pdf Entregables:

• Entrega del ejercicio solicitado en la clase anterior. Test de Lectura N° 22 sobre temas vistos en la clase anterior Teórica 3:45 hs.

Introducción a los Sistemas de Comunicaciones. Funciones. Modelo OSI. Descripción de las Capas del modelo. Conceptos de Naming, Addressing. Concepto de Conmutación de paquetes. Modelos LAN y WAN. Topologías físicas de una red. Concepto de protocolo de comunicaciones. Encapsulado de la información en cada capa del modelo OSI. Concepto peer to peer. Capa 2: IEEE 802.3: Protocolo Ethernet. Descripción de la técnica de acceso al medio: CSMA/CD. Colisiones. Efecto del tráfico en una LAN Ethernet. Descripción del frame. Concepto de MAC Address Acceso a los Controladores Ethernet. Línea Realteck. IEEE 802.11b: Wireless Ethernet o WiFi. Estructura del frame. Bandas de frecuencia. Aplicaciones. Seguridad en las transmisiones. Capa 3: Suite TCP/IP. Protocolo IP. Datagrama. Formato y datos que lo componen. Conexión entre nodos en una red. Independencia del hardware. Esquema de direccionamiento IP. Limitaciones: Modelo IPv6. Máscara de subred. Protocolo ARP. TRABAJO PARA PROXIMA CLASE: - Lectura de los temas desarrollados en esta clase. - Ejercicio de aplicación:

• Una PC está conectada a una red con IP 200.3.42.15. Su MAC es 0C:90:2F:3A:00:00. EL router tiene la dirección 200.3.42.1, y MAC 00:F1:0E:AF:12:01. La primer transacción que intenta tiene como destino un Server remoto que hostea una página web: IP198.122.34.203, MAC 0C:90:E4:50:09:18. Escriba una tabla con cada uno de los paquetes que se necesitan intercambiar para resolver las direccones MAC y el contenido de cada uno (direcciones origen y destino de capa2 y capa3)

• Trabajo Práctico obligatorio de LINUX.

Clase 26: Semana del 10 de Octubre Redes de datos. Objetivo: Impartir al alumno el concepto de servicio, port, y su vinculación con el proceso que responderá el requerimiento (server), articulando los conceptos con los vistos en Sistemas Operativos. Material de la cátedra: Sistemas de Comunicaciones de datos.pdf Entregables:

• Entrega del ejercicio solicitado en la clase anterior. • Entrega Trabajo Práctico obligatorio de LINUX

Test de Lectura N° 23 sobre temas vistos en la clase anterior Teórica 3:45 hs. Capa 4: Concepto de acceso a servicios. Protocolos Conectados y no Conectados. Ventajas y desventajas de cada uno. Condiciones de uso. TCP y UDP. Concepto de port lógico. Dispositivos de tratamiento de paquetes en una red (Repetidores, Bridges, Switches, Routers, Gateways). Servicios dentro de una red: Naming. DNS. Funcionamiento. Traducción dinámica. Modelo cliente servidor: Implementación de la intercomunicación de procesos en una red para el acceso a servicios. La interfaz de sockets. Modelo de programación de un servidor. Servidores concurrentes e iterativos. Diferencias. Funciones standard de la librería TCP/IP para el

desarrollo: socket (), bind (), listen (), accept (). Programación en LINUX. Familias de sockets (AF_UNIX, AF_INET, PF_INET). Programación de clientes tanto windows como Linux, Portabilidad de las funciones. primitiva connect (). Lectura y escritura de datos: con funciones de archivos, o específicas. Desarrollo de aplicaciones clientes servidor TCP y UDP. Diferencias. Servidores concurrentes Manejo de control de sesiones en TCP y UDP. Funciones de soporte. getservbyname (), gethostbyname (). Configuración y declaración de un servidor en un sistema Linux. TRABAJO PARA PROXIMA CLASE: - Lectura de los temas desarrollados en esta clase. - Ejercicio de aplicación:

• Tomar el programa servidorTCP.c, y clienteTCP,c vistos en clase. Al Server, antes del accept () insertarle pause () de modo de frenarlo hasta que se pulse una tecla.

• Compilarlos. • Ejecutar en diferentes consolas el servidor y diversos clientes. • En una consola separada ejecutar netstat –a. Tome nota de la salida del

comando. • En la ventana del Server pulse una tecla. • Vuelva a la consola en donde ejecutó netstat, y repita el mismo comando.

Tome nota de la salida ahora. • Elabore un informe sobre el comportamiento observado.

Clase 27: Semana del 17 de Octubre Laboratorio. Prácticas a cargo del ayudante Objetivo: Introducir al desarrollo de pares cliente servidor familiarizando al alumno con la interfaz de sockets para desarrollo de aplicaciones que instaladas en máquinas diferentes interactúen a través de una red de datos sobre TCP/IP. Entregables:

• Entrega del ejercicio solicitado en la clase anterior. Test de Lectura N° 24 sobre temas vistos en la clase anterior Práctica 3:45 hs Desarrollo de servidores para Linux y clientes Linux y Windows. Uso de sniffers para visualizar a transmisión de paquetes por la red: TCPDump o Ethereal. Análisis de los resultados. Visualización de los headers de las diferentes capas del modelo OSI. TRABAJO PARA PROXIMA CLASE: - Lectura de los temas desarrollados en esta clase. - Ejercicio de aplicación:

• Repita la secuencia de tareas requerida para el trabajo presentado en esta clase. Observe el proceso de conexión, y desconexión con tcpdump.

• Elabore un informe interpretando la salida y describiendo el proceso conocido como three way handshake.

• Repita el trabajo con Ethereal

Clase 28: Semana del 24 de Octubre Laboratorio. Prácticas a cargo del ayudante

Objetivo: Asistir al alumno en el desarrollo de pares cliente servidor utilizando la interfaz de sockets para desarrollo de aplicaciones de la guía de TPs. Entregables:

• Entrega del ejercicio solicitado en la clase anterior. Test de Lectura N° 25 sobre temas vistos en la clase anterior Práctica 3:45 hs Desarrollo de servidores para Linux y clientes Linux y Windows (si alcanza el tiempo de clase). Incluyendo Mecanismos IPCs, y acceso a la E/S Tratamiento de accesos a múltiples recursos bloqueantes. Combinación de lectura de sockets con lectura de archivos, dispositivos de E/S, y nodos en general del File System (especialmente con IPCs). Uso de las primitivas select (). TRABAJO PARA PROXIMA CLASE: - Lectura de los temas desarrollados en esta clase. - Ejercicio de aplicación:

• Tome el ejercicio requerido para la clase 24, y molifíquelo para que además del FIFO y el dispositivo /dev/ser espere conexiones por un port TCP a su elección superior al 1024.

• Incluya el código para que la demora de 60 segundos no sea interrumpida (y en consecuencia reseteada) por una señal.

Clase 29: Semana del 31 de Octubre Laboratorio. Prácticas a cargo del ayudante Objetivo: introducir al alumno en el desarrollo de aplicaciones de networking de bajo nivel utilizando librerías existentes en el sistema. Se utiliza libpcap ya que está disponible tanto en Linux como en Windows. Entregables:

• Entrega del ejercicio solicitado en la clase anterior. Test de Lectura N° 26 sobre temas vistos en la clase anterior Práctica 3:45 hs. Desarrollo de aplicaciones utilizando libpcap para acceder a los controladores Ethernet. Configuración de la placa de red en modo promiscuo. Construcción de un sencillo analizador de paquetes (sniffer). Uso de filtros. TRABAJO PARA PROXIMA CLASE: - Lectura de los temas desarrollados en esta clase. - Ejercicio de aplicación:

• Trabajo Práctico Obligatorio de Redes

Clase 30: Semana del 7 de Noviembre Laboratorio. Prácticas a cargo del ayudante Objetivo: Avanzar en el desarrollo de programas de internetworking combinando los recursos de la interfaz de sockets y demás recursos vistos en Linux, para procesamiento de señales. Entregables:

• Entrega Trabajo Práctico Obligatorio de Redes. Test de Lectura N° 27 sobre temas vistos en la clase anterior Práctica 3:45 hs.

Desarrollo de servidores para Linux y clientes Linux y Windows. Incluyendo Mecanismos IPCs, y acceso a la E/S TRABAJO PARA PROXIMA CLASE: - Lectura de los temas desarrollados en esta clase. - Ejercicio de aplicación:

• Entrega Trabajo práctico Obligatorio integrador 2do. Cuantrimestre.

Clase 31: Semana del 14 de Noviembre Arquitectura de la PC – Controlador de Video. Objetivo: Que el alumno comprenda el funcionamiento de un controlador de video básico en Modo texto, las técnicas para representación de gráficos su impacto en el tráfico de información en el bus de la PC y las soluciones tecnológicas para resolver este problema (AGP) Entregables:

• Entrega Trabajo Práctico Obligatorio integrador 2do. Cuantrimestre. Test de Lectura N° 28 sobre temas vistos en la clase anterior 1. Controlador de Video.

Función y Características principales. Barrido de una imagen. Señales necesarias. Arquitectura y funcionamiento de un controlador Monocromo standard. Descripción de la RAM de Video ROM de Caracteres. Estructura de la Unidad de Temporización y control. Mención del 6845, actualmente embebido en los dispositivos comerciales avanzados. Evolución de la Tecnología. Enumeración de las principales placas controladoras: CGA, EGA, VGA, SVGA, etc.

2. Aceleradores Gráficos. Su impacto en el Bus PCI. Tecnología AGP. Arquitectura. Manejo del ancho de banda de Bus. Integración con PCI.

TRABAJO PARA PROXIMA CLASE: - Lectura de los temas desarrollados en esta clase.

Clase 32: Semana del 21 de Noviembre Trabajo de integración de las Unidades temáticas de la materia Objetivo: Lograr interactuando con los alumnos articular los conocimientos transmitidos durante el curso relacionando los temas de la asignatura a modo de cierre del curso. Debe lograrse transmitir la relación existente entre los diferentes temas vistos. Entregables: Test de Lectura N° 29 sobre temas vistos en la clase anterior Teórico práctica 3:45hs A través de la interacción entre el docente y los alumnos a través de preguntas disparadoras de cada tema, se analizará un tema y se indagará hacia los contenidos previos de ese tema en la planificación ayudando a que los alumnos por si solos logren conectar los conceptos.

Clase 33: Lunes 28 de Noviembre

2do. Examen Parcial en todos los cursos