Está en la página 1de 27

PP1 2016

1.
a. Objetivos memoria caché
Es la memoria más cercana al procesador, con mejor velocidad de transferencia y más
pequeña que la memoria principal

c. Algoritmos de reemplazo de bloques de caché. Describa 2


Son algoritmos para reemplazar los bloques de información entre el caché y la memoria
principal
FIFO: primero en entrar, primero en salir
LRU: consiste en reemplazar el bloque que ha permanecido por más tiempo sin ser
accesado

d. Principio de localidad(proximidad)
Espacial:Si un elemento es referenciado los elementos cuyas direcciones están próximas
tenderán a ser referenciados pronto. Una estrategia es estimar las posiciones cercanas para
tener acceso más temprano.

Temporal: Si un elemento es referenciado, volverá a ser referenciado pronto. Una estrategia


es almacenar una copia de los datos referenciados en caché para lograr un acceso más
rápido a los datos para referencia una posición de la memoria en particular.

e. Tipos de interrupciones
● Interrupciones de reloj: Cuando un proceso utiliza mucho tiempo en ejecutarse, se
solicita su interrupción
● FRAPS: el sistema indica al planificador que pase al siguiente proceso
● Interrupciones E/S:

f. Tratamiento de una interrupción


Captura de la interrupción.
Salvaguarda de estado del procesador.
Activación de la rutina de manejo de la interrupción.
Indicar al planificador que debe poner lista para ejecutar la rutina particular.
Desactivación de la interrupción.
Restauración del estado del procesador.
Sesión de control (RETI).

g. Ejecución modo kernel y modo usuario


Modo Kernel: No tiene restricciones para ejecutar instrucciones
Modo Usuario: Cuenta con un subconjunto de instrucciones que puede ejecutar

j. Que significa que un procesador sea de 32 o 64 bits


En un sistema operativo x86 permite un máximo de 2^32 direcciones de memoria
distintas por cada byte de información, es decir:
2^32bytes = 4.294.967.296 bytes = 4GiB

El principio funciona igual que los de 32, si tienes 64 bits, puedes direccionar un máximo
teórico de 2^64 direcciones distintas de memoria, es decir:
2^64bytes = x bytes =

k. Liste 3 procesadores
Mediatek
AMD
Intel

2.
a. Que es la multiprogramación
Característica de los SO de poder ejecutar varios programas a la vez mediante el uso de
recursos compartidos

b. Que es el tiempo compartido


Característica del SO en los cuales se ejecutan varios procesos compartiendo el tiempo del
uso de la CPU
c. Que es un sistema multiusuario
Es un sistema que acepta varios terminales de ejecución de usuarios(Linux)
d. Porque evolucionan los SO
Para adaptarse a las nuevas tecnologías de procesadores con mayor velocidad o más
memoria
e. Que es la memoria virtual
Esta técnica se encarga de la transferencia de información entre la memoria principal y
la secundaria, en donde esta última está normalmente soportada en un disco o partición.
Se utiliza cuando la memoria principal no es suficiente para ejecutar un proceso
f. Que es la paginación
Es un esquema que utiliza la memoria virtual para referenciar las direcciones mediante
páginas y marcos de páginas
g. Que es un fallo de página
Es aquel que se produce cuando un proceso necesita acceder a una página que no está en
memoria principal

i. Estados de un proceso
En ejecución (uno por procesador)
Bloqueado (en espera de completar E/S)
Listo para ejecutar
3.
a. Implemente un programa que cree cuatro procesos que desplieguen su
identificación (Pid) y la identificación del padre
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
main(){
int pid;
for(i=0; i<4; i++){
pid = fork();
if(!pid){
printf(“Hijo: %i, Padre: %i”, getpid(), getppid() );
}
}
return(0);
}
b. Ejecute un proceso que se llame a sí mismo (recursividad)
opción 1:
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
void main(int argc, char *argv[]){
printf("me estoy ejecutando %s\n",argv[0]);
execve(argv[0], &argv[0],0); //el argv es para que tomó
su mismo nombre
exit(0);
}
opción 2:
#include….
main(){
printf(“soy recursivo “\n);
execv(“home/Escritorio/hola”);
} // mencionar que debe estar ese archivo en esa dirección

c. Implemente un programa que desvíe el CTRL C


opción 1:
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <signal.h>
void controlc();
int main(){
signal(SIGINT, controlc);
while(1){
printf("hey!!\n");
}
return(0);
}
void controlc(){
printf("adios\n");
exit(0);
}

opción 2:
#include….
void prog (void){
printf(“Se ha desviado el proceso“\n);
return NULL;
}
int main(){
signal (SIGINT, prog);
return(0);
}

PP1 2017
1.-
a) En el siguiente codigo identifique la ejecución modalidad kernel y usuario:
main(){
int x,y,z; ← Usuario
scanf(“%i %i %i”, &x,&y,&z); ← Kernel
x=x+1; ← Usuario
y=y+1; ← Usuario
x=x+y; ← Usuario
printf(“%i %i %i”,x,y,z); ← Kernel
}
b) Cuáles son los estados por lo que pasa el proceso de la pregunta anterior en un
sistema multitarea con planificación de CPU round Robin. Justifique su respuesta
Ejecución-Espera E/S- Ejecución - Ejecución - Ejecución - Espera E/S.

c) A qué tipo de interrupciones está sujeto el proceso de la pregunta a). Justifique su


respuesta
Está sujeto a interrupciones de entrada y salida en el escáner donde espera la
respuesta del usuario y de salida en el printf

2.-
a) Escriba un programa que genere 10 procesos hijos y estos desplieguen en el
monitor su identificación y la identificación del padre.Luego haga lo mismo
pero genera Thread.
#include…
main(){
int pid;
for(i=0; i<10; i++){
pid = fork();
if(!pid){
printf(“Hijo: %i, Padre: %i”, getpid(), getppid() );
}
}
return(0);
}
HILO
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
void main() {
for(int i=0,i<10,i++){
pthread_t thread;
int iret;
iret = pthread_create( &thread, NULL,NULL,NULL);
if(iret){
fprintf(stderr,"Error - pthread_create() return code: %d\n",iret);
exit(EXIT_FAILURE);
}
printf("pthread_create() crea thread %d retorna: %d\n",i,iret);
pthread_join( thread, NULL);
exit(EXIT_SUCCESS);
}
}

b) Explique las diferencias entre los procesos y threads creados. Cómo los
planifica el sistema operativo
● La diferencia más importante es que los hilos no son independientes entre sí,
mientras que los procesos si lo son.
● Los procesos son manejados por el procesador mientras que los hilos por la
cpu
● Un proceso puede contener varios hilos generando su funcionalidad,
mientras que los hilos no pueden ejecutar procesos.

3.-
a) Describa el procesamiento de una interrupción.

El procesamiento o manejo de una interrupción viene dada por el tipo de esta.


Ejemplo: Interrupción en impresora.

En este caso se da comienzo normal al


proceso, el cual utiliza módulos de E/S. Al continuar
su ejecución se levanta una alerta la cual es
administrada por el manejo de interrupciones, dando
paso al sistema operativo para que apliquen las
directivas pertinentes.
Una vez terminada la labor del SO. este entrega el
control nuevamente al proceso para que continúe su
ejecución.

b) Diferencia entre un planificador con y sin expulsión


Un planificador sin expulsión es menos eficiente que uno que lo permita, ya que en
el primer caso, si existen varios procesos en estado “Listo” esperando por ejecución,
estos permanecerán así hasta que el que está activo termine, en cambio, con
expulsión se elabora un esquema basado en pipeling distribuyendo y parcelando los
tiempos según prioridad en busca de mayor eficiencia.
c) Explique la función de la memoria cache de un computador.
La cache es una memoria pequeña con gran velocidad de acceso, como establece
la jerarquía de memorias. Esta se sitúa entre la CPU y la memoria principal,
haciendo más eficiente el traspaso de datos.

Esquema global:

Memoria
CPU Cache
principal

Esquema interno:

d) Explique las regiones de un proceso


○ Texto/Archivo : Almacena la mayor información del proceso, principalmente el cuerpo
del programa//codigo ejecutable que lleva el proceso
○ Stack/pila: Almacena la información del contenido de las variables globales, los
estados por lo que pasa un programa . Se almacenan principalmente las variable
dinámicas//se colocan los registro de entorno, valores iniciales del archivo objeto,etc.
○ heap/datos: Aquí se almacenan la información de los archivos estáticos que no
varían en el tiempo.//datos iniciales, puntero a la pila y variables de entorno.

4.-
a) Implemente un proceso que cambia la región de texto por un programa que
despliegue “Hola Mundo” en el monitor.

b) Explique lo que despliega en el monitor el siguiente programa:


#include <stdio.h>
#include <setjmp.h>
void second(void){
printf(“Second\n”);
longjmp(buf,1); // salta de nuevo a donde fue llamado setjmp
}
void first(void){
second();
printf(“First\n”);// No se Imprime

}
int main(){
if( !setjmp(buf)){
first();// Cuando se ejecuta, devuelve 0 setjmp
}
else{// cuando salta longjmp, setjmp devuelve 1
printf(“main\n”);
}
return 0;
}
este es un ejemplo basico de la idea de setjmp, aqui el main() llama a first(), el cual llama a
second(), entonces este salta atras al main(), saltandose el printf() del first(), cuando se
ejecuta imprime

second
main

PP1 RECUPERATIVA 2017


1.
a. Elementos que caracterizan el modelo de programación de un computador
● Elementos de almacenamiento: Elementos que son visibles a las
instrucciones de máquina,como registros generales, el contador de
programa,el puntero de pila, el registro de estado,la memoria principal y el
mapa de E/S (este mapa va incluido en el mapa de memoria, en este caso se
reserva una parte de la memoria para realizar la E/S).
● Juego de instrucciones: con sus correspondientes modos de
direccionamiento.Define las operaciones que es capaz de hacer la
computadora. Los modos de direccionamiento determinan la forma en que
intervienen en las instrucciones de máquina.
● Secuencia de funcionamiento: Define el modo en que se van ejecutando
las instrucciones de máquina.
b. Mecanismos que permiten romper la secuencia de ejecución de un
computador
● los mecanismos que interrumpen la secuencia de ejecución de un
computador son la interrupciones , permiten ejecutar un bloque de
instrucciones interrumpiendo la ejecución de un programa para luego
restablecer la ejecución de este sin afectar directamente

c. Qué tareas incluye el tratamiento de una interrupción?


● salvar algunos registros del procesador, como son el estado y el contador de
programa.
● elevar el nivel de ejecución del procesador, pasándolo a kernel
● cargar un nuevo valor en el contador de programa, por lo que pasa a ejecutar
otro programa.
d. Tareas de la unidad de control
● lectura de memoria principal de la instrucción de máquina apuntada por el
contador de programa
● incremento del contador de programa, para que apunte a la siguiente
instrucción de máquina
● ejecución de la instrucción, es lineal (se ejecutan de forma consecutiva las
instrucciones que están en direcciones contiguas)y forma un bucle infinito
Esto significa que la unidad de control esta continua e ininterrumpidamente
realizando esta secuencia.
e. Dibuje la estructura y sus componentes:
a. Multiprocesador

b. Multicomputador

2.
a. Describa características de la multitarea
● Un SO multitarea o multiproceso permite que coexistan varios procesos activos a la
vez.El SO se encarga de ir repartiendo el tiempo del procesador entre los procesos,
para que todos ellos avancen en su ejecución.Este se basa en 3 características:
○ paralelismo real entre E/S y procesador:
○ alternancia entre procesos de fases de E/S y de procedimiento
○ memoria principal capaz de almacenar procesos
b. Que es el entorno de un proceso
Consiste en un conjunto de variables que se le pasan a un proceso en el momento
de su creación, está formado por una tabla NOMBRE-VALOR que se incluye en la
pila del proceso.
Ejemplo en UNIX:
PATH=/usr/bin:/home/pepe/bin
TERM=vt100
HOME=/home/pepe
PWD=/home/pepe/libros/primero
TIMEZONE=MET

c. Que es un proceso
Es un programa en ejecución, de forma más precisa es como la cpu es gestionada
por el SO

d. A que se le denomina cambio de contexto


Cuando se pasa de modalidad usuario a kernel o al revés, cuando se produce una
interrupción se cambia de contexto. (Modalidad kernel ←-(cambio de contexto)----
>modalidad usuario)
Se produce cuando aparece una interrupción, entonces se debe realizar los
siguientes pasos:
-salvar el estado del procesador en el correspondiente bcp(bloque de control de
procesos)
-utilizar el tratamiento de interrupciones
Al conjunto de estas 2 tareas se le llama cambio de contexto

e. Porque está formado el estado del procesador


Está formado por el contenido de todos sus registros, estos son:
● Registros generales. De existir registros específicos de punto flotante
también se incluyen
● Contador del programa
● Puntero de pila
● Registro(s) de estado
● Registros especiales. Como puede ser el RIED(registro identificador de
espacio de direccionamiento)

f. Describa la planificación con expulsión


El SO quita la CPU al proceso que está en estado de ejecución aunque este no lo
solicite.esta solución permite controlar el tiempo de ejecución de un proceso, pero
exige un reloj que interrumpe periódicamente.

g. Que es POSIX
Interfaz estándar de sistemas operativos de IEEE.
Objetivo: portabilidad de las aplicaciones entre diferentes plataformas y sistemas
operativos.
NO es una implementación. Sólo define una interfaz

h. Describa el estado zombie


Es un proceso que ha completado su ejecución pero aún tiene una entrada en la
tabla de procesos, permitiendo al proceso que lo ha creado leer el estado de su salida

3.
a. Cual es el propósito y el funcionamiento de la familia de llamadas al sistema
exec.
● El exec cambia el programa de un proceso
● Devuelve -1 en caso de error, en caso contrario no retorna.
● Cambia la imagen de memoria del proceso.
● El mismo proceso ejecuta otro programa.
● Los ficheros abiertos permanecen abiertos
● Las señales con la acción por defecto seguirán por defecto, las señales con
manejador tomarán la acción por defecto.

b. Escriba un programa que genere un proceso cada 1 segundo. El número de


procesos a crear son 5
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
void main(){
int pid,pid1,pid3,pid2;
pid = fork();
if(pid == 0){
pid1=fork();
if(pid1 == 0){
pid2=fork();
if(pid2 != 0){ wait();}
}
else{ wait();}
}
else{
wait();
pid3=fork();
if(pid3 != 0){ wait();}
}
printf("soy %d\n", getpid());
exit(1);
}

c. Cual es el propósito y el funcionamiento de la llamada al sistema wait


● Devuelve el identificador del proceso hijo o -1 en caso de error.
Permite a un proceso padre esperar hasta que termine un proceso hijo. Devuelve el
identificador del proceso hijo y el estado de terminación del mismo.

d. Escriba un programa que cambie la prioridad y los parámetros de planificación


del proceso

#include...
int main() {
struct sched_param sp;
printf("hola %i",sched_getscheduler(getpid()));
setpriority(0,0,10);
sp.sched_priority=sched_get_priority_max(SCHED_FIFO);
sched_setscheduler(0,SCHED_FIFO,&sp);
while(1);
}

e. Escriba un programa que cambie la prioridad y los parámetros de un thread

#include...
int main(){
int rc;
int newprio = 20;
pthread_t tid;
pthread_attr_t attr;
struct sched_param param;

rc = pthread_attr_init (&attr);
rc = pthread_attr_getschedparam (&attr, &param);
(param.sched_priority)++;
rc = pthread_attr_setschedparam (&attr, &param);

param.sched_priority = newprio;
}

PP2 2016
1.
a. Explica cómo la instrucción read de un pipe se bloquea

b. Explique cómo la instrucción write de un pipe se bloquea

c. De qué forma se expande el heap de un proceso y como se disminuye

d. De qué forma se expande el stack de un proceso y como se disminuye


e. Describa la gestión del espacio swap
La gestión de memoria swap es lo que se conoce como gestión de memoria virtual. La
diferencia entre la real y virtual es que esta última utiliza espacio en la unidad de
almacenamiento, entonces cuando la memoria real se agota, el sistema utiliza la
memoria de intercambio para poder realizar las tareas. el Swap se le considera una
partición del disco que almacena imágenes de procesos.

f. Describa la asignación de marcos de páginas


La manera más fácil de dividir m marcos entre n procesos consiste en otorgar a cada uno
una parte igual, m/n marcos. Por ejemplo, si hay 93 marcos y 5 procesos, cada proceso
recibirá 18 marcos. Los tres marcos sobrantes pueden usarse como depósito de marcos
libres. A este esquema se le llama asignación equitativa.

No podemos asignar más del total de marcos libres. También hay un número mínimo de
marcos que pueden asignarse. Este número mínimo está definido por la arquitectura del
conjunto de instrucciones(máquina).

g. Describa el tratamiento del fallo de página


MMU detecta el fallo
• Tratamiento de excepción
– Si dirección inválida –› Aborta proceso o le manda señal
– Si no hay ningún marco libre (consulta tabla. marcos)
• Selección de víctima (Alg. de reemplazo): pág P marco M
– Marca P como inválida
• Si P modificada (bit Mod de P activo)
– Inicia escritura P en mem. Secundaria (swap)
– Hay marco libre (se ha liberado o lo había previamente):
• Inicia lectura de página en marco M
• Marca entrada de página válida referenciando a M
• Pone M como ocupado en T. marcos (si no lo estaba)
• Fallo de página puede implicar dos operaciones en disco

h. Explique el algoritmo FIFO, de segunda oportunidad(reloj) y LRU


FIFO (first input first output).
De la segunda oportunidad o reloj: evita que una página muy utilizada sea eliminada
por llevar mucho tiempo en residente
LRU (Least Recently Used): se reemplaza la que no ha sido ocupada hace más
tiempo.

i. En qué consiste la hiperpaginación


Gracias a la memoria virtual, se produce un aumento del grado de
multiprogramación al no ser necesario que todo el mapa de memoria de un proceso
esté en memoria principal para poder ejecutarlo. Este aumento implica una mejora
en el rendimiento del sistema, pero si el grado de multiprogramación es demasiado
alto el número de fallos de página se dispara y el rendimiento del sistema baja
drásticamente. A esta situación se le llama hiperpaginación.
j. Describa el mapa de memoria de un proceso(regiones) y que caracteriza a
cada una de ella
Las secciones que presenta el mapa de memoria inicial del proceso se
corresponden básicamente con las secciones del ejecutable más la pila inicial del
proceso.
•Código: Región compartida de lectura/ejecución. Es de tamaño fijo (el indicado en la
cabecera del ejecutable). EL soporte de esta región está en la cabecera
correspondiente del ejecutable.
•Datos con valor inicial: es una región privada ya que cada proceso que ejecuta un
determinado programa necesita de una copia propia de las variables del mismo. Es
de lectura/escritura de tamaño fijo (indicado en la cabecera del ejecutable). El
soporte esta en la región correspondiente en el ejecutable.
•Datos sin valor inicial: Región privada de lectura/escritura y de tamaño fijo. No tiene
soporte en el ejecutable ya que su contenido inicial no es relevante.
•Pila: Región privada de lectura/escritura de tamaño variable. Servirá de soporte
para almacenar los registros de activación de las llamadas a funciones (variables
locales, parámetros, dirección de retorno, etc). Esta región crece hacia las
direcciones mas bajas del mapa de memoria.

k. Que es el conjunto de trabajo y conjunto residente


● Conjunto de trabajo: conjunto de páginas que están siendo usadas en un proceso
● Conjunto residente: conjunto de páginas de un proceso que están alojadas en un
marco de memoria principal.

l. Describa proximidad referencial y espacial


La proximidad referencial es la característica que hace viable la jerarquía de memoria, de
ahí su importancia. En términos globales, la proximidad referencial establece que un
programa en ejecución utiliza en cada momento una pequeña parte de toda la información
que usa.
de forma más específica es para ver la orden de ejecución de una secuencia de
instrucciones según sus la distancia en las direcciones de memoria que contienen a estas
instrucciones, la proximidad referencial tiene 2 facetas: proximidad espacial y temporal
proximidad espacial: Si un elemento es referenciado los elementos cuyas direcciones están
próximas tenderán a ser referenciados pronto.

4. Implemente un programa que utilice la zona swap de disco


main()
int*p,i,j
p=malloc(1024*sizeof(int))
for( i=0;i<1024*sizeof(int));i++{
p[i]=malloc(1024*sizeof(int));
}
for(j=0;j<1024*sizeof(int),j++){
p[i]=j
}
PP2 2017
1.
a. Considere la siguiente traza de ejecución de un proceso y una memoria de 4
marcos 1 2 3 4 4 5 2 3 4 6 7 8 8 6 1 9 10 3 Cuántos fallos de páginas ocurren
con FIFO, LRU y Reloj?

b. Explique la anomalía de Belady que se presenta en FIFO


Al aumentar el número de marcos aumenta el número de fallos de página
c. Explique el concepto de proximidad de referencia
Esta propiedad permite que un proceso genere muy pocos fallos aunque tenga en memoria
principal solo una parte de su imagen de memoria (conjunto residente). El objetivo del
sistema de memoria virtual es intentar que la información que está usando un proceso en un
determinado momento (conjunto de trabajo) esté residente en memoria principal. O sea, que
el conjunto residente del proceso contenga a su conjunto de trabajo

d. explique detalladamente quien detecta el fallo de página y como se resuelve


El fallo de página es detectado por la cpu cuando un proceso necesita acceder a una página
que no están en memoria principal , el sistema operativo se encarga de transferirla desde la
memoria secundaria. Si al intentar traer la página desde memoria secundaria se detecta que
no hay espacio en la memoria principal (no hay marcos libres), será necesario expulsar una
página de la memoria principal y transferirla a la secundaria. Por tanto, las transferencias
desde la memoria principal hacia la secundaria se realizan normalmente por expulsión. El
algoritmo para elegir qué página debe ser expulsada se denomina algoritmo de reemplazo.
e. Diferencia entre sistema de gestión de memoria basada en paginación y
basado en segmentación
El sistema de gestión de memoria basada en paginación establece páginas todas
con una determinada capacidad de memoria (estática) mientras que el que se basa
en segmentación define segmentos de memoria no necesariamente del mismo
tamaño.

2.
a. Explique la propiedad bloqueante que tiene la llamada al sistema mq_send y
mq_recieve

b. Escriba en pseudocódigo la implementación de las llamadas al sistema


sem_wait y send_post (es lo mismo que la que viene pero lo tube bueno)
#include…
declaracion de semaforo y variable(s) compartidas
main()
inicializar semaforo
si el proceso es el hijo
sem_wait(semaforo) //bloquea el otro proceso(padre)
sem_pos(semaforo) //libera el otro proceso
operaciones con variables compartidas
en caso del que proceso sea el padre
sem_wait(semaforo) //bloquea al proceso siguiente(hijo)
operaciones con variables compartidas
sem_pos(semaforo)
FIN
c. Describa el siguiente programa
sem_t mutex;int x=0;
main(){
sem_init(&mutex,0,1);
if(fork()==0){
sem_wait(&mutex);
x=x+1;
sem_pos(&mutex);
}
else{
sem_wait(&mutex);
x=x-1;
sem_pos(&mutex);
}
}
el codigo esta compartiendo recursos entre 2 procesos paralelos(padre e hijo) hace uso de
semaforos posix para evitar abrazo mortal, si el proceso es el hijo se bloquea al padre y se
hace la operacion x=x+1, en caso contrario si es el padre se bloquea al hijo y se realiza la
operacion x=x-1 la variable x se inicializa en 0 como primero se va al padre hara la
operacion y x=-1 luego sera el proceso hijo que volvera hacer x=0
3. Describa el siguiente programa
void main(void){
mqd_t mutex;
struct mq_attr attr;
char c;
attr.mq_maxmsg = 1;
attr.mq_msgsize = 1;
mutex =mq_open("MUTEX",O_CREAT|O_RDWR,0777,&attr);
if(fork()==0){
for(;;){
mq_receive(mutex,&c,1,0);
func1();
mq_send(mutex,&c,1,0);
}
}
else{
for(;;){
mq_receive(mutex,&c,1,0);
func2();
mq_send(mutex,&c,1,0);
}
}
}

PP2 RECUPERATIVA 2017


1.
a. Cual es el tamaño de una página
Potencia de 2 y múltiplo del tamaño del bloque de disco
Entre 2K y 16K
2.

3.

PP3 2016
1.
a. Explique la E/S programada, por interrupción y por DMA
● E/S programada: La transferencia de información entre un periférico y el procesador
se realiza mediante la ejecución de una instrucción de E/S.
● E/S por interrupción: El procesador envía la orden de E/S al controlador de
dispositivo y no espera, se dedica a otras tareas hasta que llega una interrupción del
dispositivo que indica que se ha realizado la operación solicitada.
● E/S por DMA: Evita el uso de la CPU transfiriendo los datos directamente entre los
dispositivos de E/S y la memoria

b. Describa las características de un dispositivo de bloques


● Acceso a nivel de bloque, secuencial o aleatorio
● Mandatos: leer, escribir, buscar, …
● E/S directa o a través del servidor de ficheros
● Acceso posible a través de ficheros proyectados en memoria
● Ejemplo: discos y cintas

c. Describa la función de un driver


Permiten que el Sistema Operativo (Windows, Linux, Mac OS, etc) se comunique
con el hardware o dispositivos que componen el computador. Sin controladores, el
hardware que conecte al equipo (por ejemplo, una tarjeta de vídeo o una cámara
web) no funcionará correctamente.

d. En qué modalidad de ejecución realiza su tarea un driver


Se ejecuta en modo kernel

e. Describa el siguiente despliegue del comando fdisk -l


Lista los distintos dispositivos y el tipo de sistema de cada disco.

f. Explique el siguiente código

2.
a. Comando: cat /home/laboratorio/msg.c Describa en términos de i-nodes de
que forma el SO alcanza el archivo msg.c
b. Considere un disco con tamaño de bloque de 4 Kbytes. De qué forma el SO a
través de inode direcciona un archivo de 512 Mbytes
c. Considere un disco con tamaño de bloque de 4 Kbytes. De qué forma el SO a
través de inode direcciona un archivo de 16 Mbytes
Un bloque puede direccionar 4 KB / 4 = 1024 direcciones de bloque. En
consecuencia, el i-node direcciona los 10 primeros bloques directamente. A través
del direccionamiento indirecto simple se pueden direccionar 1024 * 1024, es decir 1
Mbytes. En consecuencia a través del direccionamiento indirecto doble bastaría
direccionar los 15 restante Mbytes ( menos los 10 bloques direccionados
directamente a través del i-node.
d. Describa cada parte de un sistema de archivos linux proyectado en un disco

e. Cual es la razón por la que un SO considera un bloque como unidad de


almacenamiento y no un sector
f. Describa el flujo de datos de la instrucción read (fp, buffer, TAM) en un sistema
de archivo ext4 linux con caché de bloque

g. Describa 2 políticas/algoritmos de volcado (escritura) de caché


● Escritura inmediata (write-through): se escribe cada vez que se modifica el bloque.
No hay problema de fiabilidad, pero se reduce el rendimiento del sistema

● Escritura retrasada (delayed-write), que consiste en escribir a disco los bloques de


datos modificados en la caché de forma periódica cada cierto tiempo (30 segundos
en UNIX).
–Compromiso entre rendimiento y fiabilidad.
–Reduce la extensión de los posibles daños por pérdida de datos.
–Los bloques especiales se escriben inmediatamente al disco.
–No se puede quitar un disco del sistema sin antes volcar los datos de la
caché

h. Que diferencia hay entre el Sistema de archivo virtual y el módulo de


organización de archivos
● S.A. Virtual: interfaz de llamadas de entrada/salida del sistema y de pasar al módulo
de organización de archivos la información necesaria para ejecutar los servicios
pedidos por los usuarios.
● Proporciona el modelo del archivo del sistema operativo y los servicios de archivos.

3.
a. Que es un socket
Un socket es punto final de comunicación (dirección IP y puerto)
Representa un extremo de una comunicación bidireccional con una dirección
asociada

b. Diferencia la conexión TCP y UDP


● TCP
Orientado a conexión
Garantiza que los datos se entregan en el orden en el que se envían
● UDP
Protocolo de datagramas no orientado a conexión.
Protocolo no fiable (Los paquetes se pueden perder, duplicar, recibir en orden
distinto al enviado)

c. Diferencia un SO en Red de un SO Distribuido


Los sistemas distribuidos comparten recursos sin que el usuario se de cuenta de
este proceso, mientras que los sistemas operativos en red requieren dirección ip de
la otra máquina para exista la comunicación.

d. Características de un middleware
● Servicios y protocolos estandarizados: Sistemas abiertos
● Ofrecen servicios no incluidos en el SO (servicios de ficheros distribuidos,
servicios de nombres, ...)
● Facilitan el desarrollo de aplicaciones distribuidas
● Independientes del HW y del SO subyacente.

e. Que necesita conocer de un proceso servidor, un proceso cliente para poder


conectarse con él

PP3 2017
1.
a. Diferencias entre driver, controlador y dispositivo. De un ejemplo de cada uno
● Dispositivo o periférico: Elementos que se conectan a la unidad central de proceso a
través de las unidades de entrada/salida.
● Controlador o unidad de E/S: Se encargan de hacer la transferencia de información
entre la memoria principal y los periféricos.
Son el componente electrónico a través del cual se conecta el dispositivo de E/S.
● Driver: programa que maneja al controlador.

b. Planificadores de disco FIFO, SCAN y CSCAN


● FIFO: algoritmo del primero en entrar primero en salir, que procesa los elementos de
la cola en orden secuencial.Esta estrategia tiene la ventaja de ser equitativa, porque
toda petición se acaba sirviendo y, además las peticiones se sirven en el orden
recibido.
● SCAN: El movimiento del brazo empieza siempre en un extremo del disco y continúa
hasta el otro. Allí se cambia el sentido y se vuelve el otro extremo
● CSCAN: Las cabezas se mueven de un extremo a otro del disco y luego vuelven al
principio. No se atienden peticiones mientras las cabezas vuelven a la posición
inicial

c. Desventajas que puede presentar el planificador de disco que hace la


búsqueda al sector más cercano
Solicitudes muy alejadas mueren de inanición.
Cuando ese sector se aproxima a la cabeza, el dispositivo intenta restablecer el
camino de comunicación de vuelta a la máquina. Si la unidad de control o el canal
están ocupados con otra operación de E/S, el intento de volver a conectarse falla y
el dispositivo debe rotar una revolución completa antes de que pueda intentar
volverse a conectar, a lo que se denomina un fallo de RPS

d. Cómo mediría usted el tiempo tal de transferencia de una petición de E/S en un


disco (williamStalling 505)

e. Diferencias entre una E/S síncrona y asíncrona


El modo asíncrono se utiliza para optimizar el rendimiento de la aplicación, siempre
que sea posible. Con la E/S asíncrona, una aplicación inicia una operación de E/S
prosiguiendo su ejecución mientras se lleva a cabo la petición de E/S. Con la E/S
síncrona, la aplicación se bloquea hasta que se completa la operación de E/S.

2.
a. Describa un i-node
un I-node es una estructura propia del sistema de archivos, posee toda la
información necesaria del archivo, menos el nombre y su contenido real. Contiene
Autor, tiempos de acceso, líneas de servicios, entre otros.

b. Como direcciona una archivo de 1 Gbytes


c. Como el SO hace la búsqueda del archivo /home/rvega/progr.c
Hace una busqueda con un estructura de arbol donde la raiz sera home luego buscara el
camino (path) hacia el archivo atraves de los nodos de esta estructura como el camino es
unico se recorre el arbol buscando los nombre de los nodos como parte de home buscara
en los subdirectorios rvega, luego dentro de rvega buscara en los subdirectorios hasta
encontrar prog.c
d. Describa los algoritmos de volcado de Cache.

● Instantáneo: Se actualiza cada vez que se modifica.


● Cerradura: Cada vez que se finaliza la tarea se devuelve información con los
bloques modificados.
● Atrasado: Se realiza periódicamente.

e. Estructura de un sistema de archivo


Permite organizar la información dentro de los dispositivos de almacenamiento secundario
en un formato inteligible para el sistema operativo.

f. Estructura de un servidor de archivo


Para proporcionar un acceso eficiente y sencillo a los dispositivos de almacenamiento,
todos los sistemas operativos tienen un servidor de archivos que permite almacenar, buscar
y leer datos fácilmente

sist de archivo virtual:se encarga de proporcionar la interfaz de E/S del sistema y de pasar
la información necesaria para ejecutar los servicios pedidos por el usuario
modelo de organización de archivos:proporciona el modelo de archivo del SO y los
servicios de archivos.Aquí es donde mediante algoritmos se trasladan sus direcciones
lógicas a sus direcciones físicas
servidor de bloques: se encarga de emitir los mandatos genéricos para leer y escribir
bloques a los manejadores de dispositivos
manejador de dispositivos: su función es recibir ordenes de E/S de alto nivel y traduce al
formato que entiende el controlador de dispositivo

3.
a. Implemente un programa que lea un archivo mediante acceso directo

b. Implemente un programa que proteja mediante cerrojos una zona de 1 Kbytes


a partir del byte 100( desplazado desde el comienzo del archivo)

c. Describa qué hace el siguiente programa y cómo funciona:


#include <linux/module.h>
#include <linux/kernel.h>
int init_module(void){
printk(“<1>Hola mundo por estamos al aire\n”);
return 0;
}
void leer_dip(void){
lee();
}
void cleanup_module(void){
printk(“<1>Adios mundo cruel por fin fuera\n”);
}
La función init_module es ejecutada cuando se instala el driver, el printk es una
función que se ejecuta en el kernel, Cuando se ejecuta el driver ya sea que el
dispositivo detecte algún evento o algo se realiza el leer_dip, cuando se desinstala el
driver (cleanup_module) se ejecuta la función printk con el mensaje Adios …

PP3 Recuperativa 2017


1.-
a) Qué es el controlador de dispositivo o driver?
es un programa informático que permite al sistema operativo interactuar con un
dispositivo.

b) En qué componente del sistema de E/S se llevan a cabo las siguientes tareas:
○ Traducción de bloques lógicos a bloques de dispositivo.
○ Escritura de mandatos al controlador del dispositivo.
○ Traducir los mandatos de E/S a mandatos del dispositivo.
○ Mantener un caché de bloques de E/S.
En el manejador de dispostivos
c) describa cómo el i-node direcciona un archivo.
Direcciona cada segmento del
archivo donde si se llena las primeras
10 direcciones se direcciona a una
tabla que contiene 10 direcciones
más, si aun falta informacion se
direcciona a una tabla de tablas que
contienen más direcciones y si
todavía faltan se direcciona a una
tabla de tablas de tablas donde cada
dato apunta a la dirección de
memoria de los segmentos del
archivo.

d) Explique las diferencias entre acceso directo e indexado.


En el acceso directo el archivo se considera como un conjunto de registros,cada uno
de los cuales puede ser un byte,mientras que en el acceso indexado se ocupan
listas con un campo clave o más datos del archivo.
El acceso directo es el que contiene la dirección del segmento de archivo, el
indexado es el que direcciona a una tabla que cada elemento apunta a otro que
tiene la dirección del segmento.

2.-
a) Cuál es la diferencia entre la semántica de co-utilización de UNIX y la de
versiones.
● Semántica UNIX (POSIX)
Las escrituras son inmediatamente visibles para todos los procesos con el archivo abierto.
Los procesos pueden compartir archivos. Si existe relación de parentesco pueden compartir
el puntero. La co-utilización afecta también a los metadatos.

● Semántica de versiones
Las actualizaciones se hacen sobre copias con nº versión.
Sólo son visibles cuando se consolidan versiones.
Sincronización explícita si se requiere actualización inmediata

b) Qué es un archivo inmutable. De un ejemplo de uso.


Es un archivo que no puede ser modificado por ejemplo el archivo que contiene las
direcciones de los diversos archivos del sistema operativo, si este mutara se podría
perder información del sistema operativo.
c) Qué problema tiene en usar bloques grandes.
d) En qué consiste el mapa de bit en el sistema de archivo ext4.
El mapa de bits indica que direcciones de memoria están siendo ocupadas:
Si están siendo ocupadas toma el valor de 1
Si no están siendo ocupadas toma el valor de 0.

3.-
a) Implemente un programa que copie un archivo en otro.

b) Escriba un driver que contenga las operaciones básicas.


#include …
init_module(void){
printk(“Hola mundo”);
}
clean_module(void){
printk (“Adios mundo”);
}
c) Escriba un programa que haga de forma excluyente la modificación de todo un
archivo.

EXAMEN 2016
1. Explique
a. Que es la multiprogramación
Capacidad de un computador para ejecutar varios programas mediante el uso
compartido de recursos

b. Diferencia entre ejecución batch y ejecución interactiva


Batch: se hace mediante un archivo con instrucciones descritas en él
Interactiva: requiere una interacción con el usuario

c. Que caracteriza un SO en tiempo real y un SO en tiempo compartido


Tiempo real: las respuestas deben producirse en períodos de tiempo cortos y
especificados previamente
Tiempo compartido:se debe repartir el procesador entre todos los procesos
d. Muestre la jerarquía de directorio de Linux
Directorio principal raíz “/”
/home usuarios
/bin ejecutables
/dev dispositivos

e. Que función cumple el proceso init en Linux


Primer proceso tras la carga del kernel, genera los demás procesos
Al cerrar el sistema, mata los procesos y detiene el procesador

f. Que es el tiempo de búsqueda y tiempo de latencia en un disco


Búsqueda: tiempo que tarda el brazo del disco para mover las cabezas hasta el
cilindro que contiene el sector deseado
Latencia: tiempo de espera adicional para que el disco gire hasta ponerse sobre el
sector deseado

g. Qué son las llamadas al SO, cual es la idea que sean POSIX
Mecanismo usado por una aplicación para solicitar un servicio al SO.
POSIX: estándar para portar las aplicaciones a código fuente

h. Qué son los procesos demonios en Linux y que caracteriza su nombre


Son procesos que se ejecutan en segundo plano, mayoritariamente son servicios.
Estos procesos no mueren, deben estar siempre activos, y están a la espera de
algún evento.
No hacen el trabajo, lanzan otros procesos o procesos ligeros

i. En qué consiste NFS y como se instala


Es un servicio de archivos distribuido para compartir ficheros
Instalación: apt-get install nfs

j. En qué situación usa sudo


Cuando se quiere realizar operaciones que se no están permitidas a los usuarios
comunes

k. Que función cumple la MMU (unidad de gestión de memoria)


Es el gestor del uso de memoria del SO, es la encargada de la traducción de las
Direcciones lógicas en Direcciones Físicas

l. En qué consiste la política de volcado de caché que utiliza Linux


Optimizan la gestión de información en la memoria caché.

m. Que es un controlador
Interfaz entre el dispositivo y el bus de la CPU

n. Que es un intercambio en gestión de memoria


Se basa en usar un disco o parte de un disco como respaldo de la memoria
principal. Cuando no caben en memoria todos los procesos activos, se elige un
proceso residente y se copia en swap su memoria.
2. Implemente mediante semáforos POSIX el problema del productor-consumidor
3. Implemente un servidor TCP para un sistema distribuido que atienda sus
peticiones generando un thread
4. Implemente un driver sólo con sus operaciones de instalación y desinstalación
#include <linux/module.h>
#include <linux/kernel.h>
int init_module(void){
printk(“Hola mundo”);
return 0;
}
void clean_module(void){
printk (“Adios mundo”);
}