Anda di halaman 1dari 28

UNIDAD I INTRODUCCIN

OBJETIVO.- Conocer la historia, funciones, caractersticas, clasificacin y estructura de un sistema operativo. I.- Introduccin a los sistemas Operativos El sistema operativo es componente que hace funcionar a una computadora es un intermediario entre las peticiones de los usuarios y los programas , administra y opera el hardware de la computadora, lee y escribe informacin hacia y desde los dispositivos de salida. El sistema operativo lo que hace es relacionar el lenguaje humano con el lenguaje que utiliza la mquina. Este controla diferentes aspectos, tales como: Control de entradas y salidas (por los sistemas perifricos de la mquina). Es el responsable del espacio que existe en el disco duro, o sea que el sistema operativo se encarga de administrar lo que se va a guardar en el disco duro y cmo se va a guardar. Se encarga de asignar los recursos de la PC La deteccin y correccin de fallas. La seguridad del sistema

Comienza a trabajar cuando en memoria se carga un programa especfico y aun antes de ello, que se ejecuta al iniciar el equipo, o al iniciar una mquina virtual, y gestiona el hardware de la mquina desde los niveles ms bsicos, brindando una interfaz con el usuario. Un sistema operativo se puede encontrar normalmente en la mayora de los aparatos electrnicos que utilicen microprocesadores para funcionar, ya que gracias a stos podemos entender la mquina y que sta cumpla con sus funciones (Ruteadores, telfonos mviles, reproductores de DVD, autoradios, computadoras, agendas electrnicas, etc.).

Existen 2 tipos de sistemas operativos: a) Sistema basado en caracteres: son aquellos que reciben comandos desde el prompt de la computadora a:\ c:\ y responden a ella ejecutando una tarea especfica.
1

b) Sistema de interfaz grfico: son aquellos que utilizan el mouse como dispositivo de sealizacin que permite seleccionar pequeos smbolos o dibujos que representan alguna tarea a realizar. Ejemplos de Sistemas Operativos Software libre copy right MS-DOS (Microsoft) OS/2 (IBM warp, server), Solaris (Sun Microsystem /Oracle) Windows (Vista, Seven, Server 2003, Server 2008 Mac OS X (Leopard) HP-UX

Software libre copy left Linux (red Hat, Ubuntu, Fedora, Suse, etc.),

ACTIVIDAD DE APRENDIZAJE 1.1: Identificar cules son los Sistemas Operativos ms utilizados en la actualidad, as como sus versiones y su fabricante. ACTIVIDAD DE APRENDIZAJE 1.2: y el futuro de los sistemas operativos? Fundamenta tu respuesta. 1.1 Concepto de Sistema Operativo Un sistema operativo es un conjunto de programas o software, destinado a permitir la comunicacin entre el usuario y la mquina de forma cmoda y eficiente; se encarga de gestionar los recursos del ordenador, esto incluye la gestin del hardware desde los niveles ms bsicos. 1.2Funciones de un S.O Un sistema operativo se encarga de realizar funciones bsicas para la gestin de un sistema informtico, estas funciones son: Implementacin de una interfaz de usuario. El medio por el cual interactan usuario/sistema. Administracin de recursos. Gestiona el ptimo manejo de los recursos del sistema. Administracin de archivos. Controla la forma en que los archivos se almacenan fsica y lgicamente. Administracin de tareas. Gestiona los procesos que se ejecutan o que se ejecutaran en el procesador. Servicio de soporte y utilidades. Asistencia y gestin de programas utilitarios del sistema.
2

1.3. Evolucin de los S.O ACTIVIDAD DE APRENDIZAJ E 1.3: Enlistar los sucesos que han permitido evolucionar los diferentes Sistemas Operativos 1.4Clasificacin de los S.O. Clasificacin Segn su funcin: Sistema Operativo Monotareas Sistema Operativo Multitareas Sistema Operativo Monousuario Sistema Operativo Multiusuario Tiempo real Tiempo compartido Secuencia por lotes Sistema Operativo Monotareas. Los sistemas operativos monotareas son ms primitivos, 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 impresin. Sistema Operativo Multitareas. Es el modo de funcionamiento disponible en algunos sistemas operativos, mediante el cual una computadora procesa varias tareas al mismo tiempo. Existen varios tipos de multitareas. Es un tipo muy simple de multitarea en el que dos o ms aplicaciones se cargan al mismo tiempo, pero en el que solo se est procesando la aplicacin que se encuentra en primer plano (la que ve el usuario). Para activar otra tarea que se encuentre en segundo plano, el usuario debe traer al primer plano la ventana o pantalla que contenga esa aplicacin. En la multitarea cooperativa, la que se utiliza en el sistema operativo Macintosh, las tareas en segundo plano reciben tiempo de procesado durante los tiempos muertos de la tarea que se encuentra en primer plano (por ejemplo, cuando esta aplicacin est esperando informacin del usuario), y siempre que esta aplicacin lo permita. En los sistemas multitarea de tiempo compartido, cada tarea recibe la atencin del microprocesador durante una fraccin de segundo. Para mantener el sistema en orden, cada tarea recibe un nivel de prioridad o se procesa en orden secuencial. Dado que el sentido temporal del usuario es mucho ms lento que la velocidad de procesamiento del ordenador, las operaciones de multitarea en tiempo compartido parecen ser simultneas.

Sistema Operativo Monousuario. Los sistemas monousuarios son aquellos que nada ms puede atender a un solo usuario, gracias a las limitaciones creadas por el hardware, los programas o el tipo de aplicacin que se est ejecutando. Estos tipos de sistemas son muy simples, porque todos los dispositivos de entrada, salida y control dependen de la tarea que se est utilizando, esto quiere decir, que las instrucciones que se dan, son procesadas de inmediato; ya que existe un solo usuario. Y estn orientados principalmente por los microcomputadores. Sistema Operativo Multiusuario. Es todo lo contrario a monousuario; y en esta categora se encuentran todos los sistemas que cumplen simultneamente las necesidades de dos o ms usuarios, que comparten mismos recursos. Este tipo de sistemas se emplean especialmente en redes. En otras palabras consiste en el fraccionamiento del tiempo (timesharing). Secuencia por Lotes. La secuencia por lotes o procesamiento por lotes en microcomputadoras, es la ejecucin de una lista de comandos del sistema operativo uno tras otro sin intervencin del usuario. En los ordenadores ms grandes el proceso de recogida de programas y de conjuntos de datos de los usuarios, la ejecucin de uno o unos pocos cada vez y la entrega de los recursos a los usuarios. Procesamiento por lotes tambin puede referirse al proceso de almacenar transacciones durante un cierto lapso antes de su envo a un archivo maestro, por lo general una operacin separada que se efecta durante la noche. Los sistemas operativos por lotes (batch), en los que los programas eran tratados por grupos (lote) en ves de individualmente. La funcin de estos sistemas operativos consista en cargar en memoria un programa de la cinta y ejecutarlo. Al final este, se realizaba el salto a una direccin de memoria desde donde reasuma el control del sistema operativo que cargaba el siguiente programa y lo ejecutaba. De esta manera el tiempo entre un trabajo y el otro disminua considerablemente. Tiempo Real. Un sistema operativo en tiempo real procesa las instrucciones recibidas al instante, y una vez que han sido procesadas muestra el resultado. Este tipo tiene relacin con los sistemas operativos monousuarios, ya que existe un solo operador y no necesita compartir el procesador entre varias solicitudes. Su caracterstica principal es dar respuestas rpidas; por ejemplo en un caso de peligro se necesitaran respuestas inmediatas para evitar una catstrofe. Tiempo Compartido. El tiempo compartido en ordenadores o computadoras consiste en el uso de un sistema por ms de una persona al mismo tiempo. El tiempo compartido ejecuta programas separados de forma concurrente, intercambiando porciones de tiempo asignadas a cada programa (usuario). En este aspecto, es similar a la capacidad de multitareas que es comn en la mayora de los microordenadores o las microcomputadoras. Sin embargo el tiempo compartido se asocia generalmente con el acceso de varios usuarios
4

a computadoras ms grandes y a organizaciones de servicios, mientras que la multitarea relacionada con las microcomputadoras implica la realizacin de mltiples tareas por un solo usuario. Clasificacin de los sistemas operativos segn su estructura: (niveles o estratos de diseo) Sistemas operativos Monolticos o modular Sistemas operativos por Microkernel Sistemas por Capas. Modelo Cliente-Servidor Estructura Modular.- Sistemas operativos cuya caracterstica principal consiste en que carece de estructura ya que el sistema operativo se escribe como una coleccin de procedimientos, los cuales pueden llamar a otros cada vez que as se requiera. Cuando se usa esta tcnica, cada procedimiento del sistema tiene una interfaz bien definida en trminos de parmetros y resultados y cada uno de ellos es libre de llamar a cualquier otro, si este ultimo proporciona cierto clculo til para el primero. Sin embargo incluso en este tipo de sistemas es posible tener al menos algo de estructura. Los servicios (o llamadas al sistema) que proporciona el sistema operativo se solicitan colocando los parmetros en lugares bien definidos, como en los registros o en la pila, para despus ejecutar una instruccin especial de trampa de nombre "llamada al ncleo" o "llamada al supervisor". Esta llamada consta de los siguientes pasos: 1. 2. 3. 4. El programa del usuario es atrado hacia el ncleo. El sistema operativo determina el nmero del servicio solicitado El sistema operativo localiza y llama al proceso correspondiente al servicio El control regresa al programa del usuario.

Estructura por Microkernel.- En este tipo de estructura, las funciones centrales son controladas por un ncleo que es llamado kernel y la interfaz del usuario es controlada por el llamado entorno shell. Para ver todo esto mucho ms claro, pondremos un ejemplo. En el sistema operativo DOS, su parte ms importante es un programa llamado COMMAND.COM el cual se descompone en dos partes: El kernel, que se mantiene en memoria en todo momento, contiene el cdigo mquina de bajo nivel para manejar la administracin del hardware para otros programas que necesitan estos servicios, y para la segunda parte del COMMAND.COM el shell, el cual es el interprete de comandos.
5

La shell es un comando del sistema operativo que controla lo que ve el usuario. Existen muchos shells diferentes en el mercado, ejemplo: NDOS (Norton DOS), XTG, PCTOOLS, o inclusive el mismo SO MS-DOS a partir de la versin 5.0 incluy un Shell llamado DOS SHELL. El shell puede soportar mltiples usuarios, mltiples tareas, y mltiples interfaces para s mismo. Los dos shells ms populares son el BourneShell (System V) y el Cshell (BSD Unix). Existe otro shell conocido como KornShell. ACTIVIDAD DE APRENDIZAJE 1.4: Identificar tipos de shells, indicando las caractersticas bsicas de estos. Estructura por capas.-Tambin llamado estructura por anillos concntricos. Esta estructura consiste en organizar el sistema operativo como una jerarqua de capas, las cuales estn construidas sobre la inmediata inferior. Una generalizacin ms avanzada del concepto de capas se presento en el sistema MULTICS. En lugar de capas, MULTICS estaba organizado como una serie de anillos concntricos, siendo los anillos interiores los privilegiados. Cuando un procedimiento de un anillo exterior deseaba llamar a un procedimiento de un anillo interior, debi hacer el equivalente a una llamada al sistema Mientras que el esquema de capas de THE era en realidad un apoyo al diseo, debido a que todas las partes del sistema estaban ligadas entre si en un solo programa objeto, en MULTICS, el mecanismo de anillos estaba ms presente durante el tiempo de ejecucin y era reforzado por el hardware. La ventaja del mecanismo de anillos es su facilidad de extensin para estructurar subsistemas del usuario. Estructura cliente-servidor.-Una tendencia de los sistemas operativos actuales es la de explotar la idea de mover el cdigo a capas superiores y eliminar la mayor parte posible del sistema operativo para mantener un ncleo mnimo. El punto de vista usual es el de implantar la mayora de las funciones del sistema operativo en los procesos del usuario. Para solicitar un servicio, como la lectura de un bloque de cierto archivo, un proceso del usuario (denominado proceso cliente) enva la solicitud a un proceso servidor, que realiza entonces el trabajo y regresa la respuesta. La funcin principal que hace el ncleo es controlar la comunicacin entre los clientes y los servidores. Al separar el sistema operativo en partes, cada una de ellas controla una faceta del sistema, como el servicio a archivos, servicios a procesos, servicio a terminales o servicio a la memoria, cada parte es pequea y controlable. Adems como todos los servidores se ejecutan como procesos en modo usuario y no en modo ncleo, no tienen acceso directo al hardware. En consecuencia si hay un error en el servidor de archivos, ste puede fallar, pero esto no afectar en general a toda la mquina. Ventajas: - Flexibilidad. Cada proceso servidor se encarga de una funcin, siendo cada parte ms pequea y flexible y el desarrollo y la depuracin de cada proceso servidor. facilita

Desventajas: -Mayor sobrecarga al manejar servicios de los sistemas operativos monolticos, la razn es que los componentes estn en espacios de memoria distintas por lo que su activacin requiere mayor tiempo. 1.6 Ncleo de un S. O. En informtica, el ncleo (anglicismo kernel, de races germnicas como kern) es la parte fundamental de un sistema operativo. Es el software responsable de facilitar a los distintos programas acceso seguro al hardware de la computadora o en forma ms bsica, es el encargado de gestionar recursos, a travs de servicios de llamada al sistema. Como hay muchos programas y el acceso al hardware es limitado, el ncleo tambin se encarga de decidir qu programa podr hacer uso de un dispositivo de hardware y durante cunto tiempo, lo que se conoce como multiplexado. Acceder al hardware directamente puede ser realmente complejo, por lo que los ncleos suelen implementar una serie de abstracciones del hardware. Esto permite esconder la complejidad, y proporciona una interfaz limpia y uniforme al hardware subyacente, lo que facilita su uso para el programador. Funciones generalmente ejercidas por un ncleo: Los ncleos tienen como funciones bsicas garantizar la carga y la ejecucin de los procesos, las entradas/salidas y proponer un interfaz entre el espacio ncleo y los programas del espacio del usuario. Aparte de las funcionalidades bsicas, el conjunto de las funciones de los puntos siguientes (incluidos los pilotos materiales, las funciones de redes y sistemas de archivos o los servicios) necesariamente no son proporcionados por un ncleo de sistema de explotacin. Pueden establecerse estas funciones del sistema de explotacin tanto en el espacio usuario como en el propio ncleo. Su implantacin en el ncleo se hace en el nico objetivo de mejorar los resultados. En efecto, segn la concepcin del ncleo, la misma funcin llamada desde el espacio usuario o el espacio ncleo tiene un coste temporal obviamente diferente. Si esta llamada de funcin es frecuente, puede resultar til integrar estas funciones al ncleo para mejorar los resultados. Hay que sealar que estas tcnicas son utilizadas para atenuar defectos de los ncleos como los elevados estados. En la medida de lo posible, es preferible escribir un programa informtico fuera del ncleo, en el espacio usuario. En efecto, el espacio del ncleo, supone la ausencia de mecanismos como la proteccin de la memoria. Es pues ms complejo escribir un programa informtico que funciona en el espacio del ncleo, que en el espacio usuario; los errores y faltas de seguridad pueden desestabilizar el sistema. Hay cuatro grandes tipos de ncleos: Los ncleos monolticos.
7

Los microncleos (microkernel) Los ncleos hbridos (microncleos modificados). Los exoncleos

Microncleos: El enfoque microncleo consiste en definir una abstraccin muy simple sobre el hardware, con un conjunto de primitivas o llamadas al sistema que implementan servicios del sistema operativo mnimos, como la gestin de hilos, el espacio de direccionamiento y la comunicacin entre procesos. El objetivo principal es la separacin de la implementacin de los servicios bsicos y de la poltica de funcionamiento del sistema. Por ejemplo, el proceso de bloqueo de E/S se puede implementar con un servicio en espacio de usuario ejecutndose encima del microncleo. Estos servicios de usuario, utilizados para gestionar las partes de alto nivel del sistema, son muy modulares y simplifican la estructura y diseo del ncleo. Si falla uno de estos servidores, no se colgar el sistema entero, y se podr reiniciar este mdulo independientemente del resto. Sin embargo, la existencia de diferentes mdulos independientes origina retardos en la comunicacin debido a la copia de variables que se realiza en la comunicacin entre mdulos. El ncleo opera como asignador de recursos para cualquier proceso que necesite hacer uso de las facilidades de cmputo Ncleos monolticos en contraposicin a microncleos: Frecuentemente se prefieren los ncleos monolticos frente a los microncleos debido al menor nivel de complejidad que comporta el tratar con todo el cdigo de control del sistema en un solo espacio de direccionamiento. Por ejemplo, XNU, el ncleo de Mac OS X, est basado en el ncleo Mach 3.0 y en Free BSD, en el mismo espacio de direccionamiento para disminuir la latencia que comporta el diseo de microncleo convencional. Los ncleos monolticos suelen ser ms fciles de disear correctamente, y por lo tanto pueden crecer ms rpidamente que un sistema basado en microncleo, pero hay casos de xito en ambos bandos. Los microncleos suelen usarse en robtica embebida o computadoras mdicas, ya que la mayora de los componentes del sistema operativo residen en su propio espacio de memoria privado y protegido. Esto no sera posible con los ncleos monolticos, ni siquiera con los modernos que permiten cargar mdulos del ncleo. Ncleos hbridos.- Los ncleos hbridos fundamentalmente son microncleos que tienen algo de cdigo no esencial en espacio de ncleo para que ste se ejecute ms rpido de lo que lo hara si estuviera en espacio de usuario. ste fue un compromiso que muchos desarrolladores de los primeros sistemas operativos con arquitectura basada en microncleo adoptaron antes que se demostrara que los
8

microncleos pueden tener muy buen rendimiento. La mayora de sistemas operativos modernos pertenecen a esta categora, siendo el ms popular Microsoft Windows. XNU, el ncleo de Mac OS X, tambin es un microncleo modificado. Existe confusin en el trmino ncleo hbrido con los ncleos monolticos que pueden cargar mdulos despus del arranque, lo que es un error. Hbrido implica que el ncleo en cuestin usa conceptos de arquitectura o mecanismos tanto del diseo monoltico como del microncleo, especficamente el paso de mensajes y la migracin de cdigo no esencial hacia el espacio de usuario, pero manteniendo cierto cdigo no esencial en el propio ncleo por razones de rendimiento. Exoncleos: Tambin conocidos como sistemas operativos verticalmente estructurados, representan una aproximacin radicalmente nueva al diseo de sistemas operativos. La idea subyacente es permitir que el desarrollador tome todas las decisiones relativas al rendimiento del hardware. Los exoncleos son extremadamente pequeos, ya que limitan expresamente su funcionalidad a la proteccin y el multiplexado de los recursos. Se llaman as porque toda la funcionalidad deja de estar residente en memoria y pasa a estar fuera, en bibliotecas dinmicas. Los diseos de ncleos clsicos (tanto el monoltico como el microncleo) abstraen el hardware, escondiendo los recursos bajo una capa de abstraccin del hardware, o detrs de los controladores de dispositivo. En los sistemas clsicos, si se asigna memoria fsica, nadie puede estar seguro de cul es su localizacin real, por ejemplo. La finalidad de un exoncleo es permitir a una aplicacin que solicite una regin especfica de la memoria, un bloque de disco concreto, etc., y simplemente asegurarse que los recursos pedidos estn disponibles, y que el programa tiene derecho a acceder a ellos. Debido a que el exoncleo slo proporciona una interfaz al hardware de muy bajo nivel, careciendo de todas las funcionalidades de alto nivel de otros sistemas operativos, ste es complementado por una biblioteca de sistema operativo. Esta biblioteca se comunica con el exoncleo subyacente, y facilita a los programadores de aplicaciones las funcionalidades que son comunes en otros sistemas operativos. Algunas de las implicaciones tericas de un sistema exoncleo son que es posible tener distintos tipos de sistemas operativos (p.e. Windows, Unix) ejecutndose en un solo exoncleo, y que los desarrolladores pueden elegir prescindir de o incrementar funcionalidades por motivos de rendimiento.
9

Actualmente, los diseos exoncleo estn fundamentalmente en fase de estudio y no se usan en ningn sistema popular. Un concepto de sistema operativo es Nemesis, creado por la Universidad de Cambridge, la Universidad de Glasgow, Citrix Systems y el Instituto Sueco de Informtica. El MIT tambin ha diseado algunos sistemas basados en exoncleos. Los exoncleos se manejan en diferente estructura dado que tambin cumplen funciones distintas ACTIVIDAD DE APRENDIZAJE 1.5: Explicar el funcionamiento de tecnologas de ms de un ncleo (hardware). 1.6.1Interrupciones FLIH La interrupcin es el mecanismo mediante el cual otros mdulos pueden interrumpir una secuencia normal de procesamiento. Programa: por ejemplo divisin por cero Temporizador: cuando se cumple un tiempo especfico E/S: cuando hay algo que comunicar Hardware: cuando ocurre una falla. La gestin de interrupciones la realiza el manipulador (controlador) de interrupciones (FLIH, First Level Interrupt Handler). El manipulador de interrupciones es la parte del sistema operativo responsable de proporcionar la respuesta adecuada a las seales procedentes tanto del exterior como del interior del sistema (interrupciones externas e internas). 1.6.2 Despachador o Scheduler Se encarga de asignar los procesadores a los diferentes procesos, por lo tanto debe actuar cuando se debe comprobar si es necesario cambiar el proceso que est activo. Esto involucra: cambio de contexto cambio a modo usuario salto a la direccin de memoria que corresponda al programa de usuario para continuar su ejecucin. Criterios de Despachador Utilizacin de CPU: mantener la CPU ocupada la mayor cantidad del tiempo posible Productividad (Throughput): # de procesos por unidad de tiempo Tiempo de servicio (Turnaround time): tiempo necesario para la ejecucin de un proceso particular
10

Tiempo de espera (Waiting time): tiempo total que el proceso se encuentra en la fila ready Tiempo de respuesta (Response time): tiempo que transcurre desde el requerimiento hasta que se produce la primera respuesta (en ambientes de tiempo compartido) Criterios de Optimizacin Mxima utilizacin de CPU Mxima productividad Mnimo tiempo de servicio Mnimo tiempo de espera Mnimo tiempo de respuesta

1.6.3. Comunicacin entre procesos Es una funcin bsica de los Sistemas operativos. Los procesos pueden comunicarse entre s a travs de compartir espacios de memoria, ya sean variables compartidas o buffers, o a travs de las herramientas provistas por las rutinas de IPC. La IPC provee un mecanismo que permite a los procesos comunicarse y sincronizarse entre s. Normalmente a travs de un sistema de bajo nivel de paso de mensajes que ofrece la red subyacente. La comunicacin se establece siguiendo una serie de reglas (protocolos de comunicacin). Los protocolos desarrollados para internet son los mayormente usados: protocolo de internet (capa de red), protocolo de control de transmisin (capa de transporte) y protocolo de transferencia de archivos , protocolo de transferencia de hipertexto (capa de aplicacin), etc.

ACTIVIDAD DE APRENDIZAJE 1.6: Al concluir esta unidad, podr explicar Por qu tantos sistemas operativos? Argumente su respuesta.

11

UNIDAD II ADMINISTRACIN DE PROCESOS Y DEL PROCESADOR


OBJETIVO: Comprender el concepto de proceso, procesos ligeros, concurrencia y algunos algoritmos de planificacin. 2.1Concepto de Proceso Un proceso no es ms que un conjunto de threads que ejecutan el mismo cdigo, junto con las zonas de memoria asociadas a ellos y los ficheros que tienen abiertos. Un proceso es simplemente, un programa en ejecucin que necesita recursos para realizar su tarea: tiempo de CPU, memoria, archivos y dispositivos de E/S. El SO es el responsable de: Crear y destruir los procesos. -Parar y reanudar los procesos. -Ofrecer mecanismos para comunicacin y sincronizacin.

La gestin de procesos podra ser similar al trabajo de oficina. Se puede tener una lista de tareas a realizar y a estas fijarles prioridades alta, media, baja por ejemplo. Debemos comenzar haciendo las tareas de prioridad alta primero y cuando se terminen seguir con las de prioridad media y despus las de baja. Un programa consta al menos, de un proceso y un proceso, al menos, de un thread. Cuando un programa tiene varios procesos, lo normal es que cada uno ejecute un cdigo distinto, los cuales se encuentran en ficheros ejecutables separados. Dos procesos solo pueden compartir una zona de memoria si esta es definida expresamente como tal. As mismo, es en este caso cuando los sistemas de sincronizacin a la hora de compartir memoria se vuelven especialmente necesarios e importantes. 2.2Estados y transiciones de los procesos Durante su vida, un proceso puede pasar por una serie de estados discretos, algunos de ellos son: En ejecucin: El proceso ocupa la CPU actualmente, es decir, se est ejecutando. Listo o preparado: El proceso dispone de todos los recursos para su ejecucin, slo le falta la CPU. Bloqueado: Al proceso le falta algn recurso para poder seguir ejecutndose, adems de la CPU. Por recurso se pueden entender un dispositivo, un dato, etc. El proceso necesita que ocurra algn evento que le permita poder proseguir su ejecucin.

12

Solamente puede haber un proceso en ejecucin a la vez, pero pueden existir varios listos y varios pueden estar bloqueados. As pues, se forman una lista de procesos listos y otra de procesos bloqueados. La lista de procesos listos se ordena por prioridad, de manera que el siguiente proceso que reciba la CPU ser el primero de la lista. La lista de procesos bloqueados normalmente no est ordenada; los procesos no se desbloquean en orden de prioridad, sino que lo hacen en el orden de ocurrencia de los eventos que estn esperando. Como se ver ms adelante, hay situaciones en las cuales varios procesos pueden bloquearse esperando la ocurrencia del mismo evento; en tales casos es comn asignar prioridades a los procesos que esperan. Transiciones de estado de los procesos. De ejecucin Bloqueado: al iniciar una operacin de E/S, al realizar una operacin WAIT. De ejecucin Listo: por ejemplo, en un sistema de tiempo compartido, cuando el proceso que ocupa la CPU lleva demasiado tiempo ejecutndose continuamente (agota su cuantum) el sistema operativo decide que otro proceso ocupe la CPU, pasando el proceso que ocupaba la CPU a estado listo. De Listo en ejecucin: cuando lo requiere el planificador de la CPU. De Bloqueado Listo: se dispone del recurso por el que se haba bloqueado el proceso. Obsrvese que de las cuatro transiciones de estado posibles, la nica iniciada por el proceso de usuario es el bloqueo, las otras tres son iniciadas por entidades externas al proceso. ACTIVIDAD DE APRENDIZAJE 2.1: Encontrar una analoga para comprender el concepto de Proceso 2.3Procesos ligeros, hilos El concepto de proceso es ms complejo y sutil que el presentado hasta ahora. Engloba dos conceptos separados y potencialmente independientes: Unidad que posee recursos: A un proceso se le asigna un espacio de memoria y, de tanto en tanto, se le puede asignar otros recursos como dispositivos de E/S o archivos. Unidad a la que se le asigna el procesador: Un proceso es un flujo de ejecucin, a travs de uno o ms programas. Esta ejecucin se entremezcla con la de otros procesos. De tal forma, que un proceso tiene un estado y una prioridad de expedicin u origen. La unidad planificada y expedida por el sistema operativo es el proceso.

13

En la mayora de los sistemas operativos, estas dos caractersticas son, de hecho, la esencia de un proceso. Sin embargo, son independientes, y pueden ser tratadas como tales por el sistema operativo. Esta distincin ha conducido en los sistemas operativos actuales a desarrollar la construccin conocida como thread, Si se tiene esta divisin de caractersticas, la unidad de asignacin de la CPU se conoce como hilo, mientras que a la unidad que posee recursos se le llama proceso.

Dentro de un proceso puede haber uno o ms hilos de control cada uno con: Un estado de ejecucin (en ejecucin, listo, bloqueado). Un contexto de procesador, que se salva cuando no est ejecutndose. Una pila de ejecucin. Algn almacenamiento esttico para variables locales. Acceso a la memoria y a los recursos de ese trabajo que comparte con los otros hilos. Los beneficios clave de los hilos se derivan de las implicaciones del rendimiento: se tarda menos tiempo en crear un nuevo hilo de un proceso que ya existe, en terminarlo, y en hacer un cambio de contexto entre hilos de un mismo proceso. Al someter a un mismo proceso a varios flujos de ejecucin se mantiene una nica copia en memoria del cdigo, y no varias. Un ejemplo de aplicacin que podra hacer uso de los hilos es un servidor de archivos de una red de rea local. Cada vez que llega una solicitud de una operacin sobre un archivo, se puede generar un nuevo hilo para su gestin. El servidor gestiona multitud de solicitudes, por tanto, se pueden crear y destruir muchos hilos en poco tiempo para dar servicio a estas peticiones. Si el servidor es un multiprocesador, se pueden ejecutar varios hilos de un mismo proceso simultneamente y en diferentes procesadores. ACTIVIDAD DE APRENDIZAJE 2.2: Elaborar un cuadro comparativo sobre diversos tipos de procesadores. 2.4 Concurrencia y Secuenciabilidad En un sistema multiprogramado con un nico procesador, los procesos se intercalan en el tiempo aparentando una ejecucin simultnea. Aunque no se logra un procesamiento paralelo y produce una sobrecarga en los intercambios de procesos, la ejecucin intercalada produce beneficios en la eficiencia del procesamiento y en la estructuracin de los programas.

14

La intercalacin y la superposicin pueden contemplarse como ejemplos de procesamiento concurrente en un sistema monoprocesador, los problemas son consecuencia de la velocidad de ejecucin de los procesos que no pueden predecirse y depende de las actividades de otros procesos, de la forma en que el sistema operativo trata las interrupciones surgen las siguientes dificultades: 1. Compartir recursos globales es riesgoso 2. Para el sistema operativo es difcil gestionar la asignacin ptima de recursos. La concurrencia comprende incorporar varias cuestiones de diseo tales como: La comunicacin entre procesos Sincronizacin de la ejecucin de varios procesos - Comparacin y competencia por los recursos, - Asignacin del tiempo de procesador a los procesos

Y es fundamental para que existan diseos como Multiprogramacin, Multiproceso y Proceso distribuido. Los procesos son concurrentes si existen simultneamente. Cuando dos o ms procesos llegan al mismo tiempo a ejecutarse, se dice que se ha presentado una concurrencia de procesos. Es importante mencionar que para que dos o ms procesos sean concurrentes, es necesario que tengan alguna relacin entre ellos. La concurrencia puede presentarse en: Varias aplicaciones: La multiprogramacin se cre para permitir que el tiempo de procesador de la mquina fuese compartido dinmicamente entre varios trabajos o aplicaciones activas. Aplicaciones estructuradas: Como ampliacin de los principios del diseo modular y la programacin estructurada, algunas aplicaciones pueden implementarse eficazmente como un conjunto de procesos concurrentes. Estructura del sistema operativo: Las mismas ventajas de estructuracin son aplicables a los programadores de sistemas y se ha comprobado que algunos sistemas operativos estn implementados como un conjunto de procesos. Existen tres modelos de computadora en los que se pueden ejecutar procesos concurrentes: Multiprogramacin con un nico procesador, Multiprocesador y Multicomputadora(Es una mquina de memoria distribuida).

15

Tipos de procesos concurrentes. Proceso independiente: Es aquel que ejecuta sin requerir la ayuda o cooperacin de otros procesos. Un claro ejemplo de procesos independientes son los diferentes shells que se ejecutan de forma simultnea en un sistema. Procesos cooperantes: Son aquellos que estn diseados para trabajar conjuntamente en alguna actividad, para lo que deben ser capaces de comunicarse e interactuar entre ellos. En ambos tipos de procesos (independientes y cooperantes), puede producirse una serie de interacciones entre ellos. Elementos a gestionar y disear a causa de la concurrencia. 1. El sistema operativo debe ser capaz de seguir la pista de los distintos procesos activos. Esto lo hace por medio de PBCs (Bloque de Control de Procesos) 2. El sistema operativo debe asignar y quitar los distintos recursos a cada proceso activo. Entre estos recursos se incluyen: Tiempo de procesador: Es funcin de la planificacin. Memoria: La mayora de los sistemas operativos emplean esquemas de memoria virtual. Archivos: Dispositivos de E/S: 3. El sistema operativo debe proteger los datos y los recursos fsicos de cada proceso contra injerencias no intencionadas de otros procesos. 4. Los resultados de un proceso deben ser independientes de la velocidad relativa a la que se realiza la ejecucin con respecto a otros procesos concurrentes. 2.4.1Exclusin Mutua y Seccin Crtica Es posible clasificar las interacciones de los procesos en funcin del nivel de conocimiento que cada proceso tiene de la existencia de los dems: Los procesos no tienen conocimiento de los dems: Estos son procesos independientes que no estn pensados para operar juntos. Los procesos tienen un conocimiento indirecto de los otros: Los procesos no conocen necesariamente a los otros, pero comparten el acceso a algunos objetos. Los procesos tienen un conocimiento directo de los otros: Los procesos son capaces de comunicarse con los dems y estn diseados para trabajar conjuntamente en alguna actividad.
16

Competencia entre procesos por los recursos Los procesos concurrentes entran en conflicto cuando compiten por el uso del mismo recurso, y la ejecucin de un proceso puede influir en el comportamiento de los procesos que compiten y el sistema operativo le asignar el recurso a uno de ellos y el otro tendr que esperar. Por lo que el proceso que quede esperando, se retrasar, se bloqueara y en el peor de los casos nunca se terminar con xito. Es en estos procesos concurrentes, donde se plantean una serie de situaciones clsicas de comunicacin y sincronizacin, entre ellos el problema de la seccin crtica, uno de los problemas que con mayor frecuencia aparece cuando se ejecutan procesos concurrentes. Ejemplo: Se tiene un Sistema Operativo que debe asignar un identificador de proceso (PID) a dos procesos en un sistema multiprocesador. Cuando el SO realiza esta accin en dos procesadores de forma simultnea sin ningn tipo de control, se pueden producir errores, ya que se puede asignar el mismo PID a dos procesos distintos. Este problema se debe a que constituyen una seccin crtica que debe ejecutarse en forma atmica, es decir, de forma completa e indivisible y ningn otro proceso podr ejecutar dicho cdigo mientras el primero no haya acabado su seccin. Solucin a la seccin crtica Para resolver el problema de la seccin crtica es necesario utilizar algn mecanismo de sincronizacin que permita a los procesos cooperar entre ellos sin problemas. Este mecanismo debe proteger el cdigo de la seccin crtica y su funcionamiento bsico es: Cada proceso debe solicitar permiso para entrar en la seccin crtica, mediante algn fragmento de cdigo que se denomina de forma genrica entrada en la seccin crtica. Cuando un proceso sale de la seccin crtica debe indicarlo mediante otro fragmento de cdigo que se denomina salida de la seccin crtica. Este fragmento permitir que otros procesos entren a ejecutar el cdigo de la seccin crtica. Cualquier solucin que se utilice para resolver este problema debe cumplir los tres requisitos siguientes: Exclusin mutua, Progreso, Espera acotada. y

17

Exclusin mutua La exclusin mutua la podramos definir como una operacin de control que permite la coordinacin de procesos concurrentes, y que tiene la capacidad de prohibir a los dems procesos realizar una accin cuando un proceso haya obtenido el permiso. El control de la competencia involucra al sistema operativo, porque este asigna los recursos. Adems, los procesos deben ser capaces por s mismos, de expresar de algn modo los requisitos de exclusin mutua, como puede ser bloquear los recursos antes de usarlos. Hacer que se cumpla la exclusin mutua crea dos problemas de control adicionales. Interbloqueo. Si se tienen dos procesos P1 y P2 y dos recursos crticos, R1 y R2. Supngase que cada proceso necesita acceder a ambos recursos para llevar a cabo una parte de su funcin. En tal caso, es posible que se presente la siguiente situacin: el sistema operativo asigna R1 a P2 y R2 a P1. Cada proceso est esperando a uno de los dos recursos. Ninguno liberar el recurso que ya posee hasta que adquiera el otro y ejecute su seccin crtica. Ambos procesos estn nterbloqueados. Inanicin. Supngase que tres procesos, P1, P2 y P3, necesitan acceder peridicamente al recurso R. Considrese la situacin en la que P1 est en posesin del recurso y tanto P2 como P3 estn parados, esperando al recurso. Cuando P1 abandona su seccin crtica, tanto P2 como P3 deben poder acceder a R. Supngase que se le concede el acceso a P3 y que, antes de que termine su seccin crtica, P1 solicita acceso de nuevo. Si se le concede el acceso a P1 despus de que P3 termine y si P1 y P3 se conceden el acceso repetidamente el uno al otro, se puede negar definidamente a P2 el acceso al recurso. Requisitos para la exclusin mutua. El uso adecuado de la concurrencia entre procesos exige la capacidad de definir secciones crticas y hacer cumplir la exclusin mutua. Esto es fundamental para cualquier esquema de proceso concurrente. Cualquier servicio o capacidad que d soporte para la exclusin mutua debe cumplir los requisitos siguientes: 1. Debe cumplirse la exclusin mutua: Solo un proceso, de entre todos los que poseen secciones crticas por el mismo recurso u objeto compartido, debe tener permiso para entrar en ella en un instante dado. 2. Un proceso que se interrumpe en una seccin no crtica debe hacerlo sin estorbar a los otros procesos. 3. Un proceso no debe poder solicitar acceso a una seccin crtica para despus ser demorado indefinidamente; no puede permitirse el interbloqueo o la inanicin.

18

4. Cuando ningn proceso est en su seccin crtica, cualquier proceso que solicite entrar en la suya debe poder hacerlo sin dilacin. 5. No se pueden hacer suposiciones sobre la velocidad relativa de los procesos o su nmero. 6. Un proceso permanece en su seccin crtica solo por un tiempo finito. Soluciones a la exclusin mutua.-Hay varias formas de satisfacer los requisitos de exclusin mutua: Por Software, por Hardware y por mtodos que consisten en dar algn tipo de soporte al sistema operativo, entre estos mtodos se encuentran los semforos, monitores, paso de mensajes, etc. 2.4.2Sicnronizacin de procesos La sincronizacin es la transmisin y recepcin de seales que tiene por objeto llevar a cabo el trabajo de un grupo de procesos cooperativos. Es la coordinacin y cooperacin de un conjunto de procesos para asegurar la comparacin de recursos de cmputo. La sincronizacin entre procesos es necesaria para prevenir y/o corregir errores de debidos al acceso concurrente a recursos compartidos. La sincronizacin permite intercambiar seales de tiempo (ARRANQUE/PARADA) entre procesos cooperantes para garantizar las relaciones especficas de precedencia impuestas por el problema que se resuelve. Sin una sincronizacin adecuada entre procesos, la actualizacin de variables compartidas puede inducir a errores de tiempo relacionados con la concurrencia que son con frecuencia difciles de depurar. Para que los procesos puedan sincronizarse es necesario disponer de servicios que permitan bloquear o suspender bajo determinadas circunstancias la ejecucin de un proceso. Los principales mecanismos de sincronizacin que ofrecen los sistemas operativos son: Seales, Tuberas, Semforos, Mutex y variables condicionales , Paso de mensajes, Tuberas Una tubera es un mecanismo de comunicacin y sincronizacin. 2.4.2.1Mecanismos de Semforos Un semforo es una estructura diseada para sincronizar dos o ms threads o procesos, de modo que su ejecucin se realice de forma ordenada y sin conflictos entre ellos. Un semforo bsico est formada por una posicin de memoria y dos instrucciones, una para reservarlo y otra para liberarlo. A esto se le puede aadir una cola de threads para controlar su orden.

19

El porqu no se pueden usar directamente otras estructuras ms clsicas, como por ejemplo usar una variable comn para decidir si se puede o no acceder a un recurso, se debe a que estamos en un sistema multitarea: hacer esto implicara realizar una espera activa (un bucle, comprobando constantemente si la variable est o no a 0, y as saber si podemos seguir ejecutando o no). Por otro lado, puede ocurrir algo mucho peor: supongamos que un proceso comprueba la variable, y ve que el recurso est libre, por lo que procedera a cambiar dicha variable de valor y seguir. Pues bien, si justo despus de la comprobacin pero antes de que cambie el valor se conmuta de tarea y el nuevo proceso comprueba la variable, como todava no se ha actualizado, creer que el recurso est libre, e intentar tomarlo, haciendo que ambos programas fallen. Lo peor del caso es que se tratar de un error aleatorio: unas veces fallar y otras no. Para evitarlo, se idearon los semforos. Se empieza por inicializar la posicin de memoria a 1, a continuacin cada vez que un thread o un proceso quiera acceder a dicho recurso, har primero una peticin con la primera de las llamadas disponibles. Cuando el S.O. ejecuta esa llamada, comprueba el valor que hay en la posicin de memoria del semforo, y si es distinta de cero, se limita a restarle 1 y devolver el control al programa; sin embargo, si ya es cero, duerme al proceso que hizo la peticin y lo mete en la cola de procesos, en espera de que el semforo se ponga a un valor distinto de cero. Por ltimo, cuando el proceso ha terminado el acceso al recurso, usa la segunda llamada para liberar el semforo. Cuando el S.O. la ejecuta, comprueba si la cola del semforo est vaca, en cuyo caso se limita a incrementar el valor del semforo, mientras que si tiene algn proceso, lo despierta, de modo que vuelve a recibir ciclos de CPU y sigue su ejecucin. Si haba varios procesos en espera, se irn poniendo en marcha uno tras otro a medida que el anterior va liberando el semforo. Cuando termina el ltimo, el semforo se vuelve a poner a 1. Se trata, por tanto, del mismo proceso que seguiramos con la variable, pero con la ventaja de que es un mecanismo estandar para todos los procesos, y como es una operacion atmica, no surge el problema de que una conmutacin pueda producir errores aleatorios. Vemos que la primera vez que un proceso usa el semforo, este tiene valor 1, por lo que pasa a cero y el proceso puede acceder al recurso. Si durante ese tiempo otro proceso quiere acceder tambin, al usar el semforo, este tiene valor cero, por lo que el S.O. deja de darle ciclos de CPU. Cuando el primer proceso ha terminado, libera el recurso, con lo que el S.O. puede comprobar que el segundo proceso est esperando, por lo que le vuelve a dar ciclos. En este punto, el proceso sigue como si nunca hubiese sido detenido. Este tipo de semforos son los de Exclusin mtua, o Mutex. Otra utilizacin de los semforos es cuando uno o ms procesos tienen que esperar a que otro halla terminado una tarea. Para ello, el primer proceso borra el semforo y con una primitiva adecuada se pone a esperar a que el semforo se active (posted). Mientras, el segundo proceso va trabajando, y cuando termina lo que tiene que hacer, activa el semforo, con lo que el primer proceso vuelve a
20

ponerse en marcha, sin haber desperdiciado ciclos de CPU. Son semforos evento. Vemos que puede haber varios procesos esperando por el mismo semforo, y el thread que lo activa no tiene por qu saber cuantos son. Cobran su importancia cuando el evento no es producido por otro thread, sino por otras funciones del S.O., como las de sincronizacin, que veremos ms adelante. 2.4.2.2 Mecanismos de Monitores Es un tipo de procedimientos, variables y estructuras de datos que se agrupan en un tipo de modulo especial. Tienen una propiedad importante: solo un proceso puede estar activo en un monitor en un instante de tiempo. Los monitores proveen un nuevo tipo de variables de condicin con dos operaciones que operan sobre el (solo se usan dentro del procedimiento de el monitor). Wait(a): produce que el proceso que ejecuta la instruccin sea interrumpido y removido de la cola de ready hasta que otro proceso lo habilite ejecutando la instruccin signal( )con la misma variable de condicin. Signal(a): Habilita la ejecucin de algn proceso en espera por la ejecucin de la instruccin wait con la misma variable de condicin. 2.4.3 Interbloqueo DeadLock El interbloqueo puede definirse formalmente como sigue: Un conjunto de procesos est en interbloqueo si cada proceso del conjunto est esperando un evento que slo otro proceso del conjunto puede causar. Puesto que todos los procesos estn esperando, ninguno de ellos puede causar ninguno de los eventos que podran despertar a cualquiera de los dems miembros del conjunto, y todos los procesos continan esperando indefinidamente. Tipos de recursos Reutilizables .-Un recurso reutilizable es aqul que puede ser usado con seguridad por un proceso y no se agota con el uso. Los procesos obtienen unidades de recursos que liberan posteriormente para que otros procesos las reutilicen. Como ejemplos de recursos reutilizables se tienen los procesadores, canales de E/S, memoria principal y secundaria, dispositivos y estructuras de datos tales como archivos, bases de datos y semforos. Consumibles .-Un recurso consumible es aqul que puede ser creado (producido) y destruido (consumido). Normalmente, no hay lmite en el nmero de recursos consumibles de un tipo en particular. Un proceso productor que no est bloqueado puede liberar cualquier nmero de recursos consumibles. Cuando un proceso adquiere un recurso, ste deja de existir. Como ejemplos de recursos consumibles estn las interrupciones, seales, mensajes, e informacin en buffers de E/S.
21

Condiciones para el interbloqueo Coffman (1971) demostr que deben cumplirse cuatro condiciones para que haya un bloqueo mutuo: 1. Condicin de exclusin mutua. Cada recurso est asignado nicamente a un solo proceso o est disponible. 2. Condicin de retener y esperar. Los procesos que actualmente tienen recursos que les fueron otorgados previamente pueden solicitar nuevos recursos. 3. Condicin de no expropiacin. No es posible quitarle por la fuerza a un proceso los recursos que le fueron otorgados previamente. El proceso que los tiene debe liberarlos explcitamente. 4. Condicin de espera circular. Debe haber una cadena circular de dos o ms procesos, cada uno de los cuales est recurso retenido por el siguiente miembro de la cadena. esperando un

Deben estar presentes estas cuatro condiciones para que ocurra un bloqueo mutuo. Si una o ms de estas condiciones est ausente, no puede haber bloqueo mutuo. 2.4.3.1Prevencin del interbloqueo o Deadloock Los bloqueos mutuos pueden ser evitados si se sabe cierta informacin sobre los procesos antes de la asignacin de recursos. Para cada peticin de recursos, el sistema controla si satisfaciendo el pedido entra en un estado inseguro, donde puede producirse un bloqueo mutuo. De esta forma, el sistema satisface los pedidos de recursos solamente si se asegura que quedar en un estado seguro. Para que el sistema sea capaz de decidir si el siguiente estado ser seguro o inseguro, debe saber por adelantado y en cualquier momento el nmero y tipo de todos los recursos en existencia, disponibles y requeridos. Existen varios algoritmos para evitar bloqueos mutuos: Algoritmo del banquero, introducido por Dijkstra. Algoritmo de grafo de asignacin de recursos. Algoritmo de Seguridad. Algoritmo de solicitud de recursos. 2.4.3.2 Deteccin del interbloqueo Las estrategias de prevencin del interbloqueo son muy conservadoras; solucionan el problema del interbloqueo limitando el acceso a los recursos e imponiendo restricciones a los procesos. En el lado opuesto, las estrategias de deteccin del interbloqueo no limitan el acceso a los recursos ni restringen las acciones de los procesos. Con deteccin del interbloqueo, se concedern los recursos que los procesos necesiten siempre que sea posible. Peridicamente, el sistema operativo ejecuta un algoritmo que permite detectar la condicin de crculo vicioso de espera. Puede emplearse cualquier algoritmo de deteccin de ciclos en grafos dirigidos.
22

El control del interbloqueo puede llevarse a cabo tan frecuentemente como las solicitudes de recursos o con una frecuencia menor, dependiendo de la probabilidad de que se produzca el interbloqueo. La comprobacin en cada solicitud de recurso tiene dos ventajas: Conduce a una pronta deteccin y el algoritmo es relativamente simple, puesto que est basado en cambios incremntales del estado del sistema. Por otro lado, tal frecuencia de comprobaciones consume un tiempo de procesador considerable. Una vez detectado el interbloqueo, hace falta alguna estrategia de recuperacin. Las tcnicas siguientes son posibles enfoques, enumeradas en orden creciente de sofisticacin: 1. Abandonar todos los procesos bloqueados. Esta es, se crea o no, una de las soluciones ms comunes, si no la ms comn, de las adoptadas en un sistema operativo. 2. Retroceder cada proceso interbloqueado hasta algn punto de control definido previamente y volver a ejecutar todos los procesos. Es necesario que haya disponibles unos mecanismos de retroceso y reinicio en el sistema. El riesgo de esta solucin radica en que puede repetirse el interbloqueo original. Sin embargo, el no determinismo del procesamiento concurrente asegura, en general, que esto no va a pasar. 3. Abandonar sucesivamente los procesos bloqueados hasta que deje de haber interbloqueo. El orden en el que se seleccionan los procesos a abandonar seguir un criterio de mnimo coste. Despus de abandonar cada proceso, se debe ejecutar de nuevo el algoritmo de deteccin para ver si todava existe interbloqueo. 4. Apropiarse de recursos sucesivamente hasta que deje de haber interbloqueo. Como en el punto 3, se debe emplear una seleccin basada en coste y hay que ejecutar de nuevo el algoritmo de deteccin despus de cada apropiacin. Un proceso que pierde un recurso por apropiacin debe retroceder hasta un momento anterior a la adquisicin de ese recurso. Para los puntos 3 y 4, el criterio de seleccin podra ser uno de los siguientes, consistentes en escoger el proceso con: La menor cantidad de tiempo de procesador consumido hasta ahora. El menor nmero de lneas de salida producidas hasta ahora. El mayor tiempo restante estimado. El menor nmero total de recursos asignados hasta ahora. La prioridad ms baja. Algunas de estas cantidades son ms fciles de medir que otras. El tiempo restante estimado deja lugar a dudas, especialmente. Adems, aparte de las medidas de prioridad, no existe otra indicacin del coste para el usuario frente al coste para el sistema en conjunto.
23

2.4.3.3Recuperacin del interbloqueo Una vez que se ha detectado el interbloqueo se debe romper para que los recursos puedan finalizar su ejecucin y liberar as los recursos. Para ruptura de la espera se pueden realizar varias opciones. Las idnea sera suspendiendo algunos de los procesos bloqueados para tomar sus recursos y reanudar sus ejecucin una vez que se hubiera deshecho el interbloqueo. Esta solucin solo puede resultar factible en casos muy particulares; no se podra suspender a un proceso de escribir en una impresora para pasarla a otro proceso y reanudar despus la impresin, como tampoco se podra suspender indefinidamente un proceso de tiempo real. Las dos opciones que se suelen utilizar son: reiniciar uno o ms de los procesos bloqueados y expropiar los recursos de algunos de los procesos bloqueados. Para aplicar la primera de las opciones se deben tener en cuenta una serie de factores con el fin de elegir aquellos procesos cuya reiniciacin resulte menos traumtica. Entre los factores a tener en cuenta en cada proceso se tienen: 1. La prioridad del proceso. 2. El tiempo de procesamiento utilizado y el que le resta. 3. El tipoy nmero de recursos que posee. 4. El nmero de recursos que necesita para finalizar. 5. El nmero de otros procesos que se veran involucrados con su reiniciacin El procedimiento de la segunda opcin consiste en ir expropiando recursos de algunos procesos de forma sucesiva hasta que se consiga salir del interbloqueo. 2.5 Niveles, criterios y objetivos de la planificacin Se consideran tres niveles importantes de planificacin, los que se detallan a continuacin: Planificacin de alto nivel: Se encarga de llevar procesos de disco a memoria y viceversa. Seleccionando los trabajos que deben admitirse en el sistema. Tambin se denomina Planificacin de trabajos. Determina a qu trabajos se les va a permitir competir activamente por los recursos del sistema, lo cual se denomina Planificacin de admisin. Administrar todos los recursos del sistema excepto el CPU. Mantiene las colas de procesos bloqueados y suspendidos.
24

Controla la creacin de procesos. Maneja el nivel de multiprogramacin.

Planificacin de nivel intermedio: En algunos casos, en especial cuando el sistema est sobrecargado, el planificador de nivel medio encuentra ventajoso retirar trabajos activos de la memoria para reducir el grado de multiprogramacin, y por lo tanto, permitir que los trabajos se completen ms aprisa. Este subadministrador controla los trabajos que se intercambian hacia fuera y de regreso. Determina a qu procesos se les puede permitir competir por la cpu. Efecta suspensiones y activaciones (reanudaciones) de procesos. Debe ayudar a alcanzar ciertas metas en el rendimiento total del sistema. Equilibrar la administracin de trabajos en el sistema con la asignacin del CPU a dichos procesos. Nivelar la carga del sistema (procesos activos y pasivos).

Planificacin de bajo nivel: Se encarga de pasar de un proceso a otro en memoria principal. Determinando a cul proceso listo se le asignar el CPU cuando ste se encuentra disponible. Determina a qu proceso listo se le asigna la cpu cuando esta queda disponible y asigna la CPU al mismo, es decir que despacha la CPU al proceso. Criterios - Equidad.- Garantizar que cada proceso obtiene su proporcin justa de la CPU. - Eficacia.- Mantener ocupada la CPU el ciento por ciento del tiempo. - Tiempo de respuesta.- Minimizar el tiempo de respuesta para los usuarios interactivos. - Tiempo de regreso.- Minimizar el tiempo que deben esperar los usuarios por lotes (batch) para obtener sus resultados. - Rendimiento.- Maximizar el nmero de tareas procesadas por hora. 2.6 Tcnicas de administracin del planificador Las disciplinas de planificacin pueden ser: Expropiativas y No expropiativas

25

Se denomina planificador al software del sistema operativo encargado de asignar los recursos de un sistema entre los procesos que los solicitan. Siempre que haya que tomar una decisin, el planificador debe decidir cul de los procesos que compiten por la posesin de un determinado recursos lo recibir. Los algoritmos tienen distintas propiedades segn los criterios en los que se basen para su construccin, lo cual se refleja en qu tipo de procesos se puede ver favorecido frente a otro en la disputa del procesador. Antes de realizar la eleccin de un algoritmo se debe considerar las propiedades de estos frente al criterio de diseo elegido. Algunos de estos son: a) Eficacia: Se expresa como un porcentaje del tiempo medio de utilizacin. Aunque puede parecer lgico intentar mantener este parmetro prximo al 100%, con un valor tan elevado otros aspectos importante de medida del comportamiento del sistema pueden verse deteriorados, como por ejemplo el tiempo medio de espera. b) Rendimiento: Es una medida del nmero de procesos completados por unidad de tiempo. Por ejemplo 10 procesos por segundo. c) Tiempo de retorno o regreso: Es el intervalo de tiempo que transcurre desde que un proceso se crea o presenta hasta que completa por el sistema. d) Tiempo de espera: Es el tiempo que el proceso espera hasta que se le concede el procesador. Puede resultar una medida mas adecuada de la eficiencia del sistema, ya que se elimina de la media el tiempo que tarda en ejecutarse el mismo. e) Tiempo de respuesta a un evento: Se denomina as el intervalo de tiempo que transcurre desde que se seala un evento hasta que se ejecuta la primera instruccin de la rutina de servicio de dicho evento. El criterio de seleccin de un algoritmo se suele basar en la maximizacin o minimizacin de una funcin de los parmetros anteriores. 2.6.1 Tcnica FIFO: First In First Out Mecanismo de scheduling en el cual los procesos se ordenan en una fila, en la cual se ejecutan cada uno de los procesos hasta su finalizacin secuencialmente. Es tremendamente ineficiente. FIFO es el acrnimo ingls de First In, First Out (primero en entrar, primero en salir). Es un mtodo utilizado en estructuras de datos, contabilidad de costes y teora de colas. Guarda analoga con las personas que esperan en una cola y van siendo atendidas en el orden en que llegaron, es decir, que la primera persona que entra es la primera persona que sale.
26

Si se implementa mediante vectores el nmero mximo de elementos que puede almacenar est limitado al que se haya establecido en el cdigo del programa antes de la compilacin (cola esttica) o durante su ejecucin (cola pseudoesttica). Sea cual sea la opcin elegida, el nmero de elementos que podr almacenar la cola quedar determinado durante toda la ejecucin del programa. El sistema debe reservar el tamao de memoria necesario para acoger todos los datos, sea cual sea el nmero de elementos usados, lo que en algunas aplicaciones supone un despilfarro de la memoria. Sin embargo, si se usan punteros, el nmero mximo no est declarado sino que se hace un uso dinmico de la memoria, adaptndose al tamao necesario en cada momento en funcin de los elementos que hay en la cola. Uno de los usos de las colas es la exploracin en anchura de un rbol de bsqueda. Otro uso tpico de las colas, es la gestin de descargas de una aplicacin p2p. Los FIFOs se usan comnmente en circuitos de electrnica para almacenaje y hacer control de flujo. Hablando de hardware formar un FIFO consiste bsicamente en una conjunto de punteros de lectura/escritura, almacenamiento y lgica de control. El almacenamiento puede ser SRAM, flip-flops, o cualquier otra forma adecuada de almacenamiento. Para FIFOs de un tamao importante se usa usualmente una SRAM de doble puerto, donde uno de los puertos se usa para la escritura y el otro para la lectura. Un FIFO sincrnico maneja el mismo reloj (clock) tanto para las lecturas como para las escrituras. Una asincrnico es aquel que utiliza diferentes relojes una para lectura y otro para la escritura. Cuando se habla de FIFOs asincrnicos se introduce el tema de la metaestabilidad.. 2.6.2 Tcnica SJF: Short Job First Al igual que en el algoritmo FIFO las rfagas se ejecutan sin interrupcin, por tanto, slo es til para entornos batch. Su caracterstica es que cuando se activa el planificador, ste elige la rfaga de menor duracin. Es decir, introduce una nocin de prioridad entre rfagas. Hay que recordar que en los entornos batch se pueden hacer estimaciones del tiempo de ejecucin de los procesos. La ventaja que presenta este algoritmo sobre el algoritmo FIFO es que minimiza el tiempo de finalizacin promedio. 2.6.3 Tcnica RR Round Robin Cada proceso tiene asignado un intervalo de tiempo de ejecucin, llamado cuantum. Si el proceso agota su cuantum de tiempo, se elige a otro proceso para ocupar la CPU. Si el proceso se bloquea o termina antes de agotar su cuantum tambin se alterna el uso de la CPU. El round robin es muy fcil de implementar. Todo lo que necesita el planificador es mantener una lista de los procesos listos.
27

2.6.4 Tcnica Queves Multileves Un algoritmo de planificacin multinivel particiona la cola de listos en colas separadas. Se asignan en forma permanente los trabajos a una cola, generalmente, basndose en alguna propiedad del mismo (requerimientos de memoria, tipo de trabajo), teniendo cada cola su propio algoritmo. Por ejemplo, la cola interactiva podra planificarse usando RR y la batch FIFO. Ningn trabajo en una cola de baja prioridad puede ejecutarse si las colas con mayor prioridad no estn vacas. Si algn trabajo entra en una cola de mayor prioridad, el trabajo de otras colas es interrumpido. 2.6.5 Tcnica Multilevs Feedback Queves En colas multinivel realimentadas los trabajos pueden moverse dentro de distintas colas. La idea es separar procesos con distintos tipos de interrupciones de la CPU. Si un trabajo consume mucho tiempo de CPU, ser movido a una cola con menor prioridad. En forma similar, si un proceso espera demasiado tiempo en una cola de baja prioridad, lo moveremos a una cola de mayor prioridad. En general un planificador de este tipo esta definido por los siguientes parmetros: 1. El nmero de colas. 2. El tipo de algoritmo de planificacin de cada cola. 3. Un mtodo de cuando mover un trabajo a una cola de mayor prioridad. 4. Un mtodo de cuando mover un trabajo a una cola de menor prioridad. 5. Un mtodo de a qu cola se enviar un trabajo cuando necesita servicio.

28

Anda mungkin juga menyukai