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.