(03-12-2014 13:58)turco91 escribió: [ -> ]lo que me acuerdo asi rapido, eran 5 VoF y 3 practicos
1- una system call proporciona seguridad y portablidad. le puse verdadero porque evita que pone restricciones sobre lo que podes hacer y te deja abstraerte de como el SO en particular implementa la funcionalidad.
2- si un algoritmo tiene prioridades variable, no hay inanicion. falso porque te falta tener envejecimiento
3- un semaforo con espera activa evita deadlock. le puse falso pero chamuye con la respuesta, ni idea
4-un algoritmo de disco FCFS es el unico que no tiene inanicion. si a un SCAN le pones un driver que planifique el disco tampoco vas a tener inanicion, y mejora mucho el tiempo de respuesta(ni idea que iba)
5- no me acuerdo
de practica era 1 de memoria que la verdad no entendi, 1 de usar algoritmo de banquero para ver cuantos recursos podias asignar sin que quede en estado inseguro el sistema(a mi me dio que no podias asignar nada, aunque supuse que estaria mal porque nadie mas pregunto) y 1 de filesystem con inodos y fat que era bastante facil.
Me saque 4, asi que toma con pinzas lo que digo, no se en donde la habre pifiado y en donde no, pero seguro hice bien el de FS.
Ayer aprobé con 7, no se qué puse bien o mal, pero va lo que contesté:
1- Falso, la protección lo da el cambio de modo, no la SC.
2- Verdadero, tener prioridades variables (como en el envejecimiento) evita la inanición.
3- Falso, lo que evita el deadlock es el correcto uso de los semáforos. La implementación interna de los mismos (espera activa o sleep/block) no influye.
4- Falso. Existen otros métodos, como por ejemplo los basados en colas (como el n-Step) que tampoco tienen inanición.
5- El último era:
"El uso de klt es ventajoso ya que se pueden planificar en paralelo, son más fáciles de crear que procesos hijos, si uno se bloquea no bloquea a los otros klt y si uno termina no hace terminar a los otros klt."
Puse verdadero, ya que todo eso pasa con los klts.
Uno de los pibes que rindió conmigo se llevó una copia del final, este finde lo veo y le pido que me la pase o la suba él.
EDIT: te pongo lo que me acuerdo de la práctica.
1- Te daban un MFT (master frame table) con los bits seteados en 0 o 1.
Después te decían que a un proceso se le daban 3 marcos para trabajar y hacía una lista de pedidos (te daban las direcciones lógicas de los pedidos). Se usaba "next fit" para la asignación de marcos.
a) usando FIFO y LRU, diga la cantidad de pagefaults.
b) cómo quedaba la memoria asignada al proceso al terminar.
c) no me acuerdo.
2- Tal como dijeron en el post anterior, te daban la tabla de asignados, la de totales y la de necesidades y te pedían:
a) pedido máximo que podía hacer el proceso 1 para no estar en estado inseguro (era ninguno ya que cualquier pedido que hiciera te metía en estado inseguro)
b) de un ejemplo de pedido que no pueda ser concedido a ese proceso porque nos lleva a estado inseguro (cualquier pedido servía como ejemplo)
3- Ejercicio de i-nodo. Tenés un pendrive de 1GB con clusters de 8kb y fat32. En un file system ext tenés un archivo de 4XXmg (no recuerdo el valor exacto), con inodos con 5 directos/1 indirecto simple/1 indirecto doble/1 indirecto triple y bloques de 4kb y punteros de 4 bytes.
a) calcular la cantidad de accesos a disco en el ext.
b) lo mismo pero guardar el archivo en el fat.
c) tamaño de la fat del pendrive en memoria.
EDIT 2: agrego el final.
EDIT 3: me equivoqué de imagen, va la correcta.