1

Anuncio
1
Fundamentos de los Sistemas Operativos
Convocatoria extraordinaria – 1 de julio de 2016
Nombreyapellidos
2
3
4
DNI/NIE
NOTA
DURACIÓN:Disponesdetreshoraspararealizarelexamen.
1 (4puntos)Respondealassiguientescuestionesdeformabreveyjustificandoadecuadamente
tusargumentos.
a)
b)
c)
d)
(0,60p)¿ParaquéseincorporóelbitdereferenciaalasMMU?
(0,60p)Explicalasdiferenciasprincipalesentrelasllamadaspthread_create()yfork().
(0,40p)¿Porquélasoperacionesdeunsemáforodebensernecesariamenteatómicas?
(0,80p)LossistemasoperativosofrecenllamadasalsistemadeE/Sindependientesdel
dispositivo.¿Québeneficiosreportaestoalprogramador?
e) (0,80p)¿Enquéconsisteunmicronúcleoomicrokernel?
f) (0,80p)¿Mediantequémecanismosunprocesodeusuariopuedeconmutardemodo
usuarioamodonúcleo?
2 (2puntos)Auncomputadorconunúnicoprocesadorllegalacargadetrabajoquesemuestra
enlatabla.Planificaestacargadetrabajoconestostresalgoritmos:RoundRobin(Q=2),SJFySJF
expulsivo(SRTF).Paracadaalgoritmo,obténeldiagramadeGantt,eltiempomediodeespera,el
númerodecambiosdecontextoyelrendimientodelaCPU.
proceso llegada
duración
A
0
4
B
1
3
C
D
3
9
1
3
E
10
1
3 (2puntos)Tenemosunaarquitecturadememoriaqueutilizapaginacióndeunsolonivel,con
lassiguientescaracterísticas:direccioneslógicasde24bits,direccionesfísicasde32bits,tamaño
depáginade1KiBytamañodecadaentradaenlatabladepáginasiguala3bytes.
(1p)Enestesistema,¿cuántosbytesocuparálatabladepáginasdeunprocesoquemanejaun
espaciológicode100MiB?¿Cuántosmarcosdepáginapodráocuparesemismoproceso?
(0,75p)EstemismosistemautilizaunaTLB,paralaqueseobservaunatasadeaciertosdel95%.Si
eltiempodeaccesoalaTLBesde2nanosegundosyeltiempomediodeaccesoalaRAMesde40
nanosegundos,¿cuálseráeltiempomedioefectivodeaccesoaundatoenmemoria?
(0,25p)Enestemismosistema,seobservaquehay3procesosenejecución:unomanejaun
espaciológicode100MiB,otromaneja200MiByelterceromaneja50MiB.Seobservaqueel
espaciofísicoqueconsumenesde275MiB,bastantemenosquelasumadelostresespacios
lógicos.TeniendoencuentaqueelsistemaNOutilizamemoriavirtual,¿aquépuedeserdebida
estadiferenciadetamaños?
·Página1de2
4 (2puntos)EnlaO.S.T.I.A.(OperatingSystemsTechnologyInnovationAgency)están
desarrollandounsoftwareparagestionarunaimpresora.Primerohanescritounafunciónpara
enviarundocumentoalaimpresora(imprime_documento)yhafuncionadoperfectamente.
Despuéshanintentadoescribirunprogramaparamanejarunservidordeimpresiónqueatiende
unacoladedocumentospendientesdeimprimir,talycomosemuestramásabajo.
Lamentablemente,conelcódigoactuallosdocumentossuelensalirmalimpresos:porejemplo,se
mezclancontenidosdedistintosdocumentos,osepierdendocumentoscompletos.
AyudalaO.S.T.I.A.:¿Aquécreesquesedebeelproblema?Explicalosmotivosdesdetus
conocimientossobreprogramaciónconcurrente.
Ademásdedarunaexplicación,arreglaelcódigoaquíexpuestoparaquelosdocumentosse
imprimancorrectamente.Utilizasemáforosparalograrlasincronizaciónqueseanecesaria.
NOTA:puedesescribirtusoluciónenseudocódigo,nohacefaltaquetualgoritmoseacompilable.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
struct Documento {
// ... campos con el contenido del documento
};
// función para imprimir directamente sobre la impresora
// (comprobado que funciona correctamente)
void imprime_documento(struct Documento* doc);
// funciones auxiliaries para manejar una cola FIFO
// (también funcionan correctamente)
void cola_añade (struct Documento* doc);
struct Documento* cola_extrae();
int peticiones_en_cola = 0;
// rutina del servidor de impresión
void servidor_impresora() {
while (true) {
while ( peticiones_en_cola == 0 ) {}
struct Documento* doc = cola_extrae();
imprime_documento(doc);
peticiones_en_cola--;
}
}
// función para que un proceso envíe
// un documento a la cola de impresión
void envía_cola_impresión (struct Documento* doc) {
peticiones_en_cola++;
cola_añade (doc);
}
Página2de2
Descargar