Tarea de Servidores 2 -7 de Abril

15
 1 TAREA Sistemas Operativos 2004 - Prácticos - Introducción 1. ?Cuales son las dos funciones principales de un Sistema Operativo?  *GESTIÓN DE RECURSOS: control de discos duros, CDROM y DVDROM, gestión de periféricos (teclado, ratón, etc...), asignación de cantidades de memoria, etc... *INTERFAZ DE USUARIO: nos referimos al modo que tiene el ordenador de presentar la información al usuario. *ADMINISTRACIÓN DE ARCHIVOS : el sistema operativo de encarga de guardar los datos en distintas unidades de almacenamiento (disco duro, disquetes, CD's y DVD's), así como de ecuperarlos cuando el usuario se lo pida. *GESTIÓN DE TAREAS: los SO actuales son multitarea, es decir, pueden realizar varias tareas y ejecutar varios programas a la vez. Así, mientras navegamos por Internet o escribimos una carta, el antivirus está vigilando por si se produce algún ataque, o nuestro messenger está comprobando continuamente si alguno de nuestros contactos se ha conectado y nos ha enviado algún mensaje. 2. ?Que es la multiprogramacion? Se denomina multiprogramación a la técnica que permite que dos o más procesos ocupen la misma unidad de memoria principal y que sean ejecutados al “mismo tiempo” (seudo -paralelismo, en una única CPU sólo puede haber un proceso a la vez) en la unidad central de proceso o CPU. 3. Una de las razones por las q ue las Interfaces Graficas de Usuario (GUI) fueron adpotadas lentamente, fue por el costo del hardwa re necesario para soportarlas. ?Cuanta RAM de video se necesita para una terminal modo texto de 80x25 (columnas, lineas)? 4000 bytes de RAM de vídeo ?Cuanta para una pantalla grafica de 1024x768 con 24 bits de profundidad de color?  2MB de RAM únicamente para contener la imagen. En 1980 el costo de la memoria era de u$s5/KB, ?Cuanto cuesta en la actualidad?  Memoria Ram 1gb Ddr Pc2100 Pc2700 $295 Memoria Udimm Ddr3 1333mhz 4gb Adata $349 Memoria Ram Ddr3 8gb Pc3-10600 1333mhz $870 Memoria Udimm Ddr2 667mhz 2gb Adata $399 4. ?Cuales de las siguiente s instrucciones deberian permitirs e en modo kernel? 1. Deshabilitar todas las interrupciones 2. Leer el Reloj de Tiempo Real (RTC) 3. Escribir el RTC 4. Cambiar el mapa de memoria 5. Un microprocesador tiene un pipeline de 4 etapas. Todas las etapa demoran 1n seg en procesar. ?Cuantas intrucciones por segundo (IPS, KIPS, MIPS) puede e jecutar este micro?  

description

Tarea

Transcript of Tarea de Servidores 2 -7 de Abril

Page 1: Tarea de Servidores 2 -7 de Abril

5/16/2018 Tarea de Servidores 2 -7 de Abril - slidepdf.com

http://slidepdf.com/reader/full/tarea-de-servidores-2-7-de-abril 1/15

 

1 TAREA Sistemas Operativos 2004 - Prácticos -Introducción 

1.  ?Cuales son las dos funciones principales de un Sistema Operativo? *GESTIÓN DE RECURSOS: control de discos duros, CDROM y DVDROM, gestión de periféricos (teclaratón, etc...), asignación de cantidades de memoria, etc...

*INTERFAZ DE USUARIO: nos referimos al modo que tiene el ordenador de presentar la informaciónusuario.*ADMINISTRACIÓN DE ARCHIVOS : el sistema operativo de encarga de guardar los datos en distinunidades de almacenamiento (disco duro, disquetes, CD's y DVD's), así como de ecuperarlos cuando el usuase lo pida.*GESTIÓN DE TAREAS: los SO actuales son multitarea, es decir, pueden realizar varias tareas y ejecuvarios programas a la vez. Así, mientras navegamos por Internet o escribimos una carta, el antivirus evigilando por si se produce algún ataque, o nuestro messenger está comprobando continuamente si algunonuestros contactos se ha conectado y nos ha enviado algún mensaje.

2.  ?Que es la multiprogramacion?

Se denomina multiprogramación a la técnica que permite que dos o más procesos ocupen la misma unidad memoria principal y que sean ejecutados al “mismo tiempo” (seudo-paralelismo, en una única CPU sólo puehaber un proceso a la vez) en la unidad central de proceso o CPU.

3.  Una de las razones por las que las Interfaces Graficas de Usuario (GUI) fueron adpotadaslentamente, fue por el costo del hardware necesario para soportarlas. ?Cuanta RAM de video senecesita para una terminal modo texto de 80x25 (columnas, lineas)?

4000 bytes de RAM de vídeo?Cuanta para una pantalla grafica de 1024x768 con 24 bits de profundidad de color? 2MB de RAM únicamente para contener la imagen.En 1980 el costo de la memoria era de u$s5/KB, ?Cuanto cuesta en la actualidad? Memoria Ram 1gb Ddr Pc2100 Pc2700 $295Memoria Udimm Ddr3 1333mhz 4gb Adata $349Memoria Ram Ddr3 8gb Pc3-10600 1333mhz $870Memoria Udimm Ddr2 667mhz 2gb Adata $399

4.  ?Cuales de las siguientes instrucciones deberian permitirse en modo kernel?1.  Deshabilitar todas las interrupciones2.  Leer el Reloj de Tiempo Real (RTC)3.  Escribir el RTC4.  Cambiar el mapa de memoria

5.  Un microprocesador tiene un pipeline de 4 etapas. Todas las etapa demoran 1nseg en procesar.?Cuantas intrucciones por segundo (IPS, KIPS, MIPS) puede ejecutar este micro? 

Page 2: Tarea de Servidores 2 -7 de Abril

5/16/2018 Tarea de Servidores 2 -7 de Abril - slidepdf.com

http://slidepdf.com/reader/full/tarea-de-servidores-2-7-de-abril 2/15

 

 6.  La MMU normalmente compara la direccion virtual entrante con el Registro Limite, provocan

una excepcion cuando la primera se excede. Un dise#o alternativo consiste en primero sumardireccion virtual al Registro Base y despues comparar el resultado con la direccion fisica dRegistro Limite. ¿Son equivalentes estos metodos? No Kernel debe coordinarse con el hardwaretraducción direcciones virtuales a físicas.

+ Forma de realizar traducción depende del hardware.+ Partes del sistema UNIX que tratan con ella serán dependientes de la máquina.+ Micronúcleo.

?Son equivalentes en velocidad?7.  Cuando un programa de usuario efectua un SysCall para leer o escribir un archivo en disco, este prove

el archivo necesita, un puntero a un buffer de datos y la cantidad de datos. Entonces, el control pasa alSO, el que llama al driver apropiado. Supongamos que el driver le da la orden al disco y termina cuanllega una interrupcion. En caso de una lectura, obviamente el programa que llamo tiene que permanecbloqueado (pues no hay datos). ?Es lo mismo para una escritura a disco?, es decir, ?Necesita bloquearprograma que pidio la escritura hasta que se complete la transferencia?

8.  De condiciones de falla para cada uno de los SysCall que siguen: fork(), exec() y unlink().

Exec()= Retornan -1 si hay error. Si se ejecuta con éxito no devuelve ningún valor dado que el código deprograma se sustituye por el del nuevo programa y se eliminan todas las variables del programa.fork()= fork causa la creación de un nuevo proceso copia (casi exacta) del proceso padre. RETORNO si lallamada tiene éxito retorna: al proceso hijo pid del hijo al proceso padre si fracasa devuelve -1unlink()= Borra una entrada en la tabla de un directorio. pathname representa un fichero ya existente cuyaentrada se quiere borrar. Si se elimina la última entrada existente en algún directorio que hace referencia a unnodo concreto el sistema elimina el fichero de ese i-nodo. RETORNO Retorna 0 si no hay error y -1 si hayalgún error.

9.  ?Puede la siguente llamada a sistema retornar en count un valor menor que nbytes? Explicar.

count = write(fd, buffer, nbytes) 

La llamada write escribe un número de bytes dado por count en el fichero cuyo file descriptor viene dado porfd. Los bytes a escribir deben encontrarse a partir de la posición de memoria indicada en buf.

RETORNO

Retorna el número de bytes escrito o -1 si hay un error.

10.  Indique la diferencia escencial entre un dispositivo de caracteres y uno de bloques.carácter por carácter o como un conjunto de datos en un bloque de tamaño predefinido. Las terminalimpresoras y módems asíncronos son dispositivos modo carácter. Cuando se usa el modo caracter se envía ua la vez y hace eco en la otra terminal.

Los manejadores (device drivers) de disco duro y la mayoría de manejadores, usan el modo bloque, porque ees el camino más rápido para enviar o recibir grandes cantidades de información.

11.  Laboratorio 2 :)12.  Tome un *nix personal (Linux, OpenBSD, MINIX, Darwin, etc.) que pueda romper sin

problemas. Escriba un shell script que intente crear un numero ilimitado de procesos hijos yobserve lo que sucede. Nota: no intente esto en un laboratorio de acceso publico.

shell actúa como un intermediario entre el sistema operativo y el usuario gracias a líneas de comando que esteúltimo introduce.

Page 3: Tarea de Servidores 2 -7 de Abril

5/16/2018 Tarea de Servidores 2 -7 de Abril - slidepdf.com

http://slidepdf.com/reader/full/tarea-de-servidores-2-7-de-abril 3/15

 

 13.  El comando strace da un registro (traza) de todas las SysCalls que llama el comando qu

le sigue. Obtenga las trazas de los siguientes comandos, tratando de identificar todos los SysCalque producen (el comando man puede ayudar). 

1.  strace cat /etc/hosts2.  strace cat (CTRL-D puede ayudar a terminar)3.  strace echo 14.  strace mozilla (busquese una silla comoda)

Intente identificar patrones comunes que correspondan a codigos de inicializacion y terminacion de procesos

2 TAREASistemas Operativos 2004 - Prácticos –  Procesos 

Procesos e Hilos1.  ¿Por que un hilo dejaria voluntariamente la CPU con un thread_yield si sabe que despues de es

puede que se quede sin CPU para siempre?Otra llamada común relacionada con los threads es thread_yield, que permite que un thread abandonevoluntariamente la CPU para permitir que se ejecute algún otro thread. Tal llamada es importante ya que noexiste ninguna interrupción de reloj que dé soporte al tiempo compartido como en el caso de los procesos. Potanto para los threads es importante ser corteses y ceder voluntariamente la CPU de cuando en cuando para dla oportunidad de que se ejecuten otros threads. Hay otras llamadas que permiten a un thread esperar a que otthread termine algún trabajo, o a que un thread anuncie que ha terminado algún trabajo, etc.

2.  En un sistema con hilos, ?hay un solo stack por hilo o un stack por proceso cuando se usan hilosen espacio de usuario? ?Y si se usan hilos a nivel de kernel?

el núcleo mantiene una tabla de threads que sigue la pista de todos los threads en el sistema. Cuando un threadesea crear un nuevo thread o destruir uno que ya existe, hace una llamada al núcleo, que es el que se encargaefectivamente de su creación o destrucción actualizando la tabla de threads del sistema.

3.  Para el siguiente programa decidir que valores se pueden imprimir.

 

int a, *ptr_b;a = 0;ptr_b = malloc(sizeof(int)); *ptr_b = 0;if (fork()!=0) {

a = 2;*ptr_b = 4;printf("%d %d\n", a, *ptr_b);

} else {

a = 5;*ptr_b = 7;printf("%d %d\n", a, *ptr_b);

}

Page 4: Tarea de Servidores 2 -7 de Abril

5/16/2018 Tarea de Servidores 2 -7 de Abril - slidepdf.com

http://slidepdf.com/reader/full/tarea-de-servidores-2-7-de-abril 4/15

 

Pensar en el mismo codigo, solo que en vez de procesos tenemos hilos.

a, *ptr_b 

Condiciones de Carrera

4.  Dado el siguiente par de procesos que insertan datos en el spooler de impresion, donde cola es unespacio de memoria compartida y libre es una variable local a cada proceso.

P0:

.libre := cola->fin+1;cola->buffer[libre] := job4;cola->fin := libre;.

P1:

.

libre := cola->fin+1;cola->buffer[libre] := job5;cola->fin := libre;.

1.  Dar una planificacion o escenario que produce la perdida de un trabajo.Situaciones en las que dos o más procesos leen o escriben en un área de memoria compartida y el resultafinal depende de los instantes de ejecución de cada uno. Esto se soluciona impidiendo que más de un proceacceda simultáneamente a las variables compartidas. Se soluciona garantizando la exclusión mutua.

2.  Dar una planificacion o escenario que funciona correctamente.Imaginemos que nuestro directorio de spool tiene un número muy grande de entradas, numeradas 0, 1, 2, cada una de ellas capaz de contener un nombre de fichero. Imaginemos también que se tienen dos variabcompartidas, out, que apunta al siguiente fichero a imprimir, e in, que apunta a la siguiente entrada libre endirectorio. Estas dos variables pueden caber perfectamente en un fichero de dos palabras disponible para todlos procesos. En un cierto momento, las entradas de la 0 a la 3 están vacías (al haberse imprimido ya ficheros correspondientes) y las entradas de la 4 a la 6 están ocupadas (con los nombres de los ficheencolados para su impresión). Más o memos simultáneamente, los procesos A y B deciden cada uno de elmandar a la cola de impresión un fichero.

3.  ?Cuantas planificaciones existen para estas 3+3 lineas de codigo? ?Cuantas son correctascuantas producen problemas? (determine el %)

5.  Se tienen 2 procesos P0 y P1, P0 con N acciones atomicas y P1 con M acciones atomicas. Calcularcuantos escenarios posibles de ejecucion se pueden dar en un entorno concurrente.

6.  Considere los procesos P0 y P1, con un valor inicial de x=0. ?Cuales son los valores finales de x?Si ahora consideramos que x:=x+1 no es atomico a nivel de ensamblador y se compila en una secuencia deaccesos a memoria y operaciones de la ALU, equivalentes al siguiente multiprograma. ?Cuales son los valorefinales de x?

Page 5: Tarea de Servidores 2 -7 de Abril

5/16/2018 Tarea de Servidores 2 -7 de Abril - slidepdf.com

http://slidepdf.com/reader/full/tarea-de-servidores-2-7-de-abril 5/15

 

1.  Regiones Criticas

7.  Mostrar que agregando un re-testeo de lock=0 luego del busy waiting en metodo de la variablecandado, no soluciona nada.

variable entera turno, inicializada a 0, indica a quien le corresponde el turno de entrar en la región críticaexaminar o actualizar la memoria compartida. En un primer momento, el proceso 0 inspecciona turno, obserque vale 0 y entra en su región crítica. El proceso 1 también se encuentra con que turno vale 0 y por lo tan

espera en un bucle vacío comprobando continuamente turno para ver cuando pasa a valer 1. La comprobacicontinua de una variable hasta que contenga algún valor determinado se denomina espera activa (buwaiting). Usualmente debe evitarse, ya que derrocha tiempo de CPU. La utilización de la espera activa sóloapropiada cuando existan unas expectativas razonables de que la espera va a ser muy corta. Un cerrojo qutiliza espera activa se denomina un spin lock.

8.  Mostrar que en alternancia estricta el proceso P0 puede impedir al P1 entrar a la CS aunque P0este fuera de ella.

Solución de PetersonLa Instrucción TSL (Test and Set Lock)

9.  Deshabilitar interrupciones no funciona para regiones criticas anidadas (una dentro de la otra).Reescribir Begin/EndRegion para arreglar este problema.

10.  Generalizar la alternancia estricta a 3 procesos. Generalizarla a n.11.  Demostrar de manera rigurosa que el algoritmo de Peterson no adolece del problema de

progreso de la alternancia estricta.12.  {Dificil} Demostrar de manera rigurosa que el algoritmo de Peterson cumple con la propiedad

de seguridad de la Region Critica (#proc_in_cs≤1). 

Page 6: Tarea de Servidores 2 -7 de Abril

5/16/2018 Tarea de Servidores 2 -7 de Abril - slidepdf.com

http://slidepdf.com/reader/full/tarea-de-servidores-2-7-de-abril 6/15

 

 

13.  ¿Sigue cumpliendo con la propiedad de seguridad el algoritmo de Peterson si intercambiamoslas 2 primeras asignaciones de su BeginRegion? Demostrar o dar contraejemplo.

14.  Implementar un spin lock con TestInc.

Primitivas de sincronizacion

15.  Dados 3 procesos P0, P1 y P2 que realizan las acciones A0, A1 y A2, poner P's y V's desemaforos antes y despues de las acciones para sincrinizarlos de manera tal que se ejecuten ensecuencia A0,A1,A2. Especificar el/los valor/es inicial/es de el/los semaforo/s.

16.  Implementar utilizando semaforos la Region Critica N-1, es decir dentro de la region criticapuede haber a lo mas N-1 procesos.

17.  {Dificil} Implemente semaforos generales (el semaforo almacena valores arbitrariusando semaforos binarios (solo pueden valer 0 o 1).

Los semáforos que se inicializan con el valor 1 y que se utilizan para asegurar que tan solo un proceso pueentrar en su región crítica en cada momento, se denominan semáforos binarios. La exclusión mutua egarantizada si cada proceso hace un bajar justo antes de entrar en su región crítica, y un subir justo después abandonarla.

18.  Implementar semaforos utilizando monitores.Un monitor es una colección de procedimientos, variables y estructuras de datos que están todos agrupados juntos en un tipo especial de módulo o paquete. Los procesos pueden llamar a los procedimientos de unmonitor siempre que quieran, pero no se les permite acceder directamente a las estructuras de datos internas dmonitor desde procedimientos declarados fuera del monitor.

Page 7: Tarea de Servidores 2 -7 de Abril

5/16/2018 Tarea de Servidores 2 -7 de Abril - slidepdf.com

http://slidepdf.com/reader/full/tarea-de-servidores-2-7-de-abril 7/15

 

 

19.  {Dificil} La sincronizacion en monitores usa variables de condicion y dos operacionesespeciales, wait y signal. Una forma mas general de sincronizacion son las esperas por condicion

con auto-señalizacion, donde escribimos await CondicionBooleana para bloquear el proceso hasque la condicion se cumpla. Por ejemplo el BeginWrite del problema de lectores y escritores seresume a escribir await nr=0∧ nw=0 dentro del monitorClaramente este esquema es mas general y abstracto que los monitores de Hoare y Brinch-Hansen, pero no se usan. ?Por que?Ayuda: pensar en la implementacion. 

El otro uso de los semáforos es la sincronización. Los semáforos entrada_llena yentrada_vacia son necesarios para garantizar que ocurran o no ciertas secuencias de sucesos. En este cconcreto, esos semáforos aseguran que el productor detiene su ejecución cuando el búfer está lleno, y queconsumidor detiene su ejecución cuando el búfer está vacío. Este uso es diferente de la exclusión mutua.

20. 

{Mediano} El problema de lectores y escritores puede ser formulado de varias formas respectocuando cada categoria de procesos puede empezar. De manera cuidadosa describa 3 variacionesdistintas del problema, cada una favoreciendo (o desfavoreciendo) alguna categoria de procesos. Paracada variacion, especifique que sucede cuando un lector o escritor esta listo para acceder a la base dedatos y que sucede cuando un proceso ha terminado de usar la base de datos.

21.  Tenemos un Baño Unisex donde puede haber de manera excluyente varones y mujeres.Mediante semaforos sincronice la entrada y la salida del baño por parte de varones y mujeres(EntraVaron, SaleVaron, EntraMujer, SaleMujer) de manera que se cumpla con el invariante nv=0 ∨   

nm=0, es decir que no se mezclen.Este problema clasico de sincronizacion tambien se conoce con el nombre de problema del Puente deUna Via, y modela el acceso a un recurso que puede ser compartido por muchos procesos de un tipo o

(excluyente) de otro.Planificadores

22.  Los planificadores RR mantienen una lista de todos los procesos listos para correr, dondecada proceso aparece exactamente una vez. ?Que pasaria si hubiera 2 o mas apariciones de unproceso en la lista de procesos para correr? ?Para que serviria?

Si sólo hay una CPU disponible, es necesario hacer una elección para determinar cual de esos procesos será esiguiente que se ejecute. La parte del sistema operativo que realiza esa elección se denomina el planificador(scheduler), y el algoritmo que se utiliza para esa elección se denomina el algoritmo de planificación.

Page 8: Tarea de Servidores 2 -7 de Abril

5/16/2018 Tarea de Servidores 2 -7 de Abril - slidepdf.com

http://slidepdf.com/reader/full/tarea-de-servidores-2-7-de-abril 8/15

 

 

3 TAREA Sistemas Operativos 2004 - Prácticos -Deadlock 

Procesos e Hilos 

1.  Estudiantes trabajando en sus computadoras personales de un laboratorio envian sus archivospara imprimir hacia un server que hace spooling en el disco duro. ?Bajo que condiciones puedeocurrir un deadlock si el espacio de disco para el print spool esta limitado?

¿Como se puede evitar dicho deadlock?Se reduce la probabilidad de interbloqueos del spool:

•  Proporcionando un espacio en disco considerablemente mayor que el necesario, preferentemencon asignación dinámica.

•  Limitando los spoolers de entrada para que no lean más trabajos cuando los archivos de spoolllegan a cierto nivel de saturación.

2.  En el deadlock tipico de 2 procesos y 2 recursos, ?Cambiaria la situacion si se devuelven losrecursos en otro orden?

3.  Las trayectorias de recursos o diagramas de procesos bidimensionales tienen trayectoriashorizontales o verticales. ?Cuando puede suceder que las trayectorias sean diagonales?

4.  ?Que es un deadlock de un solo proceso? ?Porque esta situacion no causa ninguna preocupaciodentro del Sistema Operativo?

Pueden ser utilizados solo por un proceso a la vez. Se le conceden al proceso que lo solicita y cuando sonliberados voluntariamente por ese proceso se asignan a otro proceso solicitante. Ej. Impresora.

Page 9: Tarea de Servidores 2 -7 de Abril

5/16/2018 Tarea de Servidores 2 -7 de Abril - slidepdf.com

http://slidepdf.com/reader/full/tarea-de-servidores-2-7-de-abril 9/15

 

Lab1: Observando el Comportamiento de Linux Introducción

Podemos pensar el kernel de Linux como una colección de funciones y estructuras de datos. Estas estructude datos (o variables de kernel) contienen la visión del kernel respecto al estado del sistema, donde cainterrupción, cada llamada al sistema, cada fallo de protección hacen que este estado cambie. Inspeccionanlas variables del kernel podemos obtener información relevante a los procesos, interrupciones, dispositivsistemas de archivos, capacidades del hardware, etc.

Tareas

Parte A

Buscar información acerca de la estructura del directorio /proc, y averiguar los siguientes datos

•  Tipo y modelo de CPU.•  Versión del kernel.•  Tiempo en días, horas, minutos y segundos que han transurrido desde que se inició el sistema operativ•  Cuanto tiempo de CPU ha sido empleado para procesos de usuario, de sistema y cuando tiempo no se

usó.

•  Cuanta memoria tiene y cuanta está disponible.•  Cuantos pedidos de lectura/escritura a disco se han realizado.•  Cuantos cambios de contexto han sucedido.•  Cuantos procesos se crearon desde que inició el sistema.

Estos datos se tomaron del servidor de alumnos:

El sistema de archivos /proc 

El kernel de Linux tiens dos funciones primarias: controlar el acceso a los dispositivos físicos del ordenadoestablecer cuándo y cómo los procesos interactuarán con estos dispositivos. El directorio /proc/  —  tambllamado el sistema de archivos proc — contiene una jerarquía de archivos especiales que representan el estaactual del kernel  — permitiendo a las aplicaciones y usuarios mirar detenidamente en la vista del kernel d

sistema.Dentro del directorio /proc/, se puede encontrar una gran cantidad de información con detalles sobre hardware del sistema y cualquier proceso que se esté ejecutando actualmente. Además, algunos de los archivdentro del árbol de directorios /proc/ pueden ser manipulados por los usuarios y aplicaciones para comunicarkernel cambios en la configuración.

Tipo y modelo de CPU.#cat /proc/cpuinfo

Page 10: Tarea de Servidores 2 -7 de Abril

5/16/2018 Tarea de Servidores 2 -7 de Abril - slidepdf.com

http://slidepdf.com/reader/full/tarea-de-servidores-2-7-de-abril 10/15

 

Versión del kernel.

$cat /proc/version

Tiempo en días, horas, minutos y segundos que han transurrido desde que se inició el sistemaoperativo.$cat /proc/uptime

Cuanta memoria tiene ycuanta está disponible.

#cat /proc/meminfo

Page 11: Tarea de Servidores 2 -7 de Abril

5/16/2018 Tarea de Servidores 2 -7 de Abril - slidepdf.com

http://slidepdf.com/reader/full/tarea-de-servidores-2-7-de-abril 11/15

 

Cuantos cambios de contexto han sucedido. Cuantos procesos se crearon desde que inició el sistema.#cat /proc/stal

Type:GenuineIntelModel: Intel(R) Atom(TM) CPU N455 @ 1.66GHzKernel: version 2.6.38-8-genericUpTime: 49004.74UserTime:SysTime:IdleTime:13517.02TotalMem:1014448 kB

FreeMem: 235536 kBDisk:Context: 8303335Processes:3705

Lab2: Un Baash 

IntroducciónLa interfaz más tradicional de un sistema operativo UNIX-like (*NIX) es el intérprete de línea de comandos

Este programa, que ejecuta en modo usuario, funciona en cualquier *NIX que soporte interface de caracteressu función es aceptar comandos ingresados por entrada estandar (teclado), parsearlos, ejecutar la órden ymostrar el resultado en salida estandar (pantalla), para luego volver a repetir el proceso.

Page 12: Tarea de Servidores 2 -7 de Abril

5/16/2018 Tarea de Servidores 2 -7 de Abril - slidepdf.com

http://slidepdf.com/reader/full/tarea-de-servidores-2-7-de-abril 12/15

 

Operación BásicaLa sintáxis básica del intérprete de comandos más usual de *NIX, conocido como Bourne shell (Bourne againshell - bash, en Linux) es la siguiente,

comando argumento1 argumento2 ...

donde el comando y los argumentos son secuencias de caracteres separados por uno o más espacios.

La semántica dice que al presionar Enter el shell buscará el comandodentro de los comandos internos y si no

encuentra tratará de buscar un archivo ejecutable con ese nombre, siguiendo las reglas de camino de *NIX ocomponiendo el comando a la secuencia de la variable de entorno PATH, para luego crear un proceso hijo quecargará y ejecutará el contenido de ese archivo con los argumentos correspondientes.

Los comandos internos son manejados directamente por el shell, sin requerir de ningún archivo externo. Unejemplo es el comando de cambio de directorio cd, el cual no se encuentra como archivo ejecutable en ningúlugar del árbol de directorio (el comando find /bin /sbin /usr/bin /usr/sbin -perm +400 -type f name cdno devuelve nada).Conman builtinobtenemos una lista de todos los comandos internos implementados enbash.

Si el comando no es un builtin, el shell deberá buscar un archivo dentro de su sistema de archivos, cargarlo yejecutarlo pasándole los argumentos. El problema principal es dónde buscar este archivo. Existen tres formas

•  Camino absoluto•  Camino relativo•  Búsqueda en secuenciaPATH

Cuando el comando comienza con/, este se toma como un camino absoluto dentro del árbol del filesystem, shell cargará en memoria y ejecutará el comando. En cambio si el comando comienza con el nombre de undirectorio,.o.., se debe seguir las reglas usuales de camino relativo de *NIX, cargar y ejecutar el archivocomando, relativo al camino actual (ver comandopwd).

Otro mecanismo entra en juego cuando el comando no comienza con un delimitador de camino absoluto orelativo. La variable de entornoPATH, que puede ser leida con el comandoenvo conecho $PATH, sirve de

secuencia de caminos absolutos o relativos, separados por ':' que serán prefijados a commando hasta encontrun archivo que pueda ser leído y ejecutado.

Usemos el archivo ejecutable/bin/dateque nos proporciona la fecha y hora del sistema para ejemplificar lomecanismos de camino absoluto, relativo y secuencia PATH.

Ejercicios

1.  ¿Cómo ejecutamos un archivo que se llama exactamente como un  builtin?Si el archivo es un ejecutable, basta hacer un "CreateProcess". Si el archivo no es un ejecutable, tienes quehacer un "ShellExecuteEx" con el "verbo" (lpVerb) correcto. Usualmente, "open" será suficiente. Con esto

dejas que Windows decida qué programa debe abrir el archivo en particular.enable: habilitar o deshabilitar los comandos builtin.

2.  ¿Por qué las recomendaciones de seguridad indican que es peligroso tener ./ en PATH al más puestilo DOS? 

El comando PATH permite indicar al MS-DOS donde ha de buscar un archivo de comandos si este no seencuentra en el directorio activo. Puede indicar uno o mas directorios, el directorio raíz o cualquier otrosubdirectorio y cualquier unidad de disco.

Page 13: Tarea de Servidores 2 -7 de Abril

5/16/2018 Tarea de Servidores 2 -7 de Abril - slidepdf.com

http://slidepdf.com/reader/full/tarea-de-servidores-2-7-de-abril 13/15

 

El comando PATH tiene tres parámetros:PATH <UNIDAD> <RUTA>Ejemplo :A:\>PATH C:\DOS; C: ;C:\WINDOWS

3.  Supongamos que existen 2 comandos posibles dentro de la secuencia que contien PATH, donde elprimero en la secuencia no está marcado como ejecutable y el segundo si. ¿Qué hace el intérprete bashejecuta el segundo o informa que el primero no tiene permiso de ejecución? (incorporte esta semánticbaash)

4.  Indique qué sucede cuando se tiene un directorio en el pwd actual con el mismo nombre que unarchivo ejecutable en el PATH. ¿Dice que no puede ejecutar un directorio o ejecuta el comandoque encontró? (siga esta forma en baash) 

PATHes la ruta de directorios donde bash busca archivos ejecutables, se separan unas rutas de otras con elcaracter

5.  Obtenga la lógica más sencilla que unifique los tres tipos de búsqueda.6.  ¿Podemos poner directorios relativos en PATH? (haga lo propio con baash) 

Rutas relativas: Son aquellas que se contruyen a partir del directorio en el que nos encontramos.Como ejemplo si tenemos la siguiente estructura de directorios: /directorio1/directorio2/directorio3Si estamos en el directorio2 y queremos ir al directorio3 se pondría:

cd directorio3Si ahora queremos ir al directorio1 se haría de la siguiente forma:cd ../../ Cuando se pone ../ se baja un nivel en la estructura de directorios. En el ejemplo de arriba bajariamos primeroal directorio2 y luego del directorio2 al directorio1.

Ejercicios

1.  Investigue cuales son los comandos internos para manejo de procesos en background de bash Ejemplos de estos comandos son cd, chdir, alias, set o export.

2.  En el ejemplo de arriba el operador '&' funciona como operador de composición paralela. ¿Cues el operador de composición secuencial en Bourne shell? 

operaciones lógicas: AND (-a) y OR (-o), string y enteros sobre los que puede establecer comparaciones.Además si usamos la tcsh (es la única ventaja de usar esta shell)

3.  Investigue como bash forma el árbol de procesos cuando ejecutamos cmd1 & cmd2 & cmd3 & ... &cmdN. Piense la respuesta y luego utilice pstree para corroborarla. Aplique los resultados de suobservación a baash.

4.  Indique cuantas letras 'a' debería imprimir el siguiente programa. Generalice.fork(); fork(); fork(); printf("a");

 

Lab3: TADs sincronizados 

Objetivos•  Comprender y utilizar los mecanismos de sincronización de granularidad fina que provee POSIX

Page 14: Tarea de Servidores 2 -7 de Abril

5/16/2018 Tarea de Servidores 2 -7 de Abril - slidepdf.com

http://slidepdf.com/reader/full/tarea-de-servidores-2-7-de-abril 14/15

 

(PThreads).•  Solucionar problemas típicos de concurrencia: condiciones de carrera, abrazos mortales, inhanición, e•  Implementar TAD sincronizados.

Ejercicios

•  Predecir y comprobar los comportamientos posibles quitando alguno o ambos pthread_join.•  Comprobar los interleavings que se producen dependen de la velocidad y factor de carga de la CPU.

Deberían observar diferencias de ejecución entre las HP nuevas y las viejas.

•  Forzar otros interleavings utilizandosched_yield.•  Si ponemos M y N de manera tal que los hilos tarden un tiempo considerable y corremos nuestroprograma, mientras que en otra terminal observamos los procesos que se están ejecutando. ¿Cuántosson? ¿Por qué?Observar que ahora si se producen interleavings entre los 2 mensajes.

Remarcamos 2 aspectos de este programa: la compilación condicional a través del uso de las directivas delpreprocesador#define,#undef,#ifdefy#endif, y las variables globales.La compilación condicional, nos permite en este caso generar 2 versiones diferentes de nuestro código unacon información de debug y la otra sin ella, cambiando #define __DEBUGpor#undef __DEBUG. Luegoveremos como es posible obtener un mecanismo similar mejorando la legibilidad del código.El uso de variables globales es una condición necesaria para el uso de memoria compartida entre los hilos, amenos que pasemos a las funciones que ejecutan los hilos referencias a espacios de memoria pedidos en elmontículo o heap.

Si compilamos y ejecutamos nuestro ejemplo que podemos llamarprogramTopology, veremos que aunque lsonda muestra pocos cambios en x, esta siempre se mantiene en el rango [0,2]. La falta de cambios se debenuevamente a la poca cantidad de interleavings que se producen, donde el efecto se nota más en procesadoresrápidos y poco utilizados por el SO.

Para generar más interleavings podemos inundar desched_yield()nuestro programa. Sin embargo nunca sproducen los interleavings que muestran quex:=x+1no es atómico, pues en este caso el invariante delmultiprograma 0<=x<=2 ya no vale. Notar que jamás le declaramos al compilador C que esta instrucción fue

atómica, asi que puede ser compilada a una sola o a una secuencia (interrumpible) de intrucciones.A fin de simular el caso del incremento no atómico suele ser necesario dividir explicitamente los incrementosdecrementos en 3 instrucciones.

Ejercicios

•  ¿Por qué no es posible compartir entre los hilos una variable declarada dentro del main()?¡Comprobarlo! 

los tipos por valor no se almacenan siempre en el thread stack como se viene diciendo en muchos sitios, solo almacenan ahí cuando son variables locales y expresiones intermedias.

• 

Hay dos posibles causas para que el planificador no interrumpax:=x+1, una puede ser simplemente qeste hecho resulte altamente improbable y la segunda es que la compilación genere una instrucciónatómica a nivel del microprocesador. Investigue sobre este hecho en diversas arquitecturas. (Ayuda: cgcc -Sgeneramos el código ensamblador intermedio donde podemos corroborar este último hecho,quienes estén interesados, se pueden perparar más ejercicios).

•  ModificarprogramTopology.cpara que los incrementos no sean atómicos y comprobar que la asercipuede no cumplirse para ciertos interleavings.

•  ¿Por qué al activar las opciones de optimización de código -O, el programa anterior podría dejar de

Page 15: Tarea de Servidores 2 -7 de Abril

5/16/2018 Tarea de Servidores 2 -7 de Abril - slidepdf.com

http://slidepdf.com/reader/full/tarea-de-servidores-2-7-de-abril 15/15

 

producir los interleavings requeridos para que no valga el invariante, o para peor imprimeconstantemente 0. Intente reproducir estos resultados.