PROCESO: es un programa en ejecucin. Un proceso simple tiene un hilo de ejecucin, sabiendo que es una actividad de cierto tipo que contiene un programa de entrada, salidas y estados.
IMPLANTACIN DE LOS PROCESOS El sistema operativo almacena una tabla de control de procesos de informacin relativa a cada proceso. Cada lnea de esta tabla representa un proceso: 1.- Identificacin del proceso. 2.- Identificacin del proceso padre. 3.- Informacin de usuario y grupo. 4.- Estado del procesador. 5.- Informacin de control de proceso
HILOS O HEBRAS En sistemas operativos, un hilo de ejecucin, hebra o subproceso es la unidad de procesamiento ms pequea que puede ser planificada por un sistema operativo.
La creacin de un nuevo hilo es una caracterstica que permite a una aplicacin realizar varias tareas a la vez (concurrentemente). Los distintos hilos de ejecucin comparten una serie de recursos tales como el espacio de memoria, los archivos abiertos, situacin de autenticacin, etc. Esta tcnica permite simplificar el diseo de una aplicacin que debe llevar a cabo distintas funciones simultneamente.
Un hilo es simplemente una tarea que puede ser ejecutada al mismo tiempo con otra tarea.
Los hilos de ejecucin que comparten los mismos recursos, sumados a estos recursos, son en conjunto conocidos como un proceso. El hecho de que los hilos de ejecucin de un mismo proceso compartan los recursos hace que cualquiera de estos hilos pueda modificar stos. Cuando un hilo modifica un dato en la memoria, los otros hilos acceden a ese dato modificado inmediatamente.
Lo que es propio de cada hilo es el contador de programa, la pila de ejecucin y el estado de la CPU (incluyendo el valor de los registros).
El proceso sigue en ejecucin mientras al menos uno de sus hilos de ejecucin siga activo. Cuando el proceso finaliza, todos sus hilos de ejecucin tambin han terminado. Asimismo en el momento en el que todos los hilos de ejecucin finalizan, el proceso no existe ms y todos sus recursos son liberados.
Algunos lenguajes de programacin tienen caractersticas de diseo expresamente creadas para permitir a los programadores lidiar con hilos de ejecucin (como Java o Delphi). Otros (la mayora) desconocen la existencia de hilos de ejecucin y stos deben ser creados mediante llamadas de biblioteca especiales que dependen del sistema operativo en el que estos lenguajes estn siendo utilizados (como es el caso del C y del C++).
Un ejemplo de la utilizacin de hilos es tener un hilo atento a la interfaz grfica (iconos, botones, ventanas), mientras otro hilo hace una larga operacin internamente. De esta manera el programa responde de manera ms gil a la interaccin con el usuario. Tambin pueden ser utilizados por una aplicacin servidora para dar servicio a mltiples clientes.
ESTADOS DE LOS PROCESOS Los procesos en el estado listo son los que pueden pasar a estado de ejecucin si el planificador los selecciona. Los procesos que estn en ejecucin son los que se estn ejecutando en el procesador, y los que estn bloqueados es porque estn esperando la respuesta de algn procesador para continuar con ejecucin.
EL PLANIFICADOR DE LOS PROCESOS. La planificacin es el proceso por el cual se sistema operativo seleccin que proceso ejecutar. Objetivos Equidad: todos los procesos deben poder ejecutarse. Eficacia: mantener al procesador ocupado a l 100%. Tiempo de respuesta: minimizar el tiempo de respuesta al usuario. Tiempo de regreso: minimizar el tiempo que deben esperar los usuarios. Rendimiento: maximizar el nmero de tareas procesadas por hora.
UNIDAD 4.- GESTION DE MEMORIA.
GESTION DE MEMORIA CON PARTICIONES FIJAS Y VARIABLES
GESTION DE MEMORIA CON PARTICIONES FIJAS La memoria se puede organizar dividindose en diversas partes, las cuales pueden variar en tamao. Esta particin la puede hacer el usuario en forma manual, al iniciar una sesin con la mquina. Una vez implementada la particin, hay dos maneras de asignar los procesos a ella. La primera es mediante el uso de una cola nica (figura 2a) que asigna los procesos a los espacios disponibles de la memoria conforme se vayan desocupando. El tamao del hueco de memoria disponible es usado para localizar en la cola el primer proceso que quepa en l. Otra forma de asignacin es buscar en la cola el proceso de tamao mayor que se ajuste al hueco, sin embargo hay que tomar en cuenta que tal mtodo discrimina a los procesos ms pequeos. Dicho problema podra tener solucin si se asigna una particin pequea en la memoria al momento de hacer la particin inicial, el cual sera exclusivo para procesos pequeos.
Particin 1 Particin 2 Particin 3 Sistema Operativo 700 K 400 K 100 K 0 Particin 1 Particin 2 Particin 3 Sistema Operativo 700 K 400 K 100 K 0 (a) (b)
Fig. 2. (a) Particiones fijas en memoria con una cola nica de entrada. (b) Particiones fijas en memoria con colas exclusivas para cada tamao diferente de la particin. El espacio asignado a la particin 2 est en desuso.
Esta idea nos lleva a la implementacin de otro mtodo para particiones fijas, que es el uso de diferentes colas independientes (figura 2b) exclusivas para cierto rango en el tamao de los procesos. De esta manera al llegar un proceso, ste sera asignado a la cola de tamao ms pequeo que la pueda aceptar. La desventaja en esta organizacin es que si una de las colas tiene una larga lista de procesos en espera, mientras otra cola est vaca, el sector de memoria asignado para ese tamao de procesos estara desperdicindose.
GESTION DE MEMORIA CON PARTICIONES VARIABLES. Este esquema fue originalmente usado por el sistema operativo IBM OS/360 (llamado MFT), el cual ya no est en uso. El sistema operativo lleva una tabla indicando cules partes de la memoria estn disponibles y cules estn ocupadas. Inicialmente, toda la memoria est disponible para los procesos de usuario y es considerado como un gran bloque o hueco nico de memoria. Cuando llega un proceso que necesita memoria, buscamos un hueco lo suficientemente grande para el proceso. Si encontramos uno, se asigna nicamente el espacio requerido, manteniendo el resto disponible para futuros procesos que requieran de espacio. Consideremos el ejemplo de la figura 3, en donde se cuenta un espacio reservado para el sistema operativo en la memoria baja de 400K y un espacio disponible para procesos de usuario de 2160K, siendo un total de memoria del sistema de 2560K. Dada la secuencia de procesos de la figura y usando un algoritmo de First Come First Served (FCFS) se puede asignar de inmediato memoria a los procesos P1, P2 y P3, creando el mapa de memoria de la figura 4(a) en el cual queda un hueco de 260K que ya no puede ser utilizado por el siguiente proceso dado que no es suficiente para abarcarlo.
Fig. 3. Ejemplo de una divisin inicial de memoria y una lista de trabajos.
Sistema Operativo 2160K
P 1
P 2
P 3
P 4
P 5
600K 1000K 300K 700K 500K 10 5 20 8 15 Lista de trabajos Procesos Memoria Tiempo 2560K
2560K
0
Sistema Operativ o 400K 0 Sistema Operativ o 1000K 400K 0 Sistema Operativ o 1000K 400K 0 Sistema Operativ o 1000K 400K 0 Sistema Operativ o P5 400K 0
(a) (b) (c) (d) (e)
Fig. 4. Ejemplo de asignacin de procesos en la memoria principal.
Usando un proceso de asignacin Round-Robin con un quantum de 1 unidad de tiempo, el proceso P 2 terminara en la unidad de tiempo 14, liberando esa cantidad de memoria, como se muestra en la figura 4(b). Entonces el sistema operativo checa la lista de trabajos y asigna el siguiente proceso que quepa en el espacio de memoria liberado. El proceso P 4 produce el mapa de memoria que se muestra en la figura 4(c). El proceso P 1 terminar en la unidad de tiempo 28 para producir el mapa de la figura 4(d) y entonces se asigna el proceso P 5 generando el mapa de la figura 4(e). Cuando a un proceso se le asigna un espacio y es cargado a la memoria principal, puede entonces competir para el uso del CPU.
MEMORIA VIRTUAL: Definicin: memoria virtual (Fotheringham, 1961) es un mtodo que permite direccionar un espacio de almacenamiento mucho mayor que el disponible en la memoria principal. Para ello, el S.O usa memoria a dos niveles y particiona los trabajos en bloques, manteniendo en la memoria principal aquellos bloques que se estn usando.
Tamao de los bloques: Con el mismo tamao: pginas. Paginacin. Con diferentes tamaos: segmentos. Segmentacin.
Definiciones: 1. Direcciones virtuales: las direcciones a las que se refiere un proceso durante su ejecucin. Espacio de direcciones virtuales. 2. Direcciones reales: las direcciones que tiene la memoria principal. Espacio de direcciones reales. Los mecanismos de traduccin dinmica de direcciones (DAT) se encargan de transformar las direcciones virtuales a direcciones reales, basndose en que direcciones contiguas dentro del espacio de direcciones virtuales, no tienen por qu ser contiguas dentro del almacenamiento real. P1 P2 P3 2560K 2300K 2000K 1000K P1 P3 P1 P4 P3 Hueco P4 P3 P4 P3 1000K 2000K 1700K 1700K 900K Termina P2 Asignar P4 Termina P1 Asignar P5 Hueco Hueco Hueco Hueco Hueco Hueco Hueco Hueco Hueco Hueco Para realizar esta transformacin, los DAT mantienen por cada proceso un mapa que indica qu direcciones virtuales se encuentran en memoria principal y dnde. Para que este mapa no sea muy grande las transformaciones se realizan a nivel de bloque.
PAGINACION. La paginacin de memoria divide os programas en pequeas partes o pginas. Del mismo modo, la memoria es dividida en trozos del mismo tamao que las pginas llamados marcos de pgina. De esta forma, la cantidad de memoria desperdiciada por un proceso es el final de su ltima pgina, lo que minimiza la fragmentacin interna y evita la externa.
En un momento cualquiera, la memoria se encuentra ocupada con pginas de diferentes procesos, mientras que algunos marcos estn disponibles para su uso. El sistema operativo mantiene una lista de estos ltimos marcos, y una tabla por cada proceso, donde consta en qu marco se encuentra cada pgina del proceso. De esta forma, las pginas de un proceso pueden no estar contiguamente ubicadas en memoria, y pueden intercalarse con las pginas de otros procesos.
SEGMENTACIN
La segmentacin es una tcnica de gestin de memoria que pretende acercarse ms al punto de vista del usuario. Los programas se desarrollan, generalmente, en torno a un ncleo central (principal) desde el que se bifurca a otras partes (rutinas) o se accede a zonas de datos (tablas, pilas, etc).
Desde este punto de vista, un programa es un conjunto de componentes lgicos de tamao variable o un conjunto de segmentos, es decir, el espacio lgico de direcciones se considera como un conjunto de segmentos, cada uno definido por un identificador, y consistente de un punto de inicio y el tamao asignado.1
La segmentacin de un programa la realiza el compilador y en ella cada direccin lgica se expresar mediante dos valores: Nmero de segmento (s) y desplazamiento dentro del segmento (d).
Una de las implementaciones ms obvias y directas de un espacio de memoria segmentado es asignar un segmento distinto a cada una de las secciones del espacio en memoria de un proceso.
La segmentacin tambin ayuda a incrementar la modularidad de un programa