capitulo 4 grupo 1
TRANSCRIPT
QUINTO NIVEL
“B”
Ser una unidad con alto prestigio académico, con eficiencia, transparencia y calidad en la educación, organizada en sus actividades, protagonista del
progreso Regional y Nacional.
Formar profesionales en el campo de la Ciencias Informáticas, que con honestidad, equidad y solidaridad, den respuesta a las necesidades de la
sociedad elevando su nivel de vida.
PROCESOS
Los primeros sistemas de cómputo solo permitían
la ejecución de un programa a la vez y tenía el
control absoluto del sistema y el acceso a todos
sus recursos.
Actualmente permiten cargar
varios programas en la memoria y
ejecutarlos de manera
concurrente.
Un proceso es la
unidad de trabajo en
un sistema moderno
de tiempo compartido.
PROCESOS
Un sistema consiste en una
colección de procesos.
Procesos del sistema operativo ejecutando código
del sistema.
Procesos de usuario ejecutando código de usuario
Todos estos procesos pueden ejecutarse de manera
concurrente, multiplexando el o los procesadores.
PROCESOS
En un sistema de un solo usuario, el usuario es capaz
de ejecutar varios programas a la vez.
4.1 CONCEPTO DE PROCESO
Un sistema por lotes ejecuta trabajos
Un sistema de tiempo compartido tiene
programas de usuario o tareas.
Si el usuario ejecuta solo un programa a la vez, el
sistema operativo necesita dar soporte a sus propias
actividades internas programadas, como la
administración de la memoria.
PROCESOS 4.1.1. EL PROCESO
Un proceso es un programa en ejecución.
4.1.2. ESTADO DE UN PROCESO
A medida que se ejecuta
un proceso, cambia su
estado.
El estado de un proceso
se define en parte por la
actividad actual de dicho
proceso.
Se encuentran en todos
los sistemas.
NUEVO
EJECUCIÓN
ESPERA LISTO
TERMINADO
Un proceso involucra a un programa en ejecución más información.
PROCESOS
Cada proceso se representa en
el sistema operativo mediante
un bloque de control del
proceso, denominado bloque
de control de tarea.
4.1.3. BLOQUE DE CONTROL DEL PROCESO
Estado del proceso
Contador de programa
Registros de la CPU
Información de planificación de la CPU
Información de administración de la memoria
Información Contable
Información de estado de E/S El PCB sirve como depósito de
cualquier información que
pueda variar de un proceso a
otro.
PROCESOS
Un proceso es un programa que sigue un solo hilo de
ejecución.
La mayoría de sistemas operativos modernos han extendido el
concepto de proceso para permitir que este tenga varios hilos
de ejecución. De esta forma , se permite que el proceso
realice mas de una tarea a la vez.
4.1.4. HILOS
4.2. PLANIFICACIÓN DE PROCESOS
El objetivo de la multiprogramación es tener un proceso en
ejecución en todo momento, para maximizar la utilización de la
CPU.
En un sistema con un solo microprocesador, nunca hay mas
de un proceso en ejecución. Si existen mas procesos el resto
debe esperar hasta que la CPU este libre y pueda volver a
planificarse.
PROCESOS 4.2.1. COLAS DE PLANIFICACIÓN
• A medida que los procesos van entrando al sistema
• Se los coloca en una cola de trabajos
• Los procesos que residen en la memoria principal y listos
• Y en espera de ejecutarse
• Se mantienen en una lista
• Denominada la cola de procesos listos.
PLANIFICADORES
Un proceso migra entre las diversas colas a lo largo de su existencia. El SO debe seleccionar en alguna forma los procesos de estas colas. Esta selección se la realiza mediante un planificador.
En un sistema por lotes, existen procesos que se pueden ejecutar de inmediato; estos procesos se colocan en reserva en un dispositivo de almacenamiento donde se mantienen para su posterior ejecución.
El planificador de largo plazo (planificador de trabajos) selecciona procesos de esta reserva y los carga en memoria para su ejecución.
El planificador de corto plazo (planificador de la CPU) selecciona de entre los procesos que están listos para su ejecución, y asigna la CPU a uno de ellos.
PLANIFICADORES
Algunos SO como los sistemas de tiempo compartido, pueden introducir un nivel intermedio adicional de planificación.
El planificador de mediano plazo
tiene
Como idea clave la ventaja para remover procesos de la memoria y de esta manera reducir el grado de multiprogramación.
En algún momento posterior el proceso puede ser introducido nuevamente a la memoria y continuar su ejecución desde el punto donde se suspendió. Este esquema se denomina intercambio (swapping).
Este intercambio puede ser necesario para mejorar la mezcla de procesos., o debido a que un cambio en los requerimientos de memoria ha comprometido en exceso la memoria disponible y se requiere liberarla.
CONMUTACIÓN DE CONTEXTO
La conmutación de la CPU a otro proceso requiere conservar el estado del proceso anterior y cargar el estado guardado del nuevo proceso. Esto es lo que llamamos conmutación de contexto.
El contexto de un
proceso se representa
En su PCB;
* el valor de los registros de la CPU,
* el estado del proceso y
* la información sobre administración de la memoria.
Cuando ocurre una
conmutación de contexto
El kernel guarda el contexto del proceso
anterior en su PCB y carga el del nuevo
proceso programado para ejecución.
OPERACIONES SOBRE PROCESOS
Los procesos en el sistema pueden ser ejecutados de manera concurrente y deben ser creados y eliminarse de manera dinámica.
OPERACIONES SOBRE PROCESOS
Es por esto que el SO debe proporcionar un mecanismo para crear y terminar procesos.
CREACIÓN DE PROCESOS
Un proceso puede crear varios procesos nuevos, a través de una llamada al sistema para la creación de procesos durante el curso de ejecución.
El proceso creador se denomina proceso padre, mientras que los nuevos son los hijos. Cada uno de estos nuevos procesos puede también crear otros procesos formando así un árbol de proceso.
Un proceso necesitará ciertos recursos para realizar su tarea. Cuando un proceso crea un subproceso, este último puede ser capaz de obtener sus recursos directamente del SO o puede estar restringido a un subconjunto de recursos del proceso padre.
CREACIÓN DE PROCESOS
1.- El padre continúa ejecutándose de manera concurrente con sus hijos.
2.- El padre espera hasta que alguno o todos sus hijos hayan terminado.
Cuando un proceso crea uno
nuevo, existen dos posibilidades
en términos de ejecución
1.- El proceso hijo es un duplicado del proceso padre.
2.- Se carga un programa en el proceso hijo.
También hay dos posibilidades en
términos del espacio de
direcciones del nuevo proceso
TERMINACIÓN DE UN PROCESO
Un proceso concluye cuando termina de ejecutar su declaración final y le pide al SO que lo borre usando la llamada exit.
En dicho punto, el proceso puede regresar datos (salida) a su proceso padre (mediante wait). Todos los recursos del proceso son liberados por el SO.
Un proceso
Puede ocasionar la terminación de otro por medio de una llamada apropiada al sistema (ejemplo
abort). Tal llamada puede invocarse sólo por el padre del
proceso que se debe terminar, de lo contrario los usuarios podrían
matar arbitrariamente sus trabajos entre ellos.
TERMINACIÓN DE UN PROCESO
Un padre puede terminar la ejecución de uno de sus hijos por varias razones
El hijo se ha excedido en el uso de alguno 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.
Muchos sistemas no permiten que un hijo exista si su padre ha terminado, es por esto que si un proceso concluye, entonces todos sus hijos también deben ser finalizados. Este fenómeno es conocido como una terminación en cascada, y por la general es iniciado por el SO.
PROCESOS COOPERATIVOS
Los procesos concurrentes que se ejecutan en el SO
pueden ser
Procesos Independientes
Procesos Cooperativos
cuando cuando
No puede afectar o verse afectado por los otros procesos que se están ejecutando en el sistema. Es independiente si no comparte algún dato con cualquier otro proceso.
Puede afectar o verse afectado por los otros procesos que se están ejecutando en el sistema. Es cooperativo si cualquier proceso comparte datos con otros procesos.
PROCESOS COOPERATIVOS
Existen varias razones para proporcionar un ambiente que permita la cooperación entre procesos.
Debido a que varios usuarios pueden estar interesados en la misma pieza de información debemos proporcionar un ambiente que permita el acceso
concurrente a estos tipos de recursos.
Si deseamos que una tarea particular se ejecute más rápido, la debemos descomponer en subtareas, cada una de las cuales se estará ejecutando en
paralelo con las otras.
Tal vez queramos construir el sistema de forma modular, dividiendo las funciones del sistema en procesos distintos o hilos.
Un usuario individual puede tener varias tareas sobre las cuales trabajar en un momento; por ejemplo, puede estar editando, imprimiendo y
compilando en paralelo.
Compartir información
Aceleración de cálculos
Modularidad
Conveniencia
COMUNICACIÓN ENTRE PROCESOS
Los procesos cooperativos pueden comunicarse en un ambiente de memoria compartida. Este esquema requiere que estos procesos compartan un a reserva común de buffers y que el programador de la aplicación escriba de manera explícita el código para implementar el buffer.
Otra forma de lograr el mismo efecto es que el sistema operativo
proporcione los medios para que los procesos cooperativos se
comuniquen entre ellos a través de un servicio de comunicación entre
procesos (IPC). El IPC proporciona un mecanismo tanto para que los procesos se comuniquen como para sincronizar sus acciones sin compartir el mismo espacio de direcciones. El IPC es útil en un ambiente distribuido, en donde los procesos que se comunican pueden residir en diferentes computadoras conectadas en una red.
SISTEMA DE PASO DE MENSAJES
La función de un sistema de mensajes es permitir que los procesos se comuniquen entre ellos, sin necesidad de recurrir a datos compartidos. Los servidores IPC proporcionan dos operaciones: envió, send (mensaje) y recepción, received (mensaje) El tamaño de los mensajes enviados por un proceso puede ser:
Requieren una implementación mas compleja pero la tarea de programación es mas sencilla.
TAMAÑO FIJO
La implementación es sencilla y directa
TAMAÑO VARIABLE
ASIGNACIÓN DE NOMBRES
Los procesos que desean comunicarse necesitan una forma de hacer referencia entre ellos, pueden usar:
COMUNICACIÓN DIRECTA
Cada proceso que quiere comunicarse debe nombrar explícitamente al receptor o al emisor de la comunicación.
COMUNICACIÓN INDIRECTA
Los mensajes se envían y se reciben de buzones o puertos. Cada buzón tiene una identificación única , en este esquema , un proceso se puede comunicar con otro utilizando varios buzones diferentes. Dos procesos solo se pueden comunicar si tienen un buzón compartido.
Un buzón cuyo propietario es el sistema operativo tiene una existencia propia. Es independiente y no esta ligado a un proceso en particular. El sistema operativo debe entonces proporcionar un mecanismo que permita los procesos: •Crear un nuevo buzón •Enviar y recibir mensajes a través del buzón •Borrar un buzón
La comunicación entre procesos tiene lugar mediante las llamadas primitivas send y recibe.
El paso de mensajes puede ser:
Emisor bloqueado hasta ser
recibido el mensaje
Receptor bloqueado hasta
que halla un mensaje
disponible
Receptor recupera un
mensaje valido
Emisor envía el mensaje y
continua su operación
Con bloqueo Sin bloqueo
Envío
Recepción
SINCRONIZACIÓN
Los mensajes intercambiados por los procesos comunicados residen en una cola temporal.
Ahí tres formas de implementarla:
• Longitud máxima de 0
• El emisor se bloquea hasta que el receptor lea el mensaje Capacidad Cero
• Longitud finita igual a n
• El emisor continua su ejecución sin espera.
Capacidad Limitada
• Longitud infinita
• El Emisor nunca se bloquea
Capacidad ilimitada
Mensajes sin Buffers
Uso automático de Buffers
USO DE BUFFERS
Es un sistema operativo basado en mensajes.
Los mensajes se envían y reciben desde buzones o puertos.
El tamaño máximo de la cola es de ocho mensajes
Mach se diseño especialmente para sistemas distribuidos.
UN EJEMPLO: MACH
Es un sistema operativo de diseño moderno que disminuye el tiempo necesario para implementar nuevas características.
Su servicio de paso de mensajes se conoce como Servicio local de llamada a procedimientos.(LPC)
Emplea dos tipos de puertos: puertos de conexión y puertos de comunicación.
UN EJEMPLO: WINDOWS NT