Sistema Operativos Gestion De Procesos
Enviado por neo20 • 16 de Mayo de 2013 • 10.170 Palabras (41 Páginas) • 640 Visitas
sistema operativos
Gestión de Procesos
Introducción
2.1. Definiciones de Procesos
2.2. Estados de los Procesos
2.3. Implementación de Procesos
2.4. Comunicación entre Procesos
2.5. Problema clásico de la comunicación entre Procesos
2.6. Planificación de Procesos
Introducción
El diseño de un sistema operativo debe reflejar con seguridad los requisitos que se pretende que éste cumpla. Todos los sistemas operativos de multiprogramación, desde los sistemas monousuario, como Windows, hasta los sistemas de grandes computadores, como MVS, que puede dar soporte a miles de usuarios, están construidos en tomo al concepto de proceso. Por tanto, los requisitos principales que debe satisfacer un sistema operativo están expresados haciendo referencia a los procesos:
• El sistema operativo debe intercalar la ejecución de un conjunto de procesos para maximizar la utilización del procesador ofreciendo a la vez un tiempo de respuesta razonable.
• El sistema operativo debe asignar los recursos a los procesos en conformidad con una política específica (por ejemplo, ciertas funciones o aplicaciones son de prioridad más alta), evitando, al mismo tiempo, el interbloqueo.
• El sistema operativo podría tener que dar soporte a la comunicación entre procesos y la creación de procesos por parte del usuario, labores que pueden ser de ayuda en la estructuración de las aplicaciones.
Puesto que el proceso es fundamental en todos los requisitos clave de los sistemas operativos, se comenzará el estudio detallado de los sistemas operativos con un examen a la forma en que se representan y controlan los procesos en los sistemas operativos.
El CPU ejecuta una elevada cantidad de programas, y aunque su principal ocupación es la ejecución de los programas de usuario, también se requiere para otras actividades del sistema. A estas actividades se les denominan procesos. Un proceso es la unidad de trabajo dentro de un sistema, el cual consiste en un conjunto de procesos: los procesos del sistema operativo ejecutan código del sistema y los procesos de los usuarios ejecutan código de los usuarios. El núcleo (kernel) de un sistema operativo es un conjunto de rutinas cuya misión es la de gestionar el procesador, la memoria, la entrada/salida y el resto de recursos disponibles en la instalación. Toda esta gestión la realiza para atender al funcionamiento y peticiones de los trabajos que se ejecutan en el sistema.
2.1. Definiciones de Proceso
Todas las computadoras modernas pueden realizar varias tareas al mismo tiempo. En estos sistemas de multiprogramación el CPU debe cambiar de un programa a otro, ejecutando cada uno en decenas o cientos de milisegundos. Pero en cualquier instante de tiempo el CPU puede estar ejecutando solo un programa. Todo el software ejecutable en la computadora, que con frecuencia incluye al sistema operativo, se organiza en varios procesos secuenciales. Un proceso es básicamente un programa ejecutante donde intervienen los valores corrientes del contador de programa, registros y variables. El concepto central de cualquier sistema operativo es el proceso: una abstracción de un programa en ejecución.
El término proceso fue utilizado, en principio, por los diseñadores del sistema Multics (actualmente UNIX) en la década de 1960. Desde entonces, al proceso, en alguna medida intercambiado con tarea, se le han dado muchas definiciones. Las que siguen son algunas de ellas:
• un programa que se está ejecutando
• una actividad asincrónica
• el "emplazamiento del control" de un procedimiento que está siendo ejecutado
• aquello que se manifiesta por la existencia en el sistema operativo de un "bloque de control de proceso"
• aquella entidad a la cual son asignados los procesadores
• la unidad "despachable".
Se le han dado muchas otras definiciones. Aunque no hay un acuerdo universal sobre su definición, parece hacerse referencia más frecuentemente al concepto de programa que se está ejecutando.
Figura 1. Definición de Proceso
Un obstáculo para analizar los sistemas operativos es la denominación de las actividades del CPU. Un sistema por lotes ejecuta trabajos, mientras que un sistema en tiempo compartido tiene programas de usuario o tareas. Incluso en los sistemas monousuario, como MS-DOS y el OS de Macintosh, un usuario puede ejecutar varios programas al mismo tiempo: uno en forma interactiva y varios programas por lotes. Aunque el usuario pueda ejecutar sólo un programa a la vez, el sistema operativo puede necesitar apoyar a sus propias actividades internas programadas, como el spooling. En varios aspectos, estas actividades son similares, por lo que a todas se les llama procesos.
El corazón de un sistema operativo es el núcleo, un programa de control que reacciona ante cualquier interrupción de eventos externos y que da servicio a los procesos, creándolos, terminándolos y respondiendo a cualquier petición de servicio por parte de los mismos.
2.1.1 Tipos de Procesos
Procesos Concurrentes: dos procesos son concurrentes si sus ejecuciones se superponen en el tiempo. Se puede mencionar procesos dependientes y procesos independientes. Dos procesos P1 y P2 son dependientes si comparten los datos y son independientes cuando no comparten sus datos. Existen varias razones para permitir la ejecución concurrente:
Compartir Recursos Físicos: ya que los recursos del hardware del computador son limitados, nos podemos ver obligados a compartirlos en un entorno multiusuario.
Compartir Recursos Lógicos: puestos que varios usuarios pueden interesarse en el mismo elemento de información (por ejemplo, un archivo compartido), debemos proporcionar un entorno que permita el acceso concurrente a estos tipos de recursos.
Acelerar los Cálculos: si queremos que una tarea se ejecute con mayor rapidez, debemos dividirla en subtareas, cada una de las cuales se ejecutará en paralelo con las demás. Observe que esta aceleración puede lograrse únicamente si el computador posee múltiples elementos de procesamiento.
Modularidad: podremos construir el sistema de forma modular, dividiendo las funciones en procesos separados.
Comodidad: un usuario puede tener que ejecutar varias tareas a la vez, por ejemplo editar, imprimir y compilar en paralelo.
Procesos Secuenciales: es un programa en ejecución. La ejecución de un proceso debe progresar de una manera secuencial. Esto es, en cualquier punto del tiempo, a lo más una instrucción es ejecutada en favor del proceso.
...