Está en la página 1de 37

Sistemas Operativos: gestión de procesos

SUSANA MEDINA GORDILLO SMEDINAG@USBCALI.EDU.CO


Gestión de Procesos
La unidad de trabajo en un sistema operativo
Proceso moderno de tiempo compartido.
Tipos de procesos

Procesos del sistema Procesos del usuario


Ejecutando el código del Ejecutando código de usuario
sistema operativo contenido contenido en los programas
en los programas del sistema, de aplicación
que generalmente realizan
tareas que es mejor mantener
fuera del núcleo.
Elementos de un proceso

➢ El código del programa, conocido como la sección text.


➢ La sección de datos contiene las variables globales. Se divide entre la
sección data, donde se almacenan las variables inicializadas, y la sección
bss, donde se almacenan las variables sin inicializar.
➢ La pila contiene datos temporales como parámetros y direcciones de
retorno de las funciones y variables locales. Es conocida como la sección
stack.
➢ El montón, que es donde se aloja la memoria que se asigna
dinámicamente durante la ejecución del proceso.
➢ Información de la actividad actual, como el contador de programa, los
registros de la CPU, etc.
Estructura
de un
Proceso en
Memoria
Estado en los procesos

➢ Los procesos tienen un estado que cambia a lo largo


de su ejecución y está definido parcialmente por la
actividad actual del propio proceso.
➢ Los estados por los que puede pasar un procesos
varían de un sistema operativo a otro .
Estados comunes en procesos

➢ Nuevo. El proceso está siendo creado.


➢ Ejecutando. El proceso está siendo ejecutado puesto que ha sido
escogido por el planificador de la CPU. Sólo puede haber un proceso
en este estado por CPU en el sistema.
➢ Esperando. El proceso está esperando por algún evento, como
por ejemplo que termine alguna operación de E/S o que se reciba
alguna señal. Obviamente varios procesos pueden estar en este estado.
➢ Preparado. El proceso está esperando a que se le asigne la CPU.
Varios procesos pueden estar en este estado.
➢ Terminado. El proceso ha finalizado su ejecución y espera a que se
liberen los recursos que le fueron asignados.
Diagrama
de estado
de los
procesos
El bloque de control de proceso o
PCB (Process Control Block) es una
Bloque de estructura de datos
Control de que representa a cada proceso
en el sistema operativo.
Proceso
Sirve de almacén para cualquier
información que puede variar de
un proceso a otro.
PCB 1

 Estado del proceso. Por ejemplo: nuevo, preparado, esperando, etc.


 Contador de programa. Indica la dirección de la próxima instrucción
del proceso que debe ser ejecutada por la CPU.
 Registros de la CPU.
 Información de planificación de la CPU. Incluye la información
requerida por el planificador de la CPU. Por ejemplo la prioridad del
proceso, punteros a las colas de planificación donde está el proceso,
punteros al PCB del proceso padre y de los procesos hijos, etc.
PCB 2

 Información de gestión de la memoria. Incluye la información


requerida para la gestión de la memoria. Por ejemplo los valores de los
registros base y límite que definen el área de la memoria física que
ocupa el proceso, la tabla de páginas –en el caso de que se use
paginación – o la tabla de segmentos –en el caso de que se utilice
segmentación– etc.
 Información de registro. Esta información incluye la cantidad de CPU
usada, límites de tiempo en el uso de la CPU, estadísticas de la cuenta
del usuario al que pertenece el proceso, estadísticas de la ejecución
del proceso, etc.
 Información de estado de la E/S. Incluye la lista de dispositivos de E/S
Colas de Planificación

 Cola de trabajo. Contiene a todos los procesos en el sistema de


manera que cuando un proceso entra en el sistema va a esta cola.
 Cola de preparados. Contiene a los procesos que están cargados
en la memoria principal y están preparados para ser ejecutados.
La cola de preparados es generalmente una lista enlazada de PCB
donde cada uno incluye un puntero al PCB del siguiente proceso
en la cola.
Colas de Planificación

 Colas de espera. Contienen a los procesos que están esperando


por un evento concreto, como por ejemplo la finalización de una
solicitud de E/S. Estas colas también suelen ser implementadas
como listas enlazadas de PCB y suele existir una por evento, de
manera que cuando ocurre algún evento todos los procesos en la
cola asociada pasan automáticamente a la cola de preparados.
 Colas de dispositivo. Son un caso particular de cola de espera.
Cada dispositivo de E/S tiene asociada una cola de dispositivo que
contiene los procesos que están esperando por ese dispositivo en
particular.
Colas de Planificación de Procesos
Planificadores de procesos

 En los sistemas de multiprogramados* el planificador de largo plazo –o


planificador de trabajos– selecciona los trabajos desde la cola de entrada en
el almacenamiento secundario, dónde están todos almacenados, y los carga
en memoria.
 El planificador de corto plazo o planificador de CPU selecciona uno de los
procesos en la cola de preparados y lo asigna a la CPU. Este planificador es
invocado cuando un proceso en ejecución abandona la CPU por cualquiera
de los motivos comentados.
 Algunos sistemas operativos utilizan el planificador de medio plazo para sacar
procesos de la memoria y reintroducirlos posteriormente. A este esquema se le
denomina intercambio –o swapping– y puede ser necesario utilizarlo cuando
escasea la memoria.
El cambio de contexto es la tarea
de asignar a la CPU un proceso
distinto al que la tiene
asignada en el momento actual.
Cambio de
contexto
Esto implica salvar el estado del
viejo proceso en su PCB y cargar
en la CPU el estado del nuevo.
Información cambio de contexto

 Los registros de la CPU.


 El estado del proceso.
 La información de gestión de la memoria. Por ejemplo
la información referente al espacio de direcciones del
proceso.
El cambio de contexto es sobrecarga pura puesto que no
hace ningún trabajo útil mientras se conmuta.
Su velocidad depende de aspectos tales como: el
número de registros, la velocidad de la memoria y la
existencia de instrucciones especiales.
Operaciones sobre los procesos

En general los procesos pueden ser creados y eliminados


dinámicamente, por lo que los sistemas operativos deben
proporcionar mecanismos para la creación y terminación
de los mismos.
Creación de Procesos

Un proceso –denominado padre– puede crear múltiples


procesos –los hijos– utilizando una llamada al sistema
específica para la creación de procesos.
En general cada proceso se identifica de manera
unívoca mediante un identificador de proceso o PID
(Process Identifier), que normalmente es un número
entero. Puesto que cada nuevo proceso puede a su vez
crear otros procesos, al final se acaba obteniendo un
árbol de procesos.
¿Cómo obtienen los
subprocesos los recursos
que necesita para hacer su
trabajo?
 En algunos sistemas operativos los
¿Cómo subprocesos sólo puede aspirar a
obtener un subconjunto de los
obtienen los recursos de su padre. Esto permite
subprocesos los evitar, por ejemplo, que un proceso
recursos que pueda sobrecargar el sistema
creando demasiados procesos.
necesita para  Mientras que en otros cada
hacer su subproceso puede solicitar y
trabajo? obtener los recursos directamente
del sistema operativo.
¿Qué ocurre con los
recursos de un proceso
cuando decide crear
subprocesos?
 El proceso puede estar obligado a
¿Qué ocurre repartir sus recursos entre sus hijos.
con los recursos  O puede que esté en disposición de
de un proceso compartir algunos recursos –como
memoria y archivos– con algunos
cuando decide de sus hijos. Por ejemplo en POSIX
crear todos los archivos abiertos por un
proceso son heredados en ese
subprocesos? estado por sus hijos
¿Cómo un proceso puede
pasar parámetros de
inicialización a sus procesos
hijo?
Además de los diversos recursos que
¿Cómo un 
un proceso obtiene cuando es
proceso puede creado, el proceso padre
suele poder pasar parámetros de
pasar inicialización a sus procesos hijo.
parámetros de  Por ejemplo en lenguaje C/C++ se
inicialización a puede obtener acceso a
estos parámetros través de los
sus procesos argumentos argc y argv de la
hijo? función main() del programa.
¿Qué ocurre con la
ejecución de un proceso
cuando crea un
subproceso?
¿Qué ocurre Si eso ocurre se suelen contemplar dos
con la posibilidades en términos de la
ejecución del padre:
ejecución de  El padre continúa ejecutándose
un proceso concurrentemente con el hijo.
cuando crea  El padre decide esperar a que
algunos o todos sus hijos terminen.
un subproceso?
¿Cómo se construye el
espacio de dirección de los
subprocesos?
➢ El espacio de direcciones del
¿Cómo se proceso hijo es un duplicado del
que tiene el padre. Es decir, que
construye el inicialmente tiene el mismo código y
espacio de datos que el padre.
dirección de los ➢ El espacio de direcciones del
proceso hijo se crea desde cero y se
subprocesos? carga en él un nuevo programa.
/* lanzar otro proceso */
pid_t pid = fork();
if (pid == 0) { // proceso hijo
execlp("/bin/ls", "ls", "-l", NULL);

Creación
}
else if (pid > 0) { // proceso padre

de un // el padre esperará a que el hijo termine

proceso wait(NULL);
std::cout << "El hijo a terminado. << std::endl;

fork() exit(0);
}
else { // error
perror("fallo en fork()");
exit(-1);
}
Terminación de procesos

Un proceso termina cuando se lo indica al sistema operativo con la


llamada al sistema exit(). En ese momento puede devolver un valor
de estado a su padre, que este puede recuperar a través de
la llamada al sistema wait().
Cuando un proceso termina todos los recursos son liberados
incluyendo:
 la memoria física y virtual
 archivos abiertos
 buffers de E/S
 etc.
¿Por qué termina un proceso?

Un proceso puede provocar la terminación de otro proceso a través de una


llamada al sistema. Habitualmente el proceso que la invoca es el padre ya
que puede que sea el único con permisos para hacerla. Los motivos pueden
ser:
 El hijo ha excedido el uso de algunos de los recursos reservados. Obviame
nte esto tiene sentido cuando los hijos utilizan un subconjunto de los
recursos asignados al padre.
 La tarea asignada al hijo ya no es necesaria.
 El padre termina y el sistema operativo está diseñado para no permite que
el hijo pueda seguir ejecutándose si no tiene un padre. Esto provoca que
el sistema operativo inicie lo que se denomina una terminación en
cascada, donde todos los procesos que cuelgan de uno dado terminan.
Procesos Cooperativos

Independientes Cooperativos
No afectan o pueden ser Pueden afectar o ser
afectados por otros afectados por otros
procesos del sistema. procesos ejecutados en el
Cualquier proceso que no sistema.
comparte datos – Los procesos que comparten
temporales o persistentes– datos siempre son
con otros procesos es cooperativos.
independiente.
Modelos de comunicación
Referencias

 Material en línea del curso "Sistemas Operativos" en el campus virtual de la


Universidad de la Laguna.
Enlace: https://campusvirtual.ull.es/ocw/course/view.php?id=105 Esta Obr
a de Jesús Torres está bajo una Licencia Creative Commons Atribución 4.0
Internacional. Trabajo derivado de la obra The Linux Command Line de
William E. Shotts, Jr.

También podría gustarte