Solexse2005

Páginas: 8 (1973 palabras) Publicado: 8 de agosto de 2015

PROBLEMA 1 (2,5 puntos)

Se dispone de una aplicación llamada filtro que lee datos por la entrada estándar y escribe resultados por la salida estándar. Se pide que escribáis un programa, que utilice las llamadas a sistema de Unix y que ejecute el programa filtro con su entrada estándar redireccionada al fichero entrada.dat y su salida estándar redireccionada al fichero salida.dat. El programalo podéis escribir en lenguaje C o en pseudo código.


PROBLEMA 2 (2,5 puntos)

Una máquina utiliza un sistema de gestión de memoria basado en segmentación pura. Las direcciones lógicas se dividen en campo segmento (6 bits) y campo desplazamiento (26 bits). La memoria física direccionable en esta máquina es de 16 Gbytes (234 bytes). Responded justificadamente las siguientes preguntas:

a) Indicadlas dimensiones (número de entradas y tamaño en bytes de cada entrada) de las tablas de segmentos necesarias para este sistema de gestión de memoria.

b) ¿Cuál es el número máximo de segmentos que puede tener un proceso? ¿Por qué motivo puede resultar útil disponer de este número de segmentos?

c) Queremos cargar un fichero ejecutable con tres segmentos: un segmento de código de 100 MB, unsegmento de datos de 40 MB y un segmento de pila de 30 MB. Indicad cuál será el contenido de la tabla de segmentos del proceso correspondiente.

d) Indicad dos ventajas y dos inconvenientes de la segmentación pura respecto la paginación pura.


PROBLEMA 3 (2,5 puntos)

El siguiente código implementa una aplicación con dos threads: uno imprime por pantalla los números pares y otro imprime porpantalla los números impares.

#include
#include

int dato_compartido = 0;


void pares(void)
{ int i;
for(i=0; i < 100; i++ )
printf("Thread1 = %d \n", dato_compartido++);
}
void impares(void)
{ int i;
for(i=0; i < 100; i++ )
printf("Thread2 = %d \n", dato_compartido++);
}

int main(void)
{
pthread_t th1, th2;
pthread_create(&th1, NULL, pares,NULL);
pthread_create(&th2, NULL, impares, NULL);
pthread_join(th1, NULL);
pthread_join(th2, NULL);
}

Se desea que la ejecución proporcione por pantalla la siguiente salida:



Se ha realizado una primera ejecución del código y aparece lo siguiente:



Se pide resolver los siguientes apartados:

1. Indicar que problemas genera el utilizar una variable compartida para enviar eldato a imprimir desde el thread pares al thread impares.

2. Implementar una versión del programa anterior que resuelva los problemas anteriores utilizando alguna de las técnicas de gestión de la memoria compartida.


PROBLEMA 4 (2,5 puntos)

En la siguiente tabla se muestra esquemáticamente el contenido de un sistema de ficheros tipo UNIX. Algunos de los i-nodos se muestran en la primera fila, yalgunos de los bloques de datos en la fila de abajo:

0 1 2 3 4 …..
drwxr-xr-x
linkcount=4
bloque1=0
bloque2=
drw-r--r—
linkcount=2
bloque1=1
bloque2=
-rw-r—r--
linkcount=2
bloque1=2
bloque2=
drw-r--r—
linkcount=2
bloque1=3
bloque2=
lrw-r--r—
linkcount=1
bloque1=4
bloque2=




i-nodos
. 0
.. 0
hola 1
adios 3. 1
.. 0
hola1.txt 2
hola2.txt 2

. 3
.. 0
adios1.txt 4

/hola/hola2.txt




Datos

El i-nodo correspondiente al directorio raíz es el 0.

Se pide:

1. Suponiendo que el disco estaba inicialmente formateado y al final de las operaciones realizadas durante el día aparece con la información mostrada en la figura, indicar cuales hansido las llamadas al sistema que se han realizado. (1 punto)
2. Suponiendo que el i-nodo 0 está cargado en memoria, así como el bloque 0, y que nos encontramos situados en el directorio raiz, indicar todos los accesos a disco necesarios para cargar en memoria /adios/adios1.txt. (0,5 puntos)
3. Realizar las siguientes operaciones sobre este sistema de ficheros e indicar qué parámetros se...
Leer documento completo

Regístrate para leer el documento completo.

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS