Gestión de procesos y memoria

De Departamento de Informatica
Saltar a: navegación, buscar

Contenido

Gestión de procesos

¿Qué es un proceso?

Los procesos son programas en ejecución, los programas son leídos por el kernel y cargados a la memoria principal donde son ejecutados por la cpu. La diferencia entre proceso y programa es que un programa (entidad pasiva) es el conjunto de instrucciones de código maquina y datos almacenados, y el proceso (entidad activa) es este mismo conjunto en ejecución. Cuando el proceso se inicializa pasa a estar activo y empieza a competir por la utilización de recursos del sistema como el procesador o los dispositivos I/O.

Los procesos son considerados dinámicos debido a que van necesitando recursos, los procesos cambian entre distintos estados según reglas definidas por el Sistema operativo y así comparten el uso de CPU y otros recursos. Debido a la búsqueda de optimización en el uso de los recursos y CPU para la ejecución de procesos, los sistemas operativos implementan métodos para gestionar los procesos

La gestión de procesos consiste en la creación e inicialización de estructuras de datos en los Sistemas operativos para monitorizar y controlar el estado del proceso, además es el responsable de planificar y expandir los procesos para su ejecución. El sistema operativo asigna los recursos de procesador y responde a las solicitudes de servicios básicos, realizadas por los programas de usuarios.

Los procesos poseen un contador de programa, que indica la dirección de la siguiente instrucción que se va ejecutar de ese proceso y los registros de CPU. También poseen pilas que contienen datos temporales, como son los parámetros de subrutina, las direcciones de retorno y variables locales.

Cuando los procesos quedan inactivos el Sistema Operativo utiliza la información de cambio de los procesos para la planificación y gestión del conjunto de todos los procesos que en determinado momento pueden coexistir en el sistema informático. Esto permite gestionar de una manera más eficiente los procesos en los Sistemas Operativos que manejan múltiples procesadores.

Se puede clasificar los procesos entre procesos de usuario y procesos de sistema, cada uno de estos procesos puede trabajar de forma cooperativa o competitiva, ambas formas requieren una cuidada asignación y protección de los recursos en términos de aislamiento de los diferentes espacios de dirección. La cooperación depende de la existencia de mecanismos para utilización controlada de los datos compartidos y el intercambio de señales de sincronización. Los procesos que trabajan en forma competitiva son los que no generan procesos con los cuales compartir recursos.

Unidad de trabajo

Existen procesos que se ejecutan en modo kernel y otros que se ejecutan en modo usuario.

Los procesos que son ejecutados en modo kernel son más lentos por las llamadas al sistema que realizan, sin embargo, son más seguros por la integridad que representan.Además, cabe destacar que son procesos propios del sistema operativo los cuales desempeñan algunas de las labores caracteristicas de éste. Por su parte, los procesos que son ejecutados en modo usuario, corresponden ser los que han sido creados por el sistema operativo. Actividades en gestión de procesos:

Creación de procesos.

Cuando un nuevo proceso se agrega al sistema de operación se construyen las estructuras de datos que son usadas para administrar los procesos y se le asigna un espacio de direcciones. Existen 4 formas para ello, estas son:

  1. En la ejecución, desde un proceso, de una llamada al sistema para la creación del proceso.
  2. El inicio de un trabajo por lotes.
  3. Arranque del sistema.
  4. Una petición intensionada de parte del usuario para crear un proceso.
 Ej: En Unix la llamada al sistema fork crea un nuevo proceso.

Término de un proceso.

Un proceso termina cuando se ejecuta su última instrucción y se pide al sistema operativo que sea eliminado. En este momento, el proceso puede devolver un valor de estado a su proceso padre. Además, el sistema operativo libera la asignación de recursos de todos los recursos del proceso. (Memoria fisica y virtual, archivos abiertos y buffers de I/O) El término de un proceso también puede ser producto de:

  1. Una llamada al sistema de parte del proceso padre del proceso al que se quiere dar término.
  2. Un número de error o alguna condición de fallo puede llevar a la finalización de un proceso. Algunas de las más comunes son: Memoria no disponible, limite de tiempo excedido, error de proteccón, fallo de I/O, terminación de un proceso padre, entre otras.

Suspensión de un proceso.

Como el procesador es mucho más rápido que los dispositivos de I/O puede suceder que en un determinado momento todos los procesos del sistema se encuentren bloqueados esperando que se complete alguna operación de I/O. Para dar solución a este problema, existen 2 soluciones:

  1. Ampliar la memoria principal de manera tal que sea posible albergar en ella más procesos e incrementar así la posibilidad de que alguno de ellos haga uso efectivo del procesador.
  2. Uso de la técnica Intercambio Shapping: la que consiste en dejar bloqueados todos los procesos que se encuentren en memoria principal.

Mecanismos de sincronización.

Puede ser sincrónico o asincrónico:

  1. Sincrónico: es cuando los procesos se ejecutan de forma paralela(a la misma vez).
 Ej: El proceso A ejecuta el servicio enviar mientras que el proceso B (a la vez) ejecuta el servicio recibir.
  1. Asincrónico: es cuando un proceso espera a otro para continuar su ejecución.
 Ej: El proceso A ejecuta el servicio enviar y espera a que el proceso B ejecute el servicio recibir para así poder proseguir su ejecución    
    (proceso A).

Mecanismos de comunicación.

En un sistema operativo los procesos pueden ser: cooperativos o independientes. Para aquellos procesos que son cooperativos, existen 2 formas de comunicación inter-proceso(IPC), estas son:

  1. Memoria Compartida: es de mayor velocidad y conveniencia en la comunicación.
  2. Paso por mensaje (el cual siempre se encuentra asociado a un protocolo y donde el kernel es el actor en todo el proceso).

Mientras que en el caso de los procesos independientes, como bien lo dice su nombre no dependen de otros procesos por lo cual no necesita comunicarse.

Interbloqueos de procesos.

Un grupo de procesos se ubica en estado de interbloqueo cuando cada uno de ellos espera un suceso que puede ser originado solamente por alguno de los procesos que conforman el grupo. El interbloqueo puede alcanzarse si se cumplen las siguientes 4 condiciones a la vez.

  1. Exclusión mutua: solo un proceso a la vez puede usar un recurso.
  2. Retener y esperar: un proceso mantiene al menos 1 recurso y se encuentra esperando para adquirir recursos adicionales que están siendo usados por otros procesos.
  3. No apropiación: un recurso puede ser liberado solo voluntariamente por el proceso que lo tiene, luego de haber finalizado su tarea.
  4. Espera circular: existe un conjunto {P0, P1, …, P0} de procesos esperando tal que P0 está esperando por un recurso que es retenido por P1, P1 está esperando por un recurso que es retenido por P2, …, Pn–1 está esperando por un recurso que es retenido por Pn, y P0 está esperando por un recurso que es retenido por P0.

Los interbloqueos pueden ser descritos haciendo uso de un grafo dirigido y bipartito G(N,A) llamado Grafo de asignación de recursos.

Gestión de memoria

¿Qué es la memoria principal?

La memoria principal es la unidad donde están almacenados las instrucciones, y datos necesarios para ejecutar un proceso. Para que un computador funcione todos los datos y programas necesarios deben estar almacenados en esta memoria. La memoria principal esta constituida por una multitud de celdas o posiciones de memoria, numeradas en forma consecutiva, en cada una de estas posiciones cabe una unidad específica de información llamada “palabra”, cuando se habla del ancho de la “palabra” se refiere al ancho del registro de información. El tamaño de la palabra es múltiplo del byte, ya que de esta forma el acceso a la misma, puede hacerse desde uno al ancho máximo del bus de datos ahorrando tiempo. A la numeración de las celdas se denomina dirección de memoria y mediante esta dirección se puede acceder de forma directa a cualquiera de ellas independiente de su posición, por eso se considera que la memoria principal es de acceso directo.

Una de las principales características de la memora principal es su rápido tiempo de acceso, el tiempo de acceso es el tiempo que el ordenador invierte desde que se emite la orden de lectura-escritura, hasta que finaliza la misma. Para la memoria principal este tiempo va del orden de micro-segundos e incluso del orden de 2 a 10 nanosegundos, aunque depende mucho de la potencia del ordenador.

Debido a los altos costos en la fabricación de esta memoria su capacidad en espacio es bastante más pequeña que a diferencia de otros dispositivos de almacenaje como la memoria secundaria. La memoria principal esta dividida en:

Memoria RAM

Random Access Memory o Memoria de acceso aleatorio, esta memoria puede acceder directamente a cualquier punto aleatorio en la misma cantidad de tiempo. La memoria RAM permite tanto escritura como lectura por lo que se usa para cargan los programas y datos, que serán almacenados solo mientras la computadora este encendida ya que es memoria temporal.

Memoria ROM

Read Only Memory o Memoria de solo lectura, Es un dispositivo de memoria que contiene las instrucciones en forma binaria, grabadas en el momento de su fabricación, esta memoria como es de solo lectura no se puede modificar. Por lo general contiene los programas de testeo (revisa el correcto funcionamiento del pc) y de inicialización de la maquina cuando se enciende, además hace que la información vaya en orden.

Gestión de memoria

La memoria es uno de los recursos más importantes del computador, y por esto mismo, la gestión de la memoria es fundamental. La idea de gestionar la memoria es que busca proveer métodos o mecanismos para poder asignar memoria a aquellos programas que lo requieran o liberar la memoria que no esta siendo utilizada.

La gestión de la memoria debe ser lo mas sutil posible, en otras palabras todo lo que se haga con la memoria mientras corren los procesos debe generar la sensación de que los procesos están corriendo solos, en otras palabras que es el único proceso que esta corriendo en la maquina, y por lo tanto la gestión de memoria debe asegurar la protección de los procesos, y esto seria que no se vean interrumpidos por cualquier otro programa que esta siendo ejecutado.

Dentro de todos los objetivos que el sistema de gestión de memoria debería cumplir, los mas relevantes son :

  • permitir que los procesos compartan memoria
  • proporcionar protección entre los procesos
  • ofrecer a cada proceso un espacio lógico propio
  • dar soporte a las distintas regiones del proceso
  • maximizar el rendimiento del sistema
  • proporcionar a los procesos mapas de memoria muy grandes


Compartimiento de memoria y protección

Como bien sabemos el que existan varios programas ejecutándose puede causar problemas, por lo tanto, se debe evitar que estos programas colisionen entre si, en otras palabras que no halla interrupciones ni problemas con otro programa que se esta ejecutando o que un programa al causar un error colapse el sistema operativo, para evitar esto se necesita la ayuda del hardware ya que se necesita validar las direcciones que generan los programas al momento de ser ejecutado, es por esto que los procesos deben poseer su espacio lógico separado de los demás. A pesar de todo esto puede ser provechoso que los procesos compartan memoria entre si, para lograr esto se establece una región en la memoria para los procesos que cooperan, esto permite que se puedan intercambiar información lo que da una mayor rapidez a los procesos que cooperan. Todo esto se puede hacer con el consentimiento del sistema operativo.


Esquemas de gestión de memoria

  • Segmentación : Tal como su nombre lo dice, divide a la memoria en fragmentos los cuales no necesariamente son de igual tamaño y estos pueden crecer o reducirse de forma independiente sin afectar a los demás segmentos.
  • Paginación : La paginación o monopogramación sin intercambio, esto es en forma secuencial ya que solo se tiene un objeto en memoria en cada instante, el usuario carga toda la memoria con un programa.
  • Intercambio : Se le llama intercambio al traslado de procesos de memoria a disco y viceversa es cuando hay un exceso de los procesos en memoria por lo que conviene llevarlos al disco.
  • Memoria virtual : Es una técnica de administración de la memoria real que le permite al usuario un espacio de direcciones mayor que las que nos brinda la memoria física como tal.
  • Algoritmo de remplazo de página : son utilizados para decidir qué páginas pueden ser sacadas de memoria para poder ingresar una nueva y ya no queda espacio en la memoria (entiéndase por página como el espacio de direcciones de cada proceso que se divide en bloques de tamaño uniforme)

Referencias

Sistema Operativos - pablo Ruiz Muzquiz. (alqua, madeincommunity)

http://www.ucla.edu.ve/dac/Departamentos/coordinaciones/informaticai/documentos/Resumen%20tema2.pdf

http://www.lcc.uma.es/~rusman/docencia/so/Tema4.Interbloqueo.pdf

Tema de investigación:Programa Top

Herramientas personales
Espacios de nombres
Variantes
Acciones
Navegación
Herramientas