El sistema Operativo. El sistema operativo, es un software básico que controla una computadora. El sistema operativo tiene tres grandes funciones: coordina y manipula el hardware del ordenador o computadora, como la memoria, las impresoras, las unidades de disco, el teclado o el Mouse (ratón); organiza los archivos en diversos dispositivos de almacenamiento, como discos flexibles, discos duros, discos compactos o cintas magnéticas, y gestiona los errores de hardware y la pérdida de datos. Cómo Funciona Un Sistema Operativo Los sistemas operativos controlan diferentes procesos de la computadora. Un proceso importante es la interpretación de los comandos que permiten al usuario comunicarse con el ordenador. Algunos intérpretes de instrucciones están basados en texto y exigen que las instrucciones sean tecleadas. Otros están basados en gráficos, y permiten al usuario comunicarse señalando y haciendo clic en un icono. Por lo general, los intérpretes basados en gráficos son más sencillos de utilizar. Los sistemas operativos pueden ser de tarea única o multitarea. Los sistemas operativos de tarea única, más primitivos, sólo pueden manejar un proceso en cada momento. Por ejemplo, cuando la computadora está imprimiendo un documento, no puede iniciar otro proceso ni responder a nuevas instrucciones hasta que se termine la impresión. Todos los sistemas operativos modernos son multitarea y pueden ejecutar varios procesos simultáneamente. En la mayoría de los ordenadores sólo hay una Unidad Central de Procesamiento; un sistema operativo multitarea crea la ilusión de que varios procesos se ejecutan simultáneamente en la Unidad Central de Procesamiento. El mecanismo que se emplea más a menudo para lograr esta ilusión es la multitarea por segmentación de tiempos, en la que cada proceso se ejecuta individualmente durante un periodo de tiempo determinado. Si el proceso no finaliza en el tiempo asignado, se suspende y se ejecuta otro proceso. Este intercambio de procesos se denomina conmutación de contexto. El sistema operativo se encarga de controlar el estado de los procesos suspendidos. También cuenta con un mecanismo llamado planificador que determina el siguiente proceso que debe ejecutarse. El planificador ejecuta los procesos basándose en su prioridad para minimizar el retraso percibido por el usuario. Los procesos parecen efectuarse simultáneamente por la alta velocidad del cambio de contexto. Los sistemas operativos pueden emplear memoria virtual para ejecutar procesos que exigen más memoria principal de la realmente disponible. Con esta técnica se emplea espacio en el disco duro para simular la memoria adicional necesaria. Sin embargo, el acceso al disco duro requiere más tiempo que el acceso a la memoria principal, por lo que el funcionamiento del ordenador resulta más lento. Funciones de Los Sistemas Operativos. 1. Aceptar todos los trabajos y conservarlos hasta su finalización. 2. Interpretación de comandos: Interpreta los comandos que permiten al usuario comunicarse con la computadora. 3. Control de recursos: coordina y manipula el hardware de la computadora, como la memoria, las impresoras, las unidades de disco, el teclado o el ratón. 4. Manejo de dispositivos de Entrada/Salida: organiza los archivos en diversos dispositivos de almacenamiento, como discos flexibles, discos duros, discos compactos o cintas magnéticas. 5. Manejo de errores: Gestiona los errores de hardware y la pérdida de datos. 6. Secuencia de tareas: El sistema operativo debe administrar la manera en que se reparten los procesos. Definir el orden. (Quien va primero y quien después). 7. Protección: Evitar que las acciones de un usuario afecten el trabajo que esta realizando otro usuario. 8. Multiacceso: Un usuario se puede conectar a otra maquina sin tener que estar cerca de ella. 9. Contabilidad de recursos: establece el costo que se le cobra a un usuario por utilizar determinados recursos. Características de Los Sistemas Operativos. Conveniencia. Un sistema operativo hace más conveniente el uso de una computadora. Eficiencia. Un sistema operativo permite que los recursos de la computadora se usen de la manera más eficiente posible. Habilidad para evolucionar. Un sistema operativo deberá construirse de manera que permita el desarrollo, prueba o introducción efectiva de nuevas funciones del sistema sin interferir con el servicio. Encargado de administrar el hardware. El sistema operativo se encarga de manejar de una mejor manera los recursos de la computadora en cuanto hardware se refiere, esto es, asignar a cada proceso una parte del procesador para poder compartir los recursos. Relacionar dispositivos (gestionar a través del Kernel). El sistema operativo se debe encargar de comunicar a los dispositivos periféricos, cuando el usuario así lo requiera. Organizar datos para acceso rápido y seguro. Manejar las comunicaciones en red. El sistema operativo permite al usuario manejar con alta facilidad todo lo referente a la instalación y uso de las redes de computadoras. Procesamiento por bytes de flujo a través del bus de datos. Facilitar las entradas y salidas. Un sistema operativo debe hacerle fácil al usuario el acceso y manejo de los dispositivos de Entrada/Salida de la computadora. Técnicas de recuperación de errores. Fig. Error! No text of specified style in document.-1 Esquema de un Sistema Operativo. Clasificación De Los Sistemas Operativos. Por el número de usuarios Por el número de tareas SISTEMAS OPERATIVOS Por el número de procesadores monousuario multiusuario monotarea multitarea uniproceso Multiproceso Asimétrico simétrico Por el servicio Sistema Operativo de Red Sistema Operativo Distribuido Fig. Error! No text of specified style in document.-2 Clasificación de los sistemas operativos. Multiusuario.- los sistemas operativos multiusuario son capaces de dar servicios a más de un usuario a la vez, ya sea por medio de varias terminales conectadas a la computadora o por medio de sesiones remotas. Monousuario.- los sistemas operativos monousuario solo permiten un usuario a la vez. Monotareas.- los sistemas operativos monotareas son aquellos que solo permiten una sola tarea a la vez por usuario. Multitarea.- un sistema operativo multitarea es aquel que le permite al usuario estar haciendo varias labores al mismo tiempo. Esto se dice que es algo virtual porque realmente le esta asignando un determinado tiempo a cada proceso alternándolos, y así parece que fuera en tiempo real. Uniproceso.- un sistemas operativo uniproceso es aquel que es capaz de manejar solamente un proceso de una computadora. Multiproceso.- un sistema operativo multiproceso se refiere a que es capaz de manejar más de un procesador y es capaz de utilizarlos a todos para distribuir su carga de trabajo. Multiproceso simétrico.- los procesos son enviados indistintamente a cualquier procesador, teniendo teóricamente una mejor distribución del trabajo. Multiproceso asimétrico.- en este caso el sistema operativo selecciona un procesador el cual jugara el papel de procesador maestro y servirá como el pivote para distribuir la carga a los demás procesadores. Sistema Operativo de Red.-los sistemas operativos de red se definen como aquellos que tienen la capacidad de interactuar con sistemas operativos en otras computadoras por medio de un medio de transmisión con el objetivo de intercambiar información, transferir archivos y ejecutar comandos remotos. Sistema Operativo Distribuido.- este sistema abarca los servicios de red, logrando integrar recursos (impresoras, memoria, procesos, unidades de disco, etc.) en una sola maquina virtual que el usuario ingresa en forma transparente, es decir el usuario no necesita saber la ubicación de los recursos sino que los conoce por un nombre. Sistemas Operativos Actuales. Los sistemas operativos empleados normalmente son UNIX, Mac OS, MS-DOS, OS/2, Windows-NT y Windows XP. El UNIX y sus clones permiten múltiples tareas y múltiples usuarios. Su sistema de archivos proporciona un método sencillo de organizar archivos y permite la protección de archivos. Sin embargo, las instrucciones del UNIX no son intuitivas. Otros sistemas operativos multiusuario y multitarea son OS/2, desarrollado inicialmente por Microsoft Corporation e International Business Machines Corporation (IBM), y Windows-NT, desarrollado por Microsoft. El sistema operativo multitarea de las computadoras Apple se denomina Mac OS. El DOS y su sucesor, el MS-DOS, son sistemas operativos populares entre los usuarios de computadoras personales. Sólo permiten un usuario y una tarea. Tecnologías Futuras Los sistemas operativos siguen evolucionando. Los sistemas operativos distribuidos están diseñados para su uso en un grupo de ordenadores conectados pero independientes que comparten recursos. En un sistema operativo distribuido, un proceso puede ejecutarse en cualquier ordenador de la red (normalmente, un ordenador inactivo en ese momento) para aumentar el rendimiento de ese proceso. En los sistemas distribuidos, todas las funciones básicas de un sistema operativo, como mantener los sistemas de archivos, garantizar un comportamiento razonable y recuperar datos en caso de fallos parciales, resultan más complejas.1 1.9.2 Los lenguajes de Programación. Un lenguaje de programación es un conjunto de símbolos y de reglas para combinarlos que se usan para expresar algoritmos. Los lenguajes de programación, al igual que los lenguajes que usamos para comunicarnos, poseen un léxico (vocabulario o conjunto de símbolos permitidos), una sintaxis, que indica cómo realizar construcciones del lenguaje, y una semántica, que determina el significado de cada construcción correcta. Los lenguajes de programación o lenguajes de alto nivel están específicamente diseñados para programar computadoras. Sus características fundamentales son: Son independientes de la arquitectura física de la computadora. Por tanto no obligan al programador a conocer los detalles de la computadora que utiliza, y permiten utilizar los mismos programas en computadoras diferentes, con distinto lenguaje maquina (portabilidad). Normalmente, una sentencia en un lenguaje de alto nivel da lugar, a ser traducida a varias instrucciones en lenguaje máquina. Utilizan notaciones cercanas a las habituales en el ámbito en que se usan. Con estos lenguajes las operaciones se expresan con sentencias o frases muy parecidas al lenguaje matemático o al lenguaje natural. La utilización de conceptos habituales suele implicar, las siguientes cualidades: a) Las instrucciones se expresan por medio de texto. b) Se puede asignar un nombre simbólico a determinados componentes del programa para facilitar su comprensión por las personas. c) Dispone de instrucciones potentes, conteniendo operadores y funciones de una gran diversidad: aritméticas, especiales, lógicas etc. d) Pueden incluirse comentarios en las líneas de instrucciones, o en líneas específicas de comentarios. El Proceso De Traducción. Para facilitar el uso de las computadoras, se han desarrollado lenguajes de programación que permiten utilizar una simbología y una terminología próximas a las utilizadas tradicionalmente en la descripción de problemas. La traducción por un compilador (la compilación) consta de dos etapas fundamentales, que a veces no están claramente diferenciadas a lo largo del proceso: la etapa de análisis del programa fuente y la etapa de síntesis del programa objeto. 1 Silberschatz, Galván, Gagne, Sistemas Operativos México: Limusa Wiley Análisis lexicográfico. Consiste en descomponer el programa fuente en sus elementos constituyentes o símbolos (tokens). Los símbolos de un lenguaje son caracteres o secuencias de caracteres que tienen un significado concreto en el lenguaje: cada una de las palabras reservadas, los símbolos de operadores, identificadores de variables, números. El analizador lexicográfico (o escáner) aísta los símbolos, identifica su tipo, y almacena en las tablas de símbolos la información del símbolo que pueda ser necesaria durante el proceso de traducción. Análisis sintáctico. La sintaxis de un lenguaje de programación especifica cómo deben escribirse los programas, mediante un conjunto de reglas de sintaxis o gramática del lenguaje es sintácticamente correcto cuando sus estructuras (expresiones, sentencias declarativas, asignaciones, etc.) aparecen en un orden correcto. Se han definido varios sistemas para definir la sintaxis de los lenguajes de programación (metalenguajes). Entre ellos cabe destacar la notación BNF (Backus-Naur Form) y los diagramas sintácticos. Análisis semántico La semántica de un lenguaje de programación es el significado dado a las distintas construcciones sintácticas. El proceso de traducción es, en esencia, la generación de un código en lenguaje máquina con el mismo significado que el código fuente. En los lenguajes de programación, el significado está ligado a la estructura sintáctica de las sentencias. Así, una sentencia de asignación significa transferir el valor de la expresión de la derecha al identificador de la izquierda. Generación y optimización de código En esta fase se crea un archivo con un código en lenguaje objeto (normalmente lenguaje máquina) con el mismo significado que el texto fuente. El archivo-objeto generado puede ser (dependiendo del compilador) directamente ejecutable, o necesitar otros pasos previos a la ejecución, tales como ensamblado, encadenado y carga. En algunas ocasiones se utiliza un lenguaje intermedio (distinto del código objeto final), con el propósito de facilitar la optimización del código. En la generación de código intermedio se complementan y consultan las tablas generadas en fases anteriores (tablas de símbolos, de constantes, etc.). También se realiza la asignación de memoria a los datos definidos en el programa. Compiladores e Intérpretes. Un compilador traduce un programa fuente, escrito en un lenguaje de alto nivel, a un programa objeto, escrito en lenguaje ensamblador o máquina. El programa fuente suele estar contenido en un archivo, y el programa objeto puede almacenarse como archivo en memoria masiva para ser procesado posteriormente, sin necesidad de volver a realizar la traducción. Un interprete hace que un programa fuente escrito en un lenguaje vaya sentencia a sentencia traduciéndose y ejecutándose directamente por la computadora. El intérprete capta una sentencia fuente, la analiza e interpreta, dando lugar a su ejecución inmediata, no creándose por tanto un archivo o programa objeto almacenable en memoria masiva para ulteriores ejecuciones. Traductores cruzados. Emuladores Se denominan traductores cruzados a aquellos traductores que efectúan la traducción de programas fuente a programas objeto en una computadora distinta (computadora B) a aquella en la que se ejecutará el programa objeto (computadora A). También en una computadora puede simularse el comportamiento de otra. Estos programas de simulación se suelen denominar emuladores.