La solución al ejercicio propuesto en vídeo de explicación del profesor.
Texto
complementado y tabla de seguimiento.
1) El planteamiento de este problema clásico de sincronización (El problema de
Lectores escritores).
Describe en el que se tienen procesos donde requiere acceder a recursos
compartidos de distintas maneras, los lectores solo quieren consultar el recurso, y
los escritores modificar el recurso. Escrito hace expulsión mutua.
2) En que consiste dar prioridad al lector.
Ningún lector debe esperar salvo que un escritor esté escribiendo. O sea, si un
recurso está libre o está en modo lectura, cualquier otro proceso que quiera leer
podrá hacerlo, pero el proceso escritor deberá esperar.
3) En que consiste dar prioridad al escritor.
Debe escribir lo antes posible. Desde el momento en que un proceso escritor
exprese su intención por acceder al recurso ningún nuevo lector podrá acceder. La
única forma en que entre uno de lectura es que no haya ninguno de escritura
esperando.
4) Observe la siguiente solución y responda:
lector()
{
wait(sem_lectores);
n_lectores=n_lectores+1;
if (n_lectores == 1)
wait (sem_recurso);
signal (sem_lectores);
<Consultar recurso compartido >
wait (sem_lectores);
n_lectores=n_lectores-1;
if (n_lectores == 0)
signal (sem_recurso);
signal (sem_lectores);
}
escritor ()
{ wait (sem_recurso);
/* Se puede modificar el recurso */
signal (sem_recurso);
}
En esta solución:
a) ¿Para qué es usado el semáforo sem_recurso y cuál debe ser su valor
inicial?
Permitir acceso exclusivo al recurso. Esta variable debe de iniciar con un valor de
1 para poder acceder de modo exclusivo.
b) ¿Para qué se usa la variable n_lectores?
La variable n_lectores es la que se usa para controlar cuantos lectores hay dentro
de la zona critica.
c) ¿Para qué es usado el semáforo sem_lectores?
Permitir acceso exclusivo a la variable n_lectores.
c) ¿Qué hace el primer proceso lector?
Garantiza acceso exclusivo al recurso compartido
e) ¿Qué hace el resto de procesos lectores?
Los otros procesos lectores pueden entrar a la zona de exclusión mutua mientras este
reservada para lectura, afectando cada uno las variables de n_lectores y sem_lectores.
f) ¿Que hace el último proceso lector?
El último proceso al salir lo que hace desbloquear la zona critica con la variable
sem_lectores para que puedan entrar los procesos de escritura.
g) ¿A quién concede prioridad esta solución?
Esta solución ofrece prioridad a los procesos de lectura.
SOBRE COMUNICACIÓN ENTRE PROCESOS.
1) Explique que hace cada uno de los siguientes comandos en UNIX con su
sintaxis. (who, sort, pr, lp, wc). Ahora explique qué hacen el comando: who |
sort | pr | lp y el comando: who | wc -l
who: Este comando dice que usuarios están loggeados en este momento en la
máquina.
sort: Este comando sirve para ordenar dependiendo de la forma que se le diga.
pr: Este comando sirve para imprimir en una o varias líneas.
lp: Envía o cancela solicitudes a una impresora.
wc: Es un comando que sirve para contar dependiendo del parámetro que se le
ponga.
El comando who | sort | pr | lp: Primero who permite saber quién está
conectado, sort ordena esta información en un fichero, pr prepara este
fichero para imprimir y finalmente lp le envía la solicitud de imprimirlo a una
impresora.
El comando who | wc -l : Con who consulta quienes están conectados a
nuestro equipo, y luego a través de wc-l son contados en líneas, es decir,
dice cuántos hay.
2) Explique que hace la TUBERIA o PIPELINE, usada en los comandos
anteriores, como mecanismo de comunicación entre procesos.
El pipeline es el símbolo “|”, que sirve para conectar procesos, teniendo el
resultado del primero y pasándoselo al segundo y así consecutivamente
hasta acabar
3) Describa otros mecanismos de comunicación entre procesos.
• Pipes anónimos: Permiten re direccionar la entrada o salida estándar de
un proceso (utilizando |en la línea de comandos).
• Sockets: Usan la familia de protocolos TCP/IP (la que utiliza en Internet).
Su diseño original proviene del BSD UNIX.
• Estándares de paso de mensajes: como MPI (Message Passing
Interface, muy utilizado en clusters y supercomputadoras), o PVM (Parallel
Virtual Machina, otro estándar utilizado en multiprocesadores y
multicomputadoras).
• Llamadas a procedimientos remotos: (RPC: Remote Procedure Call)
Permiten realizar la comunicación entre procesos como si se tratase de
simples llamadas a funciones.
En Java, se utiliza un mecanismo conocido como RMI.
En la plataforma .NET, se utiliza .NET Remoting.
EL RPC de Windows cumple con el estándar OSF DCE (Open
Software Foundation Distributed Computing Enviroment), lo que
permite la comunicación entre los procesos que se ejecuten en
sistemas operativos diferentes a Windows.
INTRODUCCIÓN AL ADMINISTRADOR DE MEMORIA.
8) Escribir en potencias de 2: 256 BYTES, 512 BYTES, 1024 BYTES, 1 KBYTE, 8
KBYTES, 64 KBYTES, 1024 KBYTES, 1024 MBYTES, 4 GBYTES, 1024 GBYTES.
256 bytes 2
8
512 bytes 29
1024 bytes 2
10
1 kbyte 2
10
8 kbytes 2
13
64 kbytes 216
1024 kbytes 2
20
1024 mbytes 2
30
4 gbytes 2
32
1024 gbytes 240