Definición de Sistema Operativo El sistema operativo es el programa (o software) más importante de un ordenador. Para que funcionen los otros programas, cada ordenador de uso general debe tener un sistema operativo. Los sistemas operativos realizan tareas básicas, tales como reconocimiento de la conexión del teclado, enviar la información a la pantalla, no perder de vista archivos y directorios en el disco, y controlar los dispositivos periféricos tales como impresoras, escáner, etc. Ejemplos SO Clasificación de los Sistemas Operativos Los sistemas operativos pueden ser clasificados de la siguiente forma: • Multiusuario: Permite que dos o más usuarios utilicen sus programas al mismo tiempo. Algunos sistemas operativos permiten a centenares o millares de usuarios al mismo tiempo. • Multiprocesador: soporta el abrir un mismo programa en más de una CPU. • Multitarea: Permite que varios programas se ejecuten al mismo tiempo. • Multitramo: Permite que diversas partes de un solo programa funcionen al mismo tiempo. • Tiempo Real: Responde a las entradas inmediatamente. Los sistemas operativos como DOS y UNIX, no funcionan en tiempo real. Componentes SO Manejo de comunicaciones Manejo de procesos Dispositivos entrada/salida SO Manejo memoria interna Manejo archivos y directorios Manejo memoria externa Gestión de procesos Comunicación entre proceso.- Mecanismos que permite a los procesos comunicarse . Memoria compartida Pipes Sockets Cola de Mensajes Gestión de procesos Se ocupa de los mecanismos y políticas para compartir o repartir un procesador entre diversos procesos Sincronización entre proceso .- Mecanismos que permite a los procesos sincronizarse . Semáforos Exclusión mutua Mensajes Planificación entre proceso.- Es la parte del SO que realiza toma la decisión que proceso debe ejecutarse de acuerdo a ciertas políticas. RR FIFO Prioridad Colas múltiples Primero el trabajo mas corto Gestión memoria El manejo de memoria tiene que ver con la asignación, el mapeo lógico y físico, la memoria virtual y los mecanismo de protección. Además, consiste en el proceso de asignar memoria para propósitos específicos, ya sea en tiempos de compilación o de ejecución. Generalmente se divide en dos particiones • Una para el SO residente • Procesos de usuarios El manejo de memoria virtual consiste en hacer creer a los programas que existe una memoria principal de gran tamaño y explota localidad de acceso a través de la jerarquía de memoria. Además la gestión de memoria debe cumplir algunos requisitos de protección como el código de procesos no debe hacer referencia a posiciones de otros procesos sin permiso. Gestión de dispositivos Sobre el manejo de dispositivos podemos tratar los driver, el buffering y el spooling. En el campo de la Informática, el spooling (Simultaneous Peripheral Operations On-Line) se refiere al proceso mediante el cual la computadora introduce trabajos en un buffer (un área especial en memoria o en un disco), de manera que un dispositivo pueda acceder a ellos cuando esté listo. Un controlador de dispositivo (llamado normalmente controlador, o, en inglés, driver) es un programa informático que permite al sistema operativo interactuar con un periférico, haciendo una abstracción del hardware y proporcionando una interfaz -posiblemente estandarizadapara usarlo. Se puede esquematizar como un manual de instrucciones que le indica cómo debe controlar y comunicarse con un dispositivo en particular. Por tanto, es una pieza esencial, sin la cual no se podría usar el hardware. Memorias intermedias (buffers). Otra solución a la lentitud de los dispositivos de E/S es el buffering, que es la utilización de memoria intermedia (o buffer). El buffering trata de mantener permanentemente ocupados tanto la CPU como los dispositivos de E/S. La idea es muy sencilla, los datos que se transmiten de memoria al periférico, y viceversa, son volcados en el buffer donde están disponibles para ser utilizados. Por ejemplo, para el envío de datos a un dispositivo de salida, la CPU vuelca los datos al buffer (memoria intermedia) hasta que el dispositivo de salida pueda aceptarlos. Cuando el dispositivo de salida vacíe el buffer, reclamará tiempo de CPU mediante una línea de interrupción habilitada para tal efecto. La CPU dejará la tarea que esté haciendo (aquí entra en juego la prioridad del dispositivo implicado en la tarea en ejecución y del dispositivo que genera la interrupción) guardando el estado del programa que se estaba ejecutando en la pila, para continuar donde estaba, una vez atendida la interrupción, que en este caso consistirá en volver a llenar el buffer e instruir al dispositivo para que inicie la lectura de los datos. Por tanto, debe existir una comunicación entre CPU y periférico, y una gestión del buffer. Gestión archivos Es la parte del SO que se encarga de proporcionar a los usuarios y aplicaciones servicios para el uso, acceso y control acceso , tanto de archivos como directorios. Los objetivos básicos de la gestión de archivos son: garantizar que la información del archivo sea valida, optimizar el acceso a los archivos, proveer soporte E/S a gran variedad de dispositivos de almacenamiento , entregar los datos que el usuario pide, minimizar o eliminar una potencial perdida de datos, proveer un conjunto estándar de rutinas E/S, proveer soporte de E/S a múltiples usuarios. Las funciones básicas que debe cubrir son: • Crear archivos •Borrar archivos •Abrir archivos •Cerrar archivos Elementos sistema Operativo Podemos decir que los elementos mas comunes dentro de un sistema operativos son. • El núcleo • Llamadas al sistema • El Shell El kernel o núcleo Lugar donde residen todos los módulos del SO. Generalmente solo representa una pequeña porción del código del SO. Kernel generalmente se encuentra en memoria principal Funciones: Procesamiento de interrupciones Creación/destrucciòn de procesos Sincronización de procesos Soporte a actividades de E/S Soporte a actividades de asignación de memoria Soporte a actividades de desasignaciòn de memoria Soporte de actividades con archivos Modo Nùcleo Modo usuario Llamadas al sistema Programa 2 del usuario Programa 1 del usuario 1 3 Tabla de despacho Procedimientos de servicios El shell Shell se emplea para referirse a aquellos programas que proveen una interfaz de usuario para acceder a los servicios del sistema operativo. Estos pueden ser gráficos o de texto simple, dependiendo del tipo de interfaz que empleen. Los shells están diseñados para facilitar la forma en que se invocan o ejecutan los distintos programas disponibles en el computador. Funciones SO Tipos núcleos