Cronograma de Actividades Previsto

Transcripción

Cronograma de Actividades Previsto
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 A0A9 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
Directorio de Tablas de Página (DTP)
Base_DTP
Tablas de Página
Base_TP
0
1
Indexn
PTBAn
n
0
1
Indexm
PBAm
m
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
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
Procesamiento Digital de Señales
Multimedia
–
Introducción
al
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 IA32 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 inodo. 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

Documentos relacionados