Capitulo 4 grupo 2
-
Upload
ecuatareas -
Category
Technology
-
view
291 -
download
1
description
Transcript of Capitulo 4 grupo 2
PROCESO
Puede considerarse como un programa
en ejecución
Necesita recursos para realizar su tarea, estos se
asignan al crearse el proceso o cuando se
está ejecutando.
Incluye la pila del
proceso, que
contiene datos
temporales y una
sección de datos
Es la unidad de trabajo en la
mayoría de los sistemas.
Un proceso puede generar muchos
procesos a medida que se ejecuta
Sistema
Ocupación principal del SO:
ejecución de programas de
usuario
Consiste en una colección
de procesos
Procesos del SO ejecutando código del
sistema
Procesos de usuario
ejecutando código de usuario
SO
(ayer)
SO
(hoy)
Estados de un proceso
Nuevo El proceso se está creando
Ejecución Se están
ejecutando instrucciones
En espera Está esperando
que ocurra algún evento
Listo Está en espera
de ser asignado a un procesador
Terminado El proceso ha terminado su
ejecución
A medida que se ejecuta un proceso, cambia su estado, este se define en parte por la actividad actual de dicho proceso
Nombres de los procesos varían entre los SO, mas sin embargo, los estados que representan están en todos los sistemas.
Sólo un proceso puede estar ejecutándose en un procesador en algún
momento. Muchos procesos pueden estar listos y en espera.
Cada proceso se
representa en el
SO mediante un
bloque de
control del
proceso (PCB),
llamado también
bloque de
control de tarea.
Información de planificación de la
CPU
Incluye prioridad del proceso,
apuntadores a colas de
planificación y otros
Información de administración de la
memoria
Puede incluir datos referentes al valor de
los registros base y límite, tablas de página
o de segmentos.
Información contable
Incluye la cantidad de tiempo de CPU
y tiempo real usado, límites de
tiempo, entre otros
Información de estado de E/S
Incluye la lista de dispositivos de E/S
asignados al proceso
Registros de la CPU
Varía dependiendo de la arquitectura del computador.
Incluyen acumuladores, apuntadores
Contador de programa
Indica la dirección de la siguiente instrucción a
ejecutar
Estado del proceso
Nuevo, listo, espera….
Un proceso es un programa que sigue un solo hilo (thread) de ejecución.
Un único hilo de control sólo permite que el proceso realice una tarea a la vez (procesador de palabras).
Muchos SO han extendido el concepto de proceso para permitir que éste tenga varios hilos de ejecución y a la vez pueda realizar más de una tarea a la vez
• Su objetivo es tener un proceso en ejecución en todo momento y así maximizar la utilización de la CPU
Multiprogramación
• Su objetivo es conmutar la CPU entre procesos tan frecuentemente que los usuarios puedan interactuar con cada programa que está en ejecución.
Tiempo compartido
En un sistema con un solo microprocesador, nunca hay más de un proceso en
ejecución.
En caso de existir más proceso deberán esperar hasta que la CPU esté libre y
puedan volver a planificarse.
Cola de trabajos
Aquí están todos los procesos en el sistema
Cola de procesos
Es una lista en la cual se encuentran los procesos que residen en la memoria principal listos y en espera de ejecutarse
Cola del dispositivo
Es la lista de procesos esperando por un dispositivo de E/S particular
El planificador es un componente funcional muy importante de
los sistemas operativos.
El planificador a corto plazo: selecciona
procesos y los carga en la memoria para su
ejecución.
El planificador a largo plazo: selecciona de
entre los procesos que están listos para su
ejecución, y asigna la CPU a uno de ellos.
Multitarea y multiproceso.
Tiempo real (esencial).
Seleccionar una buena mezcla de
procesos limitados por E/S y limitados
por CPU.
Así se obtiene un sistema con mejor
desempeño.
Los procesos pueden describirse como: Limitados por E/S o
Limitados por CPU
Limitados por E/S
Es el que consume mas de su tiempo haciendo operaciones de E/S que haciendo cálculos.
Limitados por CPU
Es el que genera solicitudes de E/S de manera poco frecuente.
Empleando mas tiempo en cálculos que un proceso limitado por E/S
IMPORTANTE
La conmutación de contexto es la tarea de conservar el
estado de un proceso anterior y cargar el estado de guardado
del nuevo proceso.
El contexto de un proceso
se representa en su PCB.
Incluye:
La información sobre
administración de la memoria.
El estado del
proceso.
El valor de los
registros de la CPU.
PR
OC
ESO
Puede crear varios procesos nuevos a través de una
llamada para la creación de procesos.
Necesita recursos (tiempo de CPU, memoria, archivos,
dispositivos de E/S)
Puede ser padre y convertirse en hijo.
Un proceso concluye cuando termina de ejecutar su declaración final y le pide al sistema que lo borre (exit).
CIRCUNSTANCIAS ADICIONALES POR LAS QUE SE PUEDE TERMINAR UN PROCESO
Un proceso puede terminar la ejecución de otro proceso por medio de una llamada apropiada al
sistema (abort).
El hijo se ha excedido en el uso de algunos de los recursos que tiene asignados.
Ya no se requiere la tarea asignada al hijo.
El padre está saliendo, y el sistema no permite que un hijo continúe si su padre termina.
Los procesos dentro de un sistema operativo pueden
ser independientes o cooperativos.
PROCESOS
INDEPENDIENTES
PROCESOS
COOPERATIVOS
Un proceso es
independiente si no puede
afectar o verse afectado
Un proceso es
cooperativo si puede
afectar o verse afectado
Existen varias razones para generar
un ambiente para la cooperación:
Compartir información
Aceleración de cálculos
Modularidad
Conveniencia
Cuando dos procesos desean comunicarse requieren enviar y recibir
mensajes, para ello debe existir un enlace de comunicación, existen varias
formas de implementar enlaces:
• Implementación física
• Implementación lógica
Algunos métodos para la implementación lógicamente de un enlace ya las
operaciones send-receive
Comunicación directa o indirecta
Comunicación simétrica o asimétrica
Uso automático o explícito de los buffers
Envió por copia o por referencia
Mensajes de tamaño fijo o variable
Su función es permitir que los procesos se comuniquen entre ellos, sin
necesidad de recurrir a datos compartidos.
El tamaño de los mensajes enviados por un proceso puede ser fijo o
variable.
ASIGNACIÓN DE NOMBRES Los procesos que desean comunicarse necesitan hacer referencia
entre ellos.
Para esto pueden usar una comunicación:
DIRECTA INDIRECTA
En la comunicación Directa cada proceso que
quiere comunicarse debe nombrar al receptor o
emisor de la comunicación.
Simetría en el
Direccionamiento Asimetría en el
Direccionamiento
Esto presenta
El emisor como el receptor
nombra a otro para
comunicarse
Solo el emisor nombra al
receptor
En la comunicación indirecta los mensajes se
envían y reciben de buzones o puertos.
Cada buzón tiene una identificación única
Puede ser propiedad de un proceso o del sistema operativo
Cuando un proceso propietario de un buzón termina, el buzón
desaparece.
El paso de mensajes puede ser:
Con bloqueo (síncrono)
Sin bloqueo(asíncrono)
•El proceso emisor se bloquea hasta que el mensaje e
recibido por el proceso receptor
Envío con bloqueo
•El emisor envía el mensaje y continúa
su operación
Envío sin bloqueo •El receptor se
bloquea hasta que haya un mensaje
disponible
Recepción con bloqueo
•El receptor recupera un
mensaje válido o un valor nulo
Recepción sin bloqueo
Los mensajes intercambiados por los procesos comunicados residen en una cola temporal. Existen tres formas para implementarlas:
Capacidad cero: el enlace puede tener mensajes esperando en él.
Capacidad limitada: n mensajes pueden residir en ella.
Capacidad ilimitada: Cualquier número de mensajes puede esperar en ella.
EJEMPLO DEL PRODUCTOR-CONSUMIDOR
Import java.util.*;
Public class ColaMensajes
{
Public ColaMensajes(){
cola=new Vector();
)
//Éste implementa un envío (send) sin bloqueo
Public void send(Object item){
Cola.agregaElemento(item);
}
//Éste implementa una recepción (receive) sin bloqueo
Public Object receive() {
Object item;
If(cola.tamaño()==0)
return null;
Else
{
item=cola.primerElemento();
cola.removerElementoEn(0);
return item;
}
}
Private Vector cola;
}
Solución al problema: Empleo
de paso de mensajes.
El productor y el consumidor se comunicarán indirectamente empleando el buzón compartido. El buffer se implementa usando la clase java.util.vector, lo que significa que habrá un buffer con apacidad ilimitada. Cuando el productor genera un elemento, coloca ese elmento en el buzón vía el método send().
ColaMensajes Buzón;
While (true){
Date mensaje= (Date) buzon.receive();
if (mensaje !=null)
//consumir el mensaje
Proceso productor
Proceso consumidor
ColaMensajes Buzón;
While (true){
Date mensaje= new Date();
Buzon.send(mensaje);
}
EJEMPLO :MATCH (Sistema operativo
basado en mensajes) La mayoría de las comunicaciones se
realizan mediante mensajes, éstos se envían y reciben desde los llamados puertos.
Cuando se crea cada tarea, también se crean: el buzón kernel y el notify.
Se necesitan tres llamadas al sistema para la transferencia: msg_send, msg_receive. Las llamadas remotas a procedimientos a través de msg_rpc
La llamada al sistema port_allocate crea un nuevo buzón y asigna espacio para su cola de mensajes.(8)
FIFO
Si el buzón está lleno, el hilo emisor debe:
Esperar hasta que haya espacio
Esperar a lo sumo n milisegundos
No esperar, sino regresar de inmediato
Poner temporalmente el mensaje en una caché. (tareas de servidor
El sistema Mach intenta evitar
operaciones de copiado doble
utilizando técnicas de administración
de memoria virtual.
EJEMPLO: WINDOWS NT Emplea modularidad.
Proporciona soporte para múltiples ambientes de operación o subsistemas.
Servidor de paso de mensajes: servidor local de llamada a procedimientos.
NT emplea dos tipos de puertos: de conexión(proporciona a las aplicaciones
una forma para preparar un canal de comunicación) y de comunicación.
La comunicación funciona así:
o El cliente abre un manejador al objeto puerto de conexión del subsistema
o El cliente envía una solicitud de conexión.
o El servidor crea dos puertos de comunicación privaos, y devuelve el manejador
de uno de ellos al cliente.
o El cliente y el servidor emplean el manejador del puerto correspondiente para
enviar mensajes o contestar.
NT emplea tres tipos de técnicas de paso de mensajes:
1. Usa la cola de mensajes
2. Pasa el mensaje a través de un objeto de sección(memoria
compartida).
3. Si el servidor decide que las respuestas serán largas, crea un
objeto de sección.
Desventajas
El rendimiento no es tan bueno
Para aumentar el rendimiento, emplea un tercer
método de paso de mensajes. (LCP rápido)