Proceso referido a las instrucciones que ejecutará el microprocesador mientras lee un programa determinado. Esto también implica a la memoria reservada y a sus contenidos, el estado de ejecución en determinado momento, y la información que permite al sistema operativo planificar.
Bloqueo de control de procesos.
Para
llevar a cabo la gestión de un proceso, es necesario que el sistema
operativo guarde cierta información necesaria. Para ello, existe un
registro especial que se conoce como el bloque de control del proceso BCP, o PCB en inglés (Process Control Block).
El BCP es creado por el Sistema operativo cada vez que aparece un
nuevo proceso. Los procesos son conocidos para el sistema operativo y
por tanto elegibles para competir por los recursos del sistema sólo
cuando existe un BCP activo asociado a ellos. Cuando el programa
termina, el BCP es eliminado para dejar espacio libre en el registro, y
usarlo para almacenar otros BCP.
El bloque de control de procesos difiere mucho de un sistema a otros, pero existen contenidos comunes:
- Identificador del proceso: Identificar de forma unívoca al proceso en el sistema, generalmente se emplea un entero sin signo que se denomina PID (Process IDentifier)
- Estado del proceso para el planificador de procesos: preparado, activo o bloqueado.
- Contexto de la ejecución: valor de los registros del procesador, bits de estados, etc. Esto es, cada vez que se ejecuta el planificador y se realiza una conmutación de procesos, la información sobre en qué lugar se encontraba la ejecución del proceso se encuentra guardada aquí, así como el lugar en el que se paró la ejecución del anterior proceso (cada una en su respectivo BCP).
- Aspectos relacionados con la administración de memoria: tales como el espacio de direcciones y la cantidad de memoria asignada a un proceso.
- Aspectos relacionados con la administración de ficheros: tales como los ficheros con los que el proceso está actualmente operando.
- Los procesadores en los que el proceso puede ejecutarse: en caso de soportar el sistema multiprocesador.
- En el caso de un sistema operativo tipo UNIX: el proceso padre de dicho proceso y la relación de procesos hijos.
- Estadísticas temporales: Tiempo de lanzamiento del proceso, tiempo en estado activo, etc.
Operaciones sobre procesos
Los sistemas operativos son responsables de la "gestión de procesos y memoria", por lo que están encargados de realizar una serie de actividades, tales como la planificación o itineración de procesos, la operación sobre procesos y la comunicación entre proceso operar sobre un proceso, los sistemas operativos actuales suministran ciertas funciones, que pueden ser ejecutadas ya sea desde el mismo proceso o desde el intérprete de comandos, si es un usuario el que solicita algún servicio de dicho sistema.
Entre las operaciones sobre procesos que con mayor frecuencia ofrecen los sistemas operativos se encuentran la creación, terminación o destrucción, suspensión y reanudación de procesos. Actualmente, en la mayoría de los S.O., los procesos pueden ejecutarse de forma concurrente, pudiéndose crear y eliminar de forma dinámica, por lo que es necesario que estos sistemas brinden un mecanismo para la creación y terminación de procesos.
PLANIFICACIÓN DE PROCESOS
La Planificación hace referencia a un conjunto políticas y
mecanismos incorporados al sistema operativo que gobiernan el orden en
que deben ser ejecutados los trabajos que deben complementarse por el
sistema operativo. El Objetivo de la planificación es optimizar el
rendimiento del sistema. Nombraremos tres grandes grupos relacionado con
la filosofía del sistema: Planificación en sistemas con un Procesador ,
Multiprocesador y Tiempo real; identificando en cada caso sus
componentes, sus finalidades y funciones.
La planificación hace referencia a un conjunto
de políticas y mecanismos incorporados al “SO” que gobiernan el
orden en que se ejecutan los trabajos que deben ser completados por
el sistema informático.
Sincronización y comunicación entre procesos:
Los procesos que ejecutan de forma concurrente en un sistema se pueden clasificar como procesos independientes o cooperantes. Un proceso independiente es aquel que ejecuta sin requerir la ayuda o cooperación de otros procesos. Un claro ejemplo de procesos independientes son los diferentes intérpretes de mandatos que se ejecutan de forma simultánea en un sistema. Los procesos son cooperantes cuando están diseñados para trabajar conjuntamente en alguna actividad, para lo que deben ser capaces de comunicarse e interactuar entre ellos.Tanto si los procesos son independientes como cooperantes, pueden producirse una serie de interacciones entre ellos.
Los procesos que ejecutan de forma concurrente en un sistema se pueden clasificar como procesos independientes o cooperantes. Un proceso independiente es aquel que ejecuta sin requerir la ayuda o cooperación de otros procesos. Un claro ejemplo de procesos independientes son los diferentes intérpretes de mandatos que se ejecutan de forma simultánea en un sistema. Los procesos son cooperantes cuando están diseñados para trabajar conjuntamente en alguna actividad, para lo que deben ser capaces de comunicarse e interactuar entre ellos.Tanto si los procesos son independientes como cooperantes, pueden producirse una serie de interacciones entre ellos.
Estas interacciones pueden ser de dos :
Interacciones motivadas porque los procesos comparten o compiten por el acceso a recursos físicos o lógicos. Esta situación aparece en los distintos tipos de procesos anteriormente comentados. Por ejemplo, dos procesos totalmente independientes pueden competir por el acceso a disco. En este caso, el sistema operativo deberá encargarse de que los dos procesos accedan ordenadamente sin que se cree ningún conflicto. Esta situación también aparece cuando varios procesos desean modificar el contenido de un registro de una base de datos. Aquí es el gestor de la base de datos el que se tendrá que encargar de ordenar los distintos accesos al registro.
Interacción motivada porque los procesos se comunican y sincronizan entre sí para alcanzar un objetivo común. Por ejemplo, un compilador se puede construir mediante dos procesos: el compilador propiamente dicho, que se encarga de generar código ensamblador, y el proceso ensamblador, que obtiene código en lenguaje máquina a partir del ensamblador. En este ejemplo puede apreciarse la necesidad de comunicar y sincronizar a los dos procesos.
Interacciones motivadas porque los procesos comparten o compiten por el acceso a recursos físicos o lógicos. Esta situación aparece en los distintos tipos de procesos anteriormente comentados. Por ejemplo, dos procesos totalmente independientes pueden competir por el acceso a disco. En este caso, el sistema operativo deberá encargarse de que los dos procesos accedan ordenadamente sin que se cree ningún conflicto. Esta situación también aparece cuando varios procesos desean modificar el contenido de un registro de una base de datos. Aquí es el gestor de la base de datos el que se tendrá que encargar de ordenar los distintos accesos al registro.
Interacción motivada porque los procesos se comunican y sincronizan entre sí para alcanzar un objetivo común. Por ejemplo, un compilador se puede construir mediante dos procesos: el compilador propiamente dicho, que se encarga de generar código ensamblador, y el proceso ensamblador, que obtiene código en lenguaje máquina a partir del ensamblador. En este ejemplo puede apreciarse la necesidad de comunicar y sincronizar a los dos procesos.
Estos dos tipos de interacciones obligan al sistema operativo a incluir mecanismo y servicios que permitan la comunicación y la sincronización entre procesos.
Procesos concurrentes.
Dos o más procesos decimos que son concurrentes, paralelos, o que se
ejecutan concurrentemente, cuando son procesados al mismo tiempo, es
decir, que para ejecutar uno de ellos, no hace falta que se haya
ejecutado otro.
En sistemas multiprocesador, esta ejecución
simultánea podría conseguirse completamente, puesto que podremos
asignarle, por ejemplo, un proceso A al procesador A y un proceso B al
procesador B y cada procesador realizaran la ejecución de su proceso.
Cuando
tenemos un solo procesador se producirá un intercalado delas
instrucciones de ambos procesos, de tal forma que tendremos la sensación
de que hay un paralelismo en el sistema (concurrencia, ejecución
simultánea de más de un proceso).
Ahora bien, está claro que en
esto tenemos que tener en cuenta que mientras un proceso está
escribiendo un valor en una variable determinada, puede darse el caso que
otro proceso que es concurrente al primero vaya a leer o escribir en esa
misma variable, entonces habrá que estudiar el caso en el que un proceso
haga una operación sobre una variable (o recurso en general) y otro
proceso concurrente a él realice otra operación de tal forma que no se
realice correctamente.
Interrupción .
es una señal recibida por el procesador de una computadora,
para indicarle que debe «interrumpir» el curso de ejecución actual y
pasar a ejecutar código específico para tratar esta situación.
Una interrupción es una suspensión temporal de la ejecución de un proceso,
para pasar a ejecutar una subrutina de servicio de interrupción, la
cual, por lo general, no forma parte del programa, sino que pertenece al
sistema operativo o al BIOS. Una vez finalizada dicha subrutina, se reanuda la ejecución del programa.
Las interrupciones son generadas por los dispositivos periféricos
habilitando una señal del CPU (llamada IRQ del inglés "interrupt
request") para solicitar atención del mismo. Por ejemplo. cuando un
disco duro completa una lectura solicita atención al igual que cada vez
que se presiona una tecla o se mueve el ratón.
La primera técnica que se empleó para esto fue el polling,
que consistía en que el propio procesador se encargara de sondear los
dispositivos periféricos cada cierto tiempo para averiguar si tenía
pendiente alguna comunicación para él. Este método presentaba el
inconveniente de ser muy ineficiente, ya que el procesador consumía
constantemente tiempo y recursos en realizar estas instrucciones de
sondeo.
El mecanismo de interrupciones fue la solución que permitió al
procesador desentenderse de esta problemática, y delegar en el
dispositivo periférico la responsabilidad de comunicarse con él cuando
lo necesitara. El procesador, en este caso, no sondea a ningún
dispositivo, sino que queda a la espera de que estos le avisen (le
"interrumpan") cuando tengan algo que comunicarle (ya sea un evento, una
transferencia de información, una condición de error, etc.).






No hay comentarios:
Publicar un comentario