Posts filed under ‘SO’
Apunts SO complets
Pujo els apunts d’SO que vaig prendre amb el professor Alex Pajuelo. Espero que li serveixin a algú perquè tinc l’esquena destruïda d’ajupir-me per escanejar!
[editat] Definicions i exercici 6.9
Algunes definicions que pot anar bé repassar, diria que estan més o menys bé, però ves a saber…
Penjo també la meva versió de l’exercici 6.9
Quina diferència hi ha entre un trap i una interrupció?
Un trap és síncron i voluntari mentre que una interrupció és asíncrona i involuntària
Cita dos mecanismes utilitzats per a passar paràmetres a memòria
Per registres, o per pila. (El tercer seria passant un registre que apunti als paràmetres).
Per a què serveix l’Spooling?
Consisteix a fer l’E/S sobre un dispositiu intermig, el sistema posteriorment la realitzarà sobre el dispositiu final. Permet compartir dispositius no compartibles. El dispositiu intermig acostuma a ser més ràpid.
Perquè tenim rutines dependents i independents per a accedir als dispositius?
Per a aïllar el SO del Hardware. La part independent te les funcions d’E/S comunes a tots els dispositius, i la part dependent conte funcions específiques per a cada dispositiu. Afegir un nou dispositiu significa només modificar aquest segon nivell, la qual cosa dóna independència SO/HARD.
Quina diferència hi ha entre un dispositiu lògic i un dispositiu virtual?
Un dispositiu virtual és una abstracció del sistema amb què treballen els processos. El dispositiu lògic és associat amb un dispositiu virtual amb un canal.
Què comparteixen i què no comparteixen els threads d’un procés?
Comparteixen: Memòria, TC, PCB, Codi, Dades.
NO Comparteixen: Pila, TID, errno, PC+REGS
Per què necessitem una instrucció especial (TRAP) per entrar al SO i no fem servir un call tradicional?
Perquè l’@ de servei podria variar.
Diferència entre E/S síncrona i asíncrona
En l’E/S síncrona el procés d’usuari es queda bloquejat fins que finalitza l’E/S, en canvi en una E/S asíncrona el procés d’usuari s’executa concurrentment mentre es fa l’E/S.
Quina és la informació mínima que ha de contenir una entrada de directori?
Hardlink del propi directori i del directori pare.
Per què l’assignació encadenada de fitxers no és adequada per a accessos directes?
Perquè per a accedir a la i-èssima posició has de fer i accessos, ja que has de recórrer tots els blocs de dades anteriors al que busquem.
TLB
Tal i com ens van dir que féssim, he mirat de recordar què era això del TLB. Segons la wikipedia:
Translation Lookaside Buffer (TLB) és un buffer o cache a la CPU, que conté parts de la tabla de paginació, és a dir, relacions entre adresses virtuals i reals. Poseeix un número fix d’entrades i s’utilitza per obtenir la traducció ràpida d’adreces. Si no existeix una entrada buscada, s’haurà de revisar la taula de paginació i trigarà diversos cicles més, sobre tot si la pàgina que conté l’adreça buscada no és a memòria principal. Si a la taula de paginació no trobem l’adreça buscada, es donarà un error de pàgina.
I segons els apunts d’EC2,
- Serveix per accelerar el procés de traducció d’adreces
- Te una estructura similar (camps) a la taula de pàgines
- Només guarda algunes entrades de la TP
- Conté més entrades de pàgina que les pàgines que hi caben a la cache L1.
L’esquema de paginació amb TLB sota demanda és aquest, també tret dels apunts d’EC2 (gràcies DAC!)
De moment és tot el que en puc dir, però ho haurem de repassar durament per treure bona nota al tercer parcial!
El que faltava!
Penjo l’exercici 5.7, el que faltava, però no tinc gaire clar que ho hagi fet bé. No estic gaire segur sobre el canal d’error i sobre els canals de la pipe, concretament sobre si a la TFA poden ser de lectura i escriptura alhora…

Exercicis d’SO (Comunicació entre processos)
He fet la majoria dels exercicis que hi ha a la llista en C, concretament el 5.2, 5.3, 5.4, 5.5, 5.6, 5.8, 5.9, 5.10, 5.11, 5.12.
Els penjo aquí per qui estigui encallat en algun punt! Tenen títols més o menys relacionats amb el que diu a l’enunciat per identificarlos ràpidament, de totes formes a dins de cada arxiu hi ha un comment amb el número d’exercici.
Problemes d’SO d’E/S (entrada sortida)
*LINK ACTUALITZAT, ja que he detectat alguns intents de baixar-se els codis en C (suposo que perquè demà és l’examen final d’SO…)
Aquí penjo alguns dels exercicis d’E/S d’SO programats en C.
El Zip amb tots els codis
Problema 2.3 Catail
Un programa que requereix un fitxer d’entrada, i surt indèntic per la sortida estàndard.
Problema 2.4 Micp
Feu un programa en C i crides al sistema UNIX que permeti copiar fitxers plans de manera que detecti els mateixos errors i generi els mateixos missatges d’error que la comanda cp de UNIX.
>micp fitxer_origen fitxer_copiat
Heu d’afegir al vostre programa MICP una opció ( -o ) que indiqui que si el fitxer destí ja existeix no ha de sobrescriure’l.
Problema 2.5 Rev
Modifiqueu el comportament de MICP de manera que el fitxer copiat sigui l’invers. Aquest programa l’anomenarem REV i mantindrà l’opció -o que heu afegit.
Problema 2.6 Mitee
Escriviu un programa que copïi el que rep per la seva entrada estàndar sobre la seva sortida estàndar i a més, sobre un fitxer que ens passaran com a paràmetre. En el cas que el fitxer que passem com a paràmetre ja existeixi, Mitee ha de sobrescriure’l.
>mitee
Donarà error ja que falta el paràmetre.
>mitee pppp
Copiarà el que introduïm pel teclat sobre el fitxer pppp i a més, ens ho mostrarà per pantalla.
>mitee cccc <aaaa >bbbb
Generarà dos fitxers, el bbbb i el cccc, tots dos amb el mateix contingut que aaaa.
Afegeix a Mitee l’opció -a del tee. (consultar man tee)
Problema 2.9 Intercambio de Parejas
Implementar el comando exchange que intercambia dos columnas de caracteres de un fichero.
>exchange c1 c2 file
Donde file será el fichero de entrada y c1 y c2 son las dos columnas a intercambiar. El fichero modificado se ha de extraer por la salida estándar.
Ejemplo:
cat fichero.txt
1000300000
1000200000
>exchange 0 4 fichero.txt
3000100000
2000100000




