2019 2 PRA2 SOLucion PDF

Title 2019 2 PRA2 SOLucion
Author Jose ignacio
Course Sistemas Operativos
Institution Universitat Oberta de Catalunya
Pages 10
File Size 482.6 KB
File Type PDF
Total Downloads 104
Total Views 1,058

Summary

1PRADisseny i implementaciód'aplicacions multiprocésen LinuxSistemes OperatiusPrograma####### 2019-Estudis d’Informàtica, Multimèdia i Telecomunicació####### PresentacióAquesta pràctica planteja un seguit d'activitats amb l'objectiu que l'estudiant pugui aplicar sobre un sistema Unix alguns dels con...


Description

PRA2 Disseny i implementació d'aplicacions multiprocés en Linux Sistemes Operatius Programa 2019-02

Estudis d’Informàtica, Multimèdia i Telecomunicació

!!!!!!!!!!!!!!!!!!!!

1!!

05.556 · Sistemes Operatius · PRA2 · 20192

Presentació Aquesta pràctica planteja un seguit d'activitats amb l'objectiu que l'estudiant pugui aplicar sobre un sistema Unix alguns dels conceptes introduïts als darrers mòduls de l'assignatura. L'estudiant haurà de realitzar un seguit d'experiments i respondre les preguntes plantejades i escriure uns petits programes en llenguatge C.

Competències Transversals: § Capacitat per a adaptar-se a les tecnologies i als futurs entorns actualitzant les competències professionals Especifiques: § Capacitat per a analitzar un problema en el nivell d'abstracció adequat a cada situació i aplicar les habilitats i coneixements adquirits per a abordar-lo i resoldre'l § Capacitat per a dissenyar i construir aplicacions informàtiques mitjançant tècniques de desenvolupament, integració i reutilització Competències pròpies: § L'ús i aplicació de les TIC en l'àmbit acadèmic i professional

Objectius Aquesta pràctica té com a objectiu que l’alumne apliqui els conceptes introduïts als 3 darrers mòduls de l'assignatura sobre un sistema Unix i que s'introdueixi de forma progressiva en els aspectes avançats de la programació, depuració i execució d'aplicacions en els sistemes Unix.

Restriccions en l’ús de funcions de C Per realitzar la pràctica heu d’utilitzar les crides a sistema d’Unix. No es podran utilitzar funcions de C d’entrada/sortida (getc, scanf, printf,...), en el seu lloc s’utilitzaran les crides a sistema read i write. Sí que podeu utilitzar funcions de C per al formatatge de cadenes (sprintf, sscanf, ...).

2

05.556 · Sistemes Operatius · PRA2 · 20192

Enunciat A aquesta pràctica haureu de realitzar un seguit d'experiments, desenvolupar petits programes en C i respondre justificadament les preguntes plantejades. Podeu fer els experiments/programes sobre qualsevol sistema Unix al que tingueu accés. Us facilitem el fitxer pr2so.zip amb una sèrie de fitxers que us seran útils per fer i validar la pràctica. Descompacteu-lo executant la comanda unzip pr2so.zip. Com a referència, a cada pregunta us aconsellem una possible temporització per tal de poder acabar la practica abans de la data límit. També s'indica el pes de cada pregunta a l’avaluació final de la pràctica. El pes d'aquesta pràctica sobre la nota final de pràctiques és del 60%.

1:#Execució#aplicacions#en#Linux! [Del! 17! al! 24! d'abril]! (40%,! tots! els!apartats!tenen!el!mateix!pes)# 1.1. Compileu i executeu el programa pgm1_1.c i utilitzeu les comandes d'usuari de Linux per obtenir els diferents identificadors (PID, PPID, UID, EUID, GID,EGID), la prioritat i l'estat del seu procés. Annexar una captura de pantalla on es vegi la comanda utilitzada per obtenir els identificadors. Solució: > ps o pid,ppid,ruid,uid,euid,rgid,gid,egid,pri,state,comm

Explicar la diferència hi ha entre els identificadors UID, EUID, GID i EGID. El UID (User Id) és l'identificador de l'usuari que ha executat el programa. El GID (Group Id) és l'identificador de grup d'usuaris de l'usuari que ha executat el programa. Amb aquest identificador i l'identificador de grup, el SO avalua els permisos que té el procés (que arxius pot accedir, que ordres i crides a sistema pot executar, etc.). Linux permet que un usuari executi determinats programes amb els permisos d'un altre usuari (per exemple, quan s'utilitza el comando sudo). Per suportar aquesta funcionalitat, Linux defineix l'identificador EUID (Effective User Id) i el EGID (Effective User Id)

3

05.556 · Sistemes Operatius · PRA2 · 20192

que permet atorgar al procés permisos diferents dels que té associat l'usuari (i el seu grup associat) que ha invocat el programa/ordre. En el cas que no tingui permisos especials el EUID = UID i EGID = GID. 1.2. Modifiqueu el programa pgm1_1.c perquè mostri per si mateix tota la informació de l'apartat anterior. Annexar el codi font del programa modificat i una captura de pantalla de la seva execució.

El codi font de la solució està en el fitxer pgm1_2Ok.c 1.3. Utilitzant les comandes d'usuari disponibles en Linux i els privilegis de root (que podeu obtenir amb la comanda sudo), heu d'aconseguir que el programa realitzat en el pas 1.2 tingui un EUID!=UID i un EGID!=GID. Heu utilitzar les comandes chown i chmod per realitzar aquest apartat. Solució:

1.4. Utilitzant la crida a sistema execvp implementar un programa, denominat misudo, que sigui capaç d'executar una ordre/programa que li passi com a paràmetre (argv [1]), amb els seus respectius arguments (argv> 1). El codi font de la solució està en el fitxer misudo.c Intentar utilitzar el programa desenvolupat per executar la següent comanda que requereixi privilegis de root: > ls -la /root > misudo ls -la /root

4

05.556 · Sistemes Operatius · PRA2 · 20192

Què significa el missatge d'error que mostra l'aplicació a l'intentar executar la comanda?

Que no es té autorització per accedir al directori de /root Utilitzant l'usuari root o la comanda sudo de el sistema, modificar els permisos (chmod) i el grup (chown) de el programa misudo, perquè permeti l'execució de la comanda privilegiat. Indicar les comandes que heu hagut d'utilitzar per aconseguir que el programa misudo tingui la mateixa funcionalitat que la comanda sudo. Solució:

2:#Creació#processos#i#utilització#pipes#en#Linux![Del!25!d'abril! a!l'11!de!maig]!(60%,!tots!els!apartats!tenen!el!mateix!pes)# 2.1. Definir dues ordres que permeti obtenir el valor màxim i el valor mínim dels nombres d'un fitxer de text. El valor màxim ho guardareu en el fitxer max.txt i el mínim en el fitxer min.txt. Utilitzeu les comandes d'usuaris de Linux, les redireccions i les pipes per definir les dues ordres. Podeu utilitzar el fitxer de nombres fic1.txt, que us adjuntem, com fitxer d'entrada per a aquest apartat. > cat fic1.txt | sort -g | head -n 1 > min.txt > cat fic1.txt | sort -g | tail -n 1 > max.txt

5

05.556 · Sistemes Operatius · PRA2 · 20192

Indicar el nombre de processos, pipes i descriptors de fitxers oberts es necessiten per a executar aquests programes. En tots dos casos es necessiten 3 processos, 2 pipes i obrir un fitxer per a redirigir la stdout de l'últim procés al fitxer corresponent (internament necessita un altre descriptor per a llegir el fitxer fic1.txt i varis per als descriptors dels pipes/stdin/sdout/stderr). 2.2. Implementar dos programes en C, denominats atob i add. El primer programa atob, haurà de permetre convertir en binari tots els nombres en format text rebuts per l'entrada estàndard, escrivint el resultat en la sortida estàndard. El programa add permetrà sumar els M primers nombres binaris (int) rebuts per l'entrada estàndard i escriurà el resultat en format text per la sortida estàndard. El valor de M es rebrà com a paràmetre, en el cas que no es passi cap paràmetre, implicarà sumar tots els nombres d'entrada. Tots dos programes retornaran un 0 si s'ha produït un error i el total de nombres processats si s'han executat correctament. L'objectiu final d'aquest apartat és poder calcular/sumar la mida total dels fitxers d'un directori: Ø ls –l | tail –n +2 | tr –s ‘ ‘ | cut –f 5 –d‘ ‘ | atob | add

El codi font de la solució està en els fitxers atob_Ok.c i add_Ok.c. 2.3. En aquest apartat, calcularem la mida total dels fitxers del directori de manera concurrent utilitzant N processos. Per a això, redirigirem la sortida de la comanda anterior a un fitxer on guardarem els nombres a sumar en binari: Ø ls –lR | tail –n +2 | tr –s ‘ ‘ | cut –f 5 –d‘ ‘ | atob > num.bin

El programa que heu d'implementar, addConcurrent, rebrà com a paràmetre el nom del fitxer que conté els nombres binaris a sumar i el número N de processos a utilitzar. Podeu assumir que el valor màxim de N serà 100.

6

05.556 · Sistemes Operatius · PRA2 · 20192

El procés principal crearà N processos fills que executaran el programa add de l'apartat anterior. A cada procés fill se li passarà com a paràmetre la quantitat de nombres a sumar (mida_fitxer/sizeof(int)/N) i se li redirigirà la stdin a l'offset del fitxer que li toca processar. La sortida dels N fills es redirigirà al fitxer res.txt. Una vegada creats els processos fills, el procés principal esperarà la seva finalització, obtenint el seu codi de retorn i a partir d'aquest calcular i retornar el nombre total de números processats. Per a obtenir la mida del fitxer d'entrada podeu utilitzar la funció stat i la funció lseek per a posicionar el punter de lectura en una determinada posició/offset del fitxer. Per a comprovar que el resultat és el correcte podeu utilitzar el programa de l'apartat anterior: Ø ls –lR | tail –n +2 | tr –s ‘ ‘ | cut –f 5 –d‘ ‘ | atob > numbers.bin Ø addConcurrent ./numbers.bin 5 Ø atob < res.txt | add

Una vegada realitzat aquest apartat, justificar per què l'execució de la versió seqüencial (apartat 2.2) i la versió concurrent (amb diversos processos) amb el fitxer numbers.bin com a paràmetre retorna una quantitat diferent de nombres processats. El codi font de la solució està en el fitxer addConcurrent_Ok.c El problema és pel fet que el codi de retorn té la mida d'un byte i si el codi de retorn retornat excedeix el valor de 255 (rang màxim byte) llavors es produeix un desbordament. En aquest cas, la quantitat de números retornada no és la correcta.

Recursos Recursos Basics • Document "Introducció a la programació de Unix" (disponible al campus virtual). És important treballar les parts del document següents: – – – – – – – – –

7

Informació sobre errors: Informació sobre l’entrada/sortida: Crida a sistema close: Crida a sistema creat: Crida a sistema open: Crida a sistema read: Crida a sistema write: Crida a sistema lseek: Crida a sistema dup:

pàgina 5 pàgina 27 pàgina 39 pàgina 35 pàgina 37 pàgina 40 pàgina 42 pàgina 45 pàgina 46

05.556 · Sistemes Operatius · PRA2 · 20192

– – – – – – – – –

Informació sobre gestió de processos: Crida a sistema fork: Crida a sistema exec: Crida a sistema wait: Crida a sistema exit Crida a sistema getpid Crida a sistema getppid Crida a sistema getpgid Informació comunicació processos:

pàgina 6 pàgina 14 pàgina 15 pàgina 18 pàgina 17 pàgina 20 pàgina 21 pàgina 23 pàgina 52

• Document “Intèrpret de comandes UNIX” (disponible a l’aula) o qualsevol altre manual similar. És important treballar les següents parts del document: – – – – – – – – – – – – – – – –

Manual del sistema: Sistema de fitxers en Linux: Comanda cat: Comanda more: Gestió de processos Comanda ps: Comanda kill: Modalitats d’execució comandes Comandes fg, bg: Redirecció d’entrada/sortida Comunicació mitjançant pipes Comanda sort: Comanda head: Comanda sort: Comanda tail: Comanda wc:

pàgina 2 pàgina 3 pàgina 4 pàgina 4 pàgina 7 pàgina 7 pàgina 8 pàgina 8 pàgina 8 pàgina 9 pàgina 9 pàgina 12 pàgina 12 pàgina 12 pàgina 13 pàgina 13

• Qualsevol manual bàsic de llenguatge C. • L'aula "Laboratori de Sistemes Operatius" (podeu plantejar els vostres dubtes relatius a l'entorn Unix, programació,...). Recursos Complementaris • Manual de crides a sistema instal·lat a qualsevol màquina UNIX (comanda man)..

Criteris de valoració El pes dels apartats sobre la nota final de la pràctica s'indica al principi de cadascun. El pes de cada apartat es distribueix de forma equitativa entre tots els subapartats que ho integren. En la correcció es tindran en compte els següents aspectes: • Les respostes hauran d'estar articulades a partir dels conceptes estudiats en teoria i en la guies de l'assignatura.

8

05.556 · Sistemes Operatius · PRA2 · 20192

• Es valorarà essencialment la correcta justificació de les respostes. • S'agrairà la claredat i la capacitat de síntesis en les respostes. • La capacitat d'anàlisi dels resultats obtinguts i la metodologia seguida per a la seva obtenció. • El codi lliurat ha de poder executar-se correctament en qualsevol màquina amb Linux. Que el codi s'executi correctament en el vostre ordinador, no implica necessàriament que sigui correcte. Revisar diverses vegades la vostra solució i no ignorar els warnings que us pugui estar generant el compilador.

Format i data de lliurament Es crearà un fitxer zip que contingui un fitxer pdf amb la resposta a totes les preguntes i els fitxers .c amb el codi font dels exercicis 1.2, 1.5, 2.2 i 2.3. El nom del fitxer tindrà el format següent: "Cognom1Cognom2PRA2.zip". Els cognoms s’escriuran sense accents. Per exemple, l’estudiant Marta Vallès i Marfany utilitzarà el nom de fitxer següent: VallesMarfanyPRA2.tar La data límit per al lliurament de la pràctica és el dilluns 11 maig de 2020.

9

05.556 · Sistemes Operatius · PRA2 · 20192

Nota: Propietat intel·lectual Sovint és inevitable, en produir una obra multimèdia, fer ús de recursos creats per terceres persones. És per tant comprensible fer-ho en el marc d'una pràctica dels estudis del Grau Multimèdia, sempre i això es documenti clarament i no suposi plagi en la pràctica. Per tant, en presentar una pràctica que faci ús de recursos aliens, s'ha de presentar juntament amb ella un document en què es detallin tots ells, especificant el nom de cada recurs, el seu autor, el lloc on es va obtenir i el seu estatus legal: si l'obra està protegida pel copyright o s'acull a alguna altra llicència d'ús (Creative Commons, llicència GNU, GPL ...). L'estudiant haurà d'assegurar-se que la llicència que sigui no impedeix específicament seu ús en el marc de la pràctica. En cas de no trobar la informació corresponent haurà d'assumir que l'obra està protegida pel copyright. Hauran, a més, adjuntar els fitxers originals quan les obres utilitzades siguin digitals, i el seu codi font si correspon. Un altre punt a considerar és que qualsevol pràctica que faci ús de recursos protegits pel copyright no podrà en cap cas publicar-se en Mosaic, la revista del Graduat en Multimèdia a la UOC, a no ser que els propietaris dels drets intel·lectuals donin la seva autorització explícita.

10...


Similar Free PDFs