TGR Entrada/salida (Sistemas Operativos) int main(){ int fd; fd= open("salida.txt",o_wronly O_CREAT, 0664);

Documentos relacionados
Apartado TGR Puntuación. No Presentado. EXAMEN DE SISTEMAS OPERATIVOS (Grado en Ing. Informática) 20/1/2014.

Sistemas Operativos sesión 12: tuberías

Apartado TGR Puntuación. No Presentado. EXAMEN DE SISTEMAS OPERATIVOS (Grado en Ing. Informática) 17/1/2013.

ENTRADA-SALIDA. 2. Dispositivos de Carácter: Envía o recibe un flujo de caracteres No es direccionable, no tiene operación de búsqueda

Sistemas Operativos II Junio 2006 Nombre:

Entrada/Salida. Contenidos: 1. Definición y objetivos 2. Estructura del susbsitema de entrada/salida. 3. Políticas de gestión de disco

Estructura de los dispositivos de E/S.

1. Para qué sirve un Descriptor de Dispositivo? Qué funciones del sistema operativo acceden a ellos y para qué?

Función del sistema operativo

6. Entrada y Salida Explicación de la interfaz entre el computador y el mundo exterior.

Tarea #6. Gestión de E/S y Planificación de Discos

Ingeniería Informática. Curso 3º. Sistemas Operativos Examen Final. TEORIA. 4 de Septiembre de 2009

Práctica 9. Organización del Computador 1 2do. Cuatrimestre de 2005

Práctica 7 Dispositivos de Entrada/Salida

Capítulo 4. Entrada/Salida

1) Se dispone de un computador de 32 bits con la siguiente estructura:

Tema 3: Entrada/Salida de Ficheros

Clase Práctica: Entrada Salida

Capítulo 4 Entrada/Salida

Sistemas Operativos Grado Ingeniera Informática UDC. Enero 2016 Sólo puede usar lápiz, bolígrafo y calculadora. Tiempo máximo para todo el examen: 3h

El tiempo de búsqueda es de 3 + 0,04 x ms, siendo x el número de cilindros a recorrer.

Entrada/Salida. Nano Semelman Maximiliano Geier Maximiliano Sacco. Sistemas Operativos, 2c DC - FCEyN - UBA

Práctica 7. Organización del Computador 1 2do. Cuatrimestre de 2005

Acceso Directo a Memoria

FACULTAD DE INFORMATICA SISTEMAS OPERATIVOS 3º de Informática.

Introducción a Sistemas Operativos: Ficheros

Arquitectura de Computadores

Práctica 1: Intérprete de mandatos. Sistemas Operativos Área de Arquitectura y Tecnología de Computadores

Estructura de Computadores. Contenido. Sistema de E/S. 7.- E/S y dispositivos periféricos

Gestión de Entrada-salida

Facultad de Ingeniería Industrial y de Sistemas v1.0 MA781U GESTION DE DISPOSITIVOS E/S

Práctica 2. Implementación de un driver básico para la transmisión de datos a través de la UART.

PROBLEMAS TEMA 3: Unidad de Entrada/Salida

GESTION DE ENTRADA Y SALIDA

ALMACENAMIENTO Y OTROS ASPECTOS DE LA ENTRADA/SALIDA. Ancho de banda máximo posible: una palabra por ciclo de reloj de manera sostenida, es decir:

Examen final de teoría QT

TEMA 6: GESTIÓN DE ENTRADA/SALIDA

Sistemas Operativos. Curso 2016 Estructuras de dispositivos masivos de datos

1 ( 3,5 puntos) Responda, justificando sus respuestas, a las siguientes cuestiones:

Archivos en lenguaje C

Sistemas operativos. Tema 9: Gestión n de E/S

Tema 4: SISTEMAS DE ENTRADA/SALIDA. Un computador no puede estar formado sólo por la CPU y la memoria.

Entrada/Salida y bloqueo mutuo. Dr. Alonso Ramírez Manzanares 19-Oct-2010

Clase Práctica de Perifericos

Capítulo 1 Conceptos arquitectónicos

Arquitectura de Computadores

Sistemas Operativos: Programación de Sistemas. Curso Oscar Déniz Suárez Alexis Quesada Arencibia Francisco J.

Relación de problemas. Sistemas Operativos II

Examen Final de SO Grau

Biblioteca de sistema

Sist s em e a m s s O per e ativos o. s Unidad V Entrada Sali l d i a.

Sistema Operativo. Repaso de Estructura de Computadores. Componentes Hardware. Elementos Básicos

Arquitectura de Computadores. Apellidos, Nombre:

Examen final de teoría de SO-grado

Operaciones de E/S en ANSI C

DMA y Discos. María Elena Buemi. 15 de junio María Elena Buemi () DMA y Discos 15 de junio / 27

TEMA 3: EL LENGUAJE C: PRESENTACIÓN

Sistemas Operativos Tema 2: Estructura del computador José Miguel Santos Alexis Quesada Francisco Santana

Sistemas Operativos. Grado Ingeniería Informática. TGR Procesos.

TEMA 3. CONCEPTOS FUNDAMENTALES DEL NIVEL DEL SISTEMA OPERATIVO. Definición y objetivos de un S.O

2 Sea una unidad de disco duro de brazo móvil con las siguientes características:

Interfaces de Entrada / Salida

Práctica 8 - DMA y Almacenamiento Masivo

INT 21H Función 02H Salida de Carácter LLAMADA: AH = 02H DL = Código ASCII a enviar al dispositivo de salida. DEVUELVE: NADA.

SOLUCIONES A ALGUNOS DE LOS PROBLEMAS SOBRE SISTEMAS DE FICHEROS

Informática Electrónica Manejadores de Dispositivos (Device Drivers)

EJERCICIOS DE MEMORIA:

Concepto Concept s Los L nom res re d e e los h c eros: exter te n r os o o fí s fí ico nom re ú nico i del del ar chiv chiv o o o ficher ficher en

Eventos e interrupciones

Segundo control de teoría

2º Cuatrimestre MÓDULO 12: Introducción al Subsistema de Entrada/Salida. fc 2

Cuestionario almacenamiento en disco y gestión de memoria.

Taller de la memoria RAM

Paradigma de paso de mensajes

Ejercicios sobre tuberías

Si el fichero hashes existe, el script debe notificar el error y salir como corresponde. A continuación se muestra un ejemplo:

UNIVERSIDAD CARLOS III DE MADRID DEPARTAMENTO DE INFORMÁTICA GRADO EN INGENIERÍA INFORMÁTICA. ESTRUCTURA DE COMPUTADORES

Arquitectura de Computadores

Entrada y Salida de Archivos

Fundamentos de los Sistemas Operativos. Tema 1. Conceptos generales Estructura del computador y el SO

Ejercicios Jerarquía de Memoria

Plataformas de Tiempo Real

PROBLEMAS TEMA 2: Unidad de memoria Problemas propuestos en examen ORGANIZACIÓN DE MEMORIA

- Bajo que condiciones el algoritmo de planifiación de procesos FIFO (FCFS) resultaría en el tiempo de respuesta promedio más pequeño?

Bloque I: Principios de sistemas operativos

Sea el siguiente programa de nombre "c0p1" para copiar archivos (por simplicidad se ha eliminado todo control de errores): Se pide:

Tema III: Componentes de un Sistema Operativo

(5) Unidad 5. Entrada / Salida SISTEMAS BASADOS EN MICROPROCESADORES. Grado en Ingeniería Informática EPS - UAM

Sistemas Operativos. Trabajo Práctico N ō 6

La función de un SO en los sistemas de I/O, es manejar y controlar las operaciones y los dispositivos de I/O.

Sistemas Operativos Primer Recuperatorio Parcial 1

Dispositivos de I/O. El código destinado a manejar el I/O representa una fracción significativa de un sistema operativo.

REPRESENTACIÓN INTERNA DE FICHEROS

Facultad de Ingeniería Industrial y de Sistemas v1.1 MA781U CONCEPTOS INICIALES CASOS DE USO

SOLUCION EXAMEN junio 2006

Unidad 3. 3) Qué tipos de disquetes hay atendiendo a sus dimensiones y capacidad?

Aquesta segona part de l examen consta de 2 fulls. Heu de contestar en la mateixa fulla on es troba la pregunta.

Tema 6: Periféricos y entrada-salida

TEMA 7: Ficheros. TEMA 7: Ficheros Concepto de fichero

SUBSISTEMA DE ENTRADA / SALIDA. Tema 5. Estructura de Computadores OCW_2015 Nekane AzkonaEstefanía

Transcripción:

1. Sea el siguiente código TGR Entrada/salida (Sistemas Operativos) #include "includes.h" int realiza_trabajo(int fd, char *msg){ write(fd,msg,strlen(msg)); int realiza_trabajo_1(int fd){ realiza_trabajo(fd,"realizando Trabajo 1"); int realiza_trabajo_2(int fd){ realiza_trabajo(fd,"realizando Trabajo 2"); int main(){ int fd; fd= open("salida.txt",o_wronly O_CREAT, 0664); realiza_trabajo_1(fd); realiza_trabajo_2(fd); close(fd); Modifíquese dicho código para que todo lo que se escribiría en el chero salida.txt durante la llamada a la función realiza_trabajo_1, se muestre por la salida estándar (STDOUT_FILENO), pero que la función realiza_trabajo_2 siga almacenándo sus datos en el chero salida.txt.

2. Asúmase que tenemos un disco duro con 250 cilindros numerados del 0 al 249, cuya cabeza está sobre el cilindro 100 (atendiendo una petición de acceso previa) y se está moviendo en sentido ascendente (0 249). Si en el instante actual la cola de peticiones de acceso a cilindros contiene las peticiones: 99, 102, 125, 29, 247, 95, 110, 90, 198, 10, indíquese en qué orden se atenderán dichas peticiones si se utiliza un algoritmo de planicación: FCFS o FIFO: 99 SSTF: SCAN: C-SCAN: 3. En un momento dado, la cola de peticiones de E/S para acceder a cilindros de un disco duro contenía las peticiones: 88, 33, 18, 90. Desconocemos el cilindro que estaba siendo accedido antes de estas peticiones, pero sabemos que dichas peticiones fueron atendidas en el orden siguiente 88, 33, 18, 90. Indíquese si los siguientes algoritmos pudieron haber sido (o no) usados para la planicación del acceso al disco. Razónese brevemente la respuesta: algor. sí/no breve justicación de la respuesta FIFO: SSTF: SCAN:

4. Suponiendo que el chero chero.txt contiene: "ABCDEFGHIJKLMNOPQRSTUVWXYZ\n", y que el siguiente código no produce ningún error de ejecución: #include "includes.h" int lee1(int fd, char BUF[]) { read(fd,buf,1); read(fd,buf,3); int lee2(int fd, char BUF[]) { pread(fd,buf,1,0); pread(fd,buf,3,0); int lee3(int fd, char BUF[]) { struct iovec iov[2]; iov[0].iov_base= BUF; iov[0].iov_len= 1; iov[1].iov_base= BUF+1; iov[1].iov_len= 3; readv(fd,iov,2); int main(){ int fd = open("fichero.txt",o_rdonly); char BUF[6]= {'*','*','*','*','*','\0'); #ifdef CASO_A #ifdef CASO_B #ifdef CASO_C lee1(buf); lee2(buf); lee3(buf); #endif #endif #endif printf("%s",buf); close(fd); Muéstrese qué se imprime por pantalla en el printf si se llama a lee1(), lee2(), o lee3() respectivamente.

5. Dado el siguiente programa... l1: #include "includes.h" l2: int main(){ l3: int fd1= open("input.txt",o_rdonly); //existe en el directorio actual l4: int fd2= open("output.txt",o_wronly O_CREAT,0664); //se crea el fichero l5: dup (fd1); l6: close(stdout_fileno); // equivale a close(1) l7: close(stderr_fileno); // equivale a close(2) l8: dup (fd2); l9: close(stdin_fileno); // equivale a close(0) l10: printf("prueba"); l11: close(fd1);close(fd2); l12: exit(0); l13: De las siguientes armaciones, elija la correcta y justique su elección. A El programa produce un error porque el printf quiere escribir "prueba" en el chero "input.txt" que está abierto como de sólo lectura. B El programa imprime "prueba" por pantalla.

6. Indíquese qué sucede (¾Se escribe en pantalla?, ¾Se escribe en el chero "input.txt"? cuando el siguiente programa ejecuta printf("prueba") (línea 7). Justíquese brevemente su respuesta. l.1: #include "includes.h" l.2: int main(){ l.3: int fd1= open("input.txt",o_rdonly); //existe en el directorio actual l.4: close(stdout_fileno); //equivale a close(1) l.5: close(stderr_fileno); //equivale a close(2) l.6: dup (fd1); l.7: printf("prueba"); l.8: exit(0); l.9:

7. Para las siguientes sentencias indíquese con qué método(s) de entrada/salida (E/S) se relaciona (polling, E/S por interrupciones o E/S por DMA): Se genera una interrupción al nalizar una transferencia. Es la CPU la que realiza la transferencia de datos cuando estos están listos. La CPU debe suministrar al controlador el tipo de operación (lectura o escritura), la dirección de transferencia de datos y cantidad de bytes a transferir. Durante la transferencia de varios datos, la sincronización se consigue al preguntar la CPU al dispositivo si está listo. 8. Si vamos a transferir 1Mbyte a un dispositivo de E/S. ¾Quién generará más interrupciones durante dicha operación?. ¾Un controlador que use E/S programada (polling), otro que use E/S por interrupciones, u otro que use DMA?. Justique brevemente la respuesta. 9. Tengo un disco de 2 caras, con 80 cilindros y un total de 18 sectores por pista. Cada sector contiene 512 bytes (0.5Kbytes). Si lo he formateado usando bloques de 2Kbytes, ¾Cuántos bloques son accesibles para el Sistema Operativo?

1. Sea el siguiente código TGR Entrada/salida (Sistemas Operativos) #include "includes.h" int realiza_trabajo(int fd, char *msg){ write(fd,msg,strlen(msg)); int realiza_trabajo_1(int fd){ realiza_trabajo(fd,"realizando Trabajo 1"); int realiza_trabajo_2(int fd){ realiza_trabajo(fd,"realizando Trabajo 2"); int main(){ int fd; fd= open("salida.txt",o_wronly O_CREAT, 0664); //código de redirección int copia = dup(fd); close(fd); dup(stdout_fileno); realiza_trabajo_1(fd); //código para restaurar redirección close(fd); dup (copia); close(copia); realiza_trabajo_2(fd); close(fd); Modifíquese dicho código para que todo lo que se escribiría en el chero salida.txt durante la llamada a la función realiza_trabajo_1, se muestre por la salida estándar (STDOUT_FILENO), pero que la función realiza_trabajo_2 siga almacenándo sus datos en el chero salida.txt.

2. Asúmase que tenemos un disco duro con 250 cilindros numerados del 0 al 249, cuya cabeza está sobre el cilindro 100 (atendiendo una petición de acceso previa) y se está moviendo en sentido ascendente (0 249). Si en el instante actual la cola de peticiones de acceso a cilindros contiene las peticiones: 99, 102, 125, 29, 247, 95, 110, 90, 198, 10, indíquese en qué orden se atenderán dichas peticiones si se utiliza un algoritmo de planicación: FCFS o FIFO: 99 102 125 29 247 95 110 90 198 10 SSTF: 99 102 95 90 110 125 198 247 29 10 SCAN: 102 110 125 198 247 99 95 90 29 10 C-SCAN: 102 110 125 198 247 10 29 90 95 99 3. En un momento dado, la cola de peticiones de E/S para acceder a cilindros de un disco duro contenía las peticiones: 88, 33, 18, 90. Desconocemos el cilindro que estaba siendo accedido antes de estas peticiones, pero sabemos que dichas peticiones fueron atendidas en el orden siguiente 88, 33, 18, 90. Indíquese si los siguientes algoritmos pudieron haber sido (o no) usados para la planicación del acceso al disco. Razónese brevemente la respuesta: algor. sí/no breve justicación de la respuesta FIFO: sí Peticiones en estricto orden de llegada SSTF: no El 90 debería haber sido la segunda petición (tras atender 88 ) SCAN: sí El ascensor bajaba inicialmente 88, 33, 18, y al subir atiende 90

4. Suponiendo que el chero chero.txt contiene: "ABCDEFGHIJKLMNOPQRSTUVWXYZ\n", y que el siguiente código no produce ningún error de ejecución: #include "includes.h" int lee1(int fd, char BUF[]) { read(fd,buf,1); read(fd,buf,3); int lee2(int fd, char BUF[]) { pread(fd,buf,1,0); pread(fd,buf,3,0); int lee3(int fd, char BUF[]) { struct iovec iov[2]; iov[0].iov_base= BUF; iov[0].iov_len= 1; iov[1].iov_base= BUF+1; iov[1].iov_len= 3; readv(fd,iov,2); int main(){ int fd = open("fichero.txt",o_rdonly); char BUF[6]= {'*','*','*','*','*','\0'); #ifdef CASO_A #ifdef CASO_B #ifdef CASO_C lee1(buf); lee2(buf); lee3(buf); #endif #endif #endif printf("%s",buf); close(fd); Muéstrese qué se imprime por pantalla en el printf si se llama a lee1(), lee2(), o lee3() respectivamente. Lee1() imprime por pantalla: BCD**, pues el primer read hace BUF[0]=[A], pero a continuación, el segundo read lee [BCD], y sobreescribe BUF[0..2]=[BCD]. Lee2() imprime por pantalla: ABC**, pues el primer read lee la primera 'A' (BUF[0]=[A]), pero a continuación, el segundo pread lee [ABC] (de nuevo desde la posición 0), y sobreescribe BUF[0..2]=[ABC]. Lee3() imprime por pantalla: ABCD*, pues readv hace dos lecturas. En la primera, se lee el primer byte del chero y se guarda en BUF (BUF[0]=[A]). En la segunda lectura readv lee [BCD], y coloca ese contenido en BUFF+1, esto es, hace BUF[1..3]=[BCD].

5. Dado el siguiente programa... l1: #include "includes.h" l2: int main(){ l3: int fd1= open("input.txt",o_rdonly); //existe en el directorio actual l4: int fd2= open("output.txt",o_wronly O_CREAT,0664); //se crea el fichero l5: dup (fd1); l6: close(stdout_fileno); // equivale a close(1) l7: close(stderr_fileno); // equivale a close(2) l8: dup (fd2); l9: close(stdin_fileno); // equivale a close(0) l10: printf("prueba"); l11: close(fd1);close(fd2); l12: exit(0); l13: De las siguientes armaciones, elija la correcta y justique su elección. A El programa produce un error porque el printf quiere escribir "prueba" en el chero "input.txt" que está abierto como de sólo lectura. B El programa imprime "prueba" por pantalla. C. Habiendo cerrado 1 (línea 6) y 2 (línea 7) el dup(fd2) de la línea 8 duplica la referencia del descriptor fd2 que apunta al chero output.txt, y coloca dicho duplicado en la entrada 1 de la Tabla de Descriptores de cheros abiertos. Esto es una redirección del chero output.txt a la salida estándar. Por ello el printf de la línea 10 imprime prueba en el chero output.txt.

6. Indíquese qué sucede (¾Se escribe en pantalla?, ¾Se escribe en el chero "input.txt"? cuando el siguiente programa ejecuta printf("prueba") (línea 7). Justíquese brevemente su respuesta. l.1: #include "includes.h" l.2: int main(){ l.3: int fd1= open("input.txt",o_rdonly); //existe en el directorio actual l.4: close(stdout_fileno); //equivale a close(1) l.5: close(stderr_fileno); //equivale a close(2) l.6: dup (fd1); l.7: printf("prueba"); l.8: exit(0); l.9: El programa no escribe nada por pantalla ni en el chero input.txt. El motivo radica en que el printf quiere escribir prueba en el chero input.txt, que está abierto como de sólo lectura. Nótese que esto se debe a que en las líneas 4 y 6 se trata de redireccionar la salida estándar al chero input.txt (pero no es posible escribir en él por estar abierto en modo de sólo lectura)

7. Para las siguientes sentencias indíquese con qué método(s) de entrada/salida (E/S) se relaciona (polling, E/S por interrupciones o E/S por DMA): Se genera una interrupción al nalizar una transferencia. E/S por interrupciones y E/S por DMA. Es la CPU la que realiza la transferencia de datos cuando estos están listos. polling y E/S por interrupciones. La CPU debe suministrar al controlador el tipo de operación (lectura o escritura), la dirección de transferencia de datos y cantidad de bytes a transferir. E/S por DMA Durante la transferencia de varios datos, la sincronización se consigue al preguntar la CPU al dispositivo si está listo. polling 8. Si vamos a transferir 1Mbyte a un dispositivo de E/S. ¾Quién generará más interrupciones durante dicha operación?. ¾Un controlador que use E/S programada (polling), otro que use E/S por interrupciones, u otro que use DMA?. Justique brevemente la respuesta. El controlador que use Interrupciones, pues genera una interrupción cada vez que un dato es transferido, mientras que el DMA potencialmente podrán originar sólo una interrupción al nal de la transferencia. Por su parte polling no genera interrupciones. 9. Tengo un disco de 2 caras, con 80 cilindros y un total de 18 sectores por pista. Cada sector contiene 512 bytes (0.5Kbytes). Si lo he formateado usando bloques de 2Kbytes, ¾Cuántos bloques son accesibles para el Sistema Operativo? 2 caras x 80 cilindros ==>160 pistas 160 pistas x 18 sectores/pista x 0.5Kb/sector x 0.5 bloques/kb= 160x9x0.5 bloques = 720 bloques