Ing. Pablo M. Davicino
Organización de Computadoras

Desde julio de 2012 no me encuentro más asignado a este curso. Más allá de eso, siéntase libre de contactarme si desea conocer información relacionada al mismo.

Descripción

Se proveerá al estudiante de conceptos básicos sobre la organización y arquitectura de una computadoras y su estructura funcional. A través de la programación en lenguaje ensamblador se lo introduce en la arquitectura de un sistema a nivel del set de instrucciones.

Se cubrirán conceptos referidos a la representación de los datos a nivel máquina, y de códigos detector/corrector de error. Se propone una práctica intensiva de programación en lenguaje ensamblador. Se presenta el lenguaje C, y se desarrollarán programas de ejercitación en el mismo haciendo hincapié en el manejo de punteros.

La materia contempla en su desarrollo una serie de temas que son los puntos de partida de la materia Arquitectura de Computadoras, además de presentar diversos conceptos que se desarrollan luego en Sistemas Operativos. Dado que la bibliografía mayoritariamente es en el idioma Inglés, introduce al alumno en la disciplina de manejar información técnica en este idioma, lo que resultará de suma importancia en el desarrollo de su carrera.

Metodología de Enseñanza

La metodología empleada está orientada a que el alumno adquiera una formación teórico-práctica que le posibilite una sólida concepción conceptual del funcionamiento de un sistema de cómputo como así también de su programación, tanto a nivel de ensamblador como del lenguaje C. Se comienza por la computadora de programa almacenado, realizando un análisis por niveles y su evolución histórica. Se pasa luego a la representación binaria de la información en una computadora digital, implicancias. Representación de la información numérica en Punto Fijo y Punto Flotante. Estas cuestiones presentadas en teoría y acompañadas de una ejercitación que apunta a que los distintos conceptos decanten. Se continua luego con el CPU, su organización, formato de instrucciones y modos de direccionado. Haciendo uso de una máquina simple desarrollada al efecto, OCUNS, se posibilita al alumno trabajar de manera básica en la codificación de pequeñas rutinas, trazas, y tareas de relocación del código.

En el laboratorio se realizan actividades de programación, en principio en lenguaje ensamblador persiguiendo una mayor familiarización del alumno con una máquina, naturalmente en un contexto de programación imperativa. Posteriormente se lo introduce al lenguaje C, se lo ejercita en la práctica y en la elaboración de un proyecto, con el objetivo claro de que domine adecuadamente el lenguaje.

Mecanismo de Evaluación

El sistema de cursado de la asignatura consiste en dos exámenes parciales junto con usualmente dos proyectos de programación. Los parciales se califican con Aprobado o Desaprobado. Cada examen parcial tiene su respectivo recuperatorio a los que podrán acceder los alumnos que desaprueben el examen parcial.

Los proyectos de programación se califican en orden descendente con A, B, C y D. Los calificados con D se consideran desaprobados y podrán ser reentregados en una segunda ocasión a fin de incorporar las correcciones señaladas por la cátedra en la primera entrega.

El aprobar ambos exámenes parciales, o los exámenes recuperatorios cuando corresponda, junto con la aprobación de los proyectos de programación habilita al alumno a rendir examen final regular. En contraste, quienes no aprueben los exámenes parciales ni los recuperatorios, o bien no aprueben alguno de los proyectos de programación no cursaran la materia.

Programa Sintético

  1. Organización de un sistema. Unidades componentes: Unidad Central de Proceso, Memoria, Controladores y Periféricos. Representación de los datos a nivel máquina. Códigos detector/corrector de error. Historia de la Computación.
  2. Sistemas numéricos. Operaciones aritméticas básicas de suma/resta en Punto Fijo. Representación en Punto Flotante. Norma IEEE754. Operaciones y redondeo. Error de redondeo y error de arrastre.
  3. Tipos y formatos de instrucciones. Modos de direccionamiento.
  4. Lenguaje ensamblador. Sintaxis. Proceso de Ensamblado, de Vinculación y de Carga.
  5. Subrutinas. Pasaje de parámetros. Salvado de registros. Reentrancia. Recursividad.
  6. Lenguaje de programación C. Tipo de datos. Punteros. Tipo de datos avanzados.
  7. Asignación y liberación de memoria. Manejo de Entrada/Salida.
  8. Características básicas de los dispositivos de almacenamiento secundario.

Bibliografía

  • Andrew S. Tanenbaum, Structured Computer Organization (5th Edition), 2005.
  • D. Patterson, J.L. Hennessy. "Computer Organization & Design, The Hardware/Software Interface" 2nd edition, Morgan Kaufmann. 1994.
  • William Stallings. "Computer Organization and Architecture", Prentice Hall. 1996.
  • J. Hayes. "Computer Architecture and Organization", Edison. 1988.
  • V.C. Manacher, Z.G. Vranesic, S.G. Zaky. "Computer Organization", 5th edition, McGraw-Hill, 2001.
  • Richard H. Eckhouse, Robert Morris. "Minicomputer Systems. Organization, Programming and Aplications (PDP-11)".
  • William Gear. "Computer Organization and Programming". Mc Graw Hill. 1980
  • Greg Perry. "Absolute Beginner's Guide to C" (2nd Edition). 1994.
  • Barron D. W. "Assemblers and Loaders". Elsevier North Holland Inc. 1979.
  • Kernigham B. W. y Ritchie D. M. "El lenguaje de programación C". Prentice-Hall. 1985.
  • Peter Prinz, Tony Crawford. "C in a Nutshell" O'Reilly. 2005.
  • Pablo Davicino, Alejandro Stankevicius, Rafael García. OCUNS: Una arquitectura para la enseñanza de tópicos de Organización y Arquitectura de computadoras. XVII Congreso Argentino de Ciencias de la Computación, ISBN 978-950-34-0756-1, pp. 592-601.
 

Social Media

FacebookTwitterDiggDeliciousStumbleuponGoogle BookmarksRedditLinkedin

Concurrent Visitors

We have 2 guests online