Unidad2 Procesos Introduccion
Unidad2 Procesos Introduccion
Unidad2 Procesos Introduccion
FACULTAD DE INGENIERÍA
Y CIENCIAS HÍDRICAS
Organización de
Computadoras y
Sistemas
Operativos
La totalidad de la información y textos aquí presentados pueden ser utilizados sin necesidad de requerimiento de permiso escrito o
de cualquier otra índole de la cátedra siempre que se efectúe con un fin específicamente académico y sin fines de lucro.
Organización de Computadoras y Sistemas Operativos – Unidad 2 – Procesos
En los sistemas operativos modernos y actuales, los procesos componen la entidad básica en que se
descomponen estos trabajos, por lo que abordaremos de lleno esta temática tan interesante.
Procesos
Uno de los conceptos más importantes que gira en torno a un sistema operativo es el de proceso. Este
concepto surgió por primera vez con la multiprogramación en donde, como ya hemos visto, se puede
ejecutar más de un programa simultáneamente con el fin de aprovechar al máximo los recursos de la
computadora.
Programa vs Proceso
La diferencia entre un programa (conjunto de instrucciones) y un proceso (instrucciones ejecutándose) es
obvia, pero crucial para entender el funcionamiento de los sistemas operativos.
Imaginemos un mecánico de automóviles en un taller donde se reparan vehículo averías complejas en las
que se hace necesario consultar el manual de reparaciones de modelo, que contiene instrucciones para
todas las posibles averías. Además, se permiten reparaciones rápidas a las que se les da mayor prioridad
que a las mencionadas anteriormente. Existe en el taller un almacén de repuestos de todo tipo y
herramientas suficiente para las reparaciones.
Página 2 de 11
Organización de Computadoras y Sistemas Operativos – Unidad 2 – Procesos
Comparando esta situación con una computadora, se pueden establecer las siguientes analogías:
•El mecánico sería el procesador que va a realizar el trabajo.
•El manual de cada reparación sería el programa.
•Las herramientas serían los recursos disponibles.
•Las piezas de recambio serían los datos.
•La actividad de utilizar las herramientas para desmontar las piezas defectuosas sustituyéndolas
por otras nuevas siguiendo las instrucciones del manual equivaldría al proceso.
Supongamos que en un determinado momento el mecánico está realizando una reparación compleja (de las
que llevan tiempo) y aparece un vehículo que solicita una reparación de las rápidas (ha aparecido una
interrupción). El mecánico suspende momentáneamente mi reparación compleja anotando en qué situación
se queda dicha reparación y qué operación estaba realizando en este momento (guarda el estado del
proceso). Asimismo, sustituye el manual que estaba utilizando por el de la reparación rápida que se dispone
a realizar (cambio de programa). Comienza la nueva reparación (cambio de proceso), en la que las
herramientas no serán las mismas que antes (distintos recursos); las indicaciones del usuario, las piezas de
repuesto (datos) y las indicaciones del manual (programa) llevarán a feliz término la reparación para que el
mecánico vuelva a continuación a la reparación inicial.
Con este simple ejemplo se desea resaltar que un proceso es una actividad que se apoya en datos, recursos,
un estado en cada momento y un programa.
Los objetivos que se pretenden cubrir con el bloque de control del proceso son los siguientes:
•Estado del proceso. Información relativa al contenido del contador de programa (Program Counter,
nuestro contador ordinal PC), estado del procesador en cuanto a prioridad del proceso, modo de
ejecución, etc., y por último el estado de los registros internos de la computadora.
•Estadísticas de tiempo y ocupación de recursos para la gestión de la planificación del procesador.
•Ocupación de memoria interna y externa para el intercambio (swapping – Posteriormente
consideraremos este concepto).
•Recursos en uso (normalmente unidades de entrada/salida).
•Archivos en uso.
•Privilegios.
Estas informaciones se encuentran en memoria principal o en disco y se accede a ellas en los momentos en
que se hace necesaria su actualización o consulta. Los datos relativos al estado del proceso siempre se
encuentran en memoria principal.
De igual forma existe un Bloque de Control del Sistema (SCB), con unos objetivos globales similares al
anterior y entre los que se encuentra el enlazado de los bloques de control de los procesos existentes en el
sistema.
Trataremos de ver a continuación cómo se realiza el cambio de un proceso a otro, para lo cual supondremos
que estamos en una computadora con un solo procesador (sólo un proceso puede estar ejecutándose en
cada momento), y existen varios procesos activos compitiendo por el acceso al procesador (se está
ejecutando un proceso A y el núcleo del sistema operativo decide que debe ejecutarse en un instante dado
otro proceso B). Suponemos que los programas de los procesos A y B están ambos en memoria principal.
Página 3 de 11
Organización de Computadoras y Sistemas Operativos – Unidad 2 – Procesos
Las acciones que realiza el sistema operativo para cambiar el proceso A por el B se denominan cambio de
proceso, y son los siguientes:
• Deja de ejecutar el proceso en curso (A), cediéndose el control al núcleo del sistema operativo, y
aparece lo que se denomina un cambio de contexto pasando del modo usuario al modo supervisor.
Antes de realizarse el cambio de contexto se salva el estado del proceso A para su posterior vuelta al
punto donde fue interrumpido.
• El núcleo estudia si el proceso B está preparado para su ejecución y, si es así, realiza el cambio de
contexto correspondiente pasando del modo supervisor al modo usuario. A continuación repone el
estado del proceso B (en caso de haber sido interrumpido con anterioridad) y, por último, pone en
ejecución el proceso B.
El cambio de contexto se producirá en caso de ejecución de una instrucción privilegiada, una llamada al
sistema operativo o una interrupción, es decir, siempre que se requiera la atención del sistema operativo.
En el cambio de contexto, el núcleo salva el estado del proceso que se estaba ejecutando en su bloque de
control y restaura el proceso que va a ejecutarse a partir de los datos almacenados en su bloque de control.
Página 4 de 11
Organización de Computadoras y Sistemas Operativos – Unidad 2 – Procesos
Página 5 de 11
Organización de Computadoras y Sistemas Operativos – Unidad 2 – Procesos
Estados activos
Son aquellos que compiten con el procesador o están en condiciones de hacerlo. Se dividen en:
• Ejecución. Estado en el que se encuentra un proceso cuando tiene el control del procesador. En un
sistema monoprocesador este estado sólo lo puede tener un proceso.
• Preparado. Aquellos procesos que están dispuestos para ser ejecutados, pero no están en
ejecución por alguna causa (interrupción, haber entrado en cola estando otro proceso en ejecución,
etc.).
• Bloqueado. Son los procesos que no pueden ejecutarse de momento por necesitar algún recurso no
disponible (generalmente recursos de entrada/salida).
Estados inactivos
Son aquellos que no pueden competir por el procesador, pero que pueden volver a hacerlo por medio de
ciertas operaciones. En estos estados se mantiene el bloque de control del proceso aparcado hasta que
vuelva a ser activado. Se trata de procesos que no han terminado su trabajo por causas que lo han impedido
(por ejemplo, avería en un dispositivo de entrada/salida) y que pueden volver a activarse desde el punto en
que se quedaron sin que tengan que volver a ejecutarse desde el principio (se puede pensar en procesos
cuya duración es larga). Son de dos tipos:
• Suspendido bloqueado. Es el proceso que fue suspendido en espera de un evento, sin que hayan
desaparecido las causas de su bloqueo.
• Suspendido preparado. Es el proceso que ha sido suspendido, pero no tiene causa para estar
bloqueado.
Transiciones de estado
Página 6 de 11
Organización de Computadoras y Sistemas Operativos – Unidad 2 – Procesos
Todo proceso a lo largo de su existencia puede cambiar de estado varias veces. Cada uno de estos cambios
se denomina transición de estado. Estas transiciones son las siguientes:
• Comienzo de la ejecución. Todo proceso comienza al ser dada la orden de ejecución del programa
insertándose en la cola de preparados. El encolamiento dependerá de la política de gestión de dicha cola.
• Paso a estado de ejecución. Cuando el procesador se encuentre inactivo y en la cola de preparados exista
algún proceso en espera de ser ejecutado, se pondrá en ejecución el primero de ellos.
• Paso a estado bloqueado. Un proceso que se encuentre en ejecución y que solicite una operación a un
dispositivo externo (unidad de entrada/salida), teniendo que esperar a que dicha operación finalice, será
pasado de estado de ejecución a estado bloqueado insertándose su PCB en la cola correspondiente de
bloqueados. A partir de ese momento el procesador pone en ejecución el siguiente proceso, que será el
primero de la cola de preparados.
• Paso a estado preparado. Este paso puede ser producido por alguna de las siguientes causas:
-Orden de ejecución de un programa, con lo cual, como ya hemos dicho, el proceso pasa a la cola de
preparados.
-Si un proceso está en estado bloqueado por causa de una operación de entrada/salida y ésta finaliza,
pasará de la cola de bloqueados a la de preparados.
-Si un proceso está en ejecución y aparece una interrupción que fuerza al sistema operativo a ejecutar
otro proceso, el primero pasará al estado preparado y su PCB a la cola de preparados.
-Activación. Un proceso suspendido previamente sin estar bloqueado pasará al estado preparado al ser
activado nuevamente.
• Paso a estado suspendido bloqueado. Si un proceso está bloqueado y el sistema operativo recibe la orden
de suspenderlo, su PCB entrará en la cola de procesos suspendidos bloqueados.
• Paso a estado suspendido preparado. Este paso se puede producir bajo tres circunstancias:
• Crear el proceso. Se produce con la orden de ejecución del programa y suele necesitar varios
argumentos, como el nombre y la prioridad del proceso. Aparece en este momento el PCB, que será
insertado en la cola de procesos preparados.
Página 7 de 11
Organización de Computadoras y Sistemas Operativos – Unidad 2 – Procesos
-No jerárquica. Cada proceso creado por otro proceso se ejecuta independientemente de su creador
con un entorno diferente. Es un tipo de creación que no suele darse en los sistemas operativos
actuales.
• Destruir un proceso. Se trata de la orden de eliminación del proceso con la cual el sistema
operativo destruye su PCB.
Una característica importante de los procesos es su identificación conocida como PID (Process Identification)
que es única para cada proceso y por más que se ejecute la misma aplicación o proceso más de una vez,
estas aplicaciones abiertas tendrán diferentes PID’s.
En un sistema de creación jerárquica se dice que existen procesos padres e hijos, en cualquier proceso
podremos identificar también como una característica la identificación del padre PPID.
En el caso de los sistemas Windows y de otros sistemas operativos como Unix y Linux, un proceso puede
lanzar o ejecutar subprocesos a los que se denominan threads; el beneficio de utilizarlos es que ellos pueden
realizar la tarea del proceso, además pueden tener diferentes prioridades y no poseen PCB propio; en
consecuencia, los cambios de contexto no llevan tanto tiempo como si fueran procesos comunes.
Además de las dos operaciones básicas (crear y destruir), también existen las siguientes:
• Suspender un proceso. Es una operación de alta prioridad que paraliza un proceso que puede ser
reanudado posteriormente. Suele utilizarse en ocasiones de mal funcionamiento o sobrecarga del
sistema.
Página 8 de 11
Organización de Computadoras y Sistemas Operativos – Unidad 2 – Procesos
• Temporizar la ejecución de un proceso. Hace que un determinado proceso se ejecute cada cierto
tiempo (segundos, minutos, horas...) por etapas o de una sola vez, pero transcurrido un período de
tiempo fijo.
Nota: Para los usuarios de sistemas Linux o Unix, esto puede reflejarse en el modo de comandos a
través de la ejecución del comando at (A un determinado Tiempo) que permite realizar una
operación a una fecha y hora determinada.
En cierta medida esto también lo puede hacer, con ciertas restricciones, en Windows. Un ejemplo es
el uso de las Tareas Programadas.
• Despertar un proceso. Es una forma de desbloquear un proceso que habrá sido bloqueado
previamente por temporización o cualquier otra causa.
Prioridades
En general, todo proceso por sus características e importancia lleva aparejadas unas determinadas
necesidades de ejecución en cuanto a urgencia y asignación de recursos. Esto hace que los distintos
procesos presentes en un sistema no accedan de igual forma y con igual frecuencia al procesador debido a
la prioridad que cada uno de ellos tiene asignada.
Las prioridades según los sistemas operativos se pueden clasificar del siguiente modo:
• Asignadas por el sistema operativo. Se trata de prioridades que son asignadas a un proceso en el
momento de comenzar su ejecución y dependen fundamentalmente de los privilegios de su
propietario y del modo de ejecución.
En el caso de Windows se trabaja con hasta 32 niveles de prioridad en los subprocesos o hilos de
programa; en particular Microsoft Windows los divide en cuatro clases denominadas Idle, Normal,
High y Real Time.
Por otro lado, en los sistemas Linux se manejan 140 niveles, de los cuales los niveles de 0 a 99 están
reservados para las tareas de tiempo real, y los restantes para las tareas comunes.
• Asignadas por el propietario. En este caso es el propio usuario el que asigna a cada proceso la
prioridad con que éste debe ejecutarse. Esta modalidad de asignación de prioridades es muy
utilizada en sistemas de tiempo real, ya que algunos de sus procesos necesitan atender rápidamente
algún evento sin que tengan que interrumpirse.
Un ejemplo de esto es lo que le permite al usuario hacer en Sistemas Operativos como Unix o Linux donde
uno puede cambiar la prioridad de los procesos propios a través de un comando de sistema denominado
nice, que permite el cambio de la prioridad pero de manera descendente es decir bajar la prioridad de los
procesos propios.
• Estáticas. Son aquellas prioridades que no pueden ser modificadas durante la ejecución del
proceso. Pueden ser utilizadas en sistemas de tiempo compartido, pero no en los de tiempo real.
• Dinámicas. La prioridad de un proceso puede ser modificada con el fin de atender cualquier evento
que se produzca.
Tipos de procesos
Un proceso puede clasificarse en dos grandes grupos según el uso que vaya a tener y la forma como se haya
construido el código ejecutable de su programa. Estos grupos son:
• Reutilizables. Son aquellos que pueden cambiar los datos que utilizan, pero si vuelven a ejecutarse
necesitan comenzar en su estado inicial y procesar nuevos datos. Es el caso de los programas
normales de usuario.
Página 9 de 11
Organización de Computadoras y Sistemas Operativos – Unidad 2 – Procesos
• Reentrantes. Se caracterizan por no tener asociados datos, es decir, sólo tienen código puro. Los
datos que utilizan se encuentran en la pila o en registros internos y no pueden ser modificados
durante su uso. Este es el caso de programas compartidos por varios usuarios a la vez, como es el de
los editores cuyo código se encuentra una sola vez en memoria, siendo utilizados por usuarios cuyos
datos particulares estarán en una zona del disco asignada a cada uno de ellos.
Otra clasificación de procesos según la capacidad que tienen de acceso al procesador y al resto de recursos
es:
• Apropiativos. Son aquellos que al tener asignado un recurso no permiten que otro proceso pueda acceder
a él hasta que hayan terminado de utilizarlo.
• No apropiativos. Permiten que otros procesos puedan acceder a un recurso que esté siendo utilizado por
ellos.
• Residentes. Son los que permanecen en memoria todo el tiempo que dure su ejecución.
• Intercambiables. Son aquellos que pueden ser llevados de memoria principal a disco mientras estén
bloqueados. La memoria principal liberada por ellos puede ser utilizada por otro proceso que en ese
momento la necesite.
Excepciones
A lo largo de la ejecución de un proceso pueden aparecer una serie de irregularidades o fallos que de alguna
forma un sistema operativo debe tratar de controlar y en su caso corregir. Estos pueden ser de distinta
naturaleza y afectar en mayor o menor medida al proceso; entre ellos podemos citar:
• Fallos hardware
• Fallos software
• Entrada de datos incorrectos
• Eventos anómalos
• Etc.
Para atender a este tipo de eventos los sistemas operativos incorporan lo que se denomina gestor de
excepciones, cuya misión es la de tratar el software que controla este tipo de eventos o excepciones. Según
la gravedad de los eventos que pueden presentarse, se establecen tres categorías de errores:
I. Catastróficos. Son aquellos que imposibilitan el funcionamiento del sistema y no hay modo de
recuperarlo; por ejemplo, un fallo en la tensión de alimentación.
II. No recuperables. Son los que, sin afectar al sistema, hacen que el proceso no pueda continuar su
ejecución; por ejemplo, la aparición de una división por 0.
III. Recuperables. Son los que, con ciertos ajustes, permiten que el proceso continúe su ejecución
normal; por ejemplo, datos con formato indebido.
El tratamiento de una excepción puede seguir dos modelos diferentes, tal como se observa en el siguiente
esquema:
Página 10 de 11
Organización de Computadoras y Sistemas Operativos – Unidad 2 – Procesos
En el primer caso soluciona la excepción y continua con el proceso que se está corriendo. En estos casos el
usuario normalmente no se da cuenta de esto. En el segundo caso se procesa la excepción pero se sale del
proceso que se estaba ejecutando volviendo al sistema operativo. Por supuesto existen algunas excepciones
que no pueden ser recuperadas y en esos casos no se tiene control del proceso que estamos ejecutando y
tampoco del sistema operativo.
Página 11 de 11