1. Procesos y flujos
Un proceso es un concepto
manejado por el sistema operativo y que referencia un programa en ejecución.
A los procesos, dependiendo
especialmente del sistema operativo utilizado, se les denomina flujos de
control, tareas, threads o hilos, según
el contexto.
Cuando se ejecuta más de un
proceso de forma concurrente en un
sistema, todos necesitan que el propio
sistema les suministre una serie de recursos. Para ello, el sistema operativo, gracias a la
UCP (Unidad Central de Proceso), se encarga de
asignar estos recursos en un orden
adecuado y atendiendo a unas prioridades. También realiza funciones de
sincronización de todos los
procesos, para que se ejecuten
en el orden
adecuado y según la prioridad
decidida.
Cada vez que un programa se
convierte en proceso, es decir, cada vez
que se ejecuta un programa, además de
ubicar en memoria las
instrucciones que lo componen y sus datos asociados, a dicho
proceso se le asocia una estructura de datos.
Esta estructura de datos, que es
única para cada proceso, identifica el proceso respecto de los demás y sirve
para controlar su correcta ejecución. Es lo que se llama el bloque de
control del proceso o BCP, y contendrá para cada proceso la
siguiente informacion: estado actual del
proceso, identificador del proceso, prioridad del proceso, ubicación en memoria
y recursos utilizados.
2. Hebras y estados de los
procesos
Una hebra es un punto de
ejecucion de un proceso. Un proceso tendrá siempre una hebra, en la que corre el propio programa, pero puede tener más hebras. Las hebras
representan un método software para mejorar el rendimiento y eficacia de los sistemas operativos. Las
hebras de un mismo proceso compartirán
recursos, como memoria, archivos,
recursos hardware, etc.
Un proceso clásico será aquel
que solo posea una hebra.
Pongamos un ejemplo. Si ejecutamos el procesador de textos Word, con un
solo documento abierto, el programa
Word convertido en proceso estará ejecutándose en un único
espacio de memoria, tendrá acceso a determinados archivos (galleras de
imágenes, corrector ortográfico, etc.),
tendrá acceso al hardware (impresora, disquetera), etc. En definitiva, este
proceso, de momento, solamente tiene una
hebra.
Si en esta situación, sin cerrar
Word, abrimos un nuevo documento, Word
no se vuelve a cargar como proceso. Simplemente el programa,
convertido en proceso, tendrá a su
disposición dos hebras o hilos diferentes, de tal forma que
el proceso sigue siendo el mismo (el original).
Word se está ejecutando una sola vez y el resto de
documentos de texto que abramos en esta
misma sesión de trabajo no serán procesos propiamente
dichos. Serán hilos o hebras del proceso
principal, que es el propio procesador
de textos.
Antes de hablar de prioridades, y
teniendo muy en cuenta lo comentado
anteriormente, vamos a ver los diferentes estados en los que pueden estar los
procesos.
figura 1
Básicamente los estados posibles
de un proceso, que podemos ver en la Figura 1, son
los siguientes:
En ejecución. pone y tiene concedido el tiempo de uso de la UCP
en un instante concreto.
Preparado, en espera o activo.
Un proceso está preparado para ser
ejecutado; es decir, está
esperando turno para poder utilizar su
intervalo de tiempo y poner
en funcionamiento sus instrucciones
accediendo a los recursos del sistema.
Bloqueado. El proceso está
retenido; es decir, está bloqueado debido a causas múltiples. Una
de estas causas puede ser que dos
procesos utilicen el mismo fichero de datos. Otra puede ser que dos
procesos necesiten utilizar la
misma unidad de CD- ROM para cargar
determinados datos, El procesador está ejecutando instrucciones del programa que En general, todos los
procesos dentro de cualquier
sistema operativo tienen
unas características que los identifican.
En primer lugar, indicaremos que cada programa en ejecución, es decir, cada
proceso, tiene un identificador que lo discrimina de los demás. Cada proceso
tiene un número asignado por el sistema operativo que sirve precisamente para
identificar el proceso, lanzarlo a ejecución, detenerlo, cancelarlo,
reanudarlo, etc. Este identificador de proceso se nombra con la abreviatura PID.
También veremos que en cada
sistema operativo, los procesos los lanzan normalmente otros procesos. Es
decir, que cada proceso que se lanza a ejecución depende, en la mayoría de los casos, de otro proceso denominado proceso padre. Así,
al nuevo proceso lanzado se le denomina proceso hijo.
3. Transición de los procesos.
Una vez que un programa se ha
lanzado y se ha convertido en proceso,
puede atravesar varias fases o estados hasta que finaliza o termina.
Cuando un proceso se lanza,
nunca se ejecuta directamente, sino
que se coloca en la cola de procesos en un estado denominado preparado. Cuando
la UCP le asigna su tiempo, el proceso
pasa de preparado a ejecución. Estos dos estados se alternarán en
caso de que se este ejecutando más de un
proceso en el sistema.
Los cambios de
estado en los que se puede
encontrar un proceso se denominan transiciones. En la Figura 2 se recogen las transiciones o cambios de estado que pueden experimentar los
procesos.
Transición A. Ocurre cuando el programa que está en ejecución necesita algún elemento, señal, dato, etc.,
para continuar ejecutándose.
Transición B. Ocurre cuando un programa o proceso ha utilizado el
tiempo asignado por la UCP (procesador) para su ejecución y tiene que dejar paso al siguiente proceso.
Transición C. Ocurre cuando el proceso que está preparado pasa al
proceso de ejecución, es decir, cuando al proceso le llega una nueva disposición de
tiempo de la UCP para poder ejecutarse.
Transición D. Ocurre cuando el proceso pasa de estar bloqueado a
estar preparado, es decir, cuando el proceso recibe una orden o señal que
estaba esperando para pasar al estado de preparado y, posteriormente, tras la transición,
a estado de ejecución.
En un sistema multiproceso
o multihebra, cuando un proceso o
hilo pasa de un esta-
do a otro (por ejemplo, de espera a ejecución), lo que
se producirá es un cambio de contexto.
El cambio de contexto puede ser parcial si se
realiza entre hilos del mismo proceso. En caso
de que el cambio de contexto sea
entre hilos de diferentes procesos, se producirá un cambio de
contexto completo, ya que el
cambio afectará a memoria, hardware,
ficheros comunes, etc.
Veamos
en la Figura 3 un ejemplo de cambio de contexto entre dos procesos:
figura 3 figura 4
En la Figura 4
podemos apreciar de que forma se
ejecutan tres procesos (o hilos en sistemas operativos multihilo o multihebra),
pasando de estar activos a estar en espera, según se asignen tiempos de ejecución de UCP a unos u otros.
figura 4
Los diferentes
estados tienen una relación
directa con lo que
vamos a denominar
prioridades,
que son aquellas que
el administrador del
sistema, o el propio
sistema,
asignan a cada
proceso. De ello dependerá que un proceso se ejecute en más o me- nos tiempo.
Se pueden
establecer prioridades en función de la necesidad de ejecución de algunos
programas. Los programas que más se ejecutan, es decir, los más necesarios, tendrán prioridad de
ejecuci6n sobre aquellos que se ejecutan muy de cuando en
cuando.
Es ahora cuando
hemos de
hablar de la planificación. Con esta técnica conseguimos indicar al ordenador los procesos que deben
ejecutarse y los estados que estos deben adoptar. Gracias a los algoritmos
de planificación podemos decidir que
proceso ha de ejecutarse en cada momento
y por que. Algunas características
de estos
algoritmos son la imparcialidad,
la equidad, la eficiencia, el tiempo
de respuesta y el rendimiento.
Para ejecutar
un proceso, introducimos en el indicador de comandos (shell en UNIX, command.com en Windows) el nombre
de un fichero ejecutable o
hacemos doble clic con el ratón sobre el
icono que representa un programa ejecutable (por ejemplo: Explorer en
Windows). De esta forma, el sistema operativo prepara el programa a través del cargador
para lanzarlo a ejecución.
Educarse en el área del software y sus procesos de ejecución es lo que brinda este blog, definiendo cada termino que es necesario de conocer. (y)
ResponderEliminarsaludos,
Muy interesante su información en el blog, como recomendación seria bueno incluir algún video que apoye toda esa información, saludos compañero.
ResponderEliminarMe parece muy bien el desarrollo del contenido de este blog para la materia de Sistemas Operativos, en el que se abordan conceptos importantes y bien explicados.
ResponderEliminarFelicitaciones
La verdad no se de sistemas operativos pero el apoyo visual de las imagenes me ayudo a entender de que trataba su post
ResponderEliminarMuy interesante su blog para la materia de sistemas operativos me gusta la parte en donde explica la transición de los procesos.
ResponderEliminarSaludos!
Interesante su blog, estoy segura que le será de mucha utilidad a sus alumnos.
ResponderEliminarFelicidades..
Excelente informacion de los sitemas operativos, es parte principal de una computadora ya que sin ningun sistema operativo la computadora no encenderia, muy buena información.
ResponderEliminarSaludos cordiales
Excelente información ing ya que es muy importante saber sobre los sistemas operativos y sus procesos.
ResponderEliminarEste blog nos ayuda al conocimiento más a fondo de como funcionan los programas en el background de la PC. Muy buena información, explicada en forma sencilla y fácil de comprender.
ResponderEliminarFelicidades compañero.
Me parece bastante interesante la temática, así como el diseño del blog, llamativo.
ResponderEliminarSaludos Ing.