INDICE: 1. ¿Qué es un sistema operativo? 2. Funciones del sistema operativo 2.1 El sistema operativo como gestor de recursos 2.2 El sistema operativo como ejecutor de servicios 2.3 El sistema operativo como ejecutor de los mandatos de los usuarios 3. Definición de usuario y grupo de usuarios 4. Arranque de la computadora 4.1 Arranque del hardware 4.2 Situación del sistema operativo 4.3 Arranque del sistema operativo 5. Componentes del sistema operativo 6. Gestión de procesos 7. Gestión de memoria 8 .Comunicación y sincronización entre procesos 9. Gestión de la E/S 10. Gestión de archivos y directorios 10.1 Sistema de archivos 11. Seguridad y protección 12. Interfaz del usuario del alfanuméricas e interfaces gráficas sistema 12.1 Interfaces alfanuméricas 12.2 Interfaces gráficas 13. Historia de los sistemas operativos operativo: interfaces 1. ¿Que es un sistema operativo? El termino de maquina desnuda se utiliza para describir a una computadora que carece de sistema operativo (SO). El término es interesante porque resalta el hecho de que una computadora en si misma no hace nada. Una computadora solamente es capaz de repetir a alta velocidad la secuencia de: lectura de instrucción de máquina, incremento del PC y ejecución de la instrucción leída. Para que una computadora realice una función determinada ha de tener en la memoria principal un programa maquina especifico y ha de conseguir que el registro PC contenga la dirección de comienzo del programa, es decir un programa no volátil. La misión del sistema operativo es completar (vestir) a la maquina mediante una serie de programas que permitan su cómodo manejo y utilización. Un sistema operativo (SO) es un programa que tiene encomendadas una serie de funciones diferentes cuyo objetivo es simplificar el manejo y la utilización de la computadora, haciéndolo seguro y eficiente. 2. Funciones del sistema operativo Las funciones clásicas del sistema operativo se pueden agrupar en las tres categorías siguientes: - Gestionar los recursos de la computadora Ejecutar servicios para los programas Ejecutar los mandatos de los usuarios Como muestra el dibujo anterior, el sistema operativo está formado por 3 capas principales. La capa más cercana al hardware se denomina núcleo (kernel) y es la que gestiona los recursos del hardware del sistema y la que suministra la funcionalidad básica del sistema operativo. Esta capa es la más permisiva. La capa de servicios o llamadas al sistema ofrece a los programas unos servicios en forma de interfaz de programación o API ( application programming interface ), es decir, el API es un conjunto de funciones y procedimientos que ofrecen ciertos subprogramas para ser utilizados por un software como una capa de abstracción ( capa de aislamiento ). Desde el punto de vista de los programas, esta capa hace funcionar a la computadora, por lo que se suele decir que el sistema operativo ofrece una maquina virtual a los programas . De esta manera se facilita la elaboración de éstos, puesto que se apoyan en las funciones que le suministra el sistema operativo. La capa del intérprete de mandatos o Shell proporciona al usuario poder dialogar de forma interactiva con la computadora. El Shell recibe los mandatos u órdenes del usuario, los interpreta y si puede, los ejecuta. Puesto que el Shell se ejecuta en nivel usuario, algunos autores consideran que no forma parte del sistema operativo. 2.1El sistema operativo como gestor de recursos En una computadora actual suelen existir varios programas, del mismo o distintos usarios, ejecutándose simultáneamente. Estos programas compiten por los diferentes recursos de la computadora , siendo el sistema operativo el encargado de suministrar su asignación y uso. Además el sistema operativo ha de garantizar la protección de los programas y ha de suministrar información sobre el uso que se hace de los recursos. a) Asignación de recursos El sistema operativo es el que se encarga de asignar dichos recursos a los programas de ejecución. Para ello, ha de mantener unas estructuras que le permitan saber que recursos están libres y cuales están ya asignados a los programas. La asignación de los recursos se realiza según su disponibilidad ( de los programas ) y prioridad, debiéndose resolver los conflictos que aparecen por las peticiones simultaneas del usuario. Otra parte importante es la recuperación de recursos cuando los programas ya no lo necesitan. Una mala recuperación de los recursos conllevaría que el sistema operativo considerara, por ejemplo, que ya no le queda memoria suficiente cuando, en realidad, si la tiene. La recuperación tiene lugar cuando el programa que tiene asignado un recurso comunica al sistema operativo que ya no lo necesita o simplemente porque el programa ya ha concluido. Los recursos utilizados por el sistema operativo son físicos y lógicos. Entre los fisicos destacamos el procesador, la memoria principal y los periféricos y entre los logicos, los archivosy los puertos de comunicación. b) Protección El sistema operativo es el encargado de la protección entre los usuarios del sistema. Ha de asegurar la confidencialidad de la información y que unos trabajos no interfieran con otros. Para conseguir este objetivo tiene que impedir que los programas puedan acceder a los recursos asignados a otros programas. c) Contabilidad La contabilidad permite medir la cantidad de recursos que, a lo largo de su ejecución, utiliza cada programa. De esta manera se puede conocer la carga que utiliza cada recurso y saber cuantos recursos ha utilizado el usuario. 2.2 El sistema operativo como ejecutor de servicios El sistema operativo ofrece a los programas un conjunto de servicios (llamadas al sistema) que pueden solicitar cuando necesiten ejecutar alguna acción. El modelo de programación que ofrece el hardware se complementa con estos servicios de software , que permite ejecutar de forma cómoda y segura ciertas operaciones. Los servicios se pueden agrupar en: ejecución de programas, órdenes de E/S , operaciones sobre archivos y detección y tratamiento de errores. a) Ejecución de programas El sistema operativo ofrece distintos servicios para crear un ejecución así como abortarla o pararla. También existen otros servicios para conocer o modificar la condiciones de ejecución de los programas, y para comunicar o sincronizar unos programas con otros. La ejecución de programas da lugar al concepto de proceso. Un proceso se puede definir como un programa en ejecución. El concepto de proceso es fundamental en los sistemas operativos, puesto que tiene como ultimo objetivo crear, ejecutar, y destruir procesos. Para que un programa pueda convertirse en un proceso tiene que estar traducido a código máquina y almacenado en un dispositivo de almacenamiento como el disco. Bajo la petición del usuario, el sistema operativo creará un proceso para ejecutar el programa . varios procesos pueden estar ejecutando el mismo programa, un ejemplo claro es que varios usuarios pueden pedir al sistema operativo la ejecución del mismo programa editor. b) Órdenes de E/S Los servicios E/S ofrecen comodidad y protección a los programas porque les proveen de operaciones de lectura, escritura y modificación del estado de los periféricos. La programación de las operaciones E/S es muy compleja y dependiente del hardware especifico de cada periférico. Los servicios del sistema operativo ofrecen una gran capacidad de abstracción de tal forma que el programador de aplicaciones no tiene que preocuparse de esos detalles. c) Operaciones sobre archivos Los archivos ofrecen un nivel de abstracción todavía mayor que el de los sistemas E/S, permitiendo operaciones como la creación, el borrado, renombrado, apertura, escritura y lectura de archivos. Mucho de los servicios son parecidos al de las operaciones E/S pero siempre terminan concretándose en este tipo de operaciones. d) Detección y tratamientos de errores Además de analizar detalladamente todas las órdenes que recibe, para comprobar si se pueden realizar , el sistema operativo se encarga de tratar todas las condiciones de error que detecte el hardware. Entre las condiciones de error que pueden haber, destacamos: los errores en las operaciones de E/S, errores de igualdad en los accesos a memoria o en los buses y errores de ejecución en los programas, como desbordamiento, violaciones de memoria, códigos de instrucción prohibidos, etc. 2.3 El sistema operativo como ejecutor de los mandatos de los usurarios El sistema operativo permite que los usuarios dialoguen de forma interactiva con el sistema gracias al intérprete de mandatos o Shell. El Shell se comporta como un bucle infinito que está repitiendo constantemente la siguiente secuencia: Espera una orden del usuario. En el caso de una interfaz textual, el Shell está pendiente de lo que escribe el usuario en la línea de mandatos. En el caso de interfaces gráficas, el Shell esta pendiente de los eventos del ratón que manipula el usuario y del teclado. Analiza la orden y en caso de que sea correcta la ejecuta ( emplea los servicios del SO ) Concluida la orden vuelve a la espera a) Archivos de mandatos Casi todos los interpretes de mandatos pueden ejecutar archivos de mandatos, llamados Shell scripts. Estos archivos incluyen varis mandatos totalmente equivalentes a los mandatos que se introducen en el Terminal. Además, para realizar funciones complejas, pueden incluir mandatos especiales de control del flujo de ejecución, como goto, for o if. 3. Definición de usuario y grupo de usuarios Un usuario es una persona autorizada para utilizar un sistema informático. El usuario se autentifica mediante su nombre de cuenta y su contraseña. Realmente el sistema operativo no asocia el concepto de usuario con el de persona física si no con un nombre de cuenta. Una persona puede tener más de una cuenta y cada una puede ser utilizada por mas de una persona. Internamente el sistema operativo asigna a cada usuario (cuenta) un identificador (user identifier) y un perfil. El sistema de seguridad de los sistemas operativos está basado en la entidad usuario. Cada usuario tiene reservados unos derechos, para permitir realizar operaciones. Existe un usuario superior, llamado administrador, el cual no tiene restricción, es decir, que puede realizar todas las operaciones que le convenga sin restricción. Los usuarios se organizan en grupos. de cada diversas ninguna ninguna 4. Arranque de la computadora El arranque de una computadora tiene 2 fases: la fase de arranque del hardware y la fase de arranque del Sistema operativo. 4.1 Arranque del hardware Una computadora solo es capaz de realizar actividades útiles si cuenta con el correspondiente programa cargado en la memoria principal. El inconveniente es que la memoria principal de los computadores es volátil (es aquella memoria cuya información se pierde al interrumpirse el flujo de corriente eléctrica). Para resolver esta situación, las computadoras antiguas tenían una serie de conmutadores que permitían introducir una a una palabras en la memoria Principal y en los registros, en forma binaria. El usuario debía introducir un primer programa ( en binario ) que permitiese cargar otros programas almacenados en algún soporte, como la cinta de papel. Hoy en día, la solución que se emplea es mucho más sencilla y cómoda, pues se basa en un programa permanentemente grabado en una memoria ROM no volátil, es decir, cuya información no se pierde al interrumpirse el flujo de corriente eléctrica. En esta memoria ROM se encuentra un programa de arranque que esta siempre disponible a no ser que esta memoria pierda su información. Cuando se arranca la computadora, se genera una señal eléctrica que carga unos valores predefinidos en los registros. En especial, esta señal carga en el contador de programa la dirección de comienzo del arranque de programa grabado en la memoria ROM. De esta manera se cumplen todas las condiciones para que la computadora ejecute un programa y realice funciones útiles. El programa de arranque de la memoria ROM realiza 3 funciones: _ En primer lugar, hace una comprobación de sistema que sirve para detectar sus características ( x ejemplo, la cantidad de memoria principal disponible o los periféricos instalados ) y comprobar si el conjunto funciona correctamente. - Después entra en la fase de lectura y almacenamiento en memoria del programa cargador del sistema operativo (se denomina carga a la operación combinada de leer un programa ubicado en un periférico y de almacenarlo en memoria principal. El programa que realiza la carga se llama cargador) - Finalmente, acaba separando la dirección de memoria en la que ha almacenado este programa. El programa iniciador ROM es independiente del sistema operativo. 4.2 Situación del sistema operativo El sistema operativo esta almacenado en una unidad de disco. El programa cargador del sistema operativo o boot del sistema operativo se encuentra almacenado en una zona predefinida del disco y además tiene un tama prefijado. El programa de arranque lleva el programa cargador del sistema operativo a la memoria principal. El programa de arranque y el sistema operativo tienen una ubicación, una dirección de arranque y un tamaño del cargador del sistema operativo “distintos”. El programa de arranque es independiente del sistema operativo siempre que se cumpla lo anterior, por ello la maquina podrá soportar distintos sistemas operativos. Para una mayor seguridad, el programa cargador del sistema operativo se encuentra situado en una zona predeterminada en el programa de arranque ,y esta contenida por una contraseña ( palabra mágica ). De esta manera, el programa de arranque pueda comprobar que la información contenida en la zona predeterminada contiene efectivamente el programa cargador del sistema operativo. 4.3 Arranque del sistema operativo El programa cargador del sistema operativo tiene objetivo llevar a la memoria principal algunos de los componentes que forman el sistema operativo. Cuando se han cargado dichos componentes, se pasa a una fase de iniciación que consta de las siguientes operaciones: - - Comprobación del sistema. Cuando las pruebas realizadas por el hardware se han completado por el programa de arranque, se comprueba que el sistema de archivos es correcto. Esta operación obliga a revisar todos los directorios lo que supone un largo tiempo de procesamiento. Las estructuras de información propias del sistema operativo, como las tablas de procesos, las tablas de memoria y las de E/S son establecidas. La parte del sistema operativo que debe estar siempre en la memoria, se carga en la memoria principal. Se crea un proceso de inicio, así como una serie de procesos auxiliares y de demonio (es un tipo especial de proceso informático que se ejecuta en segundo plano en vez de ser controlado directamente por el usuario. Este tipo de programas se ejecutan de forma continua (infinita), es decir, que aunque se intente cerrar o matar el proceso, este continuará en ejecución o se reiniciará automáticamente). Los procesos de inicio presentan en su terminal el mensaje de bienvenida, esperando que un usuario arranque una sesión, para ello se tiene que escribir el nombre de su cuenta y su determinada contraseña. 5. Componentes del sistema operativo - - Gestión de procesos. Es el encargado de la creación, planificación y destrucción de procesos. Gestión de memoria. Es el componente encargado de saber que partes de la memoria están libres o ocupadas, así como de la liberación de memoria según la necesiten los procesos. Gestión de la E/S. se encarga de facilitar el manejo de los dispositivos periféricos. Gestión de archivos y directorios. Se ocupa del manejo de archivos y directorios y de la administración del almacenamiento secundario. Comunicación y sincronización entre procesos. Ofrece mecanismos para que los procesos puedan comunicarse y sincronizarse. Seguridad y protección. Debe encargarse de garantizar la identidad de los usuarios y de definir lo que pueden hacer cada uno de ellos con los recursos del sistema. 6. Gestión de procesos Un componente principal del sistema operativo es el que se encarga de la gestión de procesos, puesto que su función consiste en generar y gestionar los procesos y tener en cuenta sus peticiones. Un proceso se puede definir como un programa en ejecución. No hay que confundir el concepto de programa con el concepto de proceso. Un programa no es más que un conjunto de instrucciones de la computadora, mientras que el proceso surge cuando un programa se pone en ejecución. Esto hace posible que varios procesos puedan ejecutar el mismo programa al mismo tiempo. El SO es el responsable de: Crear y destruir los procesos. Parar y reanudar los procesos. Ofrecer mecanismos para que se comuniquen y sincronicen. Dependiendo del número de procesos y de usuarios que se puedan ejecutar al mismo tiempo, un sistema operativo puede ser: - - Monotarea, también llamado monoproceso: son los más primitivos, es decir, solo pueden manejar un proceso en cada momento o que solo pueden ejecutar las tareas de una en una. Por ejemplo, cuando la computadora esta imprimiendo un documento, no puede iniciar otro proceso ni responder a nuevas instrucciones hasta que se termine la impresión. Multitarea o multiproceso: permite que coincidan varios procesos a la vez. El sistema operativo se encarga de ir repartiendo el tiempo del procesador entre estos procesos. Monousuario: los sistemas monousuarios son aquellos que nada más que pueden atender a un solo usuario. Estos tipos de sistemas son muy simples porque todos los dispositivos de entrada, salida y control dependen de la tarea que se esta utilizando, esto quiere decir, que las instrucciones que se dan son procesadas de inmediato, ya que existe un solo usuario. - Multiusuario: soporta varios usuarios trabajando simultáneamente desde varios terminales, a su vez cada usuario puede tener activo más de un proceso, por lo que el sistema, obligatoriamente ha de ser multitarea. Los sistemas multiusuario reciben también el nombre de tiempo compartido, porque el sistema operativo ha de repartir el tiempo de la computadora entre los usuarios para que las tareas de todos ellos avancen de forma razonable. El sistema operativo ofrece una serie de servicios que determinan la vida de un proceso. Esta vida esta constituida por las siguientes fases: creación, ejecución y muerte del proceso. Generalmente, los sistemas operativos ofrecen los siguientes servicios para la gestión de procesos: - - Crear un proceso. El proceso es creado por el sistema operativo cuando así lo solicita otro proceso que se convierte en el padre del nuevo Ejecutar un proceso. Los procesos pueden ejecutar de dos formas: mediante archivos batch o de forma interactiva. Con los archivos batch se agrupan varios procesos en un lote de tal manera que el usuario no intervenga. Por otro lado un proceso se puede ejecutar de forma interactiva, Es decir, una interfaz directa (interactiva) entre el usuario y la computadora ( interfaz gráfica ). Muerte del proceso. Un proceso puede finalizar su ejecución por varias causas: * a terminado de ejecutar el programa * se produce un error en la ejecución * el usuario da por finalizado el proceso 7. Gestión de memoria El gestor de memoria es otro de los componentes principales del sistema operativo. Su actividad se centra fundamentalmente en la gestión de recursos, puesto que tiene como objetivos la gestión de la memoria, se encarga de: - Asigna memoria a los procesos. Proporciona memoria a los procesos cuando la solicitan y la desvinculan cuando así lo requieren. Tratan los posibles errores de acceso a memoria evitando que unos procesos interfieran en la memoria de otros. Permiten que los procesos puedan compartir memoria entre ellos. De esta forma los procesos pueden comunicarse entre ellos. Gestionan los niveles de memoria y tratan los fallos en los sistemas con memoria virtual. Además de estas funciones el gestor de memoria, suministra los siguientes servicios: solicitan memoria, liberan memoria y comparten memoria. 8 .Comunicación y sincronización entre procesos Los procesos son independientes, ya que por razones de seguridad, no deben interferir unos con otros. Sin embargo, cuando se divide un trabajo complejo en varios procesos que se ayudan entre sí para realizar un trabajo, es necesario que se comuniquen (para transmitirse datos y órdenes) y se sincronicen para ejecutar sus acciones. Por tanto, el sistema operativo de be incluir servicios de comunicación y sincronización entre procesos que permita la cooperación entre ellos. El sistema operativo ofrece una serie de mecanismos básicos de comunicación que permiten transferir cadenas de bytes, pero han de ser los procesos que se comunican los que interpreten la cadena de bytes transferida. En este sentido se han de poner de acuerdo en la longitud de la información y de los tipos de datos utilizados (idioma). El sistema operativo ofrece también mecanismos que permiten que los procesos esperen (se bloqueen) y se despierten (que continúen su ejecución). Estos mecanismos presentan las siguientes fases: - Creación del mecanismo Utilización del mecanismo Destrucción del mecanismo Todos los mecanismos de comunicación, tienen los siguientes servicios básicos: - Crear. Permite que el proceso soliciten la creación del mecanismo. Enviar. Permite que el proceso emisor envíe información a otro. Recibir. Permite que el proceso receptor reciba información de otro. Destruir. Permite que el proceso solicite la creación o destrucción del mecanismo. Por otro lado, la comunicación puede ser sincrona o asíncrona. En la comunicación sincronía los dos procesos han de ejecutar los servicios de comunicación al mismo tiempo, es decir, el emisor ha de estar en el servicio de enviar y el receptor ha de estar en el servicio de recibir. En la comunicación asíncrona el emisor no tiene que esperar a que el receptor solicite el servicio recibir, hace el envío y sigue con la ejecución. 9. Gestión de la E/S El gestor de E/S debe controlar el funcionamiento de todos los dispositivos de E/S( de todos los periféricos) para alcanzar los siguientes objetivos: - - facilitar el manejo de los dispositivos periféricos. Para ello debe ofrecer una interfaz sencilla y fácil de utilizar entre los dispositivos, y gestionar los errores que puedan producir el acceso a estos. Ofrecer mecanismo de protección que impidan a los usuarios a acceder sin control (administrador) a los dispositivos periféricos ofrece a los usuarios una serie de servicios de E/S independientemente de los dispositivos. Esta independencia se refiere a que deben emplearse los mismos servicios y operaciones de E/S para leer aunque sean dispositivos diferentes. Los servicios E/S son de lectura y escritura de datos. Estos servicios pueden estar orientados a caracteres, como por ejemplo las impresoras, el teclado, el ratón… o pueden estar orientados a bloques, como por ejemplo, memorias externas, pen drive… El segundo caso se diferencia del primero en que la operación se hace sobre un bloque de información con un numero fijo de caracteres. 10. Gestión de archivos y directorios Los objetivos fundamentales del servidor de archivo son los siguientes: - Facilitar el manejo de los dispositivos periféricos. Para ello ofrece una visión lógica simplificada de los mismos en forma de archivos. Proteger a los usuarios, poniendo limitaciones a los archivos que es capaz de manejar cada usuario (administrador). Los servicios que abarcan el servidor de archivos son de dos tipos: los servicios dirigidos al manejo de datos o archivos y los dirigidos al manejo de los nombres o directorios. El servidor de archivos ofrece una visión lógica compuesta por una serie de archivos y directorios identificados por un nombre lógico donde se pueden realizar una serie de operaciones. La visión física incluye detalles de como están almacenados estos objetos en los periféricos correspondientes, por ejemplo los en los discos. Un archivo es una unidad de almacenamiento lógico no volátil( la información no se pierde cuando desaparece el flujo de corriente) que agrupa un conjunto de información. Cada archivo tiene una información asociada a sus características, como: tipo de archivo, propietario del archivo, tamaño del archivo, vida del archivo (fecha y hora) y derechos de acceso al archivo( lectura, escritura, lectura-escritura…). 10.1 Sistema de archivos Es el conjunto de archivos incluidos en una unidad de disco. Estos almacenan programas( en código, fuente y objeto) y datos como imágenes, textos… el sistema operativo es el responsable de: - Construir y eliminar archivos y directorios Ofrecer funciones para manipular archivos y directorios Establecer la correspondencia entre archivos y unidades de almacenamiento Realizar copias de seguridad Existe diferentes sistemas de archivos, es decir, existen diferentes formas de organizar la información que se almacenan en las memorias (normalmente los discos) de los ordenadores. Por ejemplo existen los sistemas de archivos FAT, FAT32, EXT3, NTFS. 11. Seguridad y protección Con la seguridad se pretende garantizar la identidad de los usuarios y definir lo que puede hacer cada uno de ellos. El primer caso se trata bajo el término de autentificación, cuyo objetivo es determinar que un usuario es quien dice ser. En la actualidad las contraseñas es el método más utilizado como mecanismo de autentificación. El segundo caso se trata mediante los privilegios, es decir, el usuario administrador determinará a los recursos que pueden acceder cada usuario. Por otro lado el sistema operativo se encarga de distinguir entre el uso autorizado y no autorizado, de especificar los controles de seguridad a realizar, y fuerza el uso de los mecanismos de protección. 12. Interfaz del usuario del sistema operativo: interfaces alfanuméricas e interfaces gráficas Cuando un usuario trabaja con una computadora necesita poder interactuar con elk sistema operativo para poder llevar a cabo operaciones como ejecutar un programa o borrar un archivo, sin necesidad de escribir un programa que realice dicha operación utilizando los servicios del sistema operativo. El sistema operativo, por tanto, además de asignar servicios( llamadas al sistema) a las aplicaciones, tiene que proporcionar un interfaz de usuario que permita dar instrucciones al sistema para realizar diversas operaciones. Forman parte del interfaz del sistema las siguientes categorías: - Manipulación de archivos y directorios - Ejecución de programas - Herramientas para el desarrollo de las aplicaciones - Comunicación con otros sistemas - Información de estado del sistema - Configuración de la propia interfaz - Intercambio de datos entre aplicaciones - Control de acciones 12.1 Interfaces alfanuméricas La característica principal de este tipo de interfaces es un modo de trabajo basado en lineas de texto. El usuario, para dar instrucciones al sistema escribe en su terminal un mandato determinado. Cada mandato esta estructurado como un nombre de mandato y unos argumentos. Esta forma de operar, basada en líneas de texto, viene dado por el tipo de computadoras que se usaban en los primeros sistemas de tiempo compartido. Se trataba de teletipos (dispositivo telegráfico de transmisión de datos) que imprimían la salida en papel y que, por tanto, tenían un funcionamiento basado en líneas. Más tarde, la utilización de computadoras más “sofisticadas” que, aunque seguían siendo de carácter alfanumérico, usaban una pantalla para mostrar la información. Sin embargo, la posibilidad de trabajar con una pantalla que mostrase información, no cambió la forma de trabajo de la interfaz, que continuó siendo en modo línea. 12.2 Interfaces gráficas La cima de las interfaces graficas de usuario se debe principalmente a la necesidad de proporcionar a los usuarios no especializados, una visión sencilla de la computadora ocultándose de toda su complejidad. 13. Historia de los sistemas operativos Durante los años 40, se construyeron las primeras computadoras. Como ejemplo de computadoras de este ejemplo contamos con ENIAC, financiado por el laboratorio de investigación de los EEUU. El ENIAC era una máquina enorme con un peso de 30 toneladas y capaz de realizar 5000 sumas por segundo, 457 multiplicaciones por segundo y 38 divisiones por segundo. Otro ejemplo de computadora fue el EDVAC. En esta etapa aun no existían sistemas operativos. El usuario debía codificar su programa a mano y en instrucciones de línea, y debían introducirlo mediante conmutadores o tarjetas perforadas. Las salidas se imprimían en cintas de papel, para su posterior impresión. En caso de errores, en la ejecución de los programas, el usuario tenía que eliminarlos examinando el contenido de la memoria. Primera generación (años 50): Con la aparición de las primera generación de computadoras (año 50), comienza su explotación, puesto que ya empieza ha haber un incremento de usuarios. El tipo de operación seguía siendo en serie, es decir, se trata de un trabajo detrás de otro, teniendo en cada trabajo las siguientes fases: - Instalación de cintas o fichas perforadas en los dispositivos periféricos. - Lectura mediante un programa cargador, del programa ejecutar y de sus datos - Ejecución del programa - Impresión o grabación de los resultados - Retirada de cintas, fichas y papel. El problema básico que abordaba estos sistemas operativos primitivos era optimizar el flujo de trabajos, minimizando el tiempo empleado en retirar un trabajo y montar el siguiente. También empezaron a abordar el problema de la E/S. Para minimizar el tiempo de montaje de los trabajos se agrupaban en archivos por lotes (batch) del mismo tipo, lo que evitaba tener que montar y desmontar las cintas de los copiladores y montadores, aumentando el rendimiento. Segunda generación (años 60) La multiprogramación se impuso en sistema de lotes, como una forma de aprovechar el tiempo empleado en las operaciones de E/S. cuando un trabajo necesitaba una operación de E/S la solicita al sistema operativo que se encarga de: - Congelar el trabajo solicitante - Iniciar la mencionada operación de E/S por DMA - Pasar a realizar otro trabajo residente en memoria También en esta época aparecen otros modos de funcionamiento muy importantes: - Se construyen los primeros multiprocesadores - Se introduce el concepto de independencia de dispositivo - Comienza los sistemas de tiempo compartido, que permiten que varios usuarios trabajen de forma interactiva con la computadora desde terminales - Aparecen, en esta época, los primeros sistemas de tiempo real. Tercera generación (años 70) Debido al avance de la electrónica, empezó a crearse circuitos con miles de transistores en un centímetro cuadrado de silicio, lo que llevaría, pocos años después, a producir los primeros sistemas integrados. Ésta década se podría definir como la de los sistemas de propósito general y en ella se desarrollan tecnologías que se siguen utilizando en la actualidad. Es en los años 70 cuando se produce el boom de los miniordenadores y la informática se acerca al nivel de usuario. En cuanto a los lenguajes de programación, destacamos la aparición de Pascal y C, el cual se creó para volver a escribir el código del sistema operativo Unix, convirtiéndolo en uno de los pocos SO escritos en un lenguaje de alto nivel. En el campo de la programación lógica se dio a luz la primera implementación de Prolog, y en la revolucionaria orientación a objetos, Smalltalk. Se trataba de sistemas grandes y costosos, pues antes no se había construido nada similar, y muchos de los proyectos desarrollados terminaron con costos muy por encima del presupuesto y mucho después de lo que se marcaba como fecha de finalización. Además, aunque formaban una capa entre el hardware y el usuario, éste debía conocer un complejo lenguaje de control para realizar sus trabajos. Otro de los inconvenientes es el gran consumo de recursos que ocasionaban, debido a los grandes espacios de memoria principal y secundaria ocupados, así como el tiempo de procesador consumido. Es por esto que se intentó hacer hincapié en mejorar las técnicas ya existentes de multiprogramación y tiempo compartido. Para solventar los problemas antes comentados, se realizó un costosísimo trabajo para interponer una amplia capa de software entre el usuario y la máquina, de forma que el primero no tuviese que conocer ningún detalle de la circuitería. Cuarta generación (años 80) Con la creación de los circuitos LSI, integración a gran escala, chips que contenían miles de transistores en un centímetro cuadrado de silicio, empezó el auge de los ordenadores personales. En éstos se dejó un poco de lado el rendimiento y se buscó más que el sistema operativo fuera amigable, surgiendo menús e interfaces gráficas. Esto reducía la rapidez de las aplicaciones, pero se volvían más prácticos y simples para los usuarios. En esta época, siguieron utilizándose lenguajes ya existentes, como Smalltalk o C, y nacieron otros nuevos, de los cuales se podrían destacar: C++ y Eiffel dentro del paradigma de la orientación a objetos, y Haskell y Miranda en el campo de la programación declarativa. Un avance importante que se estableció a mediados de la década de 1980 fue el desarrollo de redes de computadoras personales que corrían sistemas operativos en red y sistemas operativos distribuidos. En esta escena, dos sistemas operativos eran los mayoritarios: MSDOS, escrito por Microsoft para IBM PC y otras computadoras que utilizaban la CPU Intel 8088 y sus sucesores, y UNIX, que dominaba en los ordenadores personales que hacían uso del Motorola 68000. BIBLIOGRAFIA - www.wikipedia.com - www.rincondelvago.com - www.monografias.com libros: - Sistemas operativos, edit. thomson paraninfo - Sistemas operativos( versión aplicada) , edit. Mcgraw hill - Sistemas operativos ( 3º Edición ) , edit. Mcgraw hill