|
Profesora Angela Sagrat Chikhani Coello Dpto. Tecnología Industrial PROYECTO DE EXTENSIÓN UNIVERSITARIA USO ESTRATÉGICO DE TECNOLOGÍAS DE INFORMACIÓN Y COMUNICACIÓN PARA DOCENTES DE EDUCACIÓN DE SEGUNDO NIVEL
|
|
Primer Taller: Arquitectura del Computador y Conceptos Básicos. Duración: 20 horas. Diseñado por : Prof. Angela S. Chikhani C.
CONTENIDO
I.1. Objetivos: I.2. Software y hardware. I.3. La computadora.
II.l. La unidad central y la memoria central. II.2. Planificación de la memoria. II.3. Funciones de un manejador de memoria. II.4. Planificación de los dispositivos. II.5 Arquitectura de un sistema de entrada/salida. III.l. El Programador III.3. Definiciones fundamentales en programación. III.4. Tipos de lenguajes de programación.
En el siglo XXI, la computación es una realidad cada vez más cotidiana. Si es cierto que en 1891 no se auguraba éxito alguno a la empresa que comercializaba máquinas calculadoras, también lo es que hoy no existe una sola empresa de tamaño mediano sin esa importante herramienta.
En virtud de esto, en Venezuela, en las últimas dos décadas se ha reconocido la programación de computadoras como una disciplina cuyo dominio es básico y crucial para el éxito de muchos proyectos industriales y como una materia que es posible presentar y tratar en forma científica. Ha pasado de ser considerada una habilidad artesanal a ser una disciplina académica. Los primeros y notables aportes que han dado lugar a este desarrollo se debieron a E.W. Dijkstra y C. A. R. Hoare.
Esta guía está dirigida al usuario que da sus primeros pasos en el campo de la informática, se propone introducir, bajo una forma muy intuitiva y simplificada, las nociones de informática general necesarias para la buena comprensión de esta guía. De entre ellas, algunas serán replanteadas con rigor en sucesivos guías; otras, simplemente mencionadas en el momento de desarrollos ulteriores para facilitar al lector su referencia a un contexto más general. Al objeto de avivar la presentación de estas nociones, se ha optado por la vía histórica, en la medida que pueda hablarse de historia a propósito de una técnica con poco más de veinte años de edad, cuyo nombre incluso informática es de muy reciente cuño.
Entre la "prehistoria" y la "historia", el lector se verá sometido a un primer movimiento de aproximación a la estructura y funcionamiento de Computador Personal.
Esta primera presentación, muy intuitiva, ha de permitir al lector comprender mejor los fines y las interrelaciones de los diferentes órganos de un computador, cuando sean descritos más adelante.
TEMA IFUNDAMENTOS BÁSICOS DE COMPUTACIÓN
I.1. Objetivos:
Al finalizar el tema, el estudiante estará en capacidad de: · Conocer la estructura y el funcionamiento del computador. · Identificar los criterios importantes de la Programación. · Definir: Acción, Proceso, Esquema, Algoritmo, Máquina y Programa. · Identificar los métodos generales: Capacidad de abstracción, Construcción descendente, Probar y Decidir.
I.2. SOFTWARE Y HARDWARE.
El estudio de la computación abarca el estudio del funcionamiento y de la utilización de las computadoras. Primeramente, observaremos que un computador sin programa es algo perfectamente inútil. Esto conduce a distinguir dos nociones: el hardware y el software.
El Hardware, palabra inglesa que significa quincallería, designa todo lo que en una máquina es materia; es, en grandes líneas, el conjunto de elementos descritos en el parágrafo precedente.
El Software, vocablo fabricado exprofeso sustituyendo hard (duro) por soft (blando) designa por el contrario todo lo que no es materia, todo lo que puede modificarse fácilmente, todo lo que puede asociarse por analogía a la materia gris; es la programación, dicho de manera simplista.
Se admite generalmente que el hardware se alimenta de dos disciplinas: la tecnología y la lógica. La tecnología se propone el estudio de los componentes: transistores, resistencias, elementos de memoria, etc., y la lógica el estudio del ensamblaje de aquellos componentes para constituir circuitos tales como registros, sumadores, circuitos de selección en memoria o unidades tales como la unidad de control, la unidad aritmética-lógica, etc. A éstas viene a añadirse una tercera disciplina, de importancia creciente con el aumento de complejidad en la organización de los sistemas informáticos, a la que nos gustaría dar el nombre de arquitectura: se trata del ensamblaje de las unidades que la lógica ha permitido concebir. Más corrientemente, se entiende por estructura de los computadores la reunión de los dos conceptos de lógica y arquitectura.
Dejando aparte la programación de aplicaciones en campos tan variados como los del cálculo científico, de la gestión, del reconocimiento de formas, de los problemas de inteligencia artificial, etc., el software se divide en dos ramas: la primera, bastante teórica, cubre los problemas ligados a los lenguajes de programación; la segunda, poco formalizada hasta el presente, corresponde a los sistemas de operativos que agrupan a los programas encargados de la gestión del funcionamiento de un sistema informático.
El lenguaje de máquina de la computadora es específico para cada una. Adopta una forma interna en la máquina y una forma externa comprensible para el programador, llamada lenguaje ensamblador. Muy pronto se manifestó la necesidad de lenguajes más generales y más parecidos a la escritura matemática. De ahí proviene el desarrollo de lenguajes evolucionados como el Fortran para el cálculo científico, el Algol para el cálculo científico y la descripción formal de algoritmos, el Cobol para la gestión, el PLl, que intenta agrupar estos tres lenguajes, y otros muchos orientados a tipos peculiares de aplicaciones. El empleo de estos lenguajes presupone la existencia de programas capaces de traducir el lenguaje de la forma evolucionada conocida por el programador a la forma interna conocida por la máquina. Estos programas de traducción son los compiladores, a no ser que se parta del lenguaje ensamblador en cuyo caso se utiliza a menudo el término ensamblador.
No es posible por ahora pasar revista a todas las funciones de un sistema operativo: a título indicativo (1) gestiona los trabajos de los usuarios, es decir, encadena las diferentes fases del paso de un programa (carga en memoria, ensamblaje o compilación, ejecución) y encadena los trabajos entre sí; (2) gestiona los recursos de la máquina, afectando las zonas de la memoria central y las unidades periféricas a los diferentes trabajos, etc.
La concepción de una máquina implica la contribución de las diferentes disciplinas citadas, por un lado la tecnología, la lógica y la arquitectura y por otro los lenguajes y los sistemas operativos.
Ahora bien, durante largo tiempo ha parecido como si tal concepción debiera ser obra de los especialistas en hardware, en tanto que los especialistas en software no tenían más remedio que desarrollar su trabajo sobre la base del hardware que les era suministrado.
En Resumen:
· El Hardware (funcionamiento): Lo constituye la parte física del computador, todo aquello que se puede ver y tocar. · Los componentes electrónicos. · La composición de esos componentes (arquitectura de las computadoras). · El Software el conjunto de instrucciones que permiten que el computador cumpla con las funciones deseadas. · La concepción de sistema para una utilización cómoda y racional (Sistema Operativo). La utilización de esos sistemas para la resolución de los problemas. I.3. LA COMPUTADORA.
La computadora tiene dos funciones principales: · Almacenar información (los datos). · Hacer cálculos (construcción de nueva información).
Luego la computadora tiene dos componentes principales: La memoria: Componente pasivo cuya cualidad esencial es ser grande (espacio de memoria). El procesador: Componente activo cuya cualidad esencial es ser veloz (tiempo de cálculo).
TEMA IIPRESENTACIÓN GENERAL DE UN COMPUTADOR.
Las máquinas electrónicas de programa registrado han sido y son todavía denominadas de muy diversas maneras: calculador, calculadora, computador, computadora, máquina; términos seguidos de un adjetivo como numérico, digital o simplemente electrónico.
En visión muy general, un Computador se compone de una memoria central, que contiene programas y datos, de una unidad central de proceso, que ejecuta el programa, y de unidades de entradas/salidas para los intercambios con el exterior. A veces se llama sistema informático al conjunto computador + elementos a él conectados.
II.l. LA UNIDAD CENTRAL Y LA MEMORIA CENTRAL.
El programa es registrado en memoria antes de comenzar su ejecución. Esta memoria, gracias a la cual puede ejecutarse el programa, se llama memoria central o bien memoria principal y en tomo suyo se organiza el resto de diferentes unidades de la máquina.
La memoria central almacena dos clases de información: de un lado, las instrucciones del programa (o informaciones descriptoras del tratamiento) que la máquina deberá ejecutar; de otro lado, los datos dichos a menudo operandos (o informaciones a tratar) con los cuales efectuará la máquina los tratamientos dictados por las instrucciones. Las dos clases de información tienen sus correspondencia física en dos unidades peculiares de la máquina: la unidad de control, también llamada unidad de instrucciones o unidad de gobierno, para las informaciones descriptoras y la unidad aritmética y lógica o unidad de proceso, para las informaciones a tratar.
Esquemáticamente pueden resumirse las principales funciones de la unidad de control así: Extrae de la memoria central la nueva instrucción a ejecutar; analiza dicha instrucción y establece las conexiones eléctricas correspondientes dentro de la unidad aritmética y lógica; extrae de la memoria central los datos implicados por la instrucción; desencadena el tratamiento de dichos datos en la unidad aritmética y lógica; eventualmente, almacena el resultado en la memoria central. La unidad aritmética y lógica opera con los datos que recibe siguiendo órdenes de la unidad de control. El conjunto Unidad de Control y Unidad Aritmética-lógica forma un todo en la mayoría de los computadores. Se llama unidad central o unidad central de proceso o procesador central. para diversos autores, la unidad central comprende también la memoria central.
Grafica 1. Organización General de la Unidad Central
Tal como se ha definido hasta aquí, la máquina puede ejecutar un programa inicialmente registrado en la memoria central, sobre datos registrados en la memoria central y almacenar los resultados en memoria central a medida de su obtención. Ahora es preciso dotarla de medios para comunicarse con el exterior: es el papel reservado a las unidades periféricas.
Existen dos grandes clases de unidades periféricas: las unidades de comunicación, impresora, unidad de visualización osciloscópica, etc.) que permiten el diálogo con el exterior, y las memorias auxiliares (discos, cintas magnéticas, CD-ROM, etc.) cuyas capacidades de almacenamiento son muy superiores a la de una memoria central. Las unidades periféricas se conectan, bien a la unidad central, bien directamente a la memoria a través de unidades especializadas en la gestión de las transferencias de información. Estas unidades de intercambio se llaman canales. La unidad de control, cuando encuentra instrucciones de intercambio de información (instrucciones de entradas/salidas), se ocupa de gobernar los canales.
En resumen, podemos representar un ordenador como un conjunto ensamblado de unidades diferentes, cuyo funcionamiento viene dictado por el programa registrado en la memoria central. La unidad de control gobierna la ejecución de las operaciones pedidas por el programa. Si la operación es un cálculo, es la unidad aritmética-lógica quien lo realiza, si es una transferencia de informaciones con el exterior, se cede el control a un canal.
Grafica 2. Esquema General de un Computador
II.2. PLANIFICACIÓN DE LA MEMORIA.
Se define como memoria a todo dispositivo capaz de almacenar información (datos e instrucciones) y que permite acceder a la misma en cualquier momento.
Existen diferentes tipos de memoria en un computador, tomando como objeto de estudio a la memoria principal, la cual puede ser direccionada directamente por el CPU. En torno a la misma, se estudiarán diferentes técnicas de manejo de memoria aplicadas a los sistemas operativos.
El sistema operativo debe proveer al usuario de un ambiente en el cual pueda ejecutar sus procesos en un ambiente de protección y sin que se vea obligado a conocer los detalles de hardware de la máquina, de forma que todo su esfuerzo se pueda centrar en la solución de los problemas que está atacando. En el caso de la memoria,.desaparece la figura del programador que debía estar íntimamente relacionado con los detalles de la máquina y el algoritmo que se ejecutaba, para obtener un máximo aprovechamiento de la memoria. Por Ejemplo: obtener secuencias de ejecución que permitiesen evaluar programas muy largos -que no cabrían en memoria- a través de técnicas de "overlay".
A continuación se definen dos términos, y que refieren a cómo un programador ve la memoria (espacio de direcciones), y cómo se está físicamente (espacio de memoria).
Se define como espacio de direcciones al conjunto de identificadores que pueden ser direccionados por un programa (variables, archivos, etiquetas) y espacio de memoria como el conjunto de posiciones físicas de memoria en las cuales pueden ser almacenados dichos elementos (programas y datos).
Es conveniente separar estos dos conceptos, de manera que el programador piense en términos de su espacio de direcciones, y se independice respecto al espacio de memoria. Esta facilidad es brindada por los sistemas operativos, con lo que se logran diferentes objetivos:
- Independencia de máquina: no hay una correspondencia a priori entre espacio de direcciones y espacio de memoria, lo que permite que todo el esfuerzo del programador se centre en la solución de sus problemas (sin importar el manejo de recursos) Esto permite, por ejemplo, que se pueda cambiar el computador en el cual se ejecuta un programa, sin necesidad de hacer de nuevo los programas, ya que los mismos -quizás con algunas pequeñas modificaciones- deben poder ejecutarse en diferentes computadores. - Modularidad de programas: Los programas pueden construirse como colecciones de módulos compilables en forma separada, que no se enlazan para formar un conjunto completo hasta el momento de la ejecución. Esto facilita el trabajo independiente de los programadores sobre partes de un mismo trabajo y permite construir módulos utilizables desde diferentes programas. - Procesamiento de Listas: Se permite manipular estructuras de datos que varían en tamaño dinámicamente.
El conjunto de módulos del sistema operativo encargadas de llevar a cabo el control del manejo de memoria se denomina Administrador de Memoria.
II.3. FUNCIONES DE UN MANEJADOR DE MEMORIA.
Los módulos del Sistema Operativo que permiten controlar el uso de la memoria en un computador, llevan a cabo las siguientes funciones básicas:
1. Llevar el control de estado de cada una de las posiciones de memoria (asignada o libre) 2. Determinar la política de asignación de memoria: decidir a quién se le debe dar. cuando, cuánto y dónde. 3. Una vez decidido asignar memoria a un proceso, se deben seleccionar las posiciones específicas y actualizar la información existente sobre la asignación. 4. Manejar la liberación de memoria. Un proceso puede liberar explícitamente toda o parte de la memoria que se le asignó, o el manejador de memoria puede reclamar a un proceso parte de la memoria que le fue asignada.
II.4. PLANIFICACIÓN DE LOS DISPOSITIVOS.
Los dispositivos periféricos permiten al computador comunicarse con el medio externo; y además almacenar grandes volúmenes de información, que no cabría toda en la memoria principal a la vez.
El Sistema Operativo es el encargado de planificar el uso de todos los componentes del sistema de Entrada/Salida de un computador: dispositivos de entrada/salida, canales y unidades de control; y esto lo lleva a cabo a través de un módulo del mismo denominado Planificador de Dispositivos.
Las funciones del Planificador de Dispositivos son:
1. Mantener el estado de los diferentes componentes del sistema de entrada/salida, así como de los procesos que hacen uso de los mismos. 2. Decidir cuál es la forma más eficiente de asignar un recurso de E/S (dedicado, compartido 0 virtual). Si será compartido, decidir quién, cuándo y por cuánto tiempo podrá utilizarlo. 3. Asignar un recurso de E/S a un proceso, una vez decidido esto, según el punto 2, e iniciar la operación de entrada/salida correspondiente. 4. Desasignar el recurso asignado. En la mayoría de los casos, las operaciones de entrada/salida terminan en forma automática.
II.5 ARQUITECTURA DE UN SISTEMA DE ENTRADA/SALIDA.
En los primeros computadores, el control de la operación de los dispositivos de Entrada/Salida estaba a cargo del CPU. Este se encargaba de controlar toda la transferencia de información entre los dispositivos y la memoria; quedando bloqueado durante este tiempo para suplir cualquier otra función.
Debido a la gran diferencia de velocidad existente entre los dispositivos de entrada/salida y el CPU; surgen largos períodos ociosos para el CPU; lo que no es conveniente para la productividad de una instalación.
Una primera solución a este problema, es dotar a los dispositivos periféricos de unidades de control; de manera que puedan realizar ciertas operaciones, sin necesidad de intervención del CPU. Estas operaciones serían: avanzar línea, rebobinar cinta, etc. Esta solución, no libera al CPU de la responsabilidad de controlar la transferencia de información, pero permite mejorar su rendimiento.
Otra solución, que puede usarse en conjunto con la anterior, es el mecanismo de "buffers". Bajo este tipo de mecanismo, la transferencia de información no ocurre cada vez que se solicita; sino que se provee de una pequeña memoria a los dispositivos; y se definen así mismo en memoria, áreas de residencia temporal de la información. Esto se conoce con el nombre de "buffers".
Cuando se efectúe un requerimiento, para realizar una operación de salida, la operación se hará en primer lugar sobre el "buffer" que se mantenga en memoria para dicho dispositivo. Cuando el "buffer" esté lleno, se procederá a realizar la operación verdadera de E/S; controlado por el CPU. En la misma forma; si se solicita una operación de entrada, el CPU ordena al dispositivo seleccionado que efectúe la operación y éste realiza la transferencia hacia el "buffer" que posee; cuando éste esté lleno o se complete la operación; el dispositivo puede comunicar al CPU dicho evento para que se inicie la transferencia de información desde el "buffer" del dispositivo hacia la memoria. El tiempo durante el cual opera el dispositivo en forma independiente, puede ser usado por el CPU para realizar otras tareas.
El mecanismo de "buffers" puede usarse en conjunto con el de "bloqueo", esto es, con dispositivos en los cuales la información debe almacenarse y transmitirse por bloques de bytes de cierta longitud.
Una mejor solución, que permite incrementar el rendimiento del CPU, quitándole la responsabilidad de controlar la transferencia de información entre los dispositivos periféricos y la memoria, es la incorporación de los canales.
Un canal, es un dispositivo especializado que permite controlar los intercambios de información entre los dispositivos, los intercambios de información entre los dispositivos periféricos y la memoria principal. Por ello, el canal posee una serie de registros que permiten conocer: número de bytes a transferirse en una operación de E/S, dirección de memoria donde serán dejados los datos (caso lectura) o desde donde serán escritos (caso escritura), contador de total de bytes a transferir y un conjunto adicional de mecanismos de hardware que le permitirán efectuar en forma apropiada sus funciones.
Un canal puede verse como un procesador especializado para efectuar instrucciones de entrada/salida. Así, un canal es capaz de ejecutar instrucciones especiales, denominadas comandos de canal; al igual que el CPU es capaz de ejecutar instrucciones de máquina. Un conjunto de comandos de canal es denominado programa de canal, el cual puede residir en memoria principal o estar microprogramado en el mismo canal.
Los diferentes mecanismos de hardware de los cuales están provistos los canales, permiten que éstos puedan operar en forma concurrente con el CPU; permitiendo la independencia en La ejecución de las operaciones de E/S. Convencionalmente, un canal es más económico que el CPU al cual está conectado.
El CPU se comunicará con los canales a través de instrucciones de E/S y el canal se comunica con el CPU mediante interrupciones asíncronas.
Normalmente, el canal se comunica con la memoria a través de puertos diferentes a los usados por el CPU (DMA); permitiendo múltiples accesos a la memoria a la vez. Cuando se permite esta situación, deben existir mecanismos de arbitraje que permitan sincronizar el acceso a la misma, si un canal y CPU tratan de acceder a la vez, la misma área de memoria.
El mecanismo de canales no obvia la existencia de las unidades de control, sino que la afianza.
El canal controlará la transferencia de información y la unidad de control se encargará de llevar a cabo las funciones de control de las operaciones de los dispositivos.
En el caso más sencillo, un canal gobierna las acciones de unas unidades de control y éste a su vez controla un dispositivo en particular.
Debido a los costos que involucra tener una configuración de canal-unidad de control-dispositivo para cada uno de los componentes del sistema de E/S, la mayoría de los sistemas de computación contemplan la posibilidad de disponer de canales que puedan controlar diferentes unidades de control en forma concurrente. Se puede permitir además que una unidad de control pueda ser gobernada por más de un canal a la vez, e igualmente, que se asocie más de una unidad de control a un dispositivo. De esta manera, se pueden encontrar caminos múltiples para llegar a un dispositivo periférico desde la memoria. Este tipo de configuración se denomina configuración Asimétrica de E/S.
Una configuración asimétrica, permite una mayor disponibilidad del equipo; por cuanto si se daña alguno de los componentes del sistema, sería posible encontrar una ruta alterna para satisfacer un requerimiento.
Grafica 3. Ejemplo de una Configuración de E/S. LA PROGRAMACIÓN
III.l. EL PROGRAMADOR
El programador tiene dos recursos complementarios para establecer la resolución de un problema: · Organizar los datos dentro de la memoria. · Definir el proceso de tratamiento de esos datos (la actividad del procesador). Luego, el programador debe definir: · La estructuración de los datos (técnicas) · La estructuración de los programas (métodos).
La estructuración de los datos debe ser una consecuencia de la estructuración definida de un programa, es decir, que la especificación funcional de la organización de los datos implica la utilización de técnicas de representación física.
III.2. CRITERIOS DE PROGRAMACIÓN.
Entre los criterios más importantes de programación se pueden mencionar:
· El costo: es importante considerar el costo (espacio de almacenamiento, tiempo de computación, costo de diseño y construcción). · La confiabilidad: correspondencia entre lo que hace el programa y lo que tiene que hacer. · La adaptabilidad: facilidad de adaptar el programa con nuevas especificaciones. · La legibilidad: un programa debe ser legible para cualquier programador (entender, verificar, modificar). · La portabilidad: facilidad de trasladar un programa a diferentes arquitecturas.
III.3. DEFINICIONES FUNDAMENTALES EN PROGRAMACIÓN.
Acción: Es un suceso que dura un tiempo finito y produce un resultado bien definido y previsto (una acción esta perfectamente definida por sus estados: inicial y final).
Proceso: Es un conjunto de fenómenos activos y organizados en el tiempo. Si se descompone un suceso en una serie de acciones más pequeñas cuyo efecto acumulativo es el mismo que el producido por el suceso completo, entonces se considera el suceso como un proceso secuencial.
Esquema: Es una descripción o una representación mental reducida a sus rasgos esenciales.
Algoritmo: Es una descripción de un esquema de comportamiento expresada con la ayuda de un repertorio finito y bien comprendido de acciones elementales nominadas (que se suponen realizables a priori).
Máquina: Es un mecanismo capaz de generar acciones que ocurren según un esquema determinado que se describe con la ayuda de un repertorio finito de acciones elementales propio de la máquina.
Programa: Es un algoritmo destinado a dar órdenes a una máquina. Métodos.
Los métodos generales son:
· Capacidad de Abstracción: Mecanismo intelectual principal en la actividad de programación. · Construcción descendente: · Permite ver claramente los diversos niveles de abstracción de un analista. · Permite dividir la construcción de un programa en etapas muy pequeñas. · Dado un problema P especificado en términos de una información I, para su resolución se requerirá efectuar las etapas siguientes: 1. Descomponer P en n subproblemas SPI1, SPI2,...,SPIn-1, SPIn. 2. Especificar cada subproblema en términos de subinformaciones: SIl,SI2,...,Sin. 3. Componer los subproblemas SPi con objeto de lograr una solución de P. 4. Probar que la solución sea correcta. 5. Decidir si la construcción está terminada al observar los subproblemas. Sino volver a realizar ese proceso para cada subproblema aún no solucionado.
III.4. TIPOS DE LENGUAJES DE PROGRAMACIÓN.
1. Lenguaje de máquina: · El principal problema es que una vez realizado el programa, este sólo puede ser ejecutado en un tipo de computador, puesto que distintos computadoras hablan en distintos lenguajes de máquina. · Requiere de un esfuerzo considerable por parte del programador.
2. Lenguaje Ensamblador: También llamado lenguaje simbólico, el programador escribe las mismas instituciones que en lenguaje de máquina, pero usando nombres mnemotécnicos para los códigos de operaciones.
El ensamblador es un programa encargado de traducir al lenguaje de maquina las instrucciones escritas en lenguaje simbólico.
3. Lenguaje Evolucionado: Compilador: Programa que analiza un lenguaje de esta clase y produce un código objeto parecido al que produce el ensamblador.
|
|
Las preguntas o los problemas sobre
este sitio Web deben dirigirse a [[email protected]]. |