Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Ingeniería Infórmatica 09 2013, Exámenes de Ingeniería Infórmatica

Asignatura: Sistemas Operativos, Profesor: , Carrera: Ingeniería Informática, Universidad: UCM

Tipo: Exámenes

2012/2013

Subido el 31/08/2013

loony-2
loony-2 🇪🇸

2.5

(2)

6 documentos

1 / 4

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
SISTEMAS OPERATIVOS. CUESTIONES
Septiembre de 2013.
Nombre DNI .
Apellidos Grupo .
!
Cuestión! 1.! (0,75! puntos)! Un# sistema# de# ficheros# UNIX# utiliza# bloques# de# 1024#bytes# y#
direcciones#de#disco#de#32#bits.#Los# nodos@i#contienen#8#direcciones# de#disco# para#bloques# de#
datos# y# una# dirección# de# bloque#índice# indirecto# simple.# ¿Cuál# es# el# tamaño# máximo# de# un#
fichero#en#este#sistema?#Un#programa#UNIX#crea#un#fichero#en#este#sistema#e#inmediatamente#
después#escribe#un#byte# de#datos#en# la# posición#1.000# y#otro# en# la#posición# 10.000.#¿Cuántos#
bloques#de#datos#ocupa#este#nuevo#fichero#en#disco?!
Cuestión!2.!(0,75!puntos)!Un#disco#tiene#las#siguientes#peticiones#pendientes:#45,#132,#20,#23,#
198,# 170,# 180,# 78.# La# cabeza# de# lectura/escritura# está# inicialmente# sobre# el# c ilindro# 53# y# su#
movimiento#es# hacia# cilindros#crecientes.#Indique# el# orden# de# atención#de# dichas# solicitudes#
ante#los#siguientes#algoritmos:!
1
2
3
4
5
6
7
8
FCFS
SCAN
C-SCAN
!
Cuestión!3.!(0,75!puntos)!Un#computador#dispone#de#un#reloj#programable#que#genera#marcas#
a#1#Hz.#Para#controlar#la#hora#del#día,#el#computador#dispone# de#un#contador#de#marcas#de#32#
bits.#Si#la#fecha#de#referencia#de#este#computador#es#el#01/01/2013,#¿hasta#qué#año#podremos#
controlar#la#hora#del#sistema?#
Cuestión!4.! (0,75!puntos)# En# un# sistema#con# memoria#virtual#paginada#dos#procesos#quieren#
compartir# una# página# que# contiene# datos.# ¿Deben#tener# las# mismas# direcciones# virtuales#los#
datos# compartidos?# ¿Deben# compartir# entradas#de# la# TP?# Dibujar# una# posible# TP# para# cada#
proceso#si#la#región#de#memoria#compartida#está#en#el#marco#de#página#33.#
Cuestión!5.! (0,75!puntos)!Indicar#cómo#funciona# el#algoritmo# LRU#(información# que#almacena#
para#cada#marco# de#página,#número#de#fallos#de# página,…)#suponiendo# una#memoria# sica#de#
cuatro# marcos# de# página# y#usando# como# ejemplo#la# siguiente# cadena# de# referencias:#
a"b"g"a"d"a"d"e"g"b"d"e.#
Cuestión!6.! (0,75! puntos)#Implemente#las# siguientes# operaciones# de# una# variable#condicional#
usando#semáforos#generales#y#cerrojos:#
#
cond_wait(mi_cond_t *c,mutex_t mut);
/* El hilo que llama a esta función
es el propietario del mutex (no es
necesario comprobarlo en este
código)*/
cond_broadcast (mi_cond_t *c);
/* Despierta a todos los hilos que
estén esperando en la var. condicional
*/
Especifique# el# tipo# de# datos# mi_cond" _t#y# proponga# la# implementación# de# cond_wait" y"
cond_broadcast."
pf3
pf4

Vista previa parcial del texto

¡Descarga Ingeniería Infórmatica 09 2013 y más Exámenes en PDF de Ingeniería Infórmatica solo en Docsity!

SISTEMAS OPERATIVOS. CUESTIONES Septiembre de 2013. Nombre DNI. Apellidos Grupo. Cuestión 1. (0,75 puntos) Un sistema de ficheros UNIX utiliza bloques de 1024 bytes y direcciones de disco de 32 bits. Los nodos-­‐i contienen 8 direcciones de disco para bloques de datos y una dirección de bloque índice indirecto simple. ¿Cuál es el tamaño máximo de un fichero en este sistema? Un programa UNIX crea un fichero en este sistema e inmediatamente después escribe un byte de datos en la posición 1.000 y otro en la posición 10.000. ¿Cuántos bloques de datos ocupa este nuevo fichero en disco? Cuestión 2. (0,75 puntos) Un disco tiene las siguientes peticiones pendientes: 45, 132, 20, 23, 198, 170, 180, 78. La cabeza de lectura/escritura está inicialmente sobre el cilindro 53 y su movimiento es hacia cilindros crecientes. Indique el orden de atención de dichas solicitudes ante los siguientes algoritmos:

FCFS

SCAN

C-SCAN

Cuestión 3. (0,75 puntos) Un computador dispone de un reloj programable que genera marcas a 1 Hz. Para controlar la hora del día, el computador dispone de un contador de marcas de 32 bits. Si la fecha de referencia de este computador es el 01/01/2013, ¿hasta qué año podremos controlar la hora del sistema? Cuestión 4. (0,75 puntos) En un sistema con memoria virtual paginada dos procesos quieren compartir una página que contiene datos. ¿Deben tener las mismas direcciones virtuales los datos compartidos? ¿Deben compartir entradas de la TP? Dibujar una posible TP para cada proceso si la región de memoria compartida está en el marco de página 33. Cuestión 5. (0,75 puntos) Indicar cómo funciona el algoritmo LRU (información que almacena para cada marco de página, número de fallos de página,…) suponiendo una memoria física de cuatro marcos de página y usando como ejemplo la siguiente cadena de referencias: a b g a d a d e g b d e. Cuestión 6. (0,75 puntos) Implemente las siguientes operaciones de una variable condicional usando semáforos generales y cerrojos: cond_wait (mi_cond_t c,mutex_t mut); / El hilo que llama a esta función es el propietario del mutex (no es necesario comprobarlo en este código)*/ cond_broadcast (mi_cond_t c); / Despierta a todos los hilos que estén esperando en la var. condicional */ Especifique el tipo de datos _mi_cond t y proponga la implementación de cond_wait y cond_broadcast.

Cuestión 7. (0,75 puntos) Considere el siguiente código: char buf1[ 4 ] = "AAAA"; char buf2[ 4 ] = "BBBB"; char buf3[ 4 ] = "CCCC"; int fd1; int main() { if ( fork() == 0 ) { fd1=open("prueba",O_RDWR | O_CREAT, 0666 ); write(fd1,buf1, 4 ); write(fd1,buf2, 4 ); close(fd1); } else { fd1=open("prueba",O_RDWR | O_CREAT, 0666 ); wait(NULL); write(fd1,buf3, 4 ); lseek(fd1,0,SEEK_SET); read(fd1,buf2, 4 ); close(fd1); } } Indique si la ejecución del código generará algún error. En cualquier caso, ¿cuál será el contenido del fichero prueba al finalizar la ejecución? Y, ¿cuál será el contenido de la variable buf2? Justifique la respuesta. Cuestión 8. (0,75 puntos) Estudie el siguiente código e indique qué se mostrará por pantalla tras su ejecución: int a=0; main () { int b=1; for (int i=0; i < 3; i++) { if (fork() == 0) { b=b+2; thread_create(&tid,suma,b); thread_join(tid); exit(0); } else { wait(NULL); a=a+b; b=b+1; } printf(“i=%d a=%d, b=%d\n”,i,a,b); } } void suma (int num) { a = num + a; } N.B. Se ha simplificado el paso de parámetros a un hilo para facilitar la comprensión del código. La interfaz POSIX especifica que ese argumento debe ser un puntero. Para este ejercicio, considera que el valor actual de la variable b es lo que se pasa como argumento al hilo recién creado

Problema 2. (2 puntos) Resolver el siguiente problema de concurrencia denominado “CO 2 ”. El programa principal genera constantemente hilos de dos clases: oxígeno y carbono, con el objetivo de formar moléculas de “CO 2 ”. A continuación se muestra un esquema del código de los distintos hilos_._ Por ejemplo, un hilo de carbono deberá esperar a que haya al menos dos oxígeno en el sistema. Tras garantizar que hay dos oxígenos (y el propio carbono) , esos tres hilos se ejecutarán la función “FormarMolecula()”. main ( ) { while(1) { n=random(); si n es par crear hilo Carbono si no crear hilo Oxígeno } Carbono ( ) { Si no hay dos oxígenos Esperar… En caso contrario Despertar 2 oxígenos FormarMolecula() } Oxígeno ( ) { Si no hay un O y un C Esperar… En caso contrario Despertar hilos… FormarMolecula() } Codificar las funciones Carbono y Oxígeno con mutexes y variables condicionales. N.B No es necesario garantizar que únicamente dos oxígenos y un carbono ejecutan concurrentemente la función FormarMolecula(). Sólo hay que resolver el ejercicio de señalización cruzada para que esperen si no hay recursos suficientes.