Está en la página 1de 9

ALUMNO: Luis Alberto Cortez Gómez

DIFERENCIA ENTRE PROCESO Y SUBPROCESO, ASÍ COMO SUS


CARACTERÍSTICAS.
El proceso es la ejecución de un programa y realiza las acciones relevantes
especificadas en un programa, o es una unidad de ejecución donde se ejecuta un
programa. El sistema operativo crea, programa y termina los procesos para el uso de la
CPU. Los otros procesos creados por el proceso principal se conocen como proceso
hijo.
El hilo es una ejecución de programa que utiliza recursos de proceso para llevar a cabo
la tarea. Todos los hilos dentro de un solo programa están contenidos lógicamente
dentro de un proceso. El kernel asigna una pila y un bloque de control de subprocesos
(TCB) a cada subproceso. El sistema operativo guarda solo el puntero de la pila y el
estado de la CPU al momento de cambiar entre los hilos del mismo proceso.
El proceso es una ejecución de un programa, mientras que el subproceso es una
ejecución de un programa impulsado por el entorno de un proceso.
Propiedades de un proceso:

 La creación de cada proceso incluye llamadas al sistema para cada proceso por
separado.
 Un proceso es una entidad de ejecución aislada y no comparte datos e
información.
 Los procesos utilizan un mecanismo de comunicación IPC (comunicación entre
procesos) que aumenta significativamente el número de llamadas al sistema.
 La gestión de procesos consume más llamadas al sistema.
 Cada proceso tiene su propia memoria de pila y montón, instrucciones, datos y
mapa de memoria.
Propiedades de un hilo:

 Solo una llamada al sistema puede crear más de un hilo (proceso ligero).
 Los hilos comparten datos e información.
 Los subprocesos comparten instrucciones, regiones globales y de
almacenamiento dinámico, pero tiene su propia pila y registros individuales.
 La gestión de subprocesos no consume o recibe menos llamadas del sistema,
ya que la comunicación entre subprocesos se puede lograr utilizando la memoria
compartida.
 La propiedad de aislamiento del proceso aumenta su sobrecarga en términos de
consumo de recursos.
Ejemplo.
Los procesos se utilizan para lograr la ejecución de programas de manera simultánea y
secuencial. Mientras que un subproceso es una unidad de ejecución de programa que
utiliza el entorno del proceso cuando muchos subprocesos utilizan el entorno del mismo
proceso, necesitan compartir su código, datos y recursos.
MÉTODOS DE COMUNICACIÓN ENTRE PROCESOS.
Dos mecanismos básicos de comunicación entre procesos:
Memoria Compartida.

 Necesitan un mecanismo de sincronización externo.


 La responsabilidad de la comunicación recae en los procesos (el sistema
operativo sólo proporciona llamadas para manipular dicha memoria compartida).
Paso de Mensajes.

 La responsabilidad de la comunicación y sincronización recae en el Sistema


Operativo que proporciona un enlace lógico entre procesos.
 Los procesos sólo tienen que invocar correctamente a dos llamadas básicas:
send y receive bloqueantes o no).
Comunicación Directa: se nombran explícitamente los procesos.
Direccionamiento simétrico: se nombran el destino y el origen:

 P: send(Q,msg);
 Q: receive(P,&msg);

Direccionamiento asimétrico: se nombra sólo el destino:

 P: send(Q,msg);
 Q: receive(&id_proc,&msg);

Comunicación Indirecta: se utilizan buzones.

 send(id_bz,msg);
 receive(id_bz,&msg);

Características de la Comunicación Directa:

– El enlace lógico es implícito entre cada par de procesos.


– Un enlace está asociado sólo a dos procesos.
– Entre cada par de procesos existe un único enlace.
– El enlace es bidireccional.
– No compilación independiente.
Características de la Comunicación Indirecta:

– El enlace lógico existe sólo si se comparte un buzón.


– Un enlace puede asociarse a más de dos procesos.
– Dos procesos pueden compartir varios enlaces.
– El enlace puede ser unidireccional o bidireccional.
– Compilación independiente.

Ejemplo: Un ejemplo es el mensajeo entre objetos que se utiliza en la programación


orientada a objetos.
PROBLEMAS CLÁSICOS PARA ENTENDER LA UTILIDAD DE LOS MÉTODOS DE
COMUNICACIÓN.
EL PROBLEMA DE LA CENA DE LOS FILÓSÓFOS.
Este problema se puede enunciar de la siguiente manera: Cinco filósofos se sientan a
la mesa. Cada uno tiene un plato de espagueti. El espagueti es tan escurridizo, que un
filósofo necesita dos tenedores para comerlo. Entre cada dos platos hay un tenedor.
La vida de un filósofo consta de dos periodos alternados de comer y pensar. (Esto es
una abstracción, incluso para los filósofos, pero las demás actividades son irrelevantes
en este caso).
Cuando un filósofo tiene hambre, intenta obtener un tenedor para su mano izquierda y
otro para su mano derecha, alcanzando uno a la vez y en cualquier orden.
Si logra obtener los dos tenedores, come un rato y después deja los tenedores y
continúa pensando.
Solución.
Una solución es esperar hasta que el tenedor especificado esté disponible y tomarlo.
Esta solución es incorrecta si se hace la suposición de que los cinco filósofos toman
sus tenedores izquierdos en forma simultánea. Ninguno de ellos podría tomar su
tenedor derecho, con lo que ocurriría un bloqueo.
EL PROBLEMA DE LOS LECTORES Y LOS ESCRITORES.
Cuando se tiene una enorme base de datos, como por ejemplo un sistema de
reservaciones de una aerolínea, con muchos procesos en disputa por la escritura o
lectura a dicha base. ¿Cómo se deben programar los lectores y los escritores?
Solución.
Una solución es dar en primera instancia prioridad primaria a los lectores y secundaria
a los escritores, es decir, si existen lectores el escritor debe esperar hasta que ya no
haya lectores.
EL PROBLEMA DEL BARBERO DORMIÓN.
El problema consiste en programar a un barbero y a sus clientes sin entrar en
competencia.
La peluquería tiene un barbero, una silla de peluquero y n sillas para que se sienten los
clientes en espera, si es que los hay.
Si no hay clientes el barbero se sienta en la silla de peluquero y se duerme. Cuando
llega un cliente debe despertar al barbero.
Si llegan más clientes mientras el barbero corta el cabello a un cliente, ellos se sientan
(si hay sillas desocupadas).
Un cliente que entra a la peluquería debe contar el número de clientes que esperan. Si
es menor que el número de sillas, él se queda; en caso contrario se va.
Solución.
Cuando el barbero abre su negocio se debe ejecutar un semáforo denominado barber
que checa el número de barberos en espera de clientes (0 o 1), lo que establece un
bloqueo en otro semáforo: customer, que cuenta el número de clientes en espera,
después se va a dormir.
Cuando llega el primer cliente, éste ejecuta customer, que inicia procurando que un
tercer semáforo llamado mutex entre en una región crítica. Mutex se va a utilizar para la
exclusión mutua.
Si otro cliente llega, no podrá hacer nada hasta que el primero haya liberado a mutex.
El cliente verifica entonces si el número de clientes que esperan es menor que el
número de sillas. Si esto no ocurre, libera a mutex y sale sin su corte de pelo.
Si existe una silla disponible, el cliente incrementa la variable entera waiting, que es
una réplica de customer. Después realiza un “levantamiento” en customer, con lo que
despierta al barbero.
Cuando el cliente libera a mutex, el barbero lo retiene, ordena algunas cosas e inicia el
corte de pelo.
Al terminar el corte, el cliente sale del procedimiento y deja la peluquería.
Nótese que no existe un ciclo para el cliente, puesto que el corte de pelo es una
actividad que el cliente recibe automáticamente, más no ejecuta tal actividad.
ALGORITMOS DE CALENDARIZACIÓN DE PROCESOS.
Conceptos básicos.
Antes de ver algunos de los algoritmos más utilizados vamos a dar a conocer algunos
aspectos o conceptos para entenderlos mejor.

– Tiempo de espera: El tiempo que un proceso permanece en espera en la cola de


ejecución.
– Tiempo de retorno: Tiempo que va desde que se lanza un proceso hasta que
finaliza.
– Tiempo de respuesta: Por último, éste se define al tiempo que un proceso
bloqueado tarda en entrar en ejecución.
– Uso de CPU: Porcentaje de tiempo que la CPU está ocupada.
– Productividad: Número de procesos realizados en una unidad de tiempo.

Y por último dos tipos de algoritmos:

– Apropiativo: También conocido como expulsivo o expropiativo, este tipo de


algoritmo nos permite la expulsión de procesos para ejecutar un nuevo proceso,
poniendo en cola al anterior.
– No Apropiativo: Este tipo no nos permite la expulsión, por lo que un proceso
nuevo no entrará hasta que termine el anterior.
Tipos de algoritmo.
Una vez tenemos estos conceptos claros puedo explicaros alguno de estos algoritmos.
FCFS (First-Come, First-Served)
Empezaremos hablando de FCFS o también llamado FIFO (del inglés First In, First
Out). Este algoritmo es muy sencillo y simple, pero también el que menos rendimiento
ofrece, básicamente en este algoritmo el primer proceso que llega se ejecuta y una vez
terminado se ejecuta el siguiente.
SJF (Shortest Job First).
Este algoritmo siempre prioriza los procesos más cortos primero independientemente
de su llegada y en caso de que los procesos sean iguales utilizara el método FIFO
anterior, es decir, el orden según entrada. Este sistema tiene el riesgo de poner
siempre al final de la cola los procesos más largos por lo que nunca se ejecutarán, esto
se conoce como inanición.
Round Robin.
Por último, os hablaré de Round Robin, este algoritmo de planificación es uno de los
más complejos y difíciles de implementar, asigna a cada proceso un tiempo equitativo
tratando a todos los procesos por igual y con la misma prioridad.

Este algoritmo es circular, volviendo siempre al primer proceso una vez terminado con
el último, para controlar este método a cada proceso se le asigna un intervalo de
tiempo llamado quantum o cuanto (para definirlo se utiliza esta regla, el 80% de los
procesos tienen que durar menos tiempo que el quantum definido).
Ejemplo:
Estos métodos nacieron por la necesidad de poder ordenar los procesos para ganar
eficiencia a la hora de tratar con ellos, es decir, son los encargados de ordenar y dirigir
los procesos para asegurar que ninguno de ellos monopolice el uso de la CPU.
BIBLIOGRAFIAS.
1. Silberschatz, Abraham; Galvin, Peter Baer; Gagne, Greg (2006). Fundamentos
de sistemas operativos (7ª edición). McGraw-Hill. 
2. Stallings, William (2005). Sistemas operativos: aspectos internos y principios de
diseño (5ª edición). Pearson Prentice Hall
3. Tanenbaum, Andrew S. (2009). Sistemas operativos modernos (3ª edición).
Pearson Prentice Hall.

También podría gustarte