Академический Документы
Профессиональный Документы
Культура Документы
Unidad I
CONCURRENCIA Y SECUENCIABILIDAD
Concurrencia y secuenciabilidad
Los procesos son concurrentes si existen
simultáneamente. Los procesos concurrentes
pueden funcionar en forma totalmente
independiente unos de otros, o pueden ser
asíncronos, lo cual significa que en ocasiones
requieren cierta sincronización o cooperación.
Concurrencia y secuenciabilidad
Beneficios del uso de la concurrencia
S. O.
Recurso
Concurrencia y secuenciabilidad
Mecanismos de semáforos
Capítulo 1
Exclusión mutua
Sean dos procesos que comparten un recurso. El acceso a dicho recurso debe ser exclusivo. Es decir,
cuando un proceso lo esté utilizando el otro proceso no puede acceder a él. Considere, por ejemplo, que
el recurso es un armario de cinta y que dos procesos, Pl y P2, intentan acceder simultáneamente a la
cinta. De forma esquemática el ciclo de vida de los procesos es:
«Pl» «P2»
REPEAT REPEAT
usa cinta; usa cinta;
otras cosas otras cosas
FOREVER FOREVER
Debemos arbitrar algún mecanismo para conseguir la exclusión mutua de los procesos respecto a la
cinta.
En lo que sigue utilizaremos las aproximaciones de Ben-Ari [BenA82] para resolver el problema de
la exclusión mutua.
(pg26)
En una primera aproximación al problema considere que los dos procesos están representados por dos
esquimales. Existe un iglú, dentro del cual hay una pizarra. La entrada al iglú es tan estrecha que tan sólo
cabe un esquimal por ella. De la misma manera, cuando un esquimal esté dentro del iglú, el otro no
puede entrar. El recurso compartido por los dos esquimales es un agujero en el hielo para pescar. El
agujero está a medio día de marcha del iglú (Fig. 7). Cuando el esquimal 1 quiere utilizar este agujero,
va primero al iglú y mira qué hay anotado en la pizarra. Si hay un 2, significa que el otro esquimal está
utilizando el agujero. Por ello empieza a pasearse y de vez en cuando entra al iglú a comprobar el valor
de la pizarra. Cuando se encuentre que en ella hay un 1, significa que ya puede pescar, porque el otro
esquimal ha dejado de hacerlo. Por tanto, se va a pescar; está un rato y cuando termina, va al iglú y pone
en la pizarra un 2, indicando que el otro esquimal ya puede pescar.
La anterior situación se puede programar como:
14 PROGRAMACIÓN CONCURRENTE
PROGRAM PrimerIntento;
VAR turno: [1..2];
PROCEDURE P1;
BEGIN
REPEAT
WHILE turno = 2 DO; (* pasea *)
****** usa el agujero de pesca ******
turno:= 2;
otras cosas
FOREVER
END;
(pg27)
PROCEDURE P2;
BEGIN
REPEAT
WHILE turno = 1 DO; (* pasea *)
****** usa el agujero de pesca ******
turno:= 1;
otras cosas
FOREVER
END;
BEGIN
turno:= 1;
COBEGIN
P1; P2
COEND
END.
En el paradigma anterior los esquimales son los procesos, el agujero de pesca el recurso compartido y
la pizarra una variable que los procesos utilizan para saber si pueden o no utilizar el recurso. El iglú es
una manera de indicar que existe un árbitro de memoria para controlar los accesos simultáneos a la
variable. En el caso de que los dos procesos intentasen acceder simultáneamente a la variable, la entrada
al iglú permitirá que pase uno u otro, pero no los dos.
Con la solución propuesta se consigue la exclusión mutua. Es fácil comprobar que cuando turno=l el
proceso 2 no puede utilizar el recurso y viceversa.
A pesar de que la solución satisface la exclusión mutua tiene el problema de que los accesos al
recurso se deben de producir de una manera estrictamente alternada: PI, P2, P1, P2, etc. Piense en lo que
ocurriría si al esquimal 1, mientras da una vuelta esperando utilizar el agujero de pesca, se lo come un
oso polar. Ello significaría que el esquimal 2, después de haber pescado, ya nunca lo podrá hacer de
nuevo. De la misma forma, si un proceso debe acceder al recurso más frecuentemente que el otro se
encontrará que no puede hacerlo.
En esta situación se ha producido una falta de exclusión mutua. Puesto que puede producirse, la
solución no es correcta.
PROGRAM TercerIntento;
VAR pizarral, pizarra2: (pescando, NOpescando);
PROCEDURE P1;
BEGIN
REPEAT
pizarral:= pescando;
WHILE pizarra2 = pescando DO; (* pasea *)
****** usa el agujero de pesca ******
pizarral:= NOpescando;
otras cosas
FOREVER
END;
PROCEDURE P2;
BEGIN
REPEAT
pizarra2:= pescando;
WHILE pizarral = pescando DO; (* pasea *)
****** usa el agujero de pesca ******
pizarra2:= NOpescando;
otras cosas
FOREVER
END;
BEGIN
pizarral:= NOpescando;
pizarra2:= NOpescando;
COBEGIN
P1; P2
COEND
END.
(pg31)
Sin embargo, esta solución presenta un problema. Suponga el siguiente escenario. Inicialmente las
dos pizarras contienen `NOpescando'.
Peterson desarrolló el primer algoritmo (1981) para dos procesos que fue una
simplificación del algoritmo de Dekker para dos procesos. Posteriormente este algoritmo
fue generalizado para N procesos.
Un hilo está listo para ejecutar. Por ejemplo, si se ha creado recientemente o acaba
de ser lanzado desde el estado de espera.
Un hilo sale del estado de ejecución debido a que termino su quantum de tiempo.
Cede la ejecución a otro, o entrará en un estado de espera.
Un hilo cambia su prioridad, ya sea debido a una system call o debido a que
Windows cambio el valor de prioridad.
Un hilo sufre un cambios la afinidad de procesador para que ya no se ejecutan en el
procesador que se estaba ejecutando.
Prioridades:
Internamente Windows utiliza 32 niveles de prioridad, que van desde 0 a 31. Estos valores se
dividen de la siguiente manera:
Es una utilidad de gnome que muestra los procesos y permite monitorizar el estado del
sistema. Para ejecutar la aplicación hay que ir a inicio -> buscar -> Monitor del sistema o
basta con introducir en el terminal: gnome-systme-monitor.
Terminal: Consola
El comando ps
El comando ps es el mejor modo de mostrar los procesos que se encuentran activos.
Para ver todos los procesos activos con todos los detalles basta con abrir un terminal y
teclear: ps -eF
donde;
UID User ID, usuario propietario del proceso.
PID Process ID, número único o de identificación del proceso.
PPID Parent Process ID, padre del proceso.
C Porcentaje de cpu utilizado por el proceso.
SZ Tamaño virtual de la imagen del proceso.
RSS Resident Set Size, tamaño de la parte residente en memoria en kilobytes.
PSR Processor that process is currently assigned to, procesador al que el proceso es asignado.
STIME Starting Time, hora de inicio del proceso.
TTY Terminal asociada al proceso, si no hay terminal aparece entonces un '?'
TIME Tiempo de uso de cpu acumulado por el proceso.
CMD El nombre del programa o comando que inició el proceso.
ps --help:
#> ps --help
********* simple selection ********* ********* selection by list
*********
-A all processes -C by command name
-N negate selection -G by real group ID (supports
names)
-a all w/ tty except session leaders -U by real user ID (supports names)
-d all except session leaders -g by session OR by effective group
name
-e all processes -p by process ID
T all processes on this terminal -s processes in the sessions given
a all w/ tty, including other users -t by tty
g OBSOLETE -- DO NOT USE -u by effective user ID (supports
names)
r only running processes U processes for specified users
x processes w/o controlling ttys t by tty
*********** output format ********** *********** long options
***********
-o,o user-defined -f full --Group --User --pid --cols --ppid
-j,j job control s signal --group --user --sid --rows --info
-O,O preloaded -o v virtual memory --cumulative --format --deselect
-l,l long u user-oriented --sort --tty --forest --version
-F extra full X registers --heading --no-heading --context
********* misc options *********
-V,V show version L list format codes f ASCII art forest
-m,m,-L,-T,H threads S children in sum -y change -l format
-M,Z security data c true command name -c scheduling class
-w,w wide output n numeric WCHAN,UID -H process hierarchy
Pstree: Muestra los procesos en forma de árbol, pstree --help te da las opciones más
comunes.
Kill: El comando kill, que literalmente quiere decir matar, sirve no solo para matar o
terminar procesos sino principalmente para enviar señales (signals) a los procesos. La señal
por default (cuando no se indica ninguna es terminar o matar el proceso), y la sintaxis es
kill PID, siendo PID el número de ID del proceso.
EL PLANIFICADOR DE MACINTOSH
El Mac OS es un sistema operativo multiusuario y multitarea con una capacidad para
administrar simultáneamente información de 32 bits, se considera de multitarea preventivo
dado que cuenta con un programador (también llamado planificador) el cual, según los
criterios de prioridad, asigna el tiempo de los equipos entre varios procesos que lo solicitan.
La planificación del procesador consiste en mantener una serie de estructuras de
información que permiten identificar las características de cada trabajo, así como los
recursos que tiene asignados. Un trabajo puede estar en varios estados (procesamiento, listo
para ejecutar y en espera).
Tareas e hilos
Mac Os X define el concepto de hilo tal y como lo hace POSIX, siguiendo este mismo
estándar para su manejo. Un hilo es, por tanto, es un punto de control de la ejecución de un
proceso, que tiene acceso a todos los recursos del proceso y que se puede ejecutar en
paralelo (si la maquina lo soporta) con otros hilos (estén o no dentro del mismo proceso).
Un proceso (o tarea, como se le denomina en Mach) se define como un conjunto de
recursos. Estos recursos, como veremos posteriormente, pueden ser referenciados a través
de los puertos, con la excepción del espacio de direccionamiento. Una tarea debe contener
uno o más hilos.
En Mac, una tarea no tiene capacidad de ejecución, sino que son los hilos que contiene los
que realmente se ejecutan basándose en los recursos de la tarea. Una tarea es, por tanto, una
entidad bastante pesada, ya que contiene todos los recursos que los hilos contenidos van a
necesitar. Por contra, un hilo es una entidad sumamente ligera, ya que sólo contiene cierta
cantidad de información relativa al estado de la ejecución, delegando en la tarea todos los
aspectos relativos a los recursos.
Planificación
La planificación en el kernel de Mac OS X está basada en cuatro listas de ejecución, cada
una de ellas con diferente prioridad. Un hilo puede migrar de un nivel de prioridad a otro
en función de sus requerimientos, dependiendo de la política en concreto que se utilice en el
sistema. En general, es posible manejar estas prioridades mediante los procedimientos
definidos en el estándar de llamadas POSIX. Los procesos parecen efectuarse
simultáneamente
Las cuatro listas de ejecución que maneja el planificador de Mac OS X, son:
Prioridad Aplicación
Normal Aplicaciones normales
Alta Cuya prioridad se ha aumentado
Modo kernel Internos al kernel con mayor prioridad que
el nivel de usuario (ej: E/S).
Tiempo real Hilos con una fracción definida de ciclos de
ejecución.
EL PLANIFICACION DE SOLARIS:
1. Tiempo real
2. Sistema
3. Tiempo compartido
4. Interactiva.
De manera predeterminada, existe una relación inversa entre las prioridades y los cuantos
de tiempo. Cuando más alta sea la prioridad, más pequeño será el cuanto de tiempo y
cuando menor sea la prioridad, más larga será la franja.
Los procesos interactivos suelen tener la prioridad más alta, los procesos limitados por al
CPU tienen la prioridad más baja. Esta política de planificación proporciona un buen
tiempo de respuesta para los procesos interactivos y una buena tasa de procesamiento para
la clase de tiempo compartido.
Sistema operativo Mac OS X GNU/Linux Windows FreeBSD
The Linux Foundation, Linus
Creador Apple Inc. Microsoft Corporation Proyecto FreeBSD
Torvalds y otros
OS X 10.11 "El Capitan" el 30 de Kernel Linux 4.1.2 el 10 de julio Windows 10 el 29 de julio de FreeBSD 10.1 el 14 de noviembre de
Última edición
septiembre de 2015; hace 7 días de 2015; hace 2 mesesnota 1 2015; hace 2 meses 2014; hace 10 meses
Gratuito (en caso de tener
versión anterior),137 $119.99
Costo Gratuito (únicamente preinstalado)136 Gratuito Gratuito
USD (en caso de adquirirlo
nuevo), preinstalado.
Licencia No libre (Apple CLUF) Libre: GPL No libre (Microsoft CLUF) Libre: BSD
Hogar, diseño, videojuegos,
Hogar, diseño, negocios, servidores, Hogar, servidores, ciencia, redes,
Tipo de uso negocios, redes, servidores, Servidores, workstation
workstation negocios, workstation
workstation
Intel x86, AMD64, DEC Alpha,
x86, IA64, AMD64, DEC Alpha,
ARMISH, HP300, HP PA, Landisk, Luna-
Arquitecturas de ARM, HP PA-RISC, MIPS (big
Intel x86-64 x86, x64, AMD 64, ARM 88k, Mac68k, PowerPC, Motorola VME
procesador soportadas endian), MIPS (little endian),
68k, Motorola VME 88k, SGI, Sparc,
PowerPC, IMB S/390, Sparc
UltraSparc, VAX, Zaurus
ext2, ext3, ext4, btrfs, FAT
HFS+ (predeterminado), HFS, MFS, NTFS (predeterminado), FAT
Sistemas de archivos 12/16/32, ReiserFS, ISO 9660, UFS 1/2, FAT 12/16/32, HPFS, FFS, ext2,
ISO 9660, FAT 12/16/32, UDF, 12/16/32, ExFAT, ISO 9660,
soportados por defecto UDF, NFS, HFS, HFS+, NTFS, ext3, ZFS, UDF, ISO 9660
ExFAT, FFS, UDF
HPFS, FFS, XFS, JFS, y otros
Sistema gráfico Quartz X Window System, Wayland Basado en el núcleo X Window System
Metacity, Kwin, mutter, lightdm,
Windows Managers Aqua Modern UI Metacity, Kwin, otros
otros
KDE, GNOME, XFCE, LXDE,
Entornos de escritorio OS X Finder Explorador de Windows GNOME, KDE
Sugar, Enlightenment, otros
Porcentaje de mercado 8,42% 3,22% 90,54% 0,00%