Responder las siguientes preguntas
1. ¿Qué hace posible que el hardware realice sus tareas?
El sistema operativo es un software de sistema, es decir, un conjunto de programas de computación destinados a realizar muchas tareas entre las que destaca la administración eficaz de sus recursos.
Cuando se aplica voltaje al procesador de un dispositivo electrónico, éste ejecuta un reducido código en lenguaje ensamblador localizado en una dirección concreta en la ROM (dirección de reset) y conocido como reset code, que a su vez ejecuta una rutina con la que se inicializa el hardware que acompaña al procesador. También en esta fase suele inicializarse el controlador de las interrupciones. Finalizada esta fase se ejecuta el código de arranque (startup code), también código en lenguaje ensamblador, cuya tarea más importante es ejecutar el programa principal (main ()) del software de la aplicación.
Un sistema operativo se puede encontrar en la mayoría de los aparatos electrónicos que utilicen microprocesadores para funcionar, ya que gracias a éstos podemos entender la máquina y que ésta cumpla con sus funciones (teléfonos móviles, reproductores de DVD, autoradios, computadoras, radios, etc.).
2. ¿Cómo realizar una analogía entre hardware-software y una orquesta?
La analogía entre la orquesta y el hardware-software son las siguientes:
• Las partituras, los músicos y el Director de la orquesta son como el software o el sistema operativo.
• Los instrumentos de la orquesta son como el hardware de entrada, procesamiento y salida.
3. ¿Ha estado siempre el software incorporado al equipo? Explicar
La historia del software como se ha visto, no surge con los equipos electrónicos, aunque es con ellos que adopta el nombre está presente desde el empleo de ábacos o sumadoras mecánicas. Sin embargo, en estos casos, el software no se encuentra incorporado en el equipo. Es aportado por el operario. La máquina analítica de Charles Babbage, incidentalmente, tuvo su software, y fue una amiga de éste, la legendaria lady Lovelace, quien aportó el software que no se llegó a usar, dado que la máquina nunca se completó. La primera computadora binaria del mundo, desarrollar un sistema binario basado en el principio del “Sí / No” o de “Abierto / Cerrado” y la primera computadora electromecánica digital controlada por programación fue desarrollada por Konrad Zuse.
Zuse construyó su primera computadora en 1938 aunque tenía algunas fallas. Más tarde la modificó y excluyó de ellas los primeros defectos y la llamó la Z2. Konrad trató inútilmente de persuadir al gobierno nazi de las ventajas de su invento. La Z3 se terminó de construir en 1941. Sin embargo, ninguna de estas máquinas sobrevivió a la II guerra mundial con excepción de la Z4, construida años más tarde en Austria.
4. ¿Con qué idea comienza la evolución de la industria y la ciencia de la computación?
John Von Newman
En 1945, John Von Newman, que había trabajado con J. Presper Eckert y John Mauchly en la universidad de Pennsylvania, publicó un artículo acerca del almacenamiento de programas sugiriendo:
1. Utilizar sistemas de numeración binarios para construir las computadoras.
2. Que las instrucciones para la computadora así como los datos que se manipulara, se almacenaran internamente en la máquina.
Esta es una idea importante porque el sistema de numeración binario utiliza únicamente dos dígitos (0 y 1) en vez de los 10 dígitos del sistema decimal con el que todo mundo está familiarizado. Dado que los componentes electrónicos están normalmente en uno de dos estados (encendido o apagado), el concepto binario simplificó el diseño del equipo.
El concepto de programa almacenado permitió la lectura de un programa dentro de la memoria de la computadora, y después la ejecución de las instrucciones del mismo sin tener que volverlas a escribir. La primera computadora en usar el citado concepto fue la llamada EDVAC (Electronic Discrete-Variable Automatic Computer), desarrollada por Von Newman, Eckert y Mauchly.
Los programas almacenados dieron a las computadoras una flexibilidad y confiabilidad tremendas, haciéndolas más rápidas y menos sujetas a errores que los programas mecánicos. Una computadora con capacidad de programa almacenado podría ser utilizada para varias aplicaciones tan solo cargando y ejecutando el programa apropiado.
Los Intérpretes
Hasta ese punto, los programas y datos podrían ser ingresados en la computadora sólo con la notación binaria, que es el único código que las computadoras entienden. El siguiente desarrollo importante en el diseño de las computadoras fueron los programas intérpretes, que permitían a las personas comunicarse con las computadoras utilizando medios distintos a los números binarios. En 1952, Grace Murray Hopper una oficial de la Marina de Estados Unidos, desarrolló el primer compilador, un programa que puede traducir enunciados parecidos al inglés en un código binario comprensible por la máquina. Más tarde, desarrolló el llamado COBOL (Common Business Oriented Language), un proyecto financiado por compañías privadas y organismos educativos, junto con el gobierno federal durante la última parte de los años 50. COBOL permitía que un programa de computadora escrito para una máquina en especial, pudiera correrse en otras máquinas sin tener que recodificarse. De pronto, los programas se transportaban fácilmente, y el mundo de los negocios comenzó a aceptar a las computadoras con entusiasmo.
5. ¿Qué precipitó el desarrollo del software?
Hasta este momento, no se percibía una diferencia sustancial entre el equipo y el control de las operaciones. El concepto de programa de control almacenado en memoria, aportación popularmente atribuida a John von Neumann, precipitó el desarrollo de software. En éste se perfilaron dos tendencias de desarrollo: los programas de aplicación y los de servicio. Estos últimos tenían como propósito facilitar el desarrollo de programas a partir de programas. Algunos programas de servicio fueron simples cargadores que permitieron emplear notaciones como el octal o hexadecimal más compactas que el binario. Otros como los ensambladores simplificaron más el proceso al reemplazar las notaciones numéricas con los símbolos mnemónicos que aportaron para describir a cada instrucción de la máquina. El siguiente paso significativo fue la traducción de fórmulas, que permitió el desarrollo de la historia del software y la descripción de los algoritmos con el empleo de expresiones algebraicas.
6. ¿En qué repercuten los programas de aplicación y los programas de servicios (compiladores)?
• Repercusiones de los programas de aplicación
Los programas de aplicación justificaron la construcción de los equipos, inicialmente consistieron de aplicaciones militares y científicas como es el caso del cálculo de la trayectoria de proyectiles, de las simulaciones de efectos termodinámicos y del análisis del espacio aéreo. Con la comercialización de las computadoras, sus aplicaciones se orientaron también al apoyo de la administración pública y de las grandes empresas: sistemas de nóminas, sistemas contables, controles de inventarios, producción de parámetros, estadísticas y aplicación científica.
Algunos fueron de uso exclusivo, como los proyectos APOLLO y SAGE. Este último acoplaba un sistema de radar al computador, para controlar el espacio aéreo. Inició sus operaciones en 1958, después de 5 años de trabajos con un esfuerzo equivalente a 3.6 millones de horas hombre. Otras aplicaciones tuvieron un empleo también limitado, es el caso del sistema de reservaciones para vuelos de la TWA, con una IBM 370/168 y un sistema de teleproceso que integra más de 3000 terminales en América y Europa, realiza dos millones de transacciones por día. El conjunto de programas que soporta esta aplicación contiene más de 1.5 millones de líneas en sus códigos fuente y representa un esfuerzo equivalente a 100 mil horas hombre.
Otros, de uso más común, experimentaron generalizaciones a través de la estructuración, estandarización y parametrización de los datos que procesan. Es el caso de los paquetes estadísticos como SPSS y BMD, de simulación como GASP y GPSS, científicos como STATPAK, EISPACK y FUNPAK, y aquellos para la optimización y el modelaje económico.
Con la incorporación de las nuevas computadoras a la producción industrial, se dio origen a nuevos campos, el CAD/CAM (Computer Aided Design y Computer Aided Manufacturing). La Texas Instruments y la Intel fueron unas de las primeras en incorporar el apoyo de las computadoras para el diseño de sus circuitos integrados. La tendencia actual se orienta en el sentido de desarrollar las aplicaciones en forma integral con el apoyo de un manejador de bases de datos para organizar la información.
• Repercusiones de los programas de servicio (compiladores)
En 1946 se desarrolló el primer ordenador digital. En un principio, estas máquinas ejecutaban instrucciones consistentes en códigos numéricos que señalaban a los circuitos de la máquina los estados correspondientes a cada operación, lo que se denominó lenguaje máquina.
Pronto los primeros usuarios de estos ordenadores descubrieron la ventaja de escribir sus programas mediante claves más fáciles de recordar que esos códigos; al final, todas esas claves juntas se traducían manualmente a lenguaje máquina. Estas claves constituyen los llamados lenguajes ensambladores.
Pese a todo, el lenguaje ensamblador seguía siendo el de una máquina, pero más fácil de manejar. Los trabajos de investigación se orientaron hacia la creación de un lenguaje que expresara las distintas acciones a realizar de una manera lo más sencilla posible para una persona. El primer compilador fue escrito por Grace Hopper, en 1952 para el lenguaje de programación A-0, En 1950 John Backus dirigió una investigación en IBM sobre un lenguaje algebraico. En 1954 se empezó a desarrollar un lenguaje que permitía escribir fórmulas matemáticas de manera traducible por un ordenador; le llamaron FORTRAN (FORmulae TRANslator). Fue el primer lenguaje de alto nivel y se introdujo en 1957 para el uso de la computadora IBM modelo 704.
Surgió así por primera vez el concepto de un traductor como un programa que traducía un lenguaje a otro lenguaje. En el caso particular de que el lenguaje a traducir es un lenguaje de alto nivel y el lenguaje traducido de bajo nivel, se emplea el término compilador.
La tarea de realizar un compilador no fue fácil. El primer compilador de FORTRAN tardó 18 años-persona en realizarse y era muy sencillo. Este desarrollo de FORTRAN estaba muy influenciado por la máquina objeto en la que iba a ser implementado. Como un ejemplo de ello tenemos el hecho de que los espacios en blanco fuesen ignorados, debido a que el periférico que se utilizaba como entrada de programas (una lectora de tarjetas perforadas) no contaba correctamente los espacios en blanco.
El primer compilador autocontenido, es decir, capaz de compilar su propio código fuente fue el creado para Lisp por Hart y Levin en el MIT en 1962. Desde 1970 se ha convertido en una práctica común escribir el compilador en mismo lenguaje que este compila, aunque Pascal y C han sido alternativas muy usadas.
Crear un compilador autocontenido genera un problema llamado bootstrapping, es decir el primer compilador creado para un lenguaje tiene que o bien ser compilado por un compilador escrito en otro lenguaje o bien compilado al ejecutar el compilador en un intérprete
7. ¿Qué es el manejo recursivo de los procesos?
Siguiendo con el estudio para el parcial de Diseño e Implementación de Estructuras de Datos, vamos a ver la Recursión. Se dice que un proceso es recursivo si forma parte de sí mismo, es decir, que se define en función de sí mismo. La recursión aparece en la vida diaria, en problemas matemáticos, en estructuras de datos y en muchos otros problemas. Es un proceso extremadamente potente, por lo que hay que saber cuándo y cómo aplicarla.
Un método recursivo es un método que, directa o indirectamente, se hace una llamada a sí mismo
En las aplicaciones prácticas, antes de poner en marcha un proceso recursivo es necesario demostrar que el nivel máximo de recursión (que es el número de veces que se va a llamar a sí mismo), es no solo finito, sino realmente pequeño. La razón es que necesitaremos una cierta cantidad de memoria para almacenar el estado del proceso cada vez que se abandona temporalmente, debido a una llamada para ejecutar un proceso de sí mismo. El estado de cálculo en curso hay que almacenarlo para recuperarlo cuando se acabe la nueva ejecución del proceso y haya que reanudar la antigua.
Por esta razón a la existen 4 reglas fundamentales de la recursión, que tenemos que tener en cuenta a la hora de realizar nuestro algoritmo.
1. Caso Base: se debe tener siempre, al menos un caso base que pueda resolverse sin recursión.
2. Progreso: cualquiera llamada recursiva debe progresar hacia un caso base.
3. Puede creerlo: asuma siempre que toda llamada recursiva interna funciona correctamente.
4. Interés compuesto: nunca duplique el trabajo resolviendo la misma instancia de un problema, en llamadas recursivas separadas.
8. ¿En qué consiste la automatización de la automatización?
Proceso en donde le usuario tiene una mínima participación de las actividades realizadas en la vida cotidiana. Por ejemplo, lo vemos a diario en la parte de la robótica, en donde podemos darnos cuenta de que realmente el que realiza las cosas son este tipo de aparatos electrónicos, lo que conlleva a que la persona sea la que realice el programa para que estos tengan una funcionalidad dándonos así una vida mas sedentaria.
Que es un sistema automatizado: La automatización es un sistema donde se trasfieren tareas de producción, realizadas habitualmente por operadores humanos a un conjunto de elementos tecnológicos.
Un sistema automatizado consta de dos partes principales:
• Parte de Mando
• Parte Operativa
La Parte Operativa es la parte que actúa directamente sobre la máquina. Son los elementos que hacen que la máquina se mueva y realice la operación deseada. Los elementos que forman la parte operativa son los accionadores de las máquinas como motores, cilindros, compresores y los captadores como fotodiodos, finales de carrera.
La Parte de Mando suele ser un autómata programable (tecnología programada), aunque hasta hace bien poco se utilizaban relés electromagnéticos, tarjetas electrónicas o módulos lógicos neumáticos (tecnología cableada) . En un sistema de fabricación automatizado el autómata programable esta en el centro del sistema. Este debe ser capaz de comunicarse con todos los constituyentes de sistema automatizado.
Objetivos de la automatización
• Mejorar la productividad de la empresa, reduciendo los costes de la producción y mejorando la calidad de la misma.
• Mejorar las condiciones de trabajo del personal, suprimiendo los trabajos penosos e incrementando la seguridad.
• Realizar las operaciones imposibles de controlar intelectual o manualmente.
• Mejorar la disponibilidad de los productos, pudiendo proveer las cantidades necesarias en el momento preciso.
• Simplificar el mantenimiento de forma que el operario no requiera grandes conocimientos para la manipulación del proceso productivo.
• Integrar la gestión y producción.
9. ¿Qué ambiente configura los Sistemas Operativos?
Un sistema operativo desempeña 5 funciones básicas en la operación de un sistema informático: suministro de interfaz al usuario, administración de recursos, administración de archivos, administración de tareas y servicio de soporte y utilidades.
1. Interfaces del usuario
Es la parte del sistema operativo que permite comunicarse con él, de tal manera que se puedan cargar programas, acceder archivos y realizar otras tareas. Existen tres tipos básicos de interfaces: las que se basan en comandos, las que utilizan menús y las interfaces gráficas de usuario.
2. Administración de recursos
Sirven para administrar los recursos de hardware y de redes de un sistema informático, como la CPU, memoria, dispositivos de almacenamiento secundario y periféricos de entrada y de salida.
3. Administración de archivos
Un sistema de información contiene programas de administración de archivos que controlan la creación, borrado y acceso de archivos de datos y de programas. También implica mantener el registro de la ubicación física de los archivos en los discos magnéticos y en otros dispositivos de almacenamiento secundarios.
4. Administración de tareas
Los programas de administración de tareas de un sistema operativo administran la realización de las tareas informáticas de los usuarios finales. Los programas controlan que áreas tiene acceso al CPU y por cuánto tiempo. Las funciones de administración de tareas pueden distribuir una parte específica del tiempo del CPU para una tarea en particular, e interrumpir al CPU en cualquier momento para sustituirla con una tarea de mayor prioridad.
5. Servicio de soporte
Los servicios de soporte de cada sistema operativo dependerán de la implementación particular de éste con la que estemos trabajando. Entre las más conocidas se pueden destacar las implementaciones de Unix, desarrolladas por diferentes empresas de software, los sistemas operativos de Apple Inc., como Mac OS X para las computadoras de Apple Inc., los sistemas operativos de Microsoft, y las implementaciones de software libre, como GNU/Linux o BSD producidas por empresas, universidades, administraciones públicas, organizaciones sin fines de lucro y/o comunidades de desarrollo.
Estos servicios de soporte suelen consistir en:
• Actualización de versiones.
• Mejoras de seguridad.
• Inclusión de alguna nueva utilidad (un nuevo entorno gráfico, un asistente para administrar alguna determinada función,...).
• Controladores para manejar nuevos periféricos (este servicio debe coordinarse a veces con el fabricante del hardware).
• Corrección de errores de software.
• Otros.
No todas las utilidades de administración o servicios forman parte del sistema operativo, además de éste, hay otros tipos importantes de software de administración de sistemas, como los sistemas de administración de base de datos o los programas de administración de redes. El soporte de estos productos deberá proporcionarlo el fabricante correspondiente (que no tiene porque ser el mismo que el del sistema operativo).
10. Elaborar dos mentefactos conceptuales de Software de base o Software del Sistema (Sistema Operativo) y Software Aplicativo
1. ¿Qué hace posible que el hardware realice sus tareas?
El sistema operativo es un software de sistema, es decir, un conjunto de programas de computación destinados a realizar muchas tareas entre las que destaca la administración eficaz de sus recursos.
Cuando se aplica voltaje al procesador de un dispositivo electrónico, éste ejecuta un reducido código en lenguaje ensamblador localizado en una dirección concreta en la ROM (dirección de reset) y conocido como reset code, que a su vez ejecuta una rutina con la que se inicializa el hardware que acompaña al procesador. También en esta fase suele inicializarse el controlador de las interrupciones. Finalizada esta fase se ejecuta el código de arranque (startup code), también código en lenguaje ensamblador, cuya tarea más importante es ejecutar el programa principal (main ()) del software de la aplicación.
Un sistema operativo se puede encontrar en la mayoría de los aparatos electrónicos que utilicen microprocesadores para funcionar, ya que gracias a éstos podemos entender la máquina y que ésta cumpla con sus funciones (teléfonos móviles, reproductores de DVD, autoradios, computadoras, radios, etc.).
2. ¿Cómo realizar una analogía entre hardware-software y una orquesta?
La analogía entre la orquesta y el hardware-software son las siguientes:
• Las partituras, los músicos y el Director de la orquesta son como el software o el sistema operativo.
• Los instrumentos de la orquesta son como el hardware de entrada, procesamiento y salida.
3. ¿Ha estado siempre el software incorporado al equipo? Explicar
La historia del software como se ha visto, no surge con los equipos electrónicos, aunque es con ellos que adopta el nombre está presente desde el empleo de ábacos o sumadoras mecánicas. Sin embargo, en estos casos, el software no se encuentra incorporado en el equipo. Es aportado por el operario. La máquina analítica de Charles Babbage, incidentalmente, tuvo su software, y fue una amiga de éste, la legendaria lady Lovelace, quien aportó el software que no se llegó a usar, dado que la máquina nunca se completó. La primera computadora binaria del mundo, desarrollar un sistema binario basado en el principio del “Sí / No” o de “Abierto / Cerrado” y la primera computadora electromecánica digital controlada por programación fue desarrollada por Konrad Zuse.
Zuse construyó su primera computadora en 1938 aunque tenía algunas fallas. Más tarde la modificó y excluyó de ellas los primeros defectos y la llamó la Z2. Konrad trató inútilmente de persuadir al gobierno nazi de las ventajas de su invento. La Z3 se terminó de construir en 1941. Sin embargo, ninguna de estas máquinas sobrevivió a la II guerra mundial con excepción de la Z4, construida años más tarde en Austria.
4. ¿Con qué idea comienza la evolución de la industria y la ciencia de la computación?
John Von Newman
En 1945, John Von Newman, que había trabajado con J. Presper Eckert y John Mauchly en la universidad de Pennsylvania, publicó un artículo acerca del almacenamiento de programas sugiriendo:
1. Utilizar sistemas de numeración binarios para construir las computadoras.
2. Que las instrucciones para la computadora así como los datos que se manipulara, se almacenaran internamente en la máquina.
Esta es una idea importante porque el sistema de numeración binario utiliza únicamente dos dígitos (0 y 1) en vez de los 10 dígitos del sistema decimal con el que todo mundo está familiarizado. Dado que los componentes electrónicos están normalmente en uno de dos estados (encendido o apagado), el concepto binario simplificó el diseño del equipo.
El concepto de programa almacenado permitió la lectura de un programa dentro de la memoria de la computadora, y después la ejecución de las instrucciones del mismo sin tener que volverlas a escribir. La primera computadora en usar el citado concepto fue la llamada EDVAC (Electronic Discrete-Variable Automatic Computer), desarrollada por Von Newman, Eckert y Mauchly.
Los programas almacenados dieron a las computadoras una flexibilidad y confiabilidad tremendas, haciéndolas más rápidas y menos sujetas a errores que los programas mecánicos. Una computadora con capacidad de programa almacenado podría ser utilizada para varias aplicaciones tan solo cargando y ejecutando el programa apropiado.
Los Intérpretes
Hasta ese punto, los programas y datos podrían ser ingresados en la computadora sólo con la notación binaria, que es el único código que las computadoras entienden. El siguiente desarrollo importante en el diseño de las computadoras fueron los programas intérpretes, que permitían a las personas comunicarse con las computadoras utilizando medios distintos a los números binarios. En 1952, Grace Murray Hopper una oficial de la Marina de Estados Unidos, desarrolló el primer compilador, un programa que puede traducir enunciados parecidos al inglés en un código binario comprensible por la máquina. Más tarde, desarrolló el llamado COBOL (Common Business Oriented Language), un proyecto financiado por compañías privadas y organismos educativos, junto con el gobierno federal durante la última parte de los años 50. COBOL permitía que un programa de computadora escrito para una máquina en especial, pudiera correrse en otras máquinas sin tener que recodificarse. De pronto, los programas se transportaban fácilmente, y el mundo de los negocios comenzó a aceptar a las computadoras con entusiasmo.
5. ¿Qué precipitó el desarrollo del software?
Hasta este momento, no se percibía una diferencia sustancial entre el equipo y el control de las operaciones. El concepto de programa de control almacenado en memoria, aportación popularmente atribuida a John von Neumann, precipitó el desarrollo de software. En éste se perfilaron dos tendencias de desarrollo: los programas de aplicación y los de servicio. Estos últimos tenían como propósito facilitar el desarrollo de programas a partir de programas. Algunos programas de servicio fueron simples cargadores que permitieron emplear notaciones como el octal o hexadecimal más compactas que el binario. Otros como los ensambladores simplificaron más el proceso al reemplazar las notaciones numéricas con los símbolos mnemónicos que aportaron para describir a cada instrucción de la máquina. El siguiente paso significativo fue la traducción de fórmulas, que permitió el desarrollo de la historia del software y la descripción de los algoritmos con el empleo de expresiones algebraicas.
6. ¿En qué repercuten los programas de aplicación y los programas de servicios (compiladores)?
• Repercusiones de los programas de aplicación
Los programas de aplicación justificaron la construcción de los equipos, inicialmente consistieron de aplicaciones militares y científicas como es el caso del cálculo de la trayectoria de proyectiles, de las simulaciones de efectos termodinámicos y del análisis del espacio aéreo. Con la comercialización de las computadoras, sus aplicaciones se orientaron también al apoyo de la administración pública y de las grandes empresas: sistemas de nóminas, sistemas contables, controles de inventarios, producción de parámetros, estadísticas y aplicación científica.
Algunos fueron de uso exclusivo, como los proyectos APOLLO y SAGE. Este último acoplaba un sistema de radar al computador, para controlar el espacio aéreo. Inició sus operaciones en 1958, después de 5 años de trabajos con un esfuerzo equivalente a 3.6 millones de horas hombre. Otras aplicaciones tuvieron un empleo también limitado, es el caso del sistema de reservaciones para vuelos de la TWA, con una IBM 370/168 y un sistema de teleproceso que integra más de 3000 terminales en América y Europa, realiza dos millones de transacciones por día. El conjunto de programas que soporta esta aplicación contiene más de 1.5 millones de líneas en sus códigos fuente y representa un esfuerzo equivalente a 100 mil horas hombre.
Otros, de uso más común, experimentaron generalizaciones a través de la estructuración, estandarización y parametrización de los datos que procesan. Es el caso de los paquetes estadísticos como SPSS y BMD, de simulación como GASP y GPSS, científicos como STATPAK, EISPACK y FUNPAK, y aquellos para la optimización y el modelaje económico.
Con la incorporación de las nuevas computadoras a la producción industrial, se dio origen a nuevos campos, el CAD/CAM (Computer Aided Design y Computer Aided Manufacturing). La Texas Instruments y la Intel fueron unas de las primeras en incorporar el apoyo de las computadoras para el diseño de sus circuitos integrados. La tendencia actual se orienta en el sentido de desarrollar las aplicaciones en forma integral con el apoyo de un manejador de bases de datos para organizar la información.
• Repercusiones de los programas de servicio (compiladores)
En 1946 se desarrolló el primer ordenador digital. En un principio, estas máquinas ejecutaban instrucciones consistentes en códigos numéricos que señalaban a los circuitos de la máquina los estados correspondientes a cada operación, lo que se denominó lenguaje máquina.
Pronto los primeros usuarios de estos ordenadores descubrieron la ventaja de escribir sus programas mediante claves más fáciles de recordar que esos códigos; al final, todas esas claves juntas se traducían manualmente a lenguaje máquina. Estas claves constituyen los llamados lenguajes ensambladores.
Pese a todo, el lenguaje ensamblador seguía siendo el de una máquina, pero más fácil de manejar. Los trabajos de investigación se orientaron hacia la creación de un lenguaje que expresara las distintas acciones a realizar de una manera lo más sencilla posible para una persona. El primer compilador fue escrito por Grace Hopper, en 1952 para el lenguaje de programación A-0, En 1950 John Backus dirigió una investigación en IBM sobre un lenguaje algebraico. En 1954 se empezó a desarrollar un lenguaje que permitía escribir fórmulas matemáticas de manera traducible por un ordenador; le llamaron FORTRAN (FORmulae TRANslator). Fue el primer lenguaje de alto nivel y se introdujo en 1957 para el uso de la computadora IBM modelo 704.
Surgió así por primera vez el concepto de un traductor como un programa que traducía un lenguaje a otro lenguaje. En el caso particular de que el lenguaje a traducir es un lenguaje de alto nivel y el lenguaje traducido de bajo nivel, se emplea el término compilador.
La tarea de realizar un compilador no fue fácil. El primer compilador de FORTRAN tardó 18 años-persona en realizarse y era muy sencillo. Este desarrollo de FORTRAN estaba muy influenciado por la máquina objeto en la que iba a ser implementado. Como un ejemplo de ello tenemos el hecho de que los espacios en blanco fuesen ignorados, debido a que el periférico que se utilizaba como entrada de programas (una lectora de tarjetas perforadas) no contaba correctamente los espacios en blanco.
El primer compilador autocontenido, es decir, capaz de compilar su propio código fuente fue el creado para Lisp por Hart y Levin en el MIT en 1962. Desde 1970 se ha convertido en una práctica común escribir el compilador en mismo lenguaje que este compila, aunque Pascal y C han sido alternativas muy usadas.
Crear un compilador autocontenido genera un problema llamado bootstrapping, es decir el primer compilador creado para un lenguaje tiene que o bien ser compilado por un compilador escrito en otro lenguaje o bien compilado al ejecutar el compilador en un intérprete
7. ¿Qué es el manejo recursivo de los procesos?
Siguiendo con el estudio para el parcial de Diseño e Implementación de Estructuras de Datos, vamos a ver la Recursión. Se dice que un proceso es recursivo si forma parte de sí mismo, es decir, que se define en función de sí mismo. La recursión aparece en la vida diaria, en problemas matemáticos, en estructuras de datos y en muchos otros problemas. Es un proceso extremadamente potente, por lo que hay que saber cuándo y cómo aplicarla.
Un método recursivo es un método que, directa o indirectamente, se hace una llamada a sí mismo
En las aplicaciones prácticas, antes de poner en marcha un proceso recursivo es necesario demostrar que el nivel máximo de recursión (que es el número de veces que se va a llamar a sí mismo), es no solo finito, sino realmente pequeño. La razón es que necesitaremos una cierta cantidad de memoria para almacenar el estado del proceso cada vez que se abandona temporalmente, debido a una llamada para ejecutar un proceso de sí mismo. El estado de cálculo en curso hay que almacenarlo para recuperarlo cuando se acabe la nueva ejecución del proceso y haya que reanudar la antigua.
Por esta razón a la existen 4 reglas fundamentales de la recursión, que tenemos que tener en cuenta a la hora de realizar nuestro algoritmo.
1. Caso Base: se debe tener siempre, al menos un caso base que pueda resolverse sin recursión.
2. Progreso: cualquiera llamada recursiva debe progresar hacia un caso base.
3. Puede creerlo: asuma siempre que toda llamada recursiva interna funciona correctamente.
4. Interés compuesto: nunca duplique el trabajo resolviendo la misma instancia de un problema, en llamadas recursivas separadas.
8. ¿En qué consiste la automatización de la automatización?
Proceso en donde le usuario tiene una mínima participación de las actividades realizadas en la vida cotidiana. Por ejemplo, lo vemos a diario en la parte de la robótica, en donde podemos darnos cuenta de que realmente el que realiza las cosas son este tipo de aparatos electrónicos, lo que conlleva a que la persona sea la que realice el programa para que estos tengan una funcionalidad dándonos así una vida mas sedentaria.
Que es un sistema automatizado: La automatización es un sistema donde se trasfieren tareas de producción, realizadas habitualmente por operadores humanos a un conjunto de elementos tecnológicos.
Un sistema automatizado consta de dos partes principales:
• Parte de Mando
• Parte Operativa
La Parte Operativa es la parte que actúa directamente sobre la máquina. Son los elementos que hacen que la máquina se mueva y realice la operación deseada. Los elementos que forman la parte operativa son los accionadores de las máquinas como motores, cilindros, compresores y los captadores como fotodiodos, finales de carrera.
La Parte de Mando suele ser un autómata programable (tecnología programada), aunque hasta hace bien poco se utilizaban relés electromagnéticos, tarjetas electrónicas o módulos lógicos neumáticos (tecnología cableada) . En un sistema de fabricación automatizado el autómata programable esta en el centro del sistema. Este debe ser capaz de comunicarse con todos los constituyentes de sistema automatizado.
Objetivos de la automatización
• Mejorar la productividad de la empresa, reduciendo los costes de la producción y mejorando la calidad de la misma.
• Mejorar las condiciones de trabajo del personal, suprimiendo los trabajos penosos e incrementando la seguridad.
• Realizar las operaciones imposibles de controlar intelectual o manualmente.
• Mejorar la disponibilidad de los productos, pudiendo proveer las cantidades necesarias en el momento preciso.
• Simplificar el mantenimiento de forma que el operario no requiera grandes conocimientos para la manipulación del proceso productivo.
• Integrar la gestión y producción.
9. ¿Qué ambiente configura los Sistemas Operativos?
Un sistema operativo desempeña 5 funciones básicas en la operación de un sistema informático: suministro de interfaz al usuario, administración de recursos, administración de archivos, administración de tareas y servicio de soporte y utilidades.
1. Interfaces del usuario
Es la parte del sistema operativo que permite comunicarse con él, de tal manera que se puedan cargar programas, acceder archivos y realizar otras tareas. Existen tres tipos básicos de interfaces: las que se basan en comandos, las que utilizan menús y las interfaces gráficas de usuario.
2. Administración de recursos
Sirven para administrar los recursos de hardware y de redes de un sistema informático, como la CPU, memoria, dispositivos de almacenamiento secundario y periféricos de entrada y de salida.
3. Administración de archivos
Un sistema de información contiene programas de administración de archivos que controlan la creación, borrado y acceso de archivos de datos y de programas. También implica mantener el registro de la ubicación física de los archivos en los discos magnéticos y en otros dispositivos de almacenamiento secundarios.
4. Administración de tareas
Los programas de administración de tareas de un sistema operativo administran la realización de las tareas informáticas de los usuarios finales. Los programas controlan que áreas tiene acceso al CPU y por cuánto tiempo. Las funciones de administración de tareas pueden distribuir una parte específica del tiempo del CPU para una tarea en particular, e interrumpir al CPU en cualquier momento para sustituirla con una tarea de mayor prioridad.
5. Servicio de soporte
Los servicios de soporte de cada sistema operativo dependerán de la implementación particular de éste con la que estemos trabajando. Entre las más conocidas se pueden destacar las implementaciones de Unix, desarrolladas por diferentes empresas de software, los sistemas operativos de Apple Inc., como Mac OS X para las computadoras de Apple Inc., los sistemas operativos de Microsoft, y las implementaciones de software libre, como GNU/Linux o BSD producidas por empresas, universidades, administraciones públicas, organizaciones sin fines de lucro y/o comunidades de desarrollo.
Estos servicios de soporte suelen consistir en:
• Actualización de versiones.
• Mejoras de seguridad.
• Inclusión de alguna nueva utilidad (un nuevo entorno gráfico, un asistente para administrar alguna determinada función,...).
• Controladores para manejar nuevos periféricos (este servicio debe coordinarse a veces con el fabricante del hardware).
• Corrección de errores de software.
• Otros.
No todas las utilidades de administración o servicios forman parte del sistema operativo, además de éste, hay otros tipos importantes de software de administración de sistemas, como los sistemas de administración de base de datos o los programas de administración de redes. El soporte de estos productos deberá proporcionarlo el fabricante correspondiente (que no tiene porque ser el mismo que el del sistema operativo).
10. Elaborar dos mentefactos conceptuales de Software de base o Software del Sistema (Sistema Operativo) y Software Aplicativo
Descargar el documento completo:
http://cid-d11e48c5a3074a5b.skydrive.live.com/self.aspx/identificacion%20de%20necesidades/Gu%c3%ada%20de%20trabajo%20colaborativo%2012.docx
