SISTEMAS OPERATIVOS CONCEPTOS CARLOS MAURICIO DIAZ ROYERTH INGENIERO DE SISTEMAS ESPECIALISTA EN INVESTIGACION APLIACADA A LA EDUCACION Por qué se estudian los sistemas operativos? Los sistemas operativos son sistemas de software complejos. El entendimiento de los conceptos utilizados y la implementación de estos programas proporcionan desafíos y ejemplos para cualquier persona. El conocimiento de los sistemas operativos permite realizar aplicaciones que aprovechen los recursos eficientemente. Para el diseño de sistemas operativos. Para la creación de sistemas operativos personales con base en los sistemas operativos existentes. (Personalización de versiones) CONCEPTOS Un Sistema Operativo es el software encargado de ejercer el control y coordinar el uso del hardware entre diferentes programas de aplicación y los diferentes usuarios. Es un administrador de los recursos de hardware del sistema. Es un sistema que consiste en ofrecer una distribución ordenada y controlada de los procesadores, memorias y dispositivos de E/S entre los diversos programas que compiten por ellos. CONCEPTOS DE S. O. Un sistema operativo es un programa que actúa como intermediario entre el usuario y el hardware de un computador y su propósito es proporcionar un entorno en el cual el usuario pueda ejecutar programas. Un sistema operativo es el código que acompaña la ejecución de cualquier aplicación. Un sistema operativo es un programa que dirige y administra los recursos de un sistema computacional. Provee un conjunto de cualidades que facilitan el acceso de las aplicaciones a estos recursos, buscando siempre independencia del hardware. Un sistema operativo es la parte del sistema de cómputo que administra el hardware y el software. Un sistema operativo es un conjunto de programas que ordenadamente relacionados entre si, contribuyen a que el hardware de la computadora lleve a cabo su trabajo correctamente. Un sistema operativo es el soporte lógico que controla el funcionamiento del equipo físico. Estructura de un sistema computacional FUNCIONES DE LOS SISTEMAS OPERATIVOS. •Interpreta los comandos que permiten al usuario comunicarse con el ordenador. •Coordina y manipula el hardware de la computadora, como la memoria, las impresoras, las unidades de disco, el teclado o el mouse. •Organiza los archivos en diversos dispositivos de almacenamiento, como discos flexibles, discos duros, discos compactos o cintas magnéticas. •Gestiona los errores de hardware y la pérdida de datos. •Servir de base para la creación del software logrando que equipos de marcas distintas funcionen de manera análoga, salvando las diferencias existentes entre ambos. •Configura el entorno para el uso del software y los periféricos OTROS CONCEPTOS Llamadas al sistema Las instrucciones de E/S son privilegiadas y por lo tanto sólo las puede ejecutar el S.O. ¿Cómo ejecutar e/s? Solicitando al S.O. a través de una llamada al sistema. Las llamadas al sistema se usan en general para solicitar cualquier servicio al S.O. (Se tratan en este capítulo ) Una llamada al sistema genera una interrupción (trap) a una dirección específica del vector de interrupciones. Cuando se ejecuta una llamada al sistema, el hardware la trata como una interrupción (excepción) de software. Los parámetros se pasan vía registro o direcciones de memoria. LLAMADAS AL SISTEMA Las llamadas al sistema se clasifican normalmente en dos categorías generales: Aquellas que se relacionan con procesos y las que lo hacen con el sistema de archivo Shell (intérprete de comandos) El Shell es el intérprete de comandos, a pesar de no ser parte del sistema operativo (está íntimamente ligado con este), hace un uso intenso de muchas características del sistema operativo y por tanto sirve como un buen ejemplo de la forma en que se pueden utilizar las llamadas al sistema. También es la interfaz primaria entre un usuario situado frente a su terminal y el sistema operativo. CARACTERISTICAS -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 a hardware se refiere, esto es, asignar a cada proceso una parte del procesador para poder compartir los recursos. -Administración de dispositivos (gestionar a través del kernel). Coordinando y manipulando los dispositivos conectados al ordenador. El sistema operativo se debe encargar de comunicar a los dispositivos periféricos, cuando el usuario así lo requiera. Además debe organizar los 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. Gestiona los errores de hardware y la pérdida de los datos. -Gestión de permisos y de usuarios. Adjudica los permisos de acceso a los usuarios y evita que las acciones de uno afecten el trabajo que está realizando otro. El sistema operativo evita que los usuarios se bloqueen entre ellos, informándoles si esa aplicación está siendo ocupada por otro usuario. -Control de seguridad. Debe proporcionar seguridad tanto para los usuarios como para el software y la información almacenada en los sistemas. -Control de concurrencia. Establece prioridades cuando diferentes procesos solicitan el mismo recurso. -Administración de memoria. Asigna memoria a los procesos y gestiona su uso. -Generación de estadísticas. -Control de la ejecución de los programas. Para ello, acepta los trabajos, administra la manera en que se realizan, les asigna los recursos y los conserva hasta su finalización. - Administración de periféricos. Núcleos de sistemas operativos El núcleo (Kernel) de un sistema operativo es un conjunto de rutinas cuya misión es la de gestionar el procesador, la memoria, la entrada/salida y el resto de procesos disponibles en la instalación. Toda esta gestión la realiza para atender al funcionamiento y peticiones de los trabajos que se ejecutan en el sistema. Todas las operaciones en las que participan procesos son controladas por la parte del sistema operativo denominada núcleo (nucleus, core o kernel, en inglés). El núcleo normalmente representa sólo una pequeña parte de lo que por lo general se piensa que es todo el sistema operativo, pero es tal vez el código que más se utiliza. Por esta razón, el núcleo reside por lo regular en la memoria principal, mientras que otras partes del sistema operativo son cargadas en la memoria principal sólo cuando se necesitan. Funciones del núcleo •Manejo de interrupciones. • Creación y destrucción de procesos. • Cambio de estado de los procesos. • Despacho. • Suspensión y reanudación de procesos. • Sincronización de procesos. • Comunicación entre procesos. • Manipulación de los bloques de control de procesos. •Apoyo para las actividades de entrada/salida. • Apoyo para asignación y liberación de memoria. • Apoyo para el sistema de archivos. • Apoyo para el mecanismo de llamada y retorno de un procedimiento. • Apoyo para ciertas funciones de contabilidad del sistema. Categorías de los núcleos Los núcleos (kernels) de los sistemas operativos se pueden ubicar en dos categorías: Monolíticos o, Micronúcleos (microkernels). CLASIFICACIÓN DE LOS SISTEMAS OPERATIVOS Sistemas Operativos de multiprogramación (o Sistemas Operativos de multitarea). Es el modo de funcionamiento disponible en algunos sistemas operativos, mediante el cual una computadora procesa varias tareas al mismo tiempo. Sistema Operativo Monotareas. Los sistemas operativos monotareas son más primitivos y es todo lo contrario al visto anteriormente, es decir, solo pueden manejar un proceso en cada momento o que solo puede 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. Sistema Operativo Monousuario. Los sistemas monousuarios son aquellos que nada más puede atender a un solo usuario, gracias a las limitaciones creadas por el hardware, los programas o el tipo de aplicación que se este ejecutando. 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. Y están orientados principalmente por los microcomputadores. Sistema Operativo Multiusuario. Es todo lo contrario a monousuario; y en esta categoría se encuentran todos los sistemas que cumplen simultáneamente las necesidades de dos o más usuarios, que comparten mismos recursos. Este tipo de sistemas se emplean especialmente en redes. Sistemas Operativos por lotes. Los Sistemas Operativos por lotes, procesan una gran cantidad de trabajos con poca o ninguna interacción entre los usuarios y los programas en ejecución. Se reúnen todos los trabajos comunes para realizarlos al mismo tiempo, evitando la espera de dos o más trabajos como sucede en el procesamiento en serie. Sistemas Operativos de tiempo real. Los Sistemas Operativos de tiempo real son aquellos en los cuales no tiene importancia el usuario, sino los procesos. Por lo general, están subutilizados sus recursos con la finalidad de prestar atención a los procesos en el momento que lo requieran. se utilizan en entornos donde son procesados un gran número de sucesos o eventos. Sistemas Operativos de tiempo compartido. Permiten la simulación de que el sistema y sus recursos son todos para cada usuario. El usuario hace una petición a la computadora, esta la procesa tan pronto como le es posible, y la respuesta aparecerá en la terminal del usuario. Sistemas Operativos distribuidos. Permiten distribuir trabajos, tareas o procesos, entre un conjunto de procesadores. Puede ser que este conjunto de procesadores esté en un equipo o en diferentes, en este caso es trasparente para el usuario. Sistemas Operativos de red. Son aquellos sistemas que mantienen a dos o más computadoras unidas a través de algún medio de comunicación (físico o no), con el objetivo primordial de poder compartir los diferentes recursos y la información del sistema. Sistemas Operativos paralelos. En estos tipos de Sistemas Operativos se pretende que cuando existan dos o más procesos que compitan por algún recurso se puedan realizar o ejecutar al mismo tiempo. COMPONENTES DE UN SISTEMA OPERATIVO Gestión de proceso Gestión de la memoria principal Gestión del almacenamiento secundario El sistema de E/S Sistema de archivos Sistema de protección Sistema de comunicaciones