You are on page 1of 12

SISTEMASOPERATIVOS

Convocatoriaextraordinaria,13deseptiembrede2006
1 2 3

Calificacin

4 5 6

Nombre

SOLUCIONES

Titulacin

Disponedetreshorasymediapararealizarelexamen

1Respondabrevementeaestaspreguntas:
(1,50puntos) Definirbreveyespecficamente:a)procesamientoasimtrico;b)espera

activa; c)consistencia(entreniveles dememoria);d) microkernel (microncleo);e) polling;f)bootstrap;g)independenciadedispositivodeE/S.


a)Procesamientoasimtrico:Modelodeprocesamientoconmltiplesprocesadores, en el que a cada procesador se le asigna una tarea especfica, existiendo un procesadormaestroquecontrolaelsistemayeselresponsabledeasignartareasal restodeprocesadores. b) Espera activa: Espera en la que incurren los programas cuando necesitan conocer la ocurrencia de un evento en el sistema y lo hacen interrogando permanentementealprocesador,deestaformaymientrasnoocurraelevento,el programanoavanzayhacequeelprocesadorestocupadopermanentemente. c) Consistencia (entre niveles de memoria): En una estructura jerrquica de almacenamiento, los mismos datos pueden aparecer en diferentes niveles del sistema.Enunambientemultitarea,endondelaCPUseconmutadeunladoaotro entrelosdiversosprocesos,sedebetenerextremocuidadoparaasegurarque,si variosprocesosquierenaccederaundato,cadaunodeellosobtengaelvalorde dichodatoactualizadomsrecientemente.PodraocurrirenunciertodatoAesten variosdistintosnivelesdememoria(soportemagntico,memoriaprincipal,cach, registro).Laconsistenciaconsisteenasegurarquesiundatohasidomodificadoen unodelosnivelesdememoria(porejemplo,enunregistro),elrestodelosniveles dememoriaenlosquetambinest copiadoeldatoseamodificadotambin,de formaquelosprocesospuedanaccederalverdaderovalordeldatomodificado. d)Microkernel:EstemtodoestructuraalSOremoviendotodosloscomponentesno esencialesdel kernel,eimplementndoloscomoprogramasdelsistemaydenivel deusuario.Elresultadoesun kernel mspequeo.Nohaymuchoconsensoen torno a cules servicios deben permanecer en el kernel y cules deben implementarseenelespaciodeusuario.Engeneral,sinembargo,losmicrokernels

Nombre
tpicamente proporcionan una administracin mnima de los procesos y de la memoria,ademsdeunserviciodecomunicaciones. e) Polling: En un sistema basado en interrupciones, cuando un dispositivo interrumpe a la CPU, ha de averiguarse cul de los dispositivos del sistema ha realizadodichainterrupcin.LatcnicadelPollingconsisteenpreguntarunopor unoatodoslosdispositivosparaaveriguarlaprocedenciadedichainterrupcin. f)BootStrap:Esunsencilloprogramadearranqueinicialdelsistema.Adems,sirve parainicializartodoslosaspectosdelsistema,desdelosregistrosdelaCPUylos controladoresdedispositivos,hastaloscontenidosdelamemoria.Debesabercmo cargar el sistema operativo y empezar a ejecutar dicho sistema; para lograrlo el programadebelocalizarycargarenlamemoriaelkerneldelsistemaoperativo. g) Independencia del dispositivo de E/S: Objetivo que consiste en dar a los programascanalesgenricosdeE/Senlosque stosrealizansusoperacionesde E/S mediante primitivas genricas. De esta manera, los programadores estn liberadosdehacerreferenciasadispositivosconcretos,porloquelosprogramasno dependendedispositivosconcretosdeE/S. (0,25puntos)Dadalafrase:segnelalgoritmodelbanquero,unsistemaesinseguro

cuando en l existe interbloqueo. Es dicha afirmacin cierta? Justificar detalladamentelarespuesta.


Elalgoritmodelbanqueronosproporcionaunaformadegarantizarqueexisteloque sellamaunestadosegurodelsistema,esdecir,queexistealmenosunaformade gestionar(asignar/desasignar)recursosdelsistemadeformaquepuedanejecutarse sinproblematodaslosprocesosdelsistema.Elhechodequenoexistaunestado seguro no implica que el sistema est en interbloqueo. Simplemente que no se garantizalaejecucindetodoslosprocesosdelsistema. (0,25puntos) Culeselpropsitodelasllamadasalsistema?Ydelosprogramas

delsistema?Qudiferenciashayentreambos?
Lasllamadasalsistemasoninstruccionesespecialesqueutilizanlosusuariospara solicitaralsistemaoperativolautilizacindeunrecursodelsistema. Encambio,losprogramasdelsistemasonprogramasqueformanpartedelsistema operativo pero que no forman parte del monitor residente, como por ejemplo los editores,intrpretesdecomando,etc. En realidad, los programas del sistema utilizan llamadas al sistema para utilizar recursos.

Nombre
(0,50puntos)Indicardetalladamenteelprocesodecargadelsistemaoperativoguiado

porinterrupcionesenunsistemadecmputo,indicandocmoquedaralamemoria principalalfinaldelacarga.
Al encender el sistema informtico, lo primero que se ejecuta es un programa llamado BIOS, ubicado en la placa base del sistema en memoria ROM. Este programa se encarga de detectar todos los dispositivos hardware que hay en el sistemayalmacenasuscaractersticasyparmetrosenmemoriaprincipal,dandola posibilidaddeinicializaromodificarlosparmetros atravs deunprogramaque poseedenominadoSETUP.Unavezfinalizadaestaprimerainicializacinsebusca al programa cargador del sistema operativo, el Bootstrap, ubicado en el primer sectordeldispositivodearranque,normalmentefloppy,discodurooCDROM,ytras cargarlo en las direcciones ms bajas de memoria, lo ejecuta. Este programa Bootstrapeselencargadodeleer elsistemaoperativo desdeeldispositivodonde seencuentra,ubicarloenmemoriaprincipalyejecutarlo. Unavezquesedapasoalsistemaoperativo,unadelasprimerasfuncionesdeeste es instalar el vector de interrupciones que contiene todas las direcciones de las rutinasqueatiendenalasinterrupciones.Despusdecargartodoslosmanejadores dedispositivos,losservidoresydeinicializartodoelsistema,elsistemaoperativo quedaenespera hastaquealgunatareadelsistemaoalgnprogramadeusuario demandetrabajoylecedalaCPU.

Lamemoriapodraquedarcomosigue:

Nombre
0000 Vector de interrupciones InterpretedeJCL Cargador de programas Manejadores de dispositivosE/S Memorias intermedias buffers Rutinas de tratamiento de errores

Monitor residente

Memoria usuario

de

FFFF

2(1,5puntos)Muchossistemasoperativosrequierenque,antesdeleeroescribirenun
fichero,seinvoqueaunaoperacindeabrirfichero,quedevuelveunidentificador queluegopuedeserutilizadoparaaccederalfichero.Cuandoseterminadetrabajarcon elfichero,seinvocaaunaoperacindecerrarfichero,comoenesteejemploen UNIX:
chartexto[]="hola",otroTexto[]=adios; intlongitudTexto=4,otraLongitud=4; intfich=open("mifichero.txt",O_RDONLY); write(fich,texto,longitudTexto); write(fich,otroTexto,otraLongitud); close(fich);

Alguienafirmaquelasoperacionesdeabrirycerrarsonunartificioinnecesario,yaque lasoperacionesdelecturayescriturapodrantrabajardirectamenteconelnombredel fichero,comoenesteejemplo:

Nombre
write("mifichero.txt",posicionEnElFichero,texto,longitudTexto);

posicionEnElFichero indicaellugardentrodelficherodondesepretendeguardarel texto.Conestemecanismo,noseranecesarioniabrirnicerrarlosficherosconlosque trabajamos. Esciertaestatesisdequeabrirycerrarsonoperacionesinnecesarias?Perderamos algosilasoperacionesdeaccesoalosarchivosfueransiempredirectas,comoenel ltimoejemplopropuesto?


Esperfectamenteposibletrabajarconficherossinrecurriraoperacionesdeabriry cerrar. Peroestonosignificaque estas dos operaciones noaporten nada.Enel ejemplo propuesto sin open, cada vez que quisiramos hacer una escritura tendramosquepasarelnombredelarchivo.Esosignificaqueencadaescriturael sistema operativo debe localizar esa ruta en el disco, comprobar que el fichero existe, que el usuario tiene privilegios suficientes para realizar la operacin, etc. Todasestasaccionesserealizanunasolavezcuandoseabreelfichero,perosila operacin de abrir noest disponible, hay que realizarlas continuamente, con un granimpactoenelrendimientodelsistema.Portantolaoperacindeabrirahorra trabajoalsistemaoperativo. Otracuestinesquelasoperacionesdeabrirycerrarsirvenparaofreceracceso secuencialalosficheros,talycomosemuestraenelprimerejemplo.Sinoexisten lasoperacionesdeabrirycerrar,losusuariostendrnqueimplementarelacceso secuencialmanualmente.

3(0,75puntos) Tedanaelegirtrestamaosdepginaparaunsistemaoperativo:16
bytes,800bytesy2048bytes.Elsistematrabajacondireccionesde32bitsyeltamao mediodeunprogramaesde4megabytes.Conqu tamaodepginatequedarasy porqu?
Eltamaode800byteshayquedescartarlodeantemano,porquenoespotenciade dos.Requeriraunhardwaredetraduccindedireccionesmuchomscomplejoque unsistemadepaginacinconvencional:paracalcularelnmerodepgina,nobasta con quedarse con los bits ms significativos de la direccin, sino que hay que realizarunadivisin. Eltamaode16bytestampocoesrecomendable,porquegeneramuchoespacioen tablasdepginas.Unprogramadecuatromegabytes(untamaotpico,segnel enunciado)ocupara22224 =218 =256Kpginas,quenecesitaranentornoaun megabyte de espacio (suponiendo cuatro bytes por cada entrada de la tabla de pginas). No parece sensato dedicar a estructuras de gestin una cantidad de memoriasimilaralaquenecesitaelprograma.Adems,paragarantizarunatasade aciertosaltaenlaTLB,staprobablementenecesitarabastantesentradas.

Nombre
Porsuparte,siusamospginasde2048bytes,unprogramadecuatromegabytes requerir 2048pginas,128vecesmenosespacioqueenelcasoanterior.El nico inconvenientedeestetamaodepginaeslamayorfragmentacininterna,pero estamos hablando, en el peor de los casos, de 2047 bytes desperdiciados, que seranmenosdeun0,05%deunprogramadetamaotpicode4megas.Esdecir, irrelevante. Asquelamejoropcineseltamaode2048bytes.

4(1,25puntos)Sedisponedeunsistemaoperativocongestindememoriavirtualpor
demandadepginas.Eltamaodelapginaesde1KByelsistemaposee32KBde memoriafsicadisponibleparaprogramasdeusuario.Supongamosqueenuninstante dado,unprogramaqueocupa9pginassecargaparasuejecucin.Adems,eselnico procesoenesemomentoenelsistema.Elsistemaleasignacuatromarcosdememoria. Inicialmentesecarganlaspginas0,4,5y8enlosmarcos9,3,8y5respectivamente. a) Dibujarlatabladepginasparaestasituacininicial.Culesladireccinfsica paraladireccinvirtual(2,50)dadaenelformato(pgina,desplazamiento)?Y para la direccin (5,20)? Explica claramente el proceso de traduccin de direcciones.
Tabladepginas

0 1 2 3 4 5 6 7 8

MarcoFsico 9 3 8 5

Bitdevalidez v i i i v v i i v

Direcci nvirtual(2,50): Pginalgica2=> Deentradaloprimero quesecomprobaraessitenemos un registroenlaTLBparadichapginalgica,perodadoqueenelenunciadonose nosindicanadaacercadelaTLB,ignoraremosestepaso.Accedemosalatablade pginas(entradadelapginalgica2)yvemosqueelbitdevalidezindicaque dicha pgina lgica no est cargada en memoria. Por tanto se generar una

Nombre
excepcindefallodepginaqueconllevar traerlapginadesdediscoamemoria. Amododeejemplo,supongamosqueelSOdecideubicarlaenelmarco5.Apartir deesemomentoelprocesodetraduccincontinuaradelasiguienteforma: Direccinfsicadelmarco5:51024=5120 Desplazamiento:50 Direcci nfsica:5120+50=5170 Direcci nvirtual(5,20): Pginalgica5=>Latabladepginasindicaqueest cargadaenmemoriaenel marco8. Direccinfsicadelmarco8:81024=8192 Desplazamiento:20 Direcci nfsica:8192+20=8212

b) Silapolticadereemplazodepginasesglobalypartiendodelestadoinicial aqu descrito,calcularlosfallosdepginaqueseproducenconlosalgoritmos LRUysegundaoportunidadparalasiguientecadenadereferenciasdelproceso: 7561083433128623534


Lasituacindepartidaenrelacinalaocupacindememoriaeslasiguiente:existe unsoloprocesocargadoenmemoriaqueocupa4marcos,quedandoportantoan libres28marcosdememoria(32Kbdememoriaprincipalconpginasde1Kbdan 32 marcos de pgina, de los cuales inicialmente estn ocupados 4). Segn el enunciado,existeunsoloprocesoenmemoriaylapolticadereemplazoesglobal, asqueestarndisponiblesparadichoprocesotodoslos28marcoslibres.Portanto, paralacadenadereferenciasdada, nicamentesegenerarn5fallosdepgina, unoporcadareferenciaaunanuevapgina(esconvenienterecordarqueyaestn cargadas 4 pginas de las 9 a las que se hace referencia en dicha cadena). Y adems podemos afirmar que esto ser as con independencia de la poltica de sustitucin,yaquelamemorialibrenosellegaaagotar.

c) Seteocurrealgunaexplicacinquejustifiqueladecisindelsistemaoperativo decargarinicialmentelaspginas0,4,5y8,ynoporejemplolaspginas0,1, 2y3?


Unaraznpodraserparaintentarcargarpginasqueelcargadorpuedasospechar quesevananecesitarinicialmentealcomienzodelaejecucindelprocesoyde esta forma generar el menor nmero de fallos de pgina al inicio. El cargador, conociendolaestructuradelficheroejecutablepodraintentarprecargarporejemplo

Nombre
lasprimeraspginasdecdigoydatos.Elcargadortambinpuedehabersebasado enanterioresejecucionesdelmismoprograma.

5 (2 puntos) ParqueJursicoconsisteenunmuseoyunparqueparahacerrutas
safari.Haympasajerosyncochesmonoplazas.Lospasajerosdeambulanporelmuseo duranteunratoyluegohacencolaparadarunpaseoencocheporelsafari.Cuandohay un coche disponible se monta en l un pasajero y el coche realiza un recorrido programadohastallegarnuevamentealpuntoderecogidadondeelpasajerodebebajar. Silosnvehculosestntodosdepaseoporelparqueconunpasajeroabordo,entonces elpasajeroquequiereuncocheseespera;siuncocheestlistoparacargarperonohay pasajerosesperando,entonceselcocheseespera.Usesemforosparasincronizarlosm procesospasajeroconlosnprocesoscoche.
Primero mostraremos una solucin simple que slo funciona bajo ciertas restricciones. (nota: para superar esta pregunta, basta con aproximarse a esta primeraversin). Variablesglobales
Semaphorecoche_libre(0); Semaphorepasajero_a_bordo(0); Semaphorefinal_de_recorrido(0);

Procesopasajero
voidPasajero(){ ...DEAMBULAPORELMUSEO... //Esperaporuncochelibre P(coche_libre); //Sesubealcoche V(pasajero_a_bordo); //disfrutadelpaseo //Elcochelenotificaqueseacabelpaseo P(final_de_recorrido); }

Procesocoche
voidCoche(){ //haceelrecorridounayotravez

Nombre
loop{ //Indicaqueestlibre V(coche_libre); //Esperaporunpasajero P(pasajero_a_bordo); ...HACEELRECORRIDO... //Terminaelpaseoyseloindicaalpasajero V(final_de_recorrido); } }

Como decamos, esta solucin slofuncionacorrectamente si los semforos son FIFOyloscochesterminanelrecorridoenelmismoordenenelquelocomenzaron. Si un coche A arranca antes que B, pero B finaliza antes el recorrido, la V(final_de_recorrido) puede ser recibidapor elpasajero que est montado en el cocheA,locualeserrneo.Sisequiereevitarestosproblemas,hayqueelaborar unasolucinmscompleja. Acontinuacinsemuestraotroalgoritmoquefuncionacorrectamenteinclusosilos cochesnosiguenunordenperfecto,yqueesindependientedelaimplementacin delossemforos.Estealgoritmosebasaenquelospasajerosyloscochestienen identificadores nicos.Cadapasajerosabeculeselidentificadordesucoche,y viceversa.Dosvectoresdesemforosseempleanparaeldilogopasajerococheal iniciaryterminarelrecorrido. Variablesglobales
//semforoparaindicaralospasajerosquehayalgncochelibre Semforocoche_libre=0; //identificadordelprimercochelibredelafila intprimer_coche; //Cerrojoparaaccederdeformacontroladaa"primer_coche" Semaphorecerrojo_primer_coche=1; //pasajero[i]indicaelpasajeroqueestmontado //sobreelcoche"i" intpasajero[N]; //semforosparasealizaraloscoches //quepuedenempezarelrecorrido

Nombre
Semaphorepasajero_montado[N]={todosacero}; //semforosparasealizaralospasajeros //quesurecorridotermin Semaphorefin_de_trayecto[M]={todosacero};

Procesopasajero
voidpasajero(intID){ //identificadordelcochequeletocaaestepasajero intmi_coche; ...DEAMBULAPORELMUSEO... //esperaporuncochelibre P(coche_libre); //recogeelidentificadordelprimercochelibre mi_coche=primer_coche; //permitealsiguientecocheindicarqueestlibre V(cerrojo_primer_coche); //informaalcochedequeyasehamontado pasajero[mi_coche]=ID; V(pasajero_montado[mi_coche]); //disfrutadelpaseo //esperaaqueelcochefinaliceelrecorrido P(fin_del_trayecto[ID]); }

Procesocoche
voidcoche(intID){ intmi_pasajero; //haceelrecorridounayotravez loop{ //seregistracomoelprimercochelibredelafila P(cerrojo_primer_coche); primer_coche=ID; //avisaalospasajeros

Nombre
V(coche_libre); //esperaaqueunpasajerosemonteyleavise P(pasajero_montado[ID]); mi_pasajero=pasajero[ID]; ...HACEELRECORRIDO... //sealizaalpasajeroqueelrecorridotermin V(fin_del_trayecto[mi_pasajero]); } }

6(2puntos)Lapolticaderifaesunatcnicaaleatoriadeplanificacindeprocesos.
Cadaprocesodisponedeunacantidaddeboletosnumerados.Cuandounproceso entraenCPU,seleotorgaunarodajadetiempo.Cuandoexpiraestarodaja,ocuandoel procesoabandonavoluntariamentelaCPU,elplanificadorextraeunodelosnmerosde un bombo virtual y escoge para la CPU al proceso que tiene ese nmero. Cada procesotienealmenosunboletoyelsorteonopuedequedardesierto.Porejemplo:el procesoAtienelosnmeros1y2.ElprocesoBtieneelnmero3.Elplanificador escogeunnmeroalazarentre1y3.Sisaleel1yel2,entraelprocesoA.Sisaleel3, entraelB. a) Quefectotienedarlemsomenosboletosaunproceso?
Cuantosmsboletostieneunproceso,msprobabilidadtienedeserescogidopor elplanificadoryportantogozar,enpromedio,demstiempodeCPU.

b) Culeselcomportamientodelsistemasitodoslosprocesostienenexactamente unboleto?
Si todos los procesos tienen igual cantidad de boletos, la planificacin es una especiedeRoundRobinenelquecadavezquehayuncambiodecontexto,entra unprocesoalazar.

c) Estatcnicapuedeprovocarinanicin?
Latcnicapuedeenteoraprovocarinanicin,yaquenohayunagarantaabsoluta dequeunprocesoseaescogidoparaentrarenCPU(enteora,susboletospueden nosalirnuncaelegidos).Noobstante,sielsorteosigueunadistribucinaleatoria uniforme,laprobabilidaddequecualquierprocesoacabeentrandoenlaCPUtiende al100%.

d) Sepuedeconstruirunalgoritmonoaleatorioqueproduzcalosmismosefectos queelaquplanteado?

Nombre
Algoparecidoaestemtodosepodraconseguirhaciendounacoladepreparados en la que cada proceso apareciera tantas veces como boletos tiene en este algoritmo.Tambinhaciendoquecuandounprocesoterminesurodajadetiempo, enlugardeingresarenelfinaldelacoladepreparados,seinsertaraenunpunto intermedio, ms cercano al principio de la cola cuantos ms boletos tuviera el proceso.

You might also like