Issuu on Google+

SSIISSTTEEM MAASS OOPPEERRAATTIIVVOOSS.. GGEESSTTIIÓÓNN DDEE PPRROOCCEESSOOSS 11.. SSIISSTTEEM MAASS OOPPEERRAATTIIVVOOSS 11..11..IINNTTEERRFFAAZZ 11..22..EESSTTRRUUCCTTUURRAA 11..33..M MOODDOOSS DDEE EEXXPPLLOOTTAACCIIÓÓNN 11..44..TTIIPPOOSS DDEE SSIISSTTEEM MAASS OOPPEERRAATTIIVVOOSS 22.. NNÚÚCCLLEEOO 22..11..FFIINNAALLIIDDAADD YY FFUUNNCCIIOONNEESS 22..22..CCAARRAACCTTEERRÍÍSSTTIICCAASS 33.. PPRROOCCEESSOOSS 33..11..CCOONNCCEEPPTTOO 33..22..BBLLOOQQUUEE DDEE CCOONNTTRROOLL DDEE PPRROOCCEESSOOSS 33..33..EESSTTAADDOOSS 33..33..11.. TTRRAANNSSIICCIIOONNEESS EENNTTRREE EESSTTAADDOOSS DDEE UUNN PPRROOCCEESSOO 33..33..22.. IINNTTEERRRRUUPPCCIIOONNEESS 33..44..OOPPEERRAACCIIOONNEESS SSOOBBRREE UUNN PPRROOCCEESSOO 33..55..PPLLAANNIIFFIICCAACCIIÓÓNN DDEE PPRROOCCEESSOOSS 33..55..11.. CCOONNCCEEPPTTOO 33..55..22.. AALLGGOORRIITTM MOOSS DDEE PPLLAANNIIFFIICCAACCIIÓÓNN 33..66..CCOOM MUUNNIICCAACCIIÓÓNN EENNTTRREE PPRROOCCEESSOOSS 33..66..11.. EEXXCCLLUUSSIIÓÓNN M MUUTTUUAA 33..66..22.. M MEECCAANNIISSM MOOSS DDEE CCOOM MUUNNIICCAACCIIÓÓNN 44.. BBIIBBLLIIOOGGRRAAFFÍÍAA


11.. SSIISSTTEEM MAASS OOPPEERRAATTIIVVOOSS Para comprender el concepto de sistema operativo interesa conocer antes el concepto de sistema informático del cual forma una parte muy importante. Según la definición de la ISO un ordenador es un dispositivo capaz de procesar datos. Para lograrlo debe estar dotados de dos elementos básicos: un sistema físico y uno lógico. * El sistema físico hace referencia al conjunto de elementos físicos necesarios para el tratamiento eficaz de la información (hardware). * El sistema Lógico por su parte es el conjunto de recursos necesarios para que el sistema físico se encuentre en condiciones de realizar las tareas encomendadas; a este se le conoce como Software. Generalmente se suele dividir en dos tipos de software: Software o programas del sistema, que manejan los recursos lógicos con los cuales opera el ordenador y el software o programas de aplicación, que son los que resuelven los problemas concretos de los usuarios. El sistema operativo, en concreto, es un programa del sistema que controla los recursos del ordenador y sirve para la ejecución de los programas en general, convirtiéndose en el intermediario entre el hardware de un ordenador y del usuario, permitiendo su uso fácil y eficaz. Para conseguir esta función los sistemas operativos, se pueden estructurar de muy diversa forma, como ya veremos en el apartado que hace referencia a la estructura del sistema operativo.

11..11 IINNTTEERRFFAAZZ * Línea de Comandos.

La forma de interfaz entre el sistema operativo y el usuario en la que este escribe los comandos utilizando un lenguaje de comandos especial. Los sistemas con interfaces de líneas de comandos se consideran más difíciles de aprender y utilizar que los de las interfaces gráficas. Sin embargo, los sistemas basados en comandos son por lo general programables, lo que les otorga una flexibilidad que no tienen los sistemas basados en gráficos carentes de una interfaz de programación. * Gráfica del Usuario.

Es el tipo de visualización que permite al usuario elegir comandos, iniciar programas y ver listas de archivos y otras opciones utilizando las representaciones visuales (iconos) y las listas de elementos del menú. Las selecciones pueden activarse bien a través del teclado o con el mouse. Para los autores de aplicaciones, las interfaces gráficas de usuario ofrecen un entorno que se encarga de la comunicación con el ordenador o computadora. Esto hace que el programador pueda concentrarse en la funcionalidad, ya que no esta sujeto a los detalles de la visualización ni a la entrada a través del mouse o el teclado. También permite a los programadores crear programas que realicen de la misma forma las tareas más frecuentes, como guardar un archivo, porque la interfaz proporciona mecanismos estándar de control como ventanas y cuadros de diálogo. Otra ventaja es que las aplicaciones escritas para una interfaz gráfica de usuario son independientes de los dispositivos: a medida que la interfaz cambia para permitir el uso de nuevos dispositivos de entrada y salida, como un monitor de pantalla grande o un dispositivo óptico de almacenamiento, las aplicaciones pueden utilizarlos sin necesidad de cambios.


11.2. .2. EESTRUCTURA STRUCTURA SSIIST EMAS M ONOLÍTICOS. STTEMAS MONOLÍTICOS. En estos casos el Sistema Operativo está formado por un conjunto de rutinas que se compilan por separado, se llaman entre sí y se montan juntas para formar un todo: el Sistema Operativo. De ahí que no tengan una estructura definida. Cada rutina tiene un interface con las demás, es decir, cuando una rutina llama a otra la primera le pasa una serie de parámetros y, cuando la rutina llamada finaliza su tarea, devuelve unos resultados a la rutina madre. En estos sistemas todas las rutinas se pueden llamar entre si. Esto implica que no hay ocultamiento de información, es decir, cada rutina conoce .y puede usar., por ejemplo, las estructuras de datos de las demás. Cuando estamos ejecutando un programa de usuario y hace falta un servicio del Sistema Operativo, los pasos que se siguen son los siguientes: 1. El programa hace una llamada al supervisor. 2. El S.O. determina el número de servicio que se solicita. 3. El S.O. localiza y llama a un procedimiento de servicio. 4. El control se devuelve al programa de usuario.

Si quisiéramos hacer una representación gráfica de estos sistemas, quedaría de la siguiente forma:


SSIIST EMAS PPOR OR NNIVELES IVELES OO EESTRATOS. STRATOS. STTEMAS Los sistemas operativos se organizan en capas en torno a un núcleo principal. Cada una de estas capas o niveles realiza una función determinada y, dependiendo de esa función, tienen más o menos prioridad. No obstante, la capa principal y la de mayor prioridad es el propio núcleo. En general un sistema operativo se puede estructurar o dividir en cuatro capas o niveles: •

Nivel núcleo. Es el que se encarga de controlar todo lo que ocurre en el ordenador. Gestiona los procesos que llegan para ser ejecutados. Son, fundamentalmente, sistemas operativos multiusuario. Este nivel se encarga de realizar tareas básicas del sistema, comunicación con el hardware, planificación de procesos, etc: o Gestiona interrupciones. o Asignación de la CPU. o Mecanismos de comunicación-sincronización entre procesos.

• • •

Nivel ejecutivo. Sobre este nivel se realiza la administración y gestión de la memoria. Se encarga de almacenar los procesos en páginas, tanto en memoria principal como en disco. Esta gestión es la llamada gestión de memoria virtual. Nivel supervisor. Se encarga de realizar la comunicación de cada proceso entre el sistema y el usuario. Controla y coordina la gestión de entrada/salida de los diferentes procesos hacía los periféricos. Nivel usuario. Es el que controla los procesos que está utilizando el usuario, sin preocuparse de la gestión de memoria, de la gestión de entrada/salida ni de nada en especial. Simplemente, muestra al usuario el proceso que éste quiere ejecutar. Este nivel es el que proporciona el interface para la interrelación con el usuario.


M QUINAS VVIIRT UALES. RTTUALES. MÁÁQUINAS Conceptualmente un sistema operativo está hecho de capas. El Sistema Operativo tiene 2 funciones fundamentales: Crear una máquina tratable, es decir, adaptada a necesidades de cada usuario (máquina virtual). aspectos en que el sistema operativo debe especialmente en ocultar las características puramente físicas y presentar al usuario otras entendibles y manejables son las siguientes: -

-

-

-

las Algunos incidir más

Sistema de entrada/salida: El S.O debe evitar al usuario el problema de tener que comprender el funcionamiento del hardware de entrada/salida que, a veces, es demasiado sofisticado, y poner a su alcance un sistema de entrada/salida más sencillo de usar pero sin perder ninguna de sus posibilidades. Memoria: El S.O debe implementar el modo de que el usuario pueda trabajar con una memoria mayor que la principal de que dispone el ordenador, utilizando memoria virtual. Del mismo modo debe permitir que varios programas y usuarios compartan la memoria disponible sin ningún conflicto ni problema. Sistema de almacenamiento de ficheros: El S.O debe permitir al usuario acceder a la información almacenada a través de nombres simbólicos fácilmente recordables por él, sin necesidad de saber ni entender el modo físico en que los datos se almacenan en los dispositivos. Control de los programas y las aplicaciones: El S.O debe proveer al usuario de un lenguaje de comandos y órdenes fácilmente utilizable para permitirle la gestión y el control de sus programas y sus datos. Al mismo tiempo, el sistema operativo debe impedir que el trabajo de un usuario pueda influir negativamente (errores, bloqueos, etc...) en los trabajos de los demás posibles usuarios.

Hacer posible compartir recursos, es decir, soportar la multiprogramación En estos sistemas se mantiene por separado el software que implementa cada una de estas funciones. Partiendo de un único hardware a compartir se simula la existencia de varias máquinas idénticas a la real. Para que esto sea posible hace falta un nuevo elemento en el Sistema Operativo, es el llamado monitor de máquina virtual. Éste hace 2 cosas: Simula tantas máquinas virtuales idénticas a la real como haga falta Gestiona los recursos de la máquina real Para que esto se traduzca en una máquina tratable por el usuario sobre cada máquina virtual se ejecuta un Sistema Operativo independiente, que se encarga de la segunda función del Sistema Operativo (hacer posible el compartir recursos). Los sistemas operativos actuales como Windows 95 y Windows NT, utilizan esta técnica.


M ODELO CCLIENTE-SERVIDOR LIENTE-SERVIDOR MODELO En estos sistemas cada función del Sistema Operativo se implementa como un programa independiente y se intenta ejecutar al mismo nivel que los programas de usuario. El problema es que muchos de estos programas no pueden ejecutarse a nivel de usuario porque actúan directamente sobre el hardware y esas funciones son competencia del núcleo de los Sistemas Operativos Cliente-Servidor. Las partes del Sistema Operativo que se ejecutan a nivel de usuario se denominan servidores. Estos programas tienen exactamente las mismas capacidades que un programa de usuario y por tanto no tienen acceso directo al hardware. Cuando un programa de usuario (denominado cliente) quiere un servicio del Sistema Operativo lanza un mensaje al servidor correspondiente, pero siempre a un servidor de su mismo nivel. El núcleo desempeña 2 funciones: Soporta los mensajes a través de los cuales se comunican los clientes y servidores Manipula al hardware para responder a peticiones cuando se lo piden los servidores Cuando se quiere acceder a un servicio, toda la toma de decisiones (decidir si el que ha pedido el servicio tiene privilegios, a quién dar el servicio en primer lugar si ha habido dos solicitudes al mismo tiempo...), es decir, la política del sistema, reside en el servidor del servicio. Entonces, el núcleo que tiene los mecanismos necesarios para manipular el hardware. Será el que realice el servicio, es decir, la mecánica del sistema reside en el núcleo y está soportado por el hardware. VENTAJAS DE ESTOS SISTEMAS: 1. Siempre y cuando los servidores estén bien delimitados es posible eliminar un servidor si éste no se utiliza. 2. Siempre es posible sustituir un servidor por otro que haga lo mismo 3. Si falla un servidor el sistema sigue funcionando (pero con alguna función menos) 4. Estos sistemas se puede adaptar muy fácilmente a los sistemas distribuidos Un Sistema Operativo Distribuido es aquel en el que el Sistema Operativo no está en una sola máquina sino que está repartido entre varias. En este caso, el hardware que manipula el núcleo es más complejo que antes pero está manipulación es transparente tanto para el usuario como para los servidores. Cuando una máquina hace exclusivamente la función de un servidor a lo largo del tiempo se dice que es un servidor dedicado, aunque hay otras máquinas que pueden ser alternativamente clientes o servidores.

11.3. .3. M ODOS DDE E EEXPLOTACIÓN XPLOTACIÓN MODOS Las formas de explotación de un sistema operativo responden a la forma en la que el usuario utiliza los recursos hardware y software que componen el sistema informático. De esta forma, el usuario podrá obtener determinadas respuestas de sus peticiones ante el ordenador. La manera de obtener estas respuestas es lo que denominaremos explotación de un sistema operativo:


Procesos en lotes. Se procede a la carga de datos desde el correspondiente dispositivo, se procesa la información y los resultados se almacenan en otro soporte que permita llevar al correspondiente periférico de salida para su impresión o visualización. Proceso en tiempo real. Como su propio nombre indica la respuesta se obtiene al momento, es decir, el usuario es el encargado de introducir los datos para que el ordenador los procese y, en cuestión de segundos obtenga los resultados del proceso.


11..44.. TTIIPPOOSS DDEE SSIISSTTEEM MAASS OOPPEERRAATTIIVVOOSS Para hacer una clasificación de los sistemas operativos hay que tener en cuenta una serie de parámetros: - Número de usuarios. - Número de procesos. - Número de procesadores. - Tiempo de respuesta. La clasificación es la siguiente: •

Según el número de usuarios: o Monosuario: Sólo un usuario trabaja con un ordenador. En este sistema todos los dispositivos de hardware están a disposición de dicho usuario y no pueden ser utilizado por otros hasta que éste no finalice su sesión. Ej: MS-DOS. o Multiusuario: En este sistema, varios usuarios pueden utilizar simultáneamente los recursos del sistema. Pueden compartir, sobre todo, los dispositivos externos de almacenamiento y los periféricos de salida, fundamentalmente impresoras- Ej: UNIX, Novell, Windows 2000 Server. Según el número de procesos: o Monoprogramación o monotarea: En este caso, el sistema solamente puede ejecutar un programa a la vez. De esta forma, los recursos del sistema estarán dedicados al programa hasta que finalice su ejecución. Esto no impide que el sistema pueda ser multiusuario; es decir, varios usuarios pueden intentar ejecutar sus programas en el mismo ordenador, pero de forma sucesiva. Para ello, se tienen que establecer las correspondientes colas o prioridades en la ejecución de los trabajos. En este sistema, la atención del procesador estará dedicada a un solo programa hasta que finalice. E: MS-DOS. o Multiprogramación o multitarea: Con estos sistemas se pueden ejecutar varios programas o procesos concurrentemente. Para ello la CPU compartirá el tiempo de uso del procesador entre los diferentes programas que se van a ejecutar. Ej UNIX, Novell, Windows 2000 Server. En general, la mayoría de sistemas multiusuario. Según el número de procesadores del sistema informático: o Monoproceso: En este caso, el ordenador consta de un único procesador. Todos los trabajos pasarán por él. El ordenador que tenga este s.o puede ser monousuario, multiusuario, monotarea, multitarea, etc. Ej: MS-DOS, Windows98. o Multiproceso: El ordenador cuenta con varios procesadores. Ej: Pueden ser UNIX, LINUX, Windows 2000. Según el tiempo de respuesta: Esta clasificación se hace teniendo en cuenta el tiempo que tarda el sistema en obtener los resultados después de lanzar un programa a ejecución. o Tiempo real: La respuesta es inmediata tras lanzar un proceso. o Tiempo compartido: Cada proceso utilizará fracciones de tiempo de ejecución de la CPU hasta que finalice. En este caso, parece que el usuario dedica la CPU exclusivamente para él; pero esto no es cierto, ya que, aunque el usuario no lo perciba, la CPU está dedicada a varios procesos a la vez. Todos los sistemas operativos multiusuario ofrecen a los usuarios un tiempo de respuesta compartido.


22.. NNÚÚCCLLEEOO 22..11 FFIINNAALLIIDDAADD YY FFUUNNCCIIOONNEESS La finalidad del núcleo es construir un entorno adecuado donde puedan ejecutarse los distintos procesos. Las funciones del núcleo son: -

Tratamiento de las interrupciones. (PUNTO 3.3.2) Asignación de la CPU. (PUNTO 3.5) Despachador o planificador de bajo nivel. Mecanismos de comunicación – sincronización. (PUNTO 3.6)

22..22 CCAARRAACCTTEERRÍÍSSTTIICCAASS Las características del núcleo son: -

Sus módulos son residentes en memoria principal. Puesto que son altamente utilizados. Tienden a ser ininterrumpibles. Se ejecutan con el nivel de máximo privilegio, lo que significa una máxima protección.


33.. PPRROOCCEESSOOSS 33..11 CCOONNCCEEPPTTOO Para definir lo que es un proceso, hay que establecer la diferencia con el concepto de programa: - Un programa es una entidad pasiva compuesta únicamente por un código y unos datos, es decir, tiene un listado fijo. - Un proceso es una entidad activa, es el “programa “ en ejecución.

33..22 BBLLOOQQUUEE DDEE CCOONNTTRROOLL DDEE PPRROOCCEESSOOSS OO DDEESSCCRRIIPPTTOORR DDEE UUNN PPRROOCCEESSOO Un bloque de control de proceso (PCB o BCP) o descriptor de proceso es una estructura de datos que contiene cierta información importante acerca del proceso, incluyendo, entre otra: Estado del proceso : Determina la situación actual del proceso. Identificador de proceso. Es un número i entre 0-N (no se admiten nº negativos). Se le denomina PID y es el mismo durante toda la vida del proceso. Registros de la CPU. Almacenan información necesaria del proceso cuando se producen interrupciones como consecuencia de un cambio de estado, y así poder recuperarla para volver al estado original. Límites de memoria. Indican los límites de memoria utilizados por un determinado proceso para evitar que otros los invada. Además existe una zona de memoria donde se colocan los BCP, esa zona solo es accesible por el sistema operativo cuando se encuentra en modo supervisor. Información del ´status´ de las operaciones de E/S. Se refiere a las operaciones de E/S que el proceso está realizando, sobre que dispositivos si son de Entrada o de Salida. Estas operaciones, según van siendo atendidas, van siendo eliminadas del BCP. Información del planificador de procesos. Sobre el tipo de algoritmo de planificación que se esté utilizando. El PCB es un almacenamiento central de información que permite al sistema operativo localizar toda la información clave sobre el proceso. Cuando el sistema operativo cambia la atención de la CPU entre los procesos, utiliza las áreas de preservación para mantener la información que necesita para reiniciar el proceso cuando consiga de nuevo la CPU. Debido a que los PCB deben ser manipulados con rapidez por el sistema operativo, muchos sistemas de computación contienen un registro de hardware que apunta siempre al PCB del proceso que está en ejecución, el proceso en curso.

33..33 EESSTTAADDOOSS DDEE UUNN PPRROOCCEESSOO Durante su existencia, un proceso pasa por una serie de estados discretos. Varias circunstancias pueden hacer que un proceso cambie de estado. Los estados más importantes en que puede encontrarse un proceso son: - Ejecutable (o activo): Si el proceso tiene asignada en ese momento la CPU. - Listo (preparado): Cuando el proceso podría usa una CPU, si hubiera una disponible.


- Bloqueado (en espera): Si el proceso espera que ocurra algo (la terminación de una E/S por ejemplo) para poder ponerse en marcha.

33.3.1 .3.1 TTRANSICIONES RANSICIONES EN TRE EESTADOS STADOS DDE E UUN N PPROCESO ROCESO ENNTRE El S.O inicia la ejecución de un proceso nuevo que esta listo. Cuando este proceso no va a utilizar la CPU durante un tiempo : INTERRUPCIÓN (hay una llamada a E/S etc.) el S.O lo pone bloqueado hasta que acaba esa operación. Mientras tanto pasa a la CPU la ejecución de otro proceso que estuviera listo y realiza los mismos pasos: ejecuta hasta que este deja de usar la CPU, lo pone bloqueado si es necesario y pasa a ejecutar otro. Cuando la acción del proceso que está bloqueado termina (acaba la E/S, etc.) el S.O lo pone otra vez en estado de listo, así hasta que termina con todo el proceso.

El S.O deberá decidir que proceso de los que están listos pasará a ejecutable cuando la CPU quede libre, esta decisión lo hará a través de un Planificador de procesos (DISPACHER).

33.3.2 .3.2 IINTERRUPCIONES NTERRUPCIONES (son necesarias para que un proceso pase de un estado a otro) Permite interrumpir la ejecución de un proceso ante el acontecimiento de un suceso determinado, tomando el control el S.O. El Procesador puede ejecutar otras instrucciones mientras se está realizando alguna operación de E/S. Ante una interrupción, la forma de actuar es (FLIH o manejador de interrupciones de primer nivel): Procesador registra situación exacta de la ejecución del trabajo actual. Se desvía a la rutina de tratamiento de la interrupción. La procesa según su naturaleza y, posteriormente, reanudar el mismo u otro trabajo de usuario. La rutina de tratamiento de la interrupción forma parte del S.O. Este programa determina la naturaleza de la interrupción y ejecuta cuantas acciones sean necesarias.


Tipos de Interrupciones: Hardware.- Generadas por los dispositivos cuando finalizan una E/S. Software.- Generadas por el propio proceso. Hay 2 tipos: • Llamadas al sistema.- Se producen mediante la invocación de una instrucción que existe en casi todos los procesadores (Trap al S.O.). Se usan para pedir servicios al S.O. y se gestionan como si fuesen una interrupción. • Excepciones.- Se producen cuando el proceso produce un error grave que impide continuar con su ejecución (por ejemplo “división por cero”) → Finaliza proceso y cambiar a otro.

33..44 OOPPEERRAACCIIOONNEESS SSOOBBRREE UUNN PPRROOCCEESSOO Los S.O. con multitarea permiten numerosas operaciones dedicadas a la gestión de procesos. Entre ellas, las más importantes : creación, eliminación, obtención de información, modificación, retardo y activación. • Creación de procesos : crear (id_proceso, atributos) ; El S.O. primero comprobará que no existen errores en la llamada (por ejemplo, comprueba que el procedimiento indicado no exista). A continuación se crea el proceso, se pasan los atributos como parámetros, se reserva memoria para el proceso (tanto para el BCP como para el código y los datos) y se añade a la cola de preparado. • Eliminación de procesos : eliminar (id_proceso) ; Para eliminar un proceso es necesario que este sea hijo del proceso eliminador, ya que de no ser así podría volverse inconsistente el sistema. Una vez realizada la llamada, el S.O. verifica que no existen errores para a continuación liberar los recursos retenidos por el proceso. Finalmente se destruye el BCP. • Obtención de información : inf_proc (id_proceso,est_BCP) ; Devolverá una copia del BCP del proceso requerido. El S.O. debe comprobar que no existen errores en los parámetros. mod _inf (id_proceso, est_BCP) ; • Modificación de la información de un proceso : El proceso modificador debe enviar como parámetros el PID del proceso que modifica y un nuevo BCP que sustituya al actual. El S.O. comprobará los posibles errores producidos. • Retardar un proceso : retardar (tiempo) ; El proceso que realiza esta llamada se autodetiene durante el tiempo indicado y pierde el control de la CPU durante ese tiempo. Los ciclos de reloj de espera se anotan en el BCP (utilizados posteriormente en la planificación de procesos). Finalmente, cuando el tiempo transcurre, el núcleo del S.O. introduce al proceso en la cola de procesos preparados para intentar ejecutarlo inmediatamente. • Activar procesos retardados : activar (id_proceso); Esta función es privilegiada. El mecanismo para despertar procesos se activa en cada ciclo de reloj, recorriéndose la cola de procesos retardados para activarlos o disminuir en una unidad el número de pulsos de espera. Devuelve un código de error si el PID que se pasa no existe.


33..55 PPLLAANNIIFFIICCAACCIIÓÓNN DDEE PPRROOCCEESSOOSS 33..55..11 CCOONNCCEEPPTTOO Es el encargado de pasar trabajos o procesos a la memoria principal y a la CPU, decidiendo qué procesos de los que están listos pasarán a ejecución cuando la CPU se libere de algún otro proceso (cuando este pase a estar bloqueado). Sigue los pasos siguientes: 0. Decidir si se cambia el proceso. 1. Decidir mediante un algoritmo entre los procesos ejecutables, cual es el siguiente al que le asigna el procesador. 2. Salvar la información del proceso que se estaba ejecutando ( si no lo hizo el tratamiento de interrupciones) 3. Cargar toda la información necesaria del proceso elegido. 4. Pasar el control al siguiente proceso.

33..55..22 AALLGGOORRIITTM MOOSS DDEE PPLLAANNIIFFIICCAACCIIÓÓNN Esta planificación puede ser: Con desplazamiento(No apropiativo): Aquellos en los que unos procesos tienen prioridad sobre otros y cuando acaban de estar bloqueados y pasan a listos hacen que el S.O les dé paso a la CPU que abandona el proceso que tenía en ejecución, lo pone listo y pasa a ejecutar el que tiene prioridad. Sin desplazamiento (Apropiativo): Aquella en la cual, la CPU ejecuta un proceso hasta que lo termina o por alguna razón éste pasa a estar bloqueado. Para evaluar el comportamiento de los distintos algoritmos se definen, entre otros, los siguientes parámetros: -

Tiempo de respuesta: Tiempo transcurrido desde que se hace una petición de CPU, hasta que es satisfecha . Tiempo de espera: Tiempo que está en estado de listo. Penalización: tiempo de respuesta= tiempo de finalización / tiempo de CPU Rendimiento: Número de trabajos terminados por unidad de tiempo.


Aquí teneis la definición de los algoritmos, los ejemplos son los vistos en clase. FCFS (First Come First Served) Los procesos son servidos en orden a su llega a la cola de listos. Dichos procesos se ejecutarán hasta que terminen o se bloqueen. Su implementación es una cola FIFO. SJF (Shortest Job First) Primero el más corto La CPU se asigna al proceso al que le queda menos tiempo para completar su ejecución y a igualdad de condiciones al primero que hay hecho la petición. PRIORIDAD A cada proceso se le asigna un determinado valor de prioridad, definida interna o externamente. La CPU se asigna al de mayor prioridad y a igualdad se sigue el algoritmo FCFS. En este ejemplo, el proceso de menor número (En la columna prioridad), es el de mayor prioridad. EL MÁS CORTO PRIMERO CON DESPLAZAMIENTO Igual que el más corto primero, excepto que cuando un proceso llega a la cola de listos compara su tiempo con el que se esta ejecutando y si es menor se realiza un cambio de contexto. ROUND ROBIN La CPU se asigna a los procesos en intervalos de tiempo llamados QUANTUM. Si el proceso finaliza o se bloquea antes de agotar el quantum, se toma el siguiente en la lista y se le asigna un nuevo intervalo de tiempo, si por el contrario agota su quantum pasa al final de la lista. La lista se trata como una cola FIFO. Creación de nuevo proceso Proceso pasa de bloqueado a ejecutable

D

C

B

A

Proceso agota su intervalo de tiempo

CPU


COLAS MULTIPLES La cola de ejecutables se divide en varias colas, los trabajos son asignados permanentemente a una cola, según algún criterio (cada cola puede tener un algoritmo de asignación, además debe existir un algoritmo de asignación entre las colas).

Cola 1

Cola de ejecutables

B

C

Cola 2

Cola 3

A

E

CPU

D

COLAS MULTIPLES CON TRASPASO Usa el sistema de colas múltiples pero con la diferencia siguiente: Los trabajos pueden pasar de unas colas a otras.


33..66 CCOOM MUUNNIICCAACCIIÓÓNN EENNTTRREE PPRROOCCEESSOOSS Los distintos procesos, dentro de un computador, no actúan, evidentemente, de forma aislada. Por un lado deben cooperar con el fin de alcanzar el objetivo de poder ejecutar las tareas de los usuarios. Por otro lado, compiten por el uso de unos recursos, limitados como los procesadores, la memoria o los ficheros. Las dos actividades de cooperación y competición llevan asociada la necesidad de algún tipo de comunicación y sincronización entre los procesos.

33..66..11 EEXXCCLLUUSSIIÓÓNN M MUUTTUUAA Los recursos de un sistema pueden clasificarse como compartibles, lo que significa que pueden ser empleados por varios procesos de forma concurrente, o no-compartibles, lo que equivale a que su uso se restrinja a un solo proceso a la vez. El problema de la, exclusión mutua es el de asegurar que los recursos no compartibles sean accedidos por un solo proceso a la vez. Aquella parte del programa en la cual se accede al recurso compartido se denomina sección crítica. Hay que evitar que dos procesos entren simultáneamente en su sección crítica. Cuando varios procesos compiten por recursos es posible que se de una situación en la que ninguno de ellos pueda proseguir debido a que los recursos que cada uno de ellos necesita estén ocupados por los otros. Esta situación se conoce con el nombre de interbloqueo o deadlock.

33..66..22 M MEECCAANNIISSM MOOSS DDEE CCOOM MUUNNIICCAACCIIÓÓNN DDEE PPRROOCCEESSOOSS En los sistemas operativos multiprocesos los distintos procesos deben de comunicarse unos con otros de tal forma que dos procesos no se apoderen de un mismo recurso único (memoria, periférico,...). Para enviar dicha información se dispone de muchos mecanismos, uno de ellos es la sincronización de procesos (caso particular de comunicación). Herramienta para la Sincronización de procesos : SEMÁFOROS. Un semáforo es un entero no negativo sobre el cual, aparte de su proceso de inicialización, puede actuarse sólo a través de las. operaciones de wait y signal Estas operaciones actúan sólo sobre semáforos y su efecto se describe a continuación. A) signal (s) Su efecto consiste en incrementar el valor del semáforo s en uno, siendo esta una operación considerada como indivisible. El concepto de indivisibilidad lleva aparejado el que signal (s) no sea equivalente a la sentencia de asignación "s: = s + 1". Supongamos que dos procesos A y B desean llevar a cabo la operación (s) , en el momento en que s tiene por valor 3. El valor de s cuando se hubiesen efectuado ambas operaciones sería 5. Supongamos, por otra parte, que en circunstancias similares ambos procesos quieren llevar a cabo la asignación "s := s + 1". A podría entonces evaluar la expresión s + 1 obteniendo el valor 4. Antes de que A pudiese asignar este valor a s, B podría también evaluar s + 1 llegando al mismo


resultado. -Cada proceso asignaría entonces el valor 4 a s, perdiéndose uno de los dos incrementos que se querían llevar a cabo. B) waít (s) Su efecto consiste. en decrementar el valor del semáforo s en 1 en tanto que el resultado al que llegue sea no-negativo. Esta operación es también indivisible. La operación de wait representa un retardo en potencia ya que cuando actúa sobre un semáforo cuyo valor sea 0, el proceso que la ejecute podrá seguir solo cuando otro proceso haya incrementado el valor del semáforo a 1mediante una operación de signal. La indivisibilidad de esta operación significa que si el retardo mencionado anteriormente afecta a varios procesos, sólo uno de ellos podrá proseguir cuando el semáforo pase a ser positivo. No se lleva a cabo suposición alguna sobre cuál será este proceso. MONITORES. En el apartado anterior veíamos cómo podían utilizarse semáforos para llevar a cabo tareas de sincronización y comunicación entre procesos. El uso indiscriminatorio de semáforos es susceptible, sin embargo, de errores, ya que es fácil que un programador coloque las operaciones de wait y signal en el lugar incorrecto, pudiendo incluso omitirlas por completo. Para evitar problemas de este tipo han ido apareciendo un buen número de propuestas de construcciones para lenguajes de programación que obliguen al programador a declarar de forma explícita los datos y los recursos compartidos forzando la exclusión mutua en el acceso a estos elementos comunes. Una de las construcciones propuestas de más éxito y más ampliamente adoptada es, el monitor. Un monitor consta de: 1.- Los datos que contiene el objeto a compartir. 2.- Un conjunto de rutinas que pueden llamarse para acceder a este objeto. 3.- Un fragmento de programa que inicializa el objeto. en cuestión (y que se ejecuta tan solo una vez cuando ese objeto es creado). Ejemplo: Así por ejemplo, un buffer destinado a pasar datos de un proceso productor a otro puede representarse mediante un monitor que consiste en: 1.- El área de memoria ocupada por el buffer y los punteros (por ejemplo, un vector y los índices del mismo). 2.- Dos rutinas depositar v extraer que pueden ser llamadas desde cualquier proceso para colocar un determinado elemento en el buffer. o bien para sacarlo. 3.- Un fragmento de programa que inicialice los punteros del buffer al principio del mismo.


El compilador de un lenguaje que incorpore monitores debe garantizar que el acceso a un objeto compartido sólo pueda efectuarse llamando a la rutina del correspondiente monitor. El compilador debe asegurar también que las rutinas de cada monitor se implementen en forma de secciones críticas mutuamente exclusivas. Ello puede lograrse fácilmente generando el compilador operaciones de wait y de signal sobre semáforos apropiados en el programa compilado. EVENTOS : - Los eventos llevan asociado : Un identificador del Evento. Una cola de Eventos. - Dos primitivas : Dormir : El proceso solicitante pierde el control del procesador. • Se añade a la cola del procesador. • No existen errores (control). Despertar : El proceso solicitante pasa de la Cola de eventos a la del procesador : • Si no existen procesos detenidos en la Cola de eventos la llamada queda sin efecto. • No existen errores (control). Mientras que los Semáforos y Eventos son propios de Sistemas Fuertemente Centralizados (aunque se pueden crear en sistemas distribuidos), los MENSAJES son propios de Sistemas Distribuidos. MENSAJES Definición : Colección de información que se intercambia entre 2 ó más procesos. Habrá más de 1 ó 2 procesos emisores/receptores. Cabecera (parte fija del mensaje) {Información relativa al propio mensaje} Cuerpo (resto del mensaje) {Contenido del mensaje} Formato del mensaje : Tamaño Fijo (Mensaje rígido. Descomposición de la información en módulos) Tamaño Variable (Cabecera fija. Cuerpo varía de tamaño) Tipo de comunicación : Comunicación Directa (Rendez-Vous): - Es simétrica. Cada proceso tiene que saber el identificador del receptor y viceversa. - Un enlace cada 2 procesos. - Enlace puede ser bidireccional.


Comunicación Indirecta : - Se establece un enlace de comunicaciones cada 2 procesos, siempre que compartan un buzón. - Un enlace puede estar asociado a varios procesos. - BUZÓN : Buffer que ayuda al intercambio de información entre procesos. Se utiliza un identificador. Los dueños de los buzones son los procesos que los crean. Implementación de las primitivas SEND (enviar) y RECEIVE (recibir) :

Proceso A

Proceso B

En Comunicación Directa : enviar (B, Mensaje); recibir (A, Mensaje);

Proceso A

Proceso B

BUZON

Proceso D

En Comunicación Indirecta : enviar (id_buzon, Mensaje) ; recibir (id_buzon, Mensaje) , crear_buzon (id_buzon) ;

Proceso C

Modo de Transmisión : • Por Copia : - Se copia en el espacio de direcciones del mensaje.

- Los cambios que se producen en el mensaje emisor no influyen en el receptor y viceversa. • Por Referencia : - El emisor pasa punteros para decir donde está escrito el mensaje.

- Los cambios que haga uno, afecta a todos. Capacidad (del enlace de comunicaciones) : En Comunicación Directa: Si el proceso A envía a B, se establece un único enlace de comunicación. En este caso, la capacidad de enlace es NULA. En Comunicación Indirecta : Varios procesos se comunican con un BUZÓN y uno extrae de él. La capacidad del enlace depende del BUZÓN. Tamaño (puede ser fijo o variable).


44.. BBIIBBLLIIOOGGRRAAFFÍÍAA • "Sistemas Operativos: Concepto y Diseño"; Milan Milenkovic; McGraw-Hill; 1.994 • "Introducción a la Informática" A. Prieto; McGraw-Hill; 1.995 • "Sistemas Operativos: Diseño e Implementación"; Tanenbaum; Prentice; 1.988 • VICTOR MANUEL,A J.ANTONIO,V“Sistemas Operativos” Alhambra.


Sistemas Operativos, Gestion de Procesos