Está en la página 1de 5

El Planificador de Procesos

Planificación de procesos en Sistemas Operativos. Conjunto de políticas y


mecanismos incorporados al sistema operativo, a través de un módulo denominado
planificador, que debe decidir cuál de los procesos en condiciones de ser ejecutado
conviene ser despachado primero y qué orden de ejecución debe seguirse. Esto debe
realizarse sin perder de vista su principal objetivo que consiste en el máximo
aprovechamiento del sistema, lo que implica proveer un buen servicio a los procesos
existentes en un momento dado.

https://www.ecured.cu/Planificaci%C3%B3n_de_procesos_en_un_sistema_operativo

Sincronización, comunicación de 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. Estas interacciones pueden ser de dos tipos:

 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.

4.1 Comunicación y Sincronización de
Procesos [BENA82] [LIST86] [STAL95] [TANE93] [FINK90]
Puede verse la concurrencia de procesos como la ejecución
simultánea de varios procesos. Si tenemos un multiprocesador o
un sistema distribuido(tema 1) la concurrencia parece clara, en un
momento dado cada procesador ejecuta un proceso. Se puede
ampliar el concepto de concurrencia si entendemos por procesado
concurrente (o procesado paralelo) la circunstancia en la que de
tomar una instantánea del sistema en conjunto, varios procesos se
vean en un estado intermedio entre su estado inicial y final. Esta
última definición incluye los sistemas multiprogramados de un
único procesador que estudiamos en los temas anteriores.

Los distintos procesos dentro de un ordenador no actúan de forma


aislada. Por un lado, algunos procesos cooperan para lograr un
objetivo común. Por otro lado, los procesos compiten por el uso de
unos recursos limitados, como el procesador, la memoria o los
ficheros. Estas dos actividades de cooperación y competición llevan
asociada la necesidad de algún tipo de comunicación entre los
procesos. Parte de este tema lo dedicaremos a estudiar mecanismos
de comunicación entre los procesos.

Para aclarar un poco todo esto, supongamos que en un entorno


UNIX se ejecuta la orden

  cat tema1 tema2 tema3 | wc -l

Esta orden va a provocar que el intérprete de órdenes cree dos


procesos concurrentes, el primero ejecutará el programa cat, que
concatenará el contenido de los ficheros de
texto tema1, tema2 y tema3. El segundo ejecutará el programa wc,
que contará el número de líneas de la salida producida por cat.
Estos dos procesos cooperan, y será preciso algún tipo de
sincronización entre ellos, concretamente hasta que cat no produzca
alguna salida wc debería bloquearse.

4.1.1 Cooperación entre Procesos

La velocidad de un proceso con respecto a otro es impredecible ya


que depende de la frecuencia de la interrupción asociada a cada
uno de ellos y cuán a menudo y de por cuánto tiempo tiene asignado
cada proceso un procesador. Diremos, pues, que un proceso se
ejecuta asíncronamente con respecto a otro, es decir, sus
ejecuciones son independientes. Sin embargo, hay ciertos instantes
en lo que los procesos deben sincronizar sus actividades. Son estos
puntos a partir de los cuales un proceso no puede progresar hasta
que otro haya completado algún tipo de actividad.

Los procesos también necesitan comunicarse entre sí. Por ejemplo,


para leer de un fichero, los procesos de usuario deben decir al
proceso que gestiona los ficheros lo que desean. Este, a su vez, debe
pedirle al proceso de disco que lea los bloques necesarios. Cuando
el shell conecta dos procesos con un tubo, los datos de salida del
primer proceso se transfieren al segundo. Se necesita que los
procesos se comuniquen entre sí, con un mecanismo bien
estructurado y no por medio de interrupciones.

https://lsi.vc.ehu.eus/pablogn/docencia/manuales/SO/TemasSOuJaen/CONCURRENCIA/1Comunic
acionySincronizacion.htm#comunicacion_sincronizacion

Exclusión mutua

Concepto de exclusión mutua.

 Consiste en que un solo proceso excluye temporalmente a todos los


demás para usar un recurso compartido de forma que garantice la integridad
del sistema.

https://webprogramacion.com/44/sistemas-operativos/exclusion-mutua.aspx

en esta sale hasta los conceptos de semáforo

4.1.3 Requisitos para la Exclusión Mutua

Los recursos no compartibles, ya sean periféricos, ficheros, o datos


en memoria, pueden protegerse del acceso simultáneo por parte de
varios procesos evitando que éstos ejecuten de forma concurrente
sus fragmentos de código a través de los cuales llevan a cabo este
acceso. Estos trozos de código reciben el nombre de secciones o
regiones críticas, pudiéndose asimilar el concepto de exclusión
mutua en el uso de estos recursos a la idea de exclusión mutua en la
ejecución de las secciones críticas. Así, por ejemplo, puede
implementarse la exclusión mutua de varios procesos en el acceso a
una tabla de datos mediante el recurso de que todas las rutinas que
lean o actualicen la tabla se escriban como secciones críticas, de
forma que sólo pueda ejecutarse una de ellas a la vez. En el ejemplo
previo de la cuenta bancaria los fragmentos de código a1a2a3 y
b1b2b3 constituyen dos secciones críticas mutuamente excluyentes,
esto significa que una vez que se ha comenzado la ejecución de una
sección crítica, no se puede entrar en otra sección crítica
mutuamente excluyente.

Idear soluciones que garanticen la exclusión mutua es uno de los


problemas fundamentales de la programación concurrente. Muchas
son las alternativas y tipos de mecanismos que se pueden adoptar. A
lo largo de este tema veremos diferentes soluciones software y
alguna hardware ; unas serán sencillas y otras complejas, algunas
requieren la cooperación voluntaria de los procesos y otras que
exigen un estricto ajuste a rígidos protocolos. La selección de las
operaciones primitivas adecuadas para garantizar la exclusión
mutua de las secciones críticas es una decisión primordial en el
diseño de un sistema operativo. Al menos, una solución apropiada
debería cumplir las cuatro condiciones siguientes:

 1. Que no haya en ningún momento dos procesos


dentro de sus respectivas secciones críticas.

 2. Que no hagan suposiciones a priori sobre las


velocidades relativas de los procesos o el número de
procesadores disponibles.

 3. Que ningún proceso que esté fuera de su sección


crítica pueda bloquear a otros.

  4. Que ningún proceso tenga que esperar un


intervalo de tiempo arbitrariamente grande para entrar
en su sección crítica.

 Sémaforos
Sémaforos
Los semáforos son una herramienta de sincronización que ofrece una solución al
problema de la sección crítica (porción de código de un programa de computador
en la cual se accede a un recurso compartido que no debe ser accedido por mas
de un proceso o hilo en ejecución). Un semáforo provee una simple pero útil
abstracción para controlar el acceso de múltiples procesos a un recurso común en
programación paralela, o entornos multiusuarios. El concepto de semáforo fue
inventando por el holandés Esdger W. Dijkstra.

https://danielpozoblog.wordpress.com/2016/09/28/sistemas-operativos-
semaforos/#:~:text=Los%20sem%C3%A1foros%20son%20una
%20herramienta,proceso%20o%20hilo%20en%20ejecuci%C3%B3n).

Los semáforos son un mecanismo de sincronización de procesos inventados por Edsger Dijkstra en


1965. Los semáforos permiten al programador asistir al planificador del sistema operativo en su
toma de decisiones de manera que permiten sincronizar la ejecución de dos o más procesos. A
diferencia de los cerrojos, los semáforos nos ofrecen un mecanismo de espera no ocupada.
Los semáforos son un tipo de datos que están compuestos por dos atributos:

 Un contador, que siempre vale >= 0.


 Una cola de procesos inicialmente vacía.
Y disponen de dos operaciones básicas que pasamos a describir en pseudocódigo:

https://1984.lsi.us.es/wiki-ssoo/index.php/Sem%C3%A1foros

También podría gustarte