Advertencia:Estás viendo una versión de esta web sin estilos. El motivo puede ser que tu navegador no soporta hojas de estilo (CSS) o que se encuentren deshabilitadas.

Departamento de Arquitectura y Tecnologia de Computadores

Universidad de Sevilla
 estás en: inicio >> docencia >> ETSII >> TPBN  


Tecnicas de Programacion en Bajo Nivel (TPBN)

Técnicas de Programación en Bajo Nivel (TPBN)

3º Ingeniería informática. ETSI. Informática de Sevilla.

Curso 2007/08.

e-mail:


 

Página principal de la asignatura.

Última actualización: 12 enero 2010.

  • Examen de tercera convocatoria (16 diciembre). Resultados: aquí

  • Material para descarga: aquí. Actualizado el 20 de Junio de 2009.

  •  MUY IMPORTANTE: Qué se necesita saber para poder seguir la asignatura: Prerrequisitos.

  •  Evaluación alternativa. Contenido de las pruebas, condiciones de evaluación y fechas.

 

Profesores. 1

Objetivos. 1

Prerrequisitos. 2

Contenidos. 2

Temario. 3

Prácticas. 8

Evaluación. 11

Noticias. 1

Bibliografía. 13

 

Profesores.

Claudio Amaya Rodríguez (responsable de la asignatura).

Teoría grupos 1 y 4, prácticas.

Despacho F069. L-4 Planta Baja. ETSII Informática.

Horario de tutorías:

Martes: 10:30 a 14:30, 15:30 a 17:30.

Miguel Ángel Rodríguez Jódar.

Teoría grupos 2 y 4, prácticas.                      

Despacho F062. L-4 Planta Baja. ETSII Informática.

Horario de tutorías:

Martes; 18:00 a 21:00.

Jueves; 18:00 a 21:00.

Ignacio García Vargas.

Teoría grupo 3, prácticas.

Despacho F071. L-4 Planta Baja. ETSII Informática.

Horario de tutorías:

Consultar horario en la pagina personal del profesor.

Tutorías por e-mail:

Enviarlas a la dirección e-mail de la asignatura (en la cabecera de esta página), indicando el profesor al que va dirigida la tutoría.

Objetivos.

El objetivo general de TPBN es el estudio de la interacción entre el hardware y el software en un computador: cómo afectan las características del hardware en las prestaciones, fiabilidad, y la arquitectura de elementos software como son el sistema operativo, los lenguajes de programación, compiladores, depuradores, etc.

Más específicamente, podemos dividir los contenidos de la asignatura en 4 áreas de interés:

        La organización de máquinas en el nivel de juego de instrucciones (nivel ISA: Instruction Set Architecture) y la representación de datos a nivel de máquina. Se usarán las herramientas de desarrollo para lenguaje C (depuradores, enlazadores, etc.) no como objetivo, sino como instrumentos para estudiar la arquitectura del computador y el funcionamiento interno de elementos fundamentales del software: el sistema operativo y la generación y depuración de código en lenguajes de alto nivel.

        Técnicas de Interfaz y comunicaciones. Se completa el tratamiento de los sistemas de entrada/salida comenzado en una asignatura del curso anterior: Arquitectura de Computadores (AC). TPBN profundiza en algunos elementos del hardware (controladores de E/S, jerarquía de buses de E/S, DMA, etc.) y, sobre todo, en el tratamiento software de la entrada/salida (+).

        La programación en bajo nivel (+).

        Herramientas y técnicas de depuración. Los Ingenieros en Informática deben conocer los principios en los que se basan las herramientas y técnicas de depuración, y tener siempre en cuenta las necesidades de validación del software que producen.

Prerrequisitos.

Se supone al estudiante una base sólida en conceptos fundamentales de tres áreas cubiertas por asignaturas precedentes a TPBN o que se cursan simultáneamente:

  • Arquitectura de Computadores. Debe haber cursado las asignaturas Fundamentos de Computadores (FC), Estructura de Computadores (EC), de 1º, y Arquitectura de Computadores (AC) de 2º.

     

     Esto supone conocer los elementos principales de la estructura de un computador y de la interconexión de procesadores a otros componentes como sistemas de memoria o entrada/salida. En AC también se imparten conocimientos básicos de características del hardware que gestiona el software de sistema que veremos en TPBN: la jerarquía de memoria y la memoria virtual, los niveles de privilegio en la ejecución de programas, el funcionamiento básico de la entrada/salida y de las interrupciones y excepciones, etc.

     

  • Programación. Se requieren conocimientos y experiencia en el lenguaje de programación en general, al menos al nivel que se imparte en las asignaturas Introducción a la Programación I y II.

    Lenguaje de programación C:

    • Estructura general de un programa C.

    • Definición y uso de variables de tipos básicos (char, int, etc…), vectores, estructuras, punteros.

    • Estructuras de control de flujo: if-then-else, case, bucles.

    • Llamadas a funciones y paso de parámetros.

  • Sistemas operativos. Se haber cursado o cursar simultáneamente las asignaturas Sistemas Operativos y Laboratorio de Sistemas Operativos, ya que en la segunda mitad de TPBN se utilizan conceptos relacionados con las características generales de un sistema operativo, su funcionalidad y estructura, gestión de la ejecución de tareas, la gestión de memoria y las operaciones con ficheros.

Contenidos.

El contenido de la asignatura se divide en dos partes. La primera trata la arquitectura ISA (Instruction Set Architecture) de un procesador y su relación con las prestaciones y diseño de lenguajes de alto nivel y software de sistemas, en general. Utiliza fundamentalmente el lenguaje ensamblador como herramienta de aprendizaje. En la segunda parte nos ocupamos del software de sistemas, centrándonos en la gestión de entrada/salida (+).

La primera parte comienza con una revisión de los niveles de abstracción en el estudio de un computador en el tema 1. Nos permite situar el contexto del estudio de la arquitectura ISA realizado en la asignatura. El tema 2 se centra en la parte de la ISA que implementa lo que se conoce como el modelo de programación de aplicaciones o modelo de programación de usuario. Incluye las características del procesador usadas en los programas de aplicación. El tema siguiente está dedicado al lenguaje ensamblador, ligando su estudio al de algunos elementos que intervienen en la ejecución y desarrollo de programas: cargadores del sistema operativo, ficheros ejecutables, librerías estáticas y dinámicas, etc.

El tema 4 es el primero de la parte dedicada a software de sistema. Estudia el modelo ISA para la programación de sistemas. El tema 5 se ocupa de los dispositivos básicos de entrada/salida y el modelo de drivers. En este tema y el siguiente se trata en profundidad, tanto en teoría como en prácticas, el modelo de drivers estructurados, que usan sistemas operativos como Unix/Linux y Windows 2000 y sucesores (+).

Por último, el tema 6 cierra el curso con el estudio de algunas características avanzadas de los sistemas de entrada/salida.

 

Temario.

Tema 0. Presentación de la asignatura. 3

Tema 1. Arquitectura interna de un procesador (+). 4

Tema 2. Modelo de programación de un procesador para software de aplicación (+). 4

Tema 3. Estructura interna y generación de código ejecutable. 5

Tema 4. Modelo de programación de un procesador para software de sistema (+). 6

Tema 5. Sistemas básicos de entrada/salida (+). 6

Tema 6. Sistemas avanzados de entrada/salida (+). 7

 

0.1.      Profesorado.

0.2.      Contenido.

0.3.      Metodología y actividades docentes.

0.4.      Criterios y sistema de evaluación.

0.5.      Programación de la asignatura.

0.6.      Prerrequisitos.

0.7.      Bibliografía recomendada.

 

En este primer tema informa sobre el contenido general de la asignatura y las normas que rigen su docencia, incluyendo horario y lugar de las tutorías, documentación necesaria, cómo acceder a ella, temario, etc. También se especifican los prerrequisitos de la asignatura.

Tema 1. Arquitectura interna de un procesador (+).

1.1.      Máquinas multinivel. Máquinas virtuales.

1.2.      Procesadores CISC y RISC.

1.3.      Procesadores con encadenamiento.

1.4.      Resumen y conclusiones.

 

El primer tema revisa algunos conceptos sobre la arquitectura interna de un procesador que se tratan en asignaturas de cursos anteriores: Estructura de Computadores (1º) y Arquitectura de Computadores (2º). La intención es relacionarlos con los nuevos conocimientos que tratará TPBN, e introducir el concepto de máquinas virtuales.

Al final del tema se debe comprender la utilidad de tener “visiones” de un sistema informático a distintos niveles para manejar su complejidad. Usaremos esta división en niveles para introducir y contextualizar una serie de conceptos que se utilizarán con frecuencia a lo largo de la asignatura: máquinas virtuales, arquitectura del conjunto de instrucciones (ISA), portabilidad y compatibilidad binaria, encadenamiento de instrucciones, procesadores RISC y CISC.

Horas de clase: Teoría: 2. Laboratorio: 0.

Bibliografía:

Los contenidos del tema pueden encontrarse en los capítulos 1 y 2 de [TAN00], 3ª Edición.

 

2.1.      Arquitectura ISA. Software de aplicación/software de sistemas.

2.2.      Familias de procesadores.

2.3.      Almacenamiento y acceso a datos.

2.4.      Juego de instrucciones.

2.5.      Resumen y conclusiones.

 

 

El objetivo de este tema son los aspectos más importantes relacionados con la arquitectura del juego de instrucciones de un procesador, que configuran su modelo de programación. El modelo de programación engloba la información necesaria para generar programas que ejecuten en un procesador. Aunque esta información también puede ser útil directamente en cualquier tipo de programas sus áreas de aplicación naturales son los compiladores, herramientas de desarrollo, en general, y sistemas operativos.

En TPBN trataremos fundamentalmente las características que intervienen en el almacenamiento y acceso a datos, y el juego de instrucciones.

El estudio del nivel ISA, y del modelo de programación asociado, se ha dividido en dos partes:

        El modelo para la programación de software de aplicación (tema 2). Engloba todas las características del procesador accesibles a programas ejecutando sin ningún nivel de privilegio (nivel de usuario o modo usuario del procesador).

        El modelo para la programación de software de sistema (tema 4). Es una extensión del anterior para incluir las características accesibles sólo a código ejecutando en modos con mayores privilegios que los del modo usuario (los llamaremos niveles privilegiados o modos kernel, ya que algunos procesadores pueden tener más de un nivel).

 

Horas de clase: Teoría: 4. Laboratorio: 2.

Bibliografía.

        El planteamiento y parte de los contenidos del tema son los del capítulo 5 de [TAN00], que presenta el nivel ISA para software de aplicación, usando como ejemplo las arquitecturas IA32 y UltraSPARC II.

3.1.      Tipos de programas ejecutables.

3.2.     Estructura de un fichero ejecutable.

3.3.    Enlace estático y enlace dinámico.

3.4.     Resumen y conclusiones.

 

Este tema presenta los tipos de código ejecutable, y conceptos asociados a la carga, ejecución y estructura interna de los ficheros ejecutables.

Al finalizar el tema el estudiante deberá ser capaz de comprender los conceptos necesarios para usar ficheros objeto y/o librerías compiladas con distintos lenguajes de programación.

·             

Horas de clase: Teoría: 4. Laboratorio: 4.

Bibliografía:

        [TAN00] tiene un tratamiento muy completo del proceso de ensamblado/compilación en el capítulo 7, que también se puede usar para los contenidos relacionados con el enlace de módulos, librerías y DLLs.

4.1.      Arquitectura del modelo.

4.2.      Mecanismos de protección.

4.3.      Conexión con el sistema operativo.

4.4.      Gestión de memoria.

4.5.      Espacio de direcciones de entrada/salida.

4.6.      Interrupciones y excepciones.

4.7.      Gestión de multitarea.

4.8.      Arranque e inicialización.

4.9.      Resumen y conclusiones.

 

Este tema extiende el modelo de la arquitectura ISA visto en los dos anteriores, incluyendo las características necesarias para el software de sistema, encargado de gestionar los recursos de un computador. Nos centraremos fundamentalmente en la gestión del tiempo de CPU, la memoria y los dispositivos de entrada/salida.

Horas de clase: Teoría: 5. Laboratorio: 4.

Bibliografía:

        El tema está estructurado siguiendo el modelo de la mayoría de manuales sobre alguna arquitectura ISA concreta (como [INT00], [MIP01], o [SHA94]). Aunque estas obras dan un excesivo nivel de detalle y no pueden servir como referencia básica.

        Un nivel más adecuado al tema se da en [TAN00], aunque la información está dispersa en parte de los temas 5 (al principio trata los mecanismos de protección y al final las interrupciones) y 6. El tema 6 es especialmente adecuado para ver la gestión de memoria virtual y multitarea desde el punto de vista del sistema operativo, aunque da poca información sobre el hardware que hace posible estas dos últimas funciones.

 

5.1.      Hardware básico de entrada/salida.

5.2.      Modelos de gestión de entrada/salida. 

5.3.      Modelos con drivers. Estructura básica.

5.4.      Gestión de interrupciones.

5.5.      Excepciones.

5.6.      Resumen y conclusiones.

 

Este tema y el siguiente tratan los mecanismos que permiten la interacción entre los dispositivos de entrada/salida y el resto del computador. Aunque trata conjuntamente del hardware y software, prestaremos especial atención a los principios de gestión software de la entrada/salida.

 

Horas de clase: Teoría: 9. Laboratorio: 10, en:

Bibliografía:

        La mayor parte de los contenidos del tema pueden encontrarse en [TAN03], capítulos 5, 11 y 12.

        En los capítulos 1 y 3 de [RUB01] encontramos la mayor parte de los contenidos sobre drivers de caracteres de Linux utilizados en este tema. El libro al completo es una referencia muy recomendable sobre el modelo de drivers en Linux. m.

 

6.1.      Acceso directo a memoria (DMA).

6.2.      Buses de entrada/salida.

6.3.      Canales de entrada/salida.

6.4.      Características avanzadas del modelo de drivers.

6.5.      Resumen y conclusiones.

 

Este tema es una continuación y ampliación del anterior. Se ocupa de algunos de los elementos avanzados de entrada/salida más comunes en computadores modernos. Se pretende que el estudiante comprenda sus principios de funcionamiento y la arquitectura general del hardware y software.

 

Horas de clase: Teoría: 5.

Bibliografía:

      Muchas de las obras de la bibliografía del tema anterior tratan el hardware o software DMA como parte de los capítulos dedicados a entrada/salida. En concreto, los conceptos que damos sobre hardware de DMA son bastante generales y podemos encontrarlos en [TAN00], [TAN03],  o [RUB01].

      El tema sigue la estructura y parte de los contenidos del capítulo 3 de [STA00] para tratar los buses de entrada/salida, usando el bus PCI para ilustrar un bus paralelo.

Prácticas.

Práctica 1.     Introducción a los entornos de desarrollo. Modos de direccionamiento en un compilador de C. 9

Práctica 2.     Llamadas a procedimientos y paso de parámetros9

Práctica 3.     Introducción a la programación de sistemas en Linux. 10

Práctica 4.     Desarrollo de controladores para dispositivos sencillos. 10

Práctica 5.     Programación de dispositivos con gestión de interrupciones. 10

 

Distribución de aulas de prácticas:

 

 Lunes 10:30 a 12:30: Aulas B1.32, B1.33, A0.30 (14).

 

oMartes 10:30 a 12:30: Aulas B1.32, B1.33, A0.30 (14).

 

Martes 17:30 a 19:30: Aulas B1.32, B1.33, A0.30 (14).

 

 

o

(2 horas de laboratorio).

El principal objetivo es mostrar cómo podemos usar un sistema de desarrollo de software para estudiar el nivel ISA de un procesador. Para ello, trataremos las principales características de uno de los entornos de desarrollo usados en la asignatura, Visual C++ .Net, prestando especial atención a la parte que nos será más útil: el depurador.

También veremos cómo utiliza un compilador C los modos de direccionamiento del procesador para acceder a distintos tipos de variables.

 

 

La práctica tiene dos objetivos: el primero es comprender y utilizar los mecanismos de llamada entre funciones y procedimientos. Se estudiarán los pasos necesarios para llamar una función desde lenguaje ensamblador y responder correctamente a una llamada desde un lenguaje de alto nivel.

El segundo objetivo es profundizar en el concepto de stack frame. Es también parte del mecanismo de llamada pero se trata con más detalle porque es fundamental para comprender cómo se manejan las variables locales en un lenguaje de alto nivel.

 

(4 horas de laboratorio).

Esta es la primera práctica que entra en la programación de sistemas. Por ello, sus objetivos fundamentales son:

        Introducir los elementos prácticos que intervienen en la programación de sistemas.

        Introducir las técnicas y herramientas de desarrollo básicas.

        Profundizar en el concepto de protección de recursos en un sistema operativo.

·             

(6 horas de laboratorio).

El objetivo de esta práctica es comprender las operaciones necesarias para el manejo de un dispositivo de entrada/salida y las alternativas que podemos usar: gestión directa desde la aplicación o a través del sistema operativo. Qué implica cada una de ellas desde el punto de vista de la aplicación y del software del sistema.

Otro objetivo importante es comprender y aplicar los fundamentos y operaciones básicas de la gestión de entrada/salida en un sistema operativo.  Por último, profundizaremos en la estructura y funcionamiento del modelo de drivers de Linux y las técnicas de depuración asociadas.

 

(4 horas de laboratorio).

En esta práctica se profundiza en el concepto de driver de dispositivo como sistema que independiza las particularidades del hardware, creando una capa de abstracción que ofrece la funcionalidad requerida por un programa de usuario.

Nos centraremos en el funcionamiento genérico de los dispositivos que ofrecen datos de forma asíncrona. Veremos las implicaciones y limitaciones de las técnicas basadas en polling para interrogar al dispositivo, y cómo usar el muestreo por interrupciones para evitar tiempos muertos de espera.

El último objetivo es consolidar los conocimientos sobre gestores de interrupción, interrupciones rápidas e interrupciones lentas expuestos en las clases de teoría.

 

 

Evaluación.

Se realizarán dos tipos de pruebas de evaluación, tanto en evaluación alternativa como en la ordinaria: pruebas escritas y pruebas de prácticas:

Prueba o examen escrito.

El examen escrito es un examen realizado al modo tradicional, que consta de dos partes:

        Cuestiones. Son ejercicios de análisis sobre los contenidos teóricos vistos en clase o de abstracción sobre los contenidos de las prácticas. En esta parte no se permite usar ningún tipo de documentación. Se puntúa sobre 10, necesitándose una puntuación mínima de 3 para poder superar el examen escrito.

        Problemas. Consiste en problemas donde se deben aplicar los conocimientos y habilidades adquiridos indistintamente en clase de teoría o en prácticas. Se puede usar toda la documentación impresa que se estime necesaria. También se puntúa sobre 10, necesitándose 3 puntos, como mínimo, para poder superar el examen.

·             

En el examen se valorará el análisis de los problemas, esquemas de razonamiento, eficiencia de las soluciones y la claridad en la exposición.

La importancia de cada parte en la nota final viene dada por:

Nota Examen= 0.4 x Nota Cuestiones + 0.6 x Nota Problemas.

·             

El examen se supera si la nota total es mayor o igual a 5, cada nota parcial de teoría y problemas supera los 3 puntos, y se ha superado el examen de práctica en la misma convocatoria o alguna de las anteriores del mismo curso.

Prueba o examen de prácticas.

Debe superarse el examen de prácticas antes de poder aprobar el escrito. El examen de prácticas se califica como apto o no apto.

Las prácticas son un componente fundamental de la asignatura, hasta el punto de que más de la mitad del tiempo que un alumno debe dedicarle se invierte en actividades relacionadas con ellas. La evaluación de prácticas se hace en dos partes:

        El examen escrito. Como se ha señalado en la sección anterior, los contenidos de prácticas son evaluados conjuntamente con el resto de la asignatura en un examen escrito, donde se determina la nota final. Se ha pretendido integrar al máximo los contenidos de clases de teoría y prácticas, y, de hecho, suele ser necesario usar contenidos de teoría y práctica para contestar la mayoría de los problemas y cuestiones del examen.

        El examen de prácticas. Es una evaluación de mínimos. Para poder realizar el examen escrito se exige superar el de prácticas. En el de prácticas se exige el dominio de una serie de contenidos y habilidades teórico-prácticas mínimos. El estudiante debe demostrar que supera ese mínimo antes de poder continuar el proceso de evaluación.

 

El examen de prácticas consiste en un ejercicio de programación con un nivel de dificultad algo más bajo que los que se plantean en los enunciados de las prácticas anteriores. Normalmente se resuelve realizando parte de una aplicación o un driver.

El estudiante tiene dos horas para terminar el examen, que superará si el programa realizado cumple todas las especificaciones del enunciado.

Al elaborar los ejercicios de examen tenemos en cuenta, principalmente, los siguientes aspectos:

        Evidentemente, para realizarlo el estudiante debe dominar la mayor parte posible de los contenidos y habilidades mínimos teórico-prácticos que pretendemos evaluar:

o        El funcionamiento general de los programas y técnicas vistos en clase de prácticas.

o        Las técnicas de depuración básicas.

o        El manejo de las herramientas de desarrollo.

        Tendrán una dificultad algo menor que las cuestiones que realizan en las prácticas. No hay que olvidar que es una evaluación de mínimos.

        Se corregirán en el mismo momento del examen. El resultado del examen se da inmediatamente.

 

Por último, hay una prueba de prácticas en la evaluación alternativa, y un examen de prácticas coincidiendo coinciden con las tres convocatorias de examen oficiales. En cada convocatoria, se realiza el examen de prácticas antes que el escrito. Si se el alumno ha superado el examen de prácticas en esa convocatoria o en alguna de las oportunidades anteriores, puede presentarse al examen escrito en esa convocatoria.

Evaluación Alternativa.

Consta de dos pruebas:

·         Prueba práctica.  Se realizarán en las siguiente fechas:

o        Grupo 1: Martes 9 de junio, de 10:30 a 12:30.

o        Grupo 2: Martes 9 de junio, de 17:30 a 19:30.

o        Grupo 3: Lunes 8 de junio, de 10:30 a 12:30.

o        Grupo 4: Martes 9 de junio, de 17:30 a 19:30.

 

o        Para presentarse a esta prueba, es obligatorio hacerlo el día correspondiente al grupo en el que se está matriculado.  

 

·         Prueba escrita. Solo se evaluará si se obtiene “Apto” en la prueba práctica. Dos turnos:

o        Turno mañana: Viernes 12 de junio, de 10:30 a 12:30.

o        Turno tarde: Viernes 12 de junio, de 17:30 a 19:30.

 

o        El estudiante podrá elegir libremente el turno al que desea presentarse.

 

Se aprueba la evaluación alternativa obteniendo Apto en la prueba práctica y una nota superior a 5 en la prueba escrita.

Si se obtiene “Apto” en la prueba práctica, se dan por superados todos los exámenes de prácticas del curso.

 

Evaluación ordinaria.

Consta de dos exámenes: el examen de prácticas y el escrito. Para aprobar la asignatura en una convocatoria, hay que aprobar el examen escrito y tener aprobado el examen de prácticas en la misma convocatoria, o en una anterior del mismo curso.

 

Bibliografía.

[INT00]        Intel Corp. “Intel Architecture Software Developer's Manual (P6 family)”. Son 3 volúmenes:
     Volume 1: Basic Architecture. Disponible en
http://www.intel.com/design/PentiumII/manuals/243190.htm
.

Volume 2: Instruction Set Reference Manual. En http://www.intel.com/design/PentiumII/manuals/243191.htm.

Volume 3: System Programming Guide. En http://www.intel.com/design/PentiumII/manuals/243192.htm.


No son los últimos manuales de la arquitectura IA32 (Pentium 4), sino los correspondientes a la familia P6 (Pentium II). No usaremos los últimos manuales porque contienen muchas características que no veremos en la asignatura, y que además son diferentes de las características equivalentes en su competidor inmediato: AMD.

[KER91]       B.W. Kernighan y D.M. Ritchie. “El lenguaje de programación C”. Prentice-Hall, 1991.

[MIP01]        MIPS Technologies. “MIPS32 Architecture for Programmers”. MIPS Technologies, Document Number MD00086, Rev. 0.95, 2001. Disponible en http://www.mips.com/content/Documentation/MIPSDocumentation/ProcessorArchitecture/doclibrary. Contiene 3 partes:
    
à Volume I: Introduction to the MIPS32™ Architecture.
    
à Volume II: The MIPS32™ Instruction Set.
    
à Volume III: The MIPS32™ Privileged Resource Architecture.

[PIE98]        M. Pietrek. “Under the Hood”. Microsoft Systems Journal, Feb. 1998. San Francisco (CA): Miller Freeman. Disponible en dos ficheros: http://www.microsoft.com/msj/0298/hood0298.aspx, y http://www.microsoft.com/msj/0698/hood0698.aspx.

[RUB01]       A. Rubini, J. Corbet. “Linux device drivers”. O'Reilly and Associates, 2001.

[SHA94]       T. Shanley. “PowerPC 601 System Architecture”. Mindshare, 1994.

[STA00]       W. Stallings. “Organización y arquitectura de computadores. Diseñando para optimizar las prestaciones”. Prentice Hall, 1997 (4ª edición), 2000 (5ª edición).

[TAN00]       A. S. Tanenbaum. “Organización de computadoras: un enfoque estructurado”. Prentice Hall, 1992 (3ª edición). , 2000 (4ª edición).

[TAN03]       A. S. Tanenbaum. “Sistemas Operativos Modernos”. 2ª ed. Prentice Hall, 2003.

 


©2003-2010 Departamento de Arquitectura y Tecnologia de Computadores
  Universidad de Sevilla