El documento presenta un libro titulado "100 Ejercicios resueltos de Sistemas Operativos" escrito por José Ribelles Miguel, José Martínez Sotoca y Pedro García Sevilla del Departamento de Lenguajes y Sistemas Informáticos de la Universitat Jaume I. El libro contiene ejercicios prácticos de sistemas operativos organizados en 6 capítulos sobre procesos, comunicación y sincronización, gestión de archivos y memoria.
Autores:
José Ribelles Miguel
José Martínez Sotoca
Pedro García Sevilla
Edita: Publicacions de la Universitat Jaume I. Servei de Comunicació i Publicacions Campus del Riu Sec. Edifici Rectorat i Serveis Centrals. 07 Castelló de la Plana http://www.tenda.uji.es e-mail: publicacions@uji.es
Col·lecció Sapientia, 30 www.sapientia.uji.es
ISBN: 978-84-693-048-7
Este documento presenta un libro introductorio sobre informática. El libro cubre conceptos básicos de informática, representación de la información, la estructura física de los computadores, sistemas operativos y lenguajes de programación. El libro fue escrito por Cristóbal Pareja, Ángel Andeyro y Manuel Ojeda y publicado en 1994.
Este documento describe el desarrollo de la primera iteración del módulo de mantenedores para un sistema experto. Incluye diagramas de secuencia y actividades para los casos de uso de registrar modalidad, mención y alumno. También incluye prototipos de interfaz gráfica, modelo de base de datos y pruebas para validar el módulo de mantenedores.
Este documento describe la comarca de Los Monegros en Aragón, España. Detalla algunos de los lugares históricos y naturales de la región como las cuevas de San Caprasio, el monasterio de Villanueva de Sigena y las sabinas milenarias. Explica que el agua ha transformado esta tierra dura y salvaje en un hogar, y destaca la importancia del agua para los Monegros a través de infraestructuras como el azud de Lalueza.
El documento describe los procesos en Linux, incluyendo que cada proceso tiene un número de identificación único (PID), que el proceso que crea otro proceso se llama proceso padre y el creado proceso hijo. También describe las librerías estándar utilizadas en C para la entrada/salida, manejo de archivos y procesos, así como funciones como fork(), getpid(), getppid() y getuid() para crear y obtener información de procesos. Finalmente, incluye ejemplos de código C para imprimir información de procesos y crear
The SlideShare 101 is a quick start guide if you want to walk through the main features that the platform offers. This will keep getting updated as new features are launched.
The SlideShare 101 replaces the earlier "SlideShare Quick Tour".
Este documento presenta los apuntes de un curso de programación y métodos numéricos. Incluye secciones sobre elementos del sistema operativo Unix como ingresar al sistema, archivos y directorios, órdenes básicas, shells, editores, el sistema X Windows, internet, impresión y compresión. También incluye una breve introducción a C++ cubriendo la estructura básica de un programa, tipos de variables, operadores, control de flujo y más. El documento provee información detallada sobre el uso de la computadora y programación para estudiantes
Este manual del usuario describe las características y funcionalidades del programa XLogo. Explica cómo usar la interfaz gráfica, incluyendo el editor de procedimientos y las opciones de menú. También proporciona una lista detallada de las primitivas de XLogo para movimientos, operaciones matemáticas, bucles, y más.
Autores:
José Ribelles Miguel
José Martínez Sotoca
Pedro García Sevilla
Edita: Publicacions de la Universitat Jaume I. Servei de Comunicació i Publicacions Campus del Riu Sec. Edifici Rectorat i Serveis Centrals. 07 Castelló de la Plana http://www.tenda.uji.es e-mail: publicacions@uji.es
Col·lecció Sapientia, 30 www.sapientia.uji.es
ISBN: 978-84-693-048-7
Este documento presenta un libro introductorio sobre informática. El libro cubre conceptos básicos de informática, representación de la información, la estructura física de los computadores, sistemas operativos y lenguajes de programación. El libro fue escrito por Cristóbal Pareja, Ángel Andeyro y Manuel Ojeda y publicado en 1994.
Este documento describe el desarrollo de la primera iteración del módulo de mantenedores para un sistema experto. Incluye diagramas de secuencia y actividades para los casos de uso de registrar modalidad, mención y alumno. También incluye prototipos de interfaz gráfica, modelo de base de datos y pruebas para validar el módulo de mantenedores.
Este documento describe la comarca de Los Monegros en Aragón, España. Detalla algunos de los lugares históricos y naturales de la región como las cuevas de San Caprasio, el monasterio de Villanueva de Sigena y las sabinas milenarias. Explica que el agua ha transformado esta tierra dura y salvaje en un hogar, y destaca la importancia del agua para los Monegros a través de infraestructuras como el azud de Lalueza.
El documento describe los procesos en Linux, incluyendo que cada proceso tiene un número de identificación único (PID), que el proceso que crea otro proceso se llama proceso padre y el creado proceso hijo. También describe las librerías estándar utilizadas en C para la entrada/salida, manejo de archivos y procesos, así como funciones como fork(), getpid(), getppid() y getuid() para crear y obtener información de procesos. Finalmente, incluye ejemplos de código C para imprimir información de procesos y crear
The SlideShare 101 is a quick start guide if you want to walk through the main features that the platform offers. This will keep getting updated as new features are launched.
The SlideShare 101 replaces the earlier "SlideShare Quick Tour".
Este documento presenta los apuntes de un curso de programación y métodos numéricos. Incluye secciones sobre elementos del sistema operativo Unix como ingresar al sistema, archivos y directorios, órdenes básicas, shells, editores, el sistema X Windows, internet, impresión y compresión. También incluye una breve introducción a C++ cubriendo la estructura básica de un programa, tipos de variables, operadores, control de flujo y más. El documento provee información detallada sobre el uso de la computadora y programación para estudiantes
Este manual del usuario describe las características y funcionalidades del programa XLogo. Explica cómo usar la interfaz gráfica, incluyendo el editor de procedimientos y las opciones de menú. También proporciona una lista detallada de las primitivas de XLogo para movimientos, operaciones matemáticas, bucles, y más.
El proyecto integra la prevención en la gestión de la empresa para lograr que cada uno individualmente alcance un “hábito de trabajo seguro”. Además exige compromiso, trabajo en equipo, sistemas de trabajo y herramientas de gestión adecuadas.
Este documento es una guía de usuario para la biblioteca LliureX. Explica las funciones principales del sistema como realizar búsquedas en el catálogo, prestar y reservar documentos, gestionar usuarios y generar informes. También cubre temas como autoridades, difusión selectiva de información y administración del sistema. La guía proporciona instrucciones detalladas sobre cómo utilizar las diversas herramientas y módulos de la biblioteca LliureX.
Este documento proporciona una guía sobre comandos CISCO CCNA Exploration. Cubre temas como administración de dispositivos, seguridad, routing, switching, VLAN, protocolos de enrutamiento como RIP, EIGRP y OSPF, y servicios como DHCP, DNS, NAT y ACL. El documento está organizado en secciones con subtemas para cada área funcional de la red.
Este documento proporciona una guía sobre comandos CISCO CCNA Exploration. Cubre temas como administración de dispositivos, seguridad, routing, switching, VLAN, protocolos de enrutamiento como RIP, EIGRP y OSPF, así como servicios de red como DHCP, DNS, NAT y protocolos WAN como PPP y Frame Relay. El documento está organizado en secciones con subtemas para cada área funcional de la red.
Este documento proporciona una guía sobre comandos CISCO CCNA Exploration. Cubre temas como administración de dispositivos, rutas, conmutación, VLAN, protocolos de red y seguridad. Se divide en secciones de generalidades, administración/seguridad, rutas, conmutación y explica conceptos clave con detalles sobre protocolos y configuraciones comunes.
Este documento proporciona un manual básico de usuario para Guadalinex-edu, un sistema operativo educativo basado en software libre. Explica conceptos clave como TICs, software libre y propietario. Luego describe las principales características y herramientas de Guadalinex-edu, incluidas áreas de trabajo, organización de archivos, navegación web, correo electrónico, suites ofimáticas y herramientas de red. El manual está destinado a usuarios principiantes para ayudarlos a familiarizarse con Guadalinex
Este documento presenta una introducción a Maxima, un programa de cálculo simbólico. Explica brevemente la historia de Maxima y su relación con Macsyma, destacando que Maxima es un sucesor de Macsyma desarrollado originalmente en el MIT. A continuación, describe el objetivo de Maxima de realizar cálculos matemáticos simbólicos y numéricos y manipular expresiones algebraicas y matriciales.
Este documento presenta el índice general de un texto de enseñanza para el curso prefacultativo de pensamiento lógico matemático de la Facultad de Ciencias Sociales de la Universidad Mayor de San Andrés. El texto abarca temas como sistemas numéricos, exponentes, operaciones algebraicas, ecuaciones de primer y segundo grado, sistemas de ecuaciones lineales, y reglas de contar. El objetivo es preparar a los estudiantes para afrontar las asignaturas propias de la carrera de Ciencias Sociales desde una
El documento presenta un libro de 100 ejercicios resueltos sobre sistemas operativos. Está dividido en 6 capítulos que cubren temas como procesos e hilos, comunicación y sincronización de procesos, gestión de archivos y directorios, gestión de memoria y ejercicios generales. El objetivo es proporcionar material práctico para apoyar la docencia de asignaturas básicas de sistemas operativos.
Este documento presenta una introducción a Scilab. Explica que Scilab es un software de cómputo científico interactivo y programable de código abierto desarrollado por INRIA. Describe algunas de las características y capacidades de Scilab, así como cómo obtenerlo e instalarlo. También menciona un libro de referencia sobre Scilab y proporciona instrucciones básicas para su uso.
Este documento presenta una introducción a Scilab. Explica que Scilab es un software de cómputo científico interactivo y programable de código abierto desarrollado por INRIA. Describe algunas de las características y capacidades de Scilab, como el cálculo numérico, vectores, matrices, gráficas, optimización y programación. También incluye ejemplos de uso.
es un manual de rutinas que te podria indicar que es lo que se podria hacer o que atajoas o facilidades tiene para poder hacer varias cosas en la computadora.
Este documento proporciona 26 instrucciones sobre cómo realizar diferentes tareas comunes en programas de computadora como enviar correos electrónicos, adjuntar archivos, escanear para virus, crear carpetas, hacer gráficas en Excel, guardar documentos de Word, copiar y pegar información, obtener promedios en Excel, insertar imágenes en Word, iniciar sesión de manera segura y más. El documento está dirigido a estudiantes como parte de un curso de informática.
Este documento presenta un resumen de los conceptos básicos de diseño de experimentos. Explica los diseños factoriales 2k, sus ventajas y cómo permiten estudiar el efecto de múltiples factores. Incluye un ejemplo con un diseño factorial 22 para evaluar el efecto del tamaño de broca y la velocidad sobre la vibración producida por un barrenador. Calcula los efectos de cada factor a través de la notación de Yates y determina que el tamaño de broca tiene la mayor influencia sobre la vibración.
Este documento presenta 100 ejercicios resueltos sobre sistemas operativos divididos en 6 capítulos: procesos e hilos, comunicación y sincronización de procesos, gestión de archivos y directorios, gestión de memoria y ejercicios generales. El objetivo es proporcionar material práctico para apoyar la docencia de asignaturas sobre sistemas operativos tanto de forma presencial como no presencial.
Este documento presenta un cuaderno de estudio para el programa preliminar de ingeniería de la Universidad Técnica Federico Santa María. Incluye 10 secciones que cubren temas matemáticos fundamentales como lógica simbólica, teoría de conjuntos, funciones, geometría analítica, números naturales y reales, trigonometría, números complejos, límites y continuidad. El cuaderno proporciona los conceptos y herramientas matemáticas básicas necesarias para los estudiantes de ingeniería.
Aquí están las instrucciones para elaborar una pascalina:
1. Pega en un cartón la copia de la carátula y el rectángulo de la página 85.
2. Recorta las figuras de la carátula y el rectángulo, incluyendo el cuadrado interior.
3. Dobla el rectángulo por la línea punteada para formar una caja.
4. Pega las ruedas dentadas recortadas en el interior de la caja, una debajo de la otra.
5. Coloca un lapicero dentro del cuadrado para que gire las
Este documento introduce Latex como una alternativa a los procesadores de texto tradicionales para la escritura de documentos extensos y bien estructurados, o documentos con contenido matemático. Explica que Latex permite concentrarse más en el contenido que en la forma, dejando la presentación a manos de expertos. También recomienda el uso de Latex para documentos que requieran portabilidad entre plataformas o generación de formatos múltiples. Finalmente, presenta algunas opciones de editores Latex, recomendando Kile por su
Este documento presenta un libro introductorio sobre programación en C. El libro explica conceptos básicos como variables, constantes, operadores aritméticos y lógicos, y estructuras de control como if/else y bucles while y for. El libro está dirigido a estudiantes que deseen aprender el lenguaje de programación C.
Este documento describe un módem GSM, incluyendo su definición como un dispositivo modulador/demodulador para transmisiones en la red GSM, su uso de modulación DPSK, y sus componentes clave como un microcontrolador con Ethernet, un transmisor/receptor GSM y un FT232RL. También proporciona detalles técnicos sobre el módem Wavecom Fastrack EDGE como un ejemplo de módem GSM programable.
Trabajo, realizado para la asignatura ingeniería de protocolos, que trata sobre los avances a la HTTP 2.0 sobre el protocolo que Google está desarrollando para reducir la latencia en páginas webs.
El proyecto integra la prevención en la gestión de la empresa para lograr que cada uno individualmente alcance un “hábito de trabajo seguro”. Además exige compromiso, trabajo en equipo, sistemas de trabajo y herramientas de gestión adecuadas.
Este documento es una guía de usuario para la biblioteca LliureX. Explica las funciones principales del sistema como realizar búsquedas en el catálogo, prestar y reservar documentos, gestionar usuarios y generar informes. También cubre temas como autoridades, difusión selectiva de información y administración del sistema. La guía proporciona instrucciones detalladas sobre cómo utilizar las diversas herramientas y módulos de la biblioteca LliureX.
Este documento proporciona una guía sobre comandos CISCO CCNA Exploration. Cubre temas como administración de dispositivos, seguridad, routing, switching, VLAN, protocolos de enrutamiento como RIP, EIGRP y OSPF, y servicios como DHCP, DNS, NAT y ACL. El documento está organizado en secciones con subtemas para cada área funcional de la red.
Este documento proporciona una guía sobre comandos CISCO CCNA Exploration. Cubre temas como administración de dispositivos, seguridad, routing, switching, VLAN, protocolos de enrutamiento como RIP, EIGRP y OSPF, así como servicios de red como DHCP, DNS, NAT y protocolos WAN como PPP y Frame Relay. El documento está organizado en secciones con subtemas para cada área funcional de la red.
Este documento proporciona una guía sobre comandos CISCO CCNA Exploration. Cubre temas como administración de dispositivos, rutas, conmutación, VLAN, protocolos de red y seguridad. Se divide en secciones de generalidades, administración/seguridad, rutas, conmutación y explica conceptos clave con detalles sobre protocolos y configuraciones comunes.
Este documento proporciona un manual básico de usuario para Guadalinex-edu, un sistema operativo educativo basado en software libre. Explica conceptos clave como TICs, software libre y propietario. Luego describe las principales características y herramientas de Guadalinex-edu, incluidas áreas de trabajo, organización de archivos, navegación web, correo electrónico, suites ofimáticas y herramientas de red. El manual está destinado a usuarios principiantes para ayudarlos a familiarizarse con Guadalinex
Este documento presenta una introducción a Maxima, un programa de cálculo simbólico. Explica brevemente la historia de Maxima y su relación con Macsyma, destacando que Maxima es un sucesor de Macsyma desarrollado originalmente en el MIT. A continuación, describe el objetivo de Maxima de realizar cálculos matemáticos simbólicos y numéricos y manipular expresiones algebraicas y matriciales.
Este documento presenta el índice general de un texto de enseñanza para el curso prefacultativo de pensamiento lógico matemático de la Facultad de Ciencias Sociales de la Universidad Mayor de San Andrés. El texto abarca temas como sistemas numéricos, exponentes, operaciones algebraicas, ecuaciones de primer y segundo grado, sistemas de ecuaciones lineales, y reglas de contar. El objetivo es preparar a los estudiantes para afrontar las asignaturas propias de la carrera de Ciencias Sociales desde una
El documento presenta un libro de 100 ejercicios resueltos sobre sistemas operativos. Está dividido en 6 capítulos que cubren temas como procesos e hilos, comunicación y sincronización de procesos, gestión de archivos y directorios, gestión de memoria y ejercicios generales. El objetivo es proporcionar material práctico para apoyar la docencia de asignaturas básicas de sistemas operativos.
Este documento presenta una introducción a Scilab. Explica que Scilab es un software de cómputo científico interactivo y programable de código abierto desarrollado por INRIA. Describe algunas de las características y capacidades de Scilab, así como cómo obtenerlo e instalarlo. También menciona un libro de referencia sobre Scilab y proporciona instrucciones básicas para su uso.
Este documento presenta una introducción a Scilab. Explica que Scilab es un software de cómputo científico interactivo y programable de código abierto desarrollado por INRIA. Describe algunas de las características y capacidades de Scilab, como el cálculo numérico, vectores, matrices, gráficas, optimización y programación. También incluye ejemplos de uso.
es un manual de rutinas que te podria indicar que es lo que se podria hacer o que atajoas o facilidades tiene para poder hacer varias cosas en la computadora.
Este documento proporciona 26 instrucciones sobre cómo realizar diferentes tareas comunes en programas de computadora como enviar correos electrónicos, adjuntar archivos, escanear para virus, crear carpetas, hacer gráficas en Excel, guardar documentos de Word, copiar y pegar información, obtener promedios en Excel, insertar imágenes en Word, iniciar sesión de manera segura y más. El documento está dirigido a estudiantes como parte de un curso de informática.
Este documento presenta un resumen de los conceptos básicos de diseño de experimentos. Explica los diseños factoriales 2k, sus ventajas y cómo permiten estudiar el efecto de múltiples factores. Incluye un ejemplo con un diseño factorial 22 para evaluar el efecto del tamaño de broca y la velocidad sobre la vibración producida por un barrenador. Calcula los efectos de cada factor a través de la notación de Yates y determina que el tamaño de broca tiene la mayor influencia sobre la vibración.
Este documento presenta 100 ejercicios resueltos sobre sistemas operativos divididos en 6 capítulos: procesos e hilos, comunicación y sincronización de procesos, gestión de archivos y directorios, gestión de memoria y ejercicios generales. El objetivo es proporcionar material práctico para apoyar la docencia de asignaturas sobre sistemas operativos tanto de forma presencial como no presencial.
Este documento presenta un cuaderno de estudio para el programa preliminar de ingeniería de la Universidad Técnica Federico Santa María. Incluye 10 secciones que cubren temas matemáticos fundamentales como lógica simbólica, teoría de conjuntos, funciones, geometría analítica, números naturales y reales, trigonometría, números complejos, límites y continuidad. El cuaderno proporciona los conceptos y herramientas matemáticas básicas necesarias para los estudiantes de ingeniería.
Aquí están las instrucciones para elaborar una pascalina:
1. Pega en un cartón la copia de la carátula y el rectángulo de la página 85.
2. Recorta las figuras de la carátula y el rectángulo, incluyendo el cuadrado interior.
3. Dobla el rectángulo por la línea punteada para formar una caja.
4. Pega las ruedas dentadas recortadas en el interior de la caja, una debajo de la otra.
5. Coloca un lapicero dentro del cuadrado para que gire las
Este documento introduce Latex como una alternativa a los procesadores de texto tradicionales para la escritura de documentos extensos y bien estructurados, o documentos con contenido matemático. Explica que Latex permite concentrarse más en el contenido que en la forma, dejando la presentación a manos de expertos. También recomienda el uso de Latex para documentos que requieran portabilidad entre plataformas o generación de formatos múltiples. Finalmente, presenta algunas opciones de editores Latex, recomendando Kile por su
Este documento presenta un libro introductorio sobre programación en C. El libro explica conceptos básicos como variables, constantes, operadores aritméticos y lógicos, y estructuras de control como if/else y bucles while y for. El libro está dirigido a estudiantes que deseen aprender el lenguaje de programación C.
Este documento describe un módem GSM, incluyendo su definición como un dispositivo modulador/demodulador para transmisiones en la red GSM, su uso de modulación DPSK, y sus componentes clave como un microcontrolador con Ethernet, un transmisor/receptor GSM y un FT232RL. También proporciona detalles técnicos sobre el módem Wavecom Fastrack EDGE como un ejemplo de módem GSM programable.
Trabajo, realizado para la asignatura ingeniería de protocolos, que trata sobre los avances a la HTTP 2.0 sobre el protocolo que Google está desarrollando para reducir la latencia en páginas webs.
El documento describe los orígenes y desarrollo del estándar IEEE 802.11n para redes inalámbricas. Explica que el estándar 802.11n surgió para aumentar las tasas de transferencia de datos y el rendimiento de redes WiFi existentes. Adoptó la tecnología MIMO-OFDM, la cual usa múltiples antenas transmisoras y receptoras para transmitir varios flujos de datos de forma simultánea y aumentar la eficiencia espectral. El objetivo final era igualar el rendimiento de redes Ethernet
El documento resume la historia de IBM. Comenzó como una empresa dedicada a la fabricación de máquinas de tabulación. Lanzó con éxito la primera PC pero perdió su liderazgo debido a la competencia de empresas con precios más bajos y el sistema operativo Windows de Microsoft. En los años 90, IBM cambió su enfoque hacia los servicios de consultoría debido a problemas financieros.
Este curso gratuito de Latex/Lyx se llevará a cabo los viernes de 9:30 a 11:30 en la sala B-116 de la Escuela Politécnica Superior de Linares a partir del 9 de marzo. Los interesados pueden inscribirse hasta el 15 de marzo en el despacho ALEU en la sala A-132 con plazas limitadas.
El documento resume los conceptos clave del nivel de transporte en redes de computadoras. Explica que el nivel de transporte proporciona servicios de extremo a extremo de forma independiente del nivel de red subyacente. Describe los protocolos UDP y TCP como los principales protocolos de transporte, y explica brevemente sus características y funcionalidades clave como el control de flujo y la fiabilidad. También resume otros temas relacionados con la seguridad, correo electrónico y gestión de redes.
El documento describe las tecnologías Wigig y WiMax para comunicaciones inalámbricas. Wigig permite velocidades de hasta 7 Gbps pero a distancias cortas de solo 3 metros. WiMax proporciona conexiones de banda ancha similares a ADSL hasta 50-60 km de distancia. Ambas tecnologías usan ondas de radio para transmitir voz y datos sin cables, pero Wigig es para transferencias muy rápidas de corto alcance mientras que WiMax es para áreas metropolitanas más amplias.
Soluciones Examen de Selectividad. Geografía junio 2024 (Convocatoria Ordinar...Juan Martín Martín
Criterios de corrección y soluciones al examen de Geografía de Selectividad (EvAU) Junio de 2024 en Castilla La Mancha.
Soluciones al examen.
Convocatoria Ordinaria.
Examen resuelto de Geografía
conocer el examen de geografía de julio 2024 en:
https://blogdegeografiadejuan.blogspot.com/2024/06/soluciones-examen-de-selectividad.html
http://blogdegeografiadejuan.blogspot.com/
La Unidad Eudista de Espiritualidad se complace en poner a su disposición el siguiente Triduo Eudista, que tiene como propósito ofrecer tres breves meditaciones sobre Jesucristo Sumo y Eterno Sacerdote, el Sagrado Corazón de Jesús y el Inmaculado Corazón de María. En cada día encuentran una oración inicial, una meditación y una oración final.
Examen de Selectividad. Geografía junio 2024 (Convocatoria Ordinaria). UCLMJuan Martín Martín
Examen de Selectividad de la EvAU de Geografía de junio de 2023 en Castilla La Mancha. UCLM . (Convocatoria ordinaria)
Más información en el Blog de Geografía de Juan Martín Martín
http://blogdegeografiadejuan.blogspot.com/
Este documento presenta un examen de geografía para el Acceso a la universidad (EVAU). Consta de cuatro secciones. La primera sección ofrece tres ejercicios prácticos sobre paisajes, mapas o hábitats. La segunda sección contiene preguntas teóricas sobre unidades de relieve, transporte o demografía. La tercera sección pide definir conceptos geográficos. La cuarta sección implica identificar elementos geográficos en un mapa. El examen evalúa conocimientos fundamentales de geografía.
ACERTIJO DESCIFRANDO CÓDIGO DEL CANDADO DE LA TORRE EIFFEL EN PARÍS. Por JAVI...JAVIER SOLIS NOYOLA
El Mtro. JAVIER SOLIS NOYOLA crea y desarrolla el “DESCIFRANDO CÓDIGO DEL CANDADO DE LA TORRE EIFFEL EN PARIS”. Esta actividad de aprendizaje propone el reto de descubrir el la secuencia números para abrir un candado, el cual destaca la percepción geométrica y conceptual. La intención de esta actividad de aprendizaje lúdico es, promover los pensamientos lógico (convergente) y creativo (divergente o lateral), mediante modelos mentales de: atención, memoria, imaginación, percepción (Geométrica y conceptual), perspicacia, inferencia y viso-espacialidad. Didácticamente, ésta actividad de aprendizaje es transversal, y que integra áreas del conocimiento: matemático, Lenguaje, artístico y las neurociencias. Acertijo dedicado a los Juegos Olímpicos de París 2024.
2. 100 Ejercicios resueltos
@ibaumo
de Sistemas Operativos
José Ribelles Miguel
José Martínez Sotoca
Pedro García Sevilla
Departament de llenguatges i sistemes informàtics
Codi d’assignatura IG11
J. Ribelles / J. Martínez / P. García - ISBN: 978-84-693-0148-7 100 Ejercicios resueltos de Sistemas Operativos - UJI
3. @ibaumo
Edita: Publicacions de la Universitat Jaume I. Servei de Comunicació i Publicacions
Campus del Riu Sec. Edifici Rectorat i Serveis Centrals. 12071 Castelló de la Plana
http://www.tenda.uji.es e-mail: publicacions@uji.es
Col·lecció Sapientia, 30
www.sapientia.uji.es
ISBN: 978-84-693-0148-7
Aquest text està subjecte a una llicència Reconeixement-NoComercial-CompartirIgual de Creative
Commons, que permet copiar, distribuir i comunicar públicament l’obra sempre que especifique
l’autor i el nom de la publicació i sense objectius comercials, i també permet crear obres derivades,
sempre que siguen distribuïdes amb aquesta mateixa llicència.
http://creativecommons.org/licenses/by-nc-sa/2.5/es/deed.ca
J. Ribelles / J. Martínez / P. García - ISBN: 978-84-693-0148-7 100 Ejercicios resueltos de Sistemas Operativos - UJI
5. Prefacio
Los Sistemas Operativos han constituido tradicionalmente una materia troncal
en los planes de estudio de todas las titulaciones de Inform´ tica. Las asignaturas
a
que desarrollan estos contenidos incluyen aspectos te´ ricos fundamentales como
o
procesos e hilos, gesti´ n de memoria, comunicaci´ n, sincronizaci´ n y sistemas de
o o o
archivos. Adem´ s, es frecuente incluir una parte pr´ ctica que permite que el alumno
a a
conozca no s´ lo los principios te´ ricos, sino tambi´ n c´ mo se aplican en sistemas
o o e o
operativos reales.
El objetivo de este libro es proporcionar suficiente material pr´ ctico para apo-
a
yar la docencia, tanto presencial, desarrollada en clases de problemas o en labo-
ratorio, como no presencial, proporcionando al estudiante un material de apoyo al
estudio de un nivel y contenido adecuado a una asignatura real.
@ibaumo
En concreto, las cuestiones, ejercicios y problemas que se recogen en este li-
bro son el resultado de su recopilaci´ n a lo largo de cuatro cursos, desde el a˜ o
o n
2004, del material utilizado en la asignatura de Sistemas Operativos de la Inge-
nier´a T´ cnica en Inform´ tica de Gesti´ n de la Universitat Jaume I de Castell´ n.
ı e a o o
Dicha asignatura se estructura en 3 cr´ ditos de teor´a, 1,5 cr´ ditos de problemas y
e ı e
1,5 cr´ ditos de laboratorio. No obstante, el material incluido es bastante gen´ rico
e e
y puede ser empleado en cualquier asignatura b´ sica de Sistemas Operativos.
a
El contenido de este libro se divide en 6 cap´tulos cuya descripci´ n se indica a
ı o
continuaci´ n:
o
1. Gesti´ n de Procesos e Hilos: planificaci´ n de procesos, jerarqu´a de procesos
o o ı
y uso de las llamadas al sistema para la gesti´ n de procesos e hilos.
o
2. Comunicaci´ n y Sincronizaci´ n de Procesos: problemas cl´ sicos de la sec-
o o a
ci´ n cr´tica, productor-consumidor y lector-escritor; y llamadas al sistema
o ı
para el manejo de sem´ foros y tuber´as.
a ı
3. Gesti´ n de Archivos y Directorios: sistemas de archivos tipo FAT y nodo-i,
o
llamadas al sistema para la gesti´ n de archivos y directorios.
o
4. Gesti´ n de Memoria: memoria virtual, paginaci´ n y pol´ticas de reemplazo.
o o ı
5. Problemas generales: problemas cuya resoluci´ n incluya conceptos tratados
o
en varios de los cap´tulos anteriores.
ı
III
J. Ribelles / J. Martínez / P. García - ISBN: 978-84-693-0148-7 100 Ejercicios resueltos de Sistemas Operativos - UJI
6. 6. Soluciones: en este cap´tulo se encuentran las soluciones a los ejercicios
ı
planteados en todos los cap´tulos anteriores.
ı
Se ha creado la p´ gina Web http://ig11.uji.es como apoyo a este ma-
a
terial, para mantenerlo actualizado incluyendo m´ s ejercicios, p´ ginas de ayuda, fe
a a
de erratas, etc.
´
Por ultimo, no queremos dejar de expresar nuestro agradecimiento a los pro-
fesores Gustavo Casa˜ , Isabel Gracia y Antonio Castellanos, todos ellos del De-
n
partamento de Lenguajes y Sistemas Inform´ ticos de la Universitat Jaume I, que
a
tambi´ n han participado en la impartici´ n de la asignatura durante otros cursos y,
e o
como no, en la elaboraci´ n de algunos de los ejercicios propuestos de este libro.
o
Marzo, 2010
@ibaumo
J. Ribelles / J. Martínez / P. García - ISBN: 978-84-693-0148-7 100 Ejercicios resueltos de Sistemas Operativos - UJI
7. Cap´tulo 1
ı
Procesos e Hilos
1.1. Procesos
1. Observa el siguiente c´ digo y escribe la jerarqu´a de procesos resultante.
o ı
#include sys/types.h
#include sys/wait.h
#include unistd.h
#include stdio.h
#include stdlib.h
@ibaumo
int main (int argc, char ∗argv[]) {
int num;
pid t pid;
for (num= 0; num 3; num++) {
pid= fork();
printf (Soy el proceso de PID %d y mi padre tiene %d de PID.n,
getpid(), getppid());
if (pid!= 0)
break;
srandom(getpid());
sleep (random() %3);
}
if (pid!= 0)
printf (Fin del proceso de PID %d.n, wait (NULL));
return 0;
}
Ahora compila y ejecuta el c´ digo para comprobarlo. Contesta a las siguien-
o
tes preguntas:
¿Por qu´ aparecen mensajes repetidos?
e
Presta atenci´ n al orden de terminaci´ n de los procesos,
o o
• ¿qu´ observas?
e
• ¿por qu´ ?
e
1
J. Ribelles / J. Martínez / P. García - ISBN: 978-84-693-0148-7 100 Ejercicios resueltos de Sistemas Operativos - UJI
8. 2. Observa el siguiente c´ digo y escribe la jerarqu´a de procesos resultante.
o ı
#include sys/types.h
#include sys/wait.h
#include unistd.h
#include stdio.h
#include stdlib.h
int main (int argc, char ∗argv[]) {
int num;
pid t pid;
srandom(getpid());
for (num= 0; num 3; num++) {
pid= fork();
printf (Soy el proceso de PID %d y mi padre tiene %d de PID.n,
getpid(), getppid());
if (pid== 0)
break;
}
if (pid== 0)
sleep(random() %5);
else
for (num= 0; num 3; num++)
printf (Fin del proceso de PID %d.n, wait (NULL));
return 0;
}
@ibaumo
Ahora compila y ejecuta el c´ digo para comprobarlo. Presta atenci´ n al or-
o o
den de terminaci´ n de los procesos, ¿qu´ observas? ¿por qu´ ?
o e e
´
3. Dibuja la estructura del arbol de procesos que obtendr´amos al ejecutar el
ı
siguiente fragmento de c´ digo:
o
for (num= 0; num 2; num++) {
nuevo= fork(); /∗ 1 ∗/
if (nuevo== 0)
break;
}
nuevo= fork(); /∗ 2 ∗/
nuevo= fork(); /∗ 3 ∗/
printf(Soy el proceso %d y mi padre es %dn, getpid(), getppid());
4. Considerando el siguiente fragmento de c´ digo:
o
for (num= 1; num= n; num++){
nuevo= fork();
if ((num== n) (nuevo== 0))
execlp (ls, ls, -l, NULL);
}
a) Dibuja la jerarqu´a de procesos generada cuando se ejecuta y n es 3.
ı
b) Indica en qu´ procesos se ha cambiado la imagen del proceso usando
e
la funci´ n execlp.
o
2
J. Ribelles / J. Martínez / P. García - ISBN: 978-84-693-0148-7 100 Ejercicios resueltos de Sistemas Operativos - UJI
9. 5. Dibuja la jerarqu´a de procesos que resulta de la ejecuci´ n del siguiente c´ di-
ı o o
go. Indica para cada nuevo proceso el valor de las variables i y j en el mo-
mento de su creaci´ n.
o
for (i= 0; i 2; i++) {
pid= getpid();
for (j= 0; j i+2; j++) {
nuevo= fork(); /∗ 1 ∗/
if (nuevo!= 0) {
nuevo= fork(); /∗ 2 ∗/
break;
}
}
if (pid!= getpid())
break;
}
6. Estudia el siguiente c´ digo y escribe la jerarqu´a de procesos resultante. Des-
o ı
pu´ s, compila y ejecuta el c´ digo para comprobarlo (deber´ s a˜ adir llamadas
e o a n
al sistema getpid, getppid y wait para conseguirlo).
#include sys/types.h
#include sys/wait.h
#include unistd.h
#include stdio.h
#include stdlib.h
#define L1 2
#define L2 3
@ibaumo
int main (int argc, char ∗argv[]) {
int cont1, cont2;
pid t pid;
for (cont2= 0; cont2 L2; cont2++) {
for (cont1= 0; cont1 L1; cont1++) {
pid= fork();
if (pid== 0)
break;
}
if (pid!= 0)
break;
}
return 0;
}
7. Dibuja la jerarqu´a de procesos que resulta de la ejecuci´ n del siguiente c´ di-
ı o o
´
go. Introduce las llamadas al sistema wait para que una vez generado el arbol
de procesos los hijos sean esperados por sus respectivos padres. Adem´ s, a
haz que se informe de los tiempos de ejecuci´ n de las aplicaciones xload y
o
kcalc que se generen as´ como del tiempo total de ejecuci´ n. Para calcular el
ı o
tiempo transcurrido, puedes utilizar la funci´ n time() de la librer´a est´ ndar
o ı a
time.h. La llamada time(NULL) devuelve los segundos transcurridos desde
las 00:00:00 del 1/1/1970 hasta el instante de la llamada.
3
J. Ribelles / J. Martínez / P. García - ISBN: 978-84-693-0148-7 100 Ejercicios resueltos de Sistemas Operativos - UJI
10. int main (int argc, char ∗argv[]) {
int i, j;
pid t pid, nuevo, nuevo1;
time t ini, fin;
for (i= 0; i 2; i++){
pid= getpid();
for (j= 0; j i+2; j++){
nuevo= fork();
if(nuevo== 0){
break;
nuevo1= fork();
if(nuevo1== 0)
execlp (xload, xload, NULL);
}
}
if (pid!= getpid())
execlp (kcalc, kcalc, NULL);
}
return 0;
}
´
8. Escribe un programa que genere un arbol de procesos similar al que apa-
´
rece en la figura 1.1. Los valores de profundidad y anchura del arbol ser´ n
a
dados como par´ metros de entrada por el usuario en cada ejecuci´ n. En el
a o
ejemplo, se considera que la profundidad es 5 y la anchura 3. Tu programa
@ibaumo
podr´ empezar, por ejemplo, de la siguiente manera:
a
#include stdio.h
#include unistd.h
#include stdlib.h
int main (int argc, char ∗argv[]) {
int i;
int prof, anch;
if (argc!= 3) exit(0);
profundidad= atoi(argv[1]); /∗ profundidad ∗/
anchura= atoi(argv[2]); /∗ anchura ∗/
/∗ completar aqu´ ∗/
ı
printf(Soy el proceso %d y mi padre es %dn, getpid(), getppid());
sleep (2);
return 0;
}
´
Modifica el programa anterior para que la expansi´ n en anchura del arbol se
o
produzca s´ lo en aquellos niveles de profundidad par (y distinta de cero). En
o
la figura 1.2 se muestra un ejemplo.
9. Escribe el fragmento de c´ digo que genera la jerarqu´a de procesos que se
o ı
muestra en la figura 1.3 para profundidad n.
4
J. Ribelles / J. Martínez / P. García - ISBN: 978-84-693-0148-7 100 Ejercicios resueltos de Sistemas Operativos - UJI
11. ´
Figura 1.1: Arbol de profun- ´
Figura 1.2: Arbol de profun-
didad 5 y anchura 3. didad 5 y anchura 3, que s´ lo
o
se expande en anchura para
los niveles pares distintos de
cero.
@ibaumo
Figura 1.3: Jerarqu´a de procesos con profundidad n = 3.
ı
10. Observa el siguiente fragmento de c´ digo que trata de medir el tiempo de
o
ejecuci´ n del programa prueba.exe. Indica qu´ problemas se producen, por
o e
qu´ y c´ mo resolverlos.
e o
time t inicio= 0, fin= 0;
if (fork()!= 0) {
wait (NULL);
fin= time (NULL);
printf (Tiempo empleado: %ldn, fin-inicio);
} else {
inicio= time (NULL);
execlp (prueba.exe, prueba.exe, NULL);
}
11. El programa siguiente pretende lanzar a ejecuci´ n una calculadora, kcalc, y
o
otra aplicaci´ n, xload, utilizando dos llamadas al sistema execlp consecuti-
o
vas. Antes de compilar y ejecutar el programa, piensa qu´ va a ocurrir.
e
#include sys/types.h
#include sys/wait.h
#include unistd.h
#include stdio.h
#include stdlib.h
5
J. Ribelles / J. Martínez / P. García - ISBN: 978-84-693-0148-7 10 100 Ejercicios resueltos de Sistemas Operativos - UJI
12. int main (int argc, char ∗argv[]) {
execlp (kcalc, kcalc, NULL);
printf (¿Se imprimira este mensaje?n);
execlp (xload, xload, NULL);
printf (¿Y este otro?n);
return 0;
}
Ahora, comp´lalo y ejecut´ lo y observa qu´ ocurre. ¿Has acertado? ¿Sabes
ı a e
por qu´ ? Modif´calo para que el usuario vea las dos aplicaciones al mismo
e ı
tiempo. Haz adem´ s que el proceso principal espere a la finalizaci´ n de am-
a o
bas aplicaciones e informe de la finalizaci´ n de cada una especificando si
o
termin´ kcalc o xload.
o
12. A˜ ade al programa resultado del problema 11 el c´ lculo del tiempo que cada
n a
uno de los procesos ha estado en ejecuci´ n, incluido el proceso padre, y sea
o
el proceso padre el que informe de ellos antes de finalizar.
13. Escribe un programa en C que pida por teclado dos cadenas de caracteres y
despu´ s escriba cada cadena por pantalla car´ cter a car´ cter. La escritura de
e a a
cada cadena deber´ hacerla un proceso diferente. Recuerda utilizar la funci´ n
a o
fflush despu´ s de escribir cada car´ cter. El proceso padre deber´ esperar a
e a a
que termine el proceso hijo. Obtendr´ s resultados interesantes si despu´ s de
a e
escribir cada car´ cter introduces un retardo aleatorio para simular que su
a
@ibaumo
escritura consume un cierto tiempo.
14. El siguiente programa en C lee repetidamente por teclado el nombre de un
programa a ejecutar y pregunta si se debe esperar a que termine la ejecuci´ n
o
del mismo. El programa termina de ejecutarse cuando el usuario introduce
como programa a ejecutar salir.
#include stdio.h
#include string.h
#include stdbool.h
int main (int argc, char ∗argv[]) {
bool fin= false;
char nombre prog[50], esperar[5];
while (!fin) {
printf (Programa: ); scanf ( %s, nombre prog);
if (strcmp(nombre prog, salir)!=0) {
printf (Esperar? ); scanf ( %s, esperar);
/∗ completar aqu´ ∗/
ı
}
else
fin= true;
}
return 0;
}
6
J. Ribelles / J. Martínez / P. García - ISBN: 978-84-693-0148-7 11 100 Ejercicios resueltos de Sistemas Operativos - UJI
13. Realiza las modificaciones oportunas para que el programa cree un nuevo
proceso que se encargue de ejecutar el programa indicado. Se debe utilizar
la variable PATH para buscar el programa a ejecutar. Si dicho programa no
se pudiese ejecutar por cualquier motivo, se deber´ mostrar un mensaje de
a
error e informar al usuario del valor actual de la variable PATH. En cualquier
caso, el proceso inicial esperar´ o no la finalizaci´ n del programa dado en
a o
funci´ n de lo que el usuario haya indicado. Cuando no se espere la finaliza-
o
ci´ n del programa dado, se debe indicar el identificador del proceso creado.
o
Para comprobar el correcto funcionamiento de este programa se aconseja es-
cribir otro programa que muestre por pantalla los n´ meros del 1 al 20 con
u
´
un intervalo de 1 segundo entre cada n´ mero. Pide que sea este el programa
u
que se ejecute, unas veces esperando su finalizaci´ n y otras no.
o
15. El siguiente programa recibe como par´ metro de entrada un n´ mero entero
a u
y muestra como resultado su factorial.
#include stdio.h
#include stdlib.h
#include unistd.h
long long int factorial (int n) {
long long int resultado= 1;
int num;
@ibaumo
for (num= 2; num= n; num++) {
resultado= resultado∗ num;
printf (Factorial de %d, resultado parcial %lldn, n, resultado);
sleep (random() %3);
}
return resultado;
}
int main (int argc, char ∗argv[]) {
if (argc== 2)
printf (El factorial de %s es %lldn,
argv[1], factorial (atoi (argv[1])));
return 0;
}
a) Escr´belo, comp´lalo y ejec´ talo para comprobar su funcionamiento.
ı ı u
b) Escribe un nuevo programa que reciba dos n´ meros enteros como par´ me-
u a
tros de entrada y cree dos procesos de manera que cada uno calcule el
factorial de uno de los n´ meros, de forma concurrente, y utilizando el
u
fichero ejecutable obtenido en el apartado anterior.
´
c) Haz que el proceso padre sea el ultimo en terminar, es decir, que espere
a la terminaci´ n de sus procesos hijos.
o
16. Generaliza la soluci´ n del problema 15 de manera que no est´ limitado a 2
o e
el n´ mero de factoriales a calcular. Procede de la siguiente manera:
u
7
J. Ribelles / J. Martínez / P. García - ISBN: 978-84-693-0148-7 12 100 Ejercicios resueltos de Sistemas Operativos - UJI
14. a) Crea un proceso por cada factorial a calcular, y que todos los procesos
se ejecuten de forma concurrente.
b) El proceso padre deber´ esperar a todos los procesos hijos y mostrar un
a
mensaje a medida que vayan terminando indicando el PID del proceso
finalizado.
c) Modif´calo para que no se imprima mensaje cuando el primer proceso
ı
hijo finalice, pero si para los dem´ s.
a
17. Escribe un programa, al que llamar´ s tiempo.c, cuyo objetivo es lanzar a eje-
a
o a ı ´
cuci´ n un segundo programa que ser´ indicado en la l´nea de ordenes (junto
con sus argumentos) como por ejemplo: $ tiempo ls -R -l /tmp. Adem´ s, haz
a
que se contabilice de forma aproximada el tiempo que tarda en ejecutarse el
segundo programa.
1.2. Planificaci´ n
o
Para la realizaci´ n de los siguientes ejercicios ten en cuenta que:
o
La simulaci´ n comienza siempre con una interrupci´ n de reloj.
o o
Cuando un proceso cambia su estado de bloqueado a listo, y si en el enun-
ciado no se indica nada al respecto, el proceso se situar´ siempre al final de
a
@ibaumo
la cola de espera.
18. Considera un sistema con las siguientes caracter´sticas:
ı
Se utiliza el algoritmo de planificaci´ n Round-Robin con un quantum
o
de dos interrupciones de reloj.
La interrupci´ n de reloj se produce cada 4 unidades de tiempo.
o
Las rutinas de tratamiento de las interrupciones hardware y de la inte-
rrupci´ n de reloj consumen 1 unidad de tiempo. La rutina de tratamien-
o
to de la interrupci´ n software consume 2 unidades de tiempo.
o
Existen dos dispositivos de entrada/salida sobre los que se pueden rea-
lizar operaciones en paralelo.
Los niveles de prioridad de las interrupciones son:
- Nivel 0 (m´ s prioritario): Interrupci´ n hardware del dispositivo 1
a o
(IH1)
- Nivel 1: Interrupci´ n de reloj (IR)
o
- Nivel 2: Interrupci´ n hardware del dispositivo 2 (IH2)
o
- Nivel 3 (menos prioritario): Interrupci´ n software (IS)
o
Existen dos procesos A y B que est´ n listos para ejecutar, de modo que ini-
a
cialmente A ser´ atendido antes que B. El modelo que siguen estos dos pro-
a
cesos es el siguiente:
8
J. Ribelles / J. Martínez / P. García - ISBN: 978-84-693-0148-7 13 100 Ejercicios resueltos de Sistemas Operativos - UJI
15. Proc A CPU (2ut.) E/S D1 (2ut.) CPU (3ut.) E/S D2 (5ut.) CPU (1ut)
Proc B CPU (5ut.) E/S D1 (1ut.) CPU (1ut.)
Indica qu´ proceso o interrupci´ n est´ atendiendo la CPU en cada unidad de
e o a
tiempo. Indica tambi´ n aquellos instantes en los que los dispositivos de E/S
e
est´ n siendo utilizados.
a
19. Considera un sistema con las siguientes caracter´sticas:
ı
Se utiliza el algoritmo de planificaci´ n Round-Robin con un quantum
o
de dos interrupciones de reloj.
La interrupci´ n de reloj se produce cada 5 unidades de tiempo.
o
Las rutinas de tratamiento de la interrupci´ n hardware y de la interrup-
o
ci´ n de reloj consumen 1 unidad de tiempo. La rutina de tratamiento
o
de la interrupci´ n software consume 2 unidades de tiempo.
o
Existe un dispositivo de entrada/salida sobre el que se pueden realizar
operaciones en paralelo con la CPU.
Los niveles de prioridad de las interrupciones son:
- Nivel 0 (m´ s prioritario): Interrupci´ n hardware del dispositivo de
a o
E/S (IH)
- Nivel 1: Interrupci´ n de reloj (IR)
o
@ibaumo
- Nivel 2 (menos prioritario): Interrupci´ n software (IS)
o
Existen dos procesos A y B que est´ n listos para ejecutar, de modo que ini-
a
cialmente A ser´ atendido antes que B. El modelo que siguen estos dos pro-
a
cesos es el siguiente:
Proc A CPU (3ut.) E/S (3ut.) CPU (2ut.) E/S (1ut.) CPU (1ut.)
Proc B CPU (8ut.) E/S (1ut.) CPU (1ut.)
Indica qu´ proceso o interrupci´ n est´ atendiendo la CPU en cada unidad de
e o a
tiempo. Indica tambi´ n aquellos instantes en los que los dispositivos de E/S
e
est´ n siendo utilizados.
a
20. Considera un sistema con las siguientes caracter´sticas:
ı
Se utiliza el algoritmo de planificaci´ n Round-Robin con un quantum
o
de dos interrupciones de reloj.
La interrupci´ n de reloj se produce cada 4 unidades de tiempo.
o
Las rutinas de tratamiento de las interrupciones hardware y de la inte-
rrupci´ n de reloj consumen 1 unidad de tiempo. La rutina de tratamien-
o
to de la interrupci´ n software consume 2 unidades de tiempo.
o
Existen un dispositivo de entrada/salida sobre el que se pueden realizar
operaciones en paralelo con la CPU.
9
J. Ribelles / J. Martínez / P. García - ISBN: 978-84-693-0148-7 14 100 Ejercicios resueltos de Sistemas Operativos - UJI
16. Los niveles de prioridad de las interrupciones son:
- Nivel 0 (m´ s prioritario): Interrupci´ n hardware del dispositivo de
a o
E/S (IH)
- Nivel 1: Interrupci´ n de reloj (IR)
o
- Nivel 2 (menos prioritario): Interrupci´ n software (IS)
o
Existen dos procesos A y B que est´ n listos para ejecutar, de modo que ini-
a
cialmente A ser´ atendido antes que B. El modelo que siguen estos dos pro-
a
cesos es el siguiente:
Proc A CPU (6ut.) E/S (1ut.) CPU (2ut.)
Proc B CPU (2ut.) E/S (6ut.) CPU (3ut.)
Indica qu´ proceso o interrupci´ n est´ atendiendo la CPU en cada unidad de
e o a
tiempo. Indica tambi´ n aquellos instantes en los que los dispositivos de E/S
e
est´ n siendo utilizados.
a
21. Considera un sistema con las siguientes caracter´sticas:
ı
Se utiliza el algoritmo de planificaci´ n Round-Robin con un quantum
o
de dos interrupciones de reloj.
La interrupci´ n de reloj se produce cada 4 unidades de tiempo.
o
Las rutinas de tratamiento de la interrupci´ n hardware y de la interrup-
o
@ibaumo
ci´ n de reloj consumen 1 unidad de tiempo. La rutina de tratamiento
o
de la interrupci´ n software consume 1 unidad de tiempo.
o
Existe un dispositivo de entrada/salida sobre el que se pueden realizar
operaciones en paralelo con la CPU.
Los niveles de prioridad de las interrupciones son:
- Nivel 0 (m´ s prioritario): Interrupci´ n hardware del dispositivo de
a o
E/S (IH)
- Nivel 1: Interrupci´ n de reloj (IR)
o
- Nivel 2 (menos prioritario): Interrupci´ n software (IS)
o
Existen tres procesos A, B y C que est´ n listos para ejecutar, y que, ini-
a
cialmente, ser´ n atendidos en ese orden. El modelo que siguen estos tres
a
procesos es el siguiente:
Proc A CPU (3ut.) E/S (10ut.) CPU (4ut.)
Proc B CPU (6ut.)
Proc C CPU (3ut.) E/S (4ut.) CPU (1ut.)
Indica qu´ proceso o interrupci´ n est´ atendiendo la CPU en cada unidad de
e o a
tiempo teniendo en cuenta que cuando un proceso pasa de bloqueado a listo
se sit´ a al principio de la cola de espera. Indica tambi´ n aquellos instantes
u e
en los que los dispositivos de E/S est´ n siendo utilizados.
a
10
J. Ribelles / J. Martínez / P. García - ISBN: 978-84-693-0148-7 15 100 Ejercicios resueltos de Sistemas Operativos - UJI
17. 22. Considera un sistema con las siguientes caracter´sticas:
ı
Se utiliza el algoritmo de planificaci´ n Round-Robin con un quantum
o
de dos interrupciones de reloj.
La interrupci´ n de reloj se produce cada 4 unidades de tiempo.
o
Las rutinas de tratamiento de la interrupci´ n hardware y de la interrup-
o
ci´ n de reloj consumen 1 unidad de tiempo. La rutina de tratamiento
o
de la interrupci´ n software consume 2 unidades de tiempo.
o
Existe un dispositivo de entrada/salida sobre el que se pueden realizar
operaciones en paralelo con la CPU.
Los niveles de prioridad de las interrupciones son:
- Nivel 0 (m´ s prioritario): Interrupci´ n hardware del dispositivo de
a o
E/S (IH)
- Nivel 1: Interrupci´ n de reloj (IR)
o
- Nivel 2 (menos prioritario): Interrupci´ n software (IS)
o
Existen dos procesos A y B que est´ n listos para ejecutar, de modo que ini-
a
cialmente A ser´ atendido antes que B. El modelo que siguen estos dos pro-
a
cesos es el siguiente:
Proc A CPU (3ut.) E/S (1ut.) CPU (1ut.) E/S (1ut.) CPU (1ut.)
@ibaumo
Proc B CPU (4ut.)
Indica qu´ proceso o interrupci´ n est´ atendiendo la CPU en cada unidad de
e o a
tiempo. Indica tambi´ n aquellos instantes en los que los dispositivos de E/S
e
est´ n siendo utilizados.
a
23. Considera un sistema con las siguientes caracter´sticas:
ı
Se utiliza el algoritmo de planificaci´ n Round-Robin con un quantum
o
de dos interrupciones de reloj.
La interrupci´ n de reloj se produce cada 4 unidades de tiempo.
o
Las rutinas de tratamiento de la interrupci´ n hardware y de la interrup-
o
ci´ n de reloj consumen 1 unidad de tiempo. La rutina de tratamiento
o
de la interrupci´ n software consume 1 unidad de tiempo.
o
Existe un dispositivo de entrada/salida sobre el que se pueden realizar
operaciones en paralelo con la CPU.
Los niveles de prioridad de las interrupciones son:
- Nivel 0 (m´ s prioritario): Interrupci´ n hardware del dispositivo de
a o
E/S (IH)
- Nivel 1: Interrupci´ n de reloj (IR)
o
- Nivel 2 (menos prioritario): Interrupci´ n software (IS)
o
11
J. Ribelles / J. Martínez / P. García - ISBN: 978-84-693-0148-7 16 100 Ejercicios resueltos de Sistemas Operativos - UJI
18. Existen dos procesos A y B que est´ n listos para ejecutar, de modo que ini-
a
cialmente A ser´ atendido antes que B. El modelo que siguen estos dos pro-
a
cesos es el siguiente:
Proc A CPU (14ut.)
Proc B CPU (2ut.) E/S (1ut.) CPU (1ut.) E/S (1ut.) CPU (1ut.)
Indica qu´ proceso o interrupci´ n est´ atendiendo la CPU en cada unidad de
e o a
tiempo. Indica tambi´ n aquellos instantes en los que los dispositivos de E/S
e
est´ n siendo utilizados.
a
24. Considera un sistema con las siguientes caracter´sticas:
ı
Se utiliza el algoritmo de planificaci´ n Round-Robin con un quantum
o
de dos interrupciones de reloj.
La interrupci´ n de reloj se produce cada 4 unidades de tiempo.
o
Las rutinas de tratamiento de las interrupciones hardware y de la inte-
rrupci´ n de reloj consumen 1 unidad de tiempo. La rutina de tratamien-
o
to de la interrupci´ n software consume 2 unidades de tiempo.
o
Existen dos dispositivos de entrada/salida sobre los que se pueden rea-
lizar operaciones en paralelo.
@ibaumo
Los niveles de prioridad de las interrupciones son:
- Nivel 0 (m´ s prioritario): Interrupci´ n hardware del dispositivo 1
a o
(IH1)
- Nivel 1: Interrupci´ n hardware del dispositivo 2 (IH2)
o
- Nivel 2: Interrupci´ n de reloj (IR)
o
- Nivel 3 (menos prioritario): Interrupci´ n software (IS)
o
Existen tres procesos A, B y C que est´ n listos para ejecutar en ese mismo
a
orden. El modelo que siguen estos dos procesos es el siguiente:
Proc A CPU (1ut.) E/S D1 (8ut.) CPU (1ut.)
Proc B CPU (2ut.) E/S D2 (2ut.) CPU (7ut.)
Proc C CPU (4ut.)
Indica qu´ proceso o interrupci´ n est´ atendiendo la CPU en cada unidad de
e o a
tiempo teniendo en cuenta adem´ s que cuando los procesos pasan de blo-
a
queados a listos se sit´ an al principio de la cola de espera. Indica tambi´ n
u e
aquellos instantes en los que los dispositivos de E/S est´ n siendo utilizados.
a
25. Considera un sistema con las siguientes caracter´sticas:
ı
Se utiliza el algoritmo de planificaci´ n Round-Robin con un quantum
o
de dos interrupciones de reloj.
12
J. Ribelles / J. Martínez / P. García - ISBN: 978-84-693-0148-7 17 100 Ejercicios resueltos de Sistemas Operativos - UJI
19. La interrupci´ n de reloj se produce cada 5 unidades de tiempo.
o
Las rutinas de tratamiento de la interrupci´ n hardware y de la interrup-
o
ci´ n de reloj consumen 1 unidad de tiempo. La rutina de tratamiento
o
de la interrupci´ n software consume 1 unidad de tiempo.
o
Existe un dispositivo de entrada/salida sobre el que se pueden realizar
operaciones en paralelo con la CPU.
Los niveles de prioridad de las interrupciones son:
- Nivel 0 (m´ s prioritario): Interrupci´ n de reloj (IR)
a o
- Nivel 1: Interrupci´ n hardware del dispositivo de E/S (IH)
o
- Nivel 2 (menos prioritario): Interrupci´ n software (IS)
o
Existen tres procesos A, B y C que est´ n listos para ejecutar en ese mismo
a
orden. El modelo que siguen estos tres procesos es el siguiente:
Proc A CPU (15ut.)
Proc B CPU (2ut.) E/S (1ut.) CPU (3ut.)
Proc C CPU (1ut.) E/S (6ut.) CPU (4ut.)
Indica qu´ proceso o interrupci´ n est´ atendiendo la CPU en cada unidad de
e o a
@ibaumo
tiempo. Indica tambi´ n aquellos instantes en los que los dispositivos de E/S
e
est´ n siendo utilizados.
a
1.3. Hilos
26. Modifica el programa que se ilustra en el enunciado del problema 15 de ma-
nera que reciba dos n´ meros enteros como par´ metros de entrada y calcule
u a
sus factoriales de forma concurrente utilizando dos hilos que se ejecutan en
paralelo con el hilo principal. El hilo principal deber´ esperar a que terminen
a
los otros dos hilos. Recuerda que para compilarlo se debe a˜ adir -lpthread a
n
la orden gcc.
27. Modifica el programa resultado del problema 26 de manera que no est´ li- e
mitado a 2 el n´ mero de factoriales a calcular. Haz que se creen tantos hilos
u
como par´ metros de entrada y que todos se ejecuten de forma concurrente.
a
El hilo principal debe esperar a que terminen el resto de hilos y, a medida
que vayan terminando, muestre un mensaje que indique un identificador del
hilo finalizado.
28. Modifica el programa soluci´ n del problema 13 para que la escritura de ca-
o
da cadena la haga un hilo diferente que se ejecutan en paralelo con el hilo
principal. El hilo principal debe esperar a que terminen los otros dos hilos.
13
J. Ribelles / J. Martínez / P. García - ISBN: 978-84-693-0148-7 18 100 Ejercicios resueltos de Sistemas Operativos - UJI
20. 29. El siguiente programa cuenta el n´ mero de veces que el car´ cter ’a’ o ’A’
u a
aparece en el fichero indicado como par´ metro de entrada. Modif´calo para
a ı
´
que ahora se cree un hilo y sea este el que ejecute la funci´ n cuenta.
o
#include unistd.h
#include stdlib.h
#include stdio.h
#include sys/types.h
#include sys/stat.h
#include fcntl.h
#define MAXLON 1000
void cuenta (char ∗nombre) {
int pos, cont= 0, leidos;
char cadena[MAXLON];
int fd;
fd= open (nombre, O RDONLY);
while ((leidos= read (mf, cadena, MAXLON))!= 0)
for (pos= 0; pos leidos; pos++)
if ((cadena[pos]== ’a’) || (cadena[pos]== ’A’))
cont++;
printf (Fichero %s: %d caracteres ’a’ o ’A’ encontradosn, nombre, cont);
close (fd);
}
int main (int argc, char ∗argv[]) {
@ibaumo
if (argc!= 2) {
printf (Indica el nombre de un fichero.n);
exit(0);
}
cuenta (argv[1]);
return 0;
}
30. Modifica el programa resultado del problema 29 para que se creen tantos
hilos como ficheros especificados como par´ metros de entrada, y que todos
a
los hilos creados se ejecuten de forma concurrente.
31. Modifica el programa resultado del problema 30 para que el resultado de la
b´ squeda lo informe el hilo principal cuando hayan terminado el resto de
u
hilos. Haz uso del paso de par´ metros a un hilo para que cada hilo pueda
a
devolver el resultado de la b´ squeda al hilo principal.
u
32. Modifica el programa soluci´ n del problema 30 para obtener el n´ mero de
o u
espacios en blanco que hay en cada uno de los ficheros dados como par´ me-
a
tros. Inicialmente, se deben crear tantos procesos como ficheros especifica-
dos. Cada proceso crear´ los hilos necesarios, que son los que realizar´ n la
a a
b´ squeda, atendiendo a la restricci´ n de que un hilo procesar´ como m´ xi-
u o a a
mo K caracteres, donde K es una constante predefinida. Todos los hilos y
procesos se han de ejecutar de forma concurrente. Cada proceso esperar´ a a
que terminen sus hilos y mostrar´ el total de espacios encontrados.
a
14
J. Ribelles / J. Martínez / P. García - ISBN: 978-84-693-0148-7 19 100 Ejercicios resueltos de Sistemas Operativos - UJI
21. Cap´tulo 2
ı
Comunicaci´ n y Sincronizaci´ n
o o
de Procesos
2.1. Tuber´as
ı
´
33. Se desea informar del tiempo invertido en ejecutar las ordenes ls | wc -l. Para
ello se escribe el siguiente programa. Sin embargo, no informa de forma
correcta. Modif´calo para que lo haga sin cambiar el n´ mero de procesos
ı u
@ibaumo
que se est´ n generando.
a
#include stdio.h
#include stdlib.h
#include unistd.h
#include time.h
#include sys/types.h
#include sys/wait.h
int main (int argc, char ∗argv[]){
int tubo[2];
time t ini, fin;
pipe(tubo);
if(fork()==0){
if(fork()==0){
dup2(tubo[1],STDOUT FILENO);
close(tubo[0]);
close(tubo[1]);
execlp(ls,ls,NULL);
}else{
dup2(tubo[0],STDIN FILENO);
close(tubo[0]);
close(tubo[1]);
execlp(wc,wc,-l,NULL);
}
}
else{
printf(Tiempo invertido: %ld segundosn, fin-ini);
}
return 0;
}
15
J. Ribelles / J. Martínez / P. García - ISBN: 978-84-693-0148-7 20 100 Ejercicios resueltos de Sistemas Operativos - UJI
22. 34. Observa el siguiente fragmento de c´ digo que trata de realizar lo mismo que
o
si un usuario escribiera ls | sort en la l´nea de comandos de un sistema UNIX.
ı
Indica qu´ problemas se producen, por qu´ y c´ mo resolverlos.
e e o
int tubo[2];
pipe(tubo);
if (fork()!=0) {
dup2(tubo[1], STDIN FILENO);
execlp(sort, sort, NULL);
close(tubo[0]);
close(tubo[1]);
} else {
dup2(tubo[0], STDOUT FILENO);
close(tubo[1]);
close(tubo[0]);
execlp(ls, ls, NULL);
}
35. Al ejecutar el siguiente programa, el proceso no termina. Explica por qu´ .
e
Da una soluci´ n que no cambie el n´ mero de procesos que se generan.
o u
int main(int argc, char ∗argv[]) {
int tubo[2];
pipe(tubo);
if (fork()==0) {
if (fork()== 0) {
dup2 (tubo[1], STDOUT FILENO);
close(tubo[0]);
@ibaumo
close(tubo[1]);
execlp(ls, ls, NULL);
} else {
dup2 (tubo[0], STDIN FILENO);
close(tubo[0]);
close(tubo[1]);
execlp(wc, wc, -l, NULL);
}
} else {
wait(NULL);
printf (Fin del proceson);
}
}
36. Describe todas las situaciones que se producen o podr´an producirse al eje-
ı
cutar el siguiente programa:
int main (int argc,char ∗ argv[]) {
int tubo[2];
FILE ∗fichero;
char linea[MAX];
pipe(tubo);
if(!(fichero=fopen(argv[1],r))){
printf(Error al abrir el fichero %sn,argv[1]);
exit(2);
}
16
J. Ribelles / J. Martínez / P. García - ISBN: 978-84-693-0148-7 21 100 Ejercicios resueltos de Sistemas Operativos - UJI
23. while(fgets(linea,MAX,fichero))
write(tubo[1],linea,strlen(linea));
fclose(fichero);
close (tubo[1]);
dup2 (tubo[0],STDIN FILENO);
close (tubo[0]);
execlp(sort,sort,NULL);
exit(0);
}
37. Describe todas las situaciones que se producen o podr´an producirse al eje-
ı
cutar el siguiente programa:
int main(int argc, char ∗argv[]) {
int tubo[2];
pipe(tubo);
if (fork()==0) {
close(tubo[0]);
dup2(tubo[1], STDOUT FILENO);
close(tubo[1]);
execlp(ls, ls, NULL);
} else {
dup2(tubo[0], STDIN FILENO);
close(tubo[0]);
close(tubo[1]);
wait(NULL);
execlp(wc, wc, -l, NULL);
@ibaumo
}
exit(0);
}
´
38. Escribe un programa que ejecute la siguiente l´nea de ordenes igual que lo
ı
har´a un int´ rprete de comandos: paste fich1 fich2 | sort | nl fich3. Debes
ı e
considerar que fich1, fich2 y fich3 ser´ n par´ metros dados a tu programa en
a a
la l´nea de comandos.
ı
39. Escribe un programa que genere tres procesos en paralelo que colaboran para
realizar las siguientes tareas:
El primer proceso, utilizando la orden grep, encontrar´ las l´neas de un
a ı
fichero (fich1) que contienen una palabra (ambos dados como par´ me- a
tros en la l´nea de comandos) y las escribir´ en una tuber´a.
ı a ı
El segundo proceso, utilizando la orden grep, encontrar´ las l´neas de
a ı
un fichero (fich2) que contienen la misma palabra (ambos dados como
par´ metros en la l´nea de comandos) y las escribir´ en la misma tuber´a.
a ı a ı
El tercer proceso, utilizando la orden wc, leer´ de la tuber´a las l´neas
a ı ı
producidas por los otros dos, las contar´ y escribir´ el resultado en un
a a
nuevo fichero (fich3) pasado como par´ metro en la l´nea de comandos.
a ı
As´, el programa se utilizar´ en la l´nea de comandos de la siguiente forma:
ı a ı
17
J. Ribelles / J. Martínez / P. García - ISBN: 978-84-693-0148-7 22 100 Ejercicios resueltos de Sistemas Operativos - UJI
24. $ programa palabra fich1 fich2 fich3. La figura 2.1 muestra gr´ ficamente la
a
comunicaci´ n requerida entre los procesos.
o
Figura 2.1: Esquema de funcionamiento.
40. Escribe un programa que genere tres procesos en paralelo que colaboran para
realizar las siguientes tareas:
El primer proceso leer´ l´neas de un fichero de texto dado como par´ me-
a ı a
tro y escribir´ alternativamente en dos tuber´as las l´neas pares e impa-
a ı ı
res del mismo.
El segundo proceso, utilizando la orden grep, leer´ de la tuber´a que
a ı
contiene las l´neas pares y seleccionar´ aquellas l´neas que contengan
ı a ı
una palabra dada como par´ metro en la l´nea de comandos. El resultado
a ı
se almacenara en un fichero cuyo nombre estar´ formado por la palabra
a
dada seguido de .txt.
@ibaumo
El tercer proceso realiza una funci´ n similar sobre la tuber´a que con-
o ı
tiene las l´neas impares, pero utilizando otra palabra tambi´ n dada co-
ı e
mo par´ metro.
a
La figura 2.2 muestra gr´ ficamente los procesos y c´ mo se comunican estos
a o
cuando el programa se ejecuta con los siguientes par´ metros: $ programa
a
fichero.txt uno dos
Figura 2.2: Esquema de funcionamiento.
41. Escribe un programa que genere los procesos necesarios para que colaboren
en realizar las siguientes tareas:
Tarea 1: leer l´neas de un fichero de texto dado como par´ metro de
ı a
entrada y escribir alternativamente en dos tuber´as (tuber´a 1 y tuber´a
ı ı ı
2) las l´neas pares e impares del mismo.
ı
18
J. Ribelles / J. Martínez / P. García - ISBN: 978-84-693-0148-7 23 100 Ejercicios resueltos de Sistemas Operativos - UJI
25. Tarea 2: utilizando el comando grep, leer de la tuber´a que contiene las
ı
l´neas pares y seleccionar aquellas l´neas que contengan una palabra
ı ı
dada como par´ metro en la l´nea de comandos. El resultado se enviar´ a
a ı a
trav´ s de la tuber´a 3.
e ı
Tarea 3: realizar una funci´ n similar a la tarea 2 pero sobre la tuber´a
o ı
que contiene las l´neas impares y utilizando otra palabra diferente tam-
ı
bi´ n dada como par´ metro de entrada.
e a
Tarea 4: ejecutar el comando sort sobre la informaci´ n que se recoja
o
por la tuber´a 3 de manera que se muestren de forma ordenada las l´neas
ı ı
recogidas.
Observa la siguiente figura 2.3. En ella se representa de forma gr´ fica una
a
propuesta de los procesos que se deben generar y de c´ mo se comunican es-
o
tos cuando el programa se ejecute con los siguientes par´ metros: $ programa
a
fichero.txt uno dos. Antes de comenzar a escribir la soluci´ n, determina si
o
est´ s de acuerdo o no con el esquema de funcionamiento propuesto. Si no lo
a
est´ s explica porqu´ .
a e
@ibaumo
Figura 2.3: Esquema de funcionamiento.
2.2. Sem´ foros
a
42. Dados los siguientes procesos y sus respectivas secuencias de c´ digo, indica
o
si existir´a o no situaci´ n de interbloqueo y explica por qu´ . En cualquier
ı o e
caso, indica tambi´ n la salida por pantalla y el valor final de los sem´ foros.
e a
Sup´ n que inicialmente todos los sem´ foros tienen valor cero.
o a
Proceso 1 Proceso 2 Proceso 3
--------- --------- ---------
printf(3); sem_wait(s1); sem_wait(s2);
sem_post(s3); printf(1); sem_wait(s4);
printf(4); sem_wait(s3); printf(2);
sem_post(s2); sem_post(s4); printf(5);
sem_post(s1); sem_wait(s3); sem_post(s3);
19
J. Ribelles / J. Martínez / P. García - ISBN: 978-84-693-0148-7 24 100 Ejercicios resueltos de Sistemas Operativos - UJI
26. 43. Considera que los siguientes fragmentos de c´ digo se ejecutan en paralelo:
o
C´digo A:
o C´digo B:
o
--------- ---------
printf(A1); printf(B1);
sem_post(s1); sem_wait(s1);
sem_wait(s2); printf(B2);
printf(A2); sem_post(s3);
sem_wait(s2); sem_wait(s3);
sem_post(s1); printf(B3);
printf(A3); sem_post(s2);
sem_wait(s1);
sem_post(s2);
printf(B4);
Sabiendo que todos los sem´ foros est´ n inicializados a 0, indica todas las
a a
posibles salidas que puede proporcionar su ejecuci´ n y si se produce o no
o
interbloqueo para cada una de ellas.
44. Modifica el programa resultado del problema 31 para que, utilizando una
variable global a la cual acceden todos los hilos (ll´ mala cuenta blancos),
a
estos acumulen el total de blancos encontrados. Utiliza un sem´ foro para
a
asegurar que los accesos a dicha variable se realizan de forma adecuada.
Haz que el programa principal informe tambi´ n del resultado.
e
45. Escribe un programa que ejecute tres hilos en paralelo a los que llamaremos
@ibaumo
A, B y C. El hilo A consta de tres bloques de c´ digo (a1, a2 y a3), el hilo B
o
de otros cuatro (b1, b2, b3 y b4) y el C de 3 (c1, c2 y c3). Haz que el c´ digo
o
de cada uno de estos bloques consista en repetir cinco veces los siguientes
pasos: escribir un mensaje que lo identifique y realizar un retardo aleatorio.
Ejecuta el programa para comprobar que los hilos A, B y C se ejecutan en
paralelo y que sus bloques de c´ digo pueden alternarse de varias formas
o
distintas. Ahora, modifica el programa anterior para que los tres hilos se
sincronicen de la siguiente forma:
c1 no debe comenzar hasta que acabe a1
a2 no debe comenzar hasta que acabe b1
c2 no debe comenzar hasta que acabe b2
b3 no debe comenzar hasta que acabe a2
a3 no debe comenzar hasta que acabe c2
´
b4 debe acabar el ultimo
46. Se crean tres hilos de manera que uno ejecuta escribirA, otro escribirB y el
tercero escribirC. Introduce los sem´ foros oportunos para que la salida sea
a
ABCABCABCABCABCABC.
#include stdio.h
#include stdlib.h
#include time.h
20
J. Ribelles / J. Martínez / P. García - ISBN: 978-84-693-0148-7 25 100 Ejercicios resueltos de Sistemas Operativos - UJI
27. #include unistd.h
#include pthread.h
#define MAX 6
void ∗escribirA (void ∗nada){
int num;
for(num=0;numMAX;num++){
printf(A);
fflush(NULL);
sleep(random() %3);
}
pthread exit(NULL);
}
void ∗escribirB (void ∗nada){
int num;
for(num=0;numMAX;num++){
printf(B);
fflush(NULL);
sleep(random() %2);
}
pthread exit(NULL);
}
void ∗escribirC (void ∗nada){
int num;
for(num=0;numMAX;num++){
printf(C);
fflush(NULL);
@ibaumo
sleep(random() %2);
}
pthread exit(NULL);
}
int main (int argc, char ∗argv[]) {
pthread t th1, th2, th3;
srandom(time(NULL));
pthread create(th1, NULL, escribirA, NULL);
pthread create(th2, NULL, escribirB, NULL);
pthread create(th3, NULL, escribirC, NULL);
pthread join(th1, NULL);
pthread join(th2, NULL);
pthread join(th3, NULL);
return 0;
}
47. Observa el siguiente fragmento de c´ digo donde los sem´ foros sem1 y sem2
o a
est´ n inicializados a cero, un hilo ejecuta la funci´ n incrementa y otro la
a o
funci´ n decrementa. Describe los valores que, durante la ejecuci´ n, puede
o o
adoptar la variable num as´ como las posibles situaciones de interbloqueo
ı
que pudieran darse.
21
J. Ribelles / J. Martínez / P. García - ISBN: 978-84-693-0148-7 26 100 Ejercicios resueltos de Sistemas Operativos - UJI
28. int num=10;
void ∗ incrementa(void ∗nada) {
int i;
for (i=0;i3;i++){
sem wait(sem1);
num++;
printf(Inc. N´ mero = %dn,num);
u
sem post(sem1);
}
sem post(sem2);
sleep(random() %3);
sem wait(sem2);
pthread exit(NULL);
}
void ∗ decrementa(void ∗nada){
int i;
for (i=0;i3;i++){
sem post(sem1);
sleep(random() %3);
sem wait(sem2);
num--;
printf(Dec. N´ mero = %dn,num);
u
sem post(sem2);
sem wait(sem1);
}
sem wait(sem1);
pthread exit(NULL);
}
@ibaumo
48. Se crean dos hilos de manera que uno ejecuta escribirA y el otro escribirB.
Introduce los sem´ foros oportunos para que la salida sea BABABABABA.
a
No olvides indicar los valores iniciales de los sem´ foros que utilices.
a
void ∗escribirA (void ∗p) {
int i;
for (i= 0; i 5; i++) {
printf (A);
fflush(NULL);
sleep(random() %2);
}
pthread exit(NULL);
}
void ∗escribirB (void ∗p) {
int i;
for (i= 0;i 5; i++) {
printf (B);
fflush(NULL);
sleep(random() %2);
}
pthread exit(NULL);
}
49. Dado el siguiente c´ digo indica si existe o no interbloqueo. En el caso de
o
existir, indica claramente para cada hilo en qu´ l´nea de c´ digo se queda
e ı o
bloqueado y en qu´ iteraci´ n del bucle ocurre (valores de las variables i, j,
e o
k). Observa los valores de inicializaci´ n de los sem´ foros.
o a
22
J. Ribelles / J. Martínez / P. García - ISBN: 978-84-693-0148-7 27 100 Ejercicios resueltos de Sistemas Operativos - UJI
29. sem t s1, s2, s3;
void ∗escribirA (void ∗p){
int i;
srandom (pthread self ());
for (i= 0; i MAX; i++){
printf (A);
sem post (s2);
sem wait (s1);
fflush (NULL);
sleep (random() %3);
}
pthread exit (NULL);
}
void ∗escribirB (void ∗p){
int j;
srandom (pthread self ());
for (j= 0; j MAX; j++){
sem wait (s2);
printf (B);
sem post (s3);
sem wait (s2);
fflush (NULL);
sleep (random() %2);
}
pthread exit (NULL);
}
void ∗escribirC (void ∗p){
@ibaumo
int k;
srandom (pthread self ());
for (k= 0; k MAX; k++){
sem wait (s3);
printf (C);
sem post (s1);
sem wait (s3);
fflush (NULL);
sleep (random() %2);
}
pthread exit (NULL);
}
int main (int argc, char ∗argv[]) {
pthread t th1, th2, th3;
sem init (s1, 0, 1);
sem init (s2, 0, 1);
sem init (s3, 0, 0);
pthread create (th1, NULL, escribirA, NULL);
pthread create (th2, NULL, escribirB, NULL);
pthread create (th3, NULL, escribirC, NULL);
pthread join (th1, NULL);
pthread join (th2, NULL);
pthread join (th3, NULL);
return 0;
}
50. Considera el siguiente trozo de c´ digo del problema productor-consumidor:
o
#include stdio.h
#include stdlib.h
#include semaphore.h
23
J. Ribelles / J. Martínez / P. García - ISBN: 978-84-693-0148-7 28 100 Ejercicios resueltos de Sistemas Operativos - UJI
30. #include pthread.h
#include unistd.h
#include stdbool.h
#define MAX 10
#define FIN -1
int buffer[MAX];
sem t huecos, elementos;
int generar dato (void) { return random() %256;}
int numero aleatorio(void) { return random() %100;}
void ∗productor (void ∗p) {
int pos productor= 0;
int num, dato, n;
n= numero aleatorio();
printf (Productor con %d datosn, n);
for(num= 0; num n; num++) {
dato= generar dato();
sem wait (huecos);
buffer[pos productor]= dato;
pos productor= (pos productor+ 1) %MAX;
sem post (elementos);
}
buffer[pos productor]= FIN;
pthread exit (NULL);
}
@ibaumo
void ∗consumidor(void ∗p){
int pos consumidor, dato;
bool continuar= true;
while (continuar) {
sem wait (elementos);
dato= buffer[pos consumidor];
pos consumidor= (pos consumidor+1) %MAX;
if (dato== FIN)
continuar= false;
sem post (huecos);
printf (Numero aleatorio: %dn, dato);
}
pthread exit (NULL);
}
Este c´ digo contiene errores y est´ incompleto. Corrige y completa. Haz que
o a
el hilo consumidor muestre en pantalla todos los datos producidos por el hilo
productor.
51. Realiza las modificaciones oportunas al c´ digo resultado del problema 50
o
para que en lugar de un hilo productor hayan tres que se ejecuten en parale-
lo. El consumidor terminar´ cuando haya consumido todos los datos produ-
a
cidos.
52. Escribe un programa que ejecute dos hilos en paralelo para realizar las si-
guientes tareas:
24
J. Ribelles / J. Martínez / P. García - ISBN: 978-84-693-0148-7 29 100 Ejercicios resueltos de Sistemas Operativos - UJI
31. El primer hilo calcular´ los n´ meros primos que hay entre dos n´ meros
a u u
que el programa recibe como par´ metros. Para enviar estos datos al
a
segundo hilo, los almacenar´ en un buffer intermedio de 5 elementos
a
de capacidad.
El segundo hilo tomar´ los datos que aparezcan en el buffer intermedio
a
y calcular´ la suma de los d´gitos de cada n´ mero. Para cada n´ mero
a ı u u
primo se mostrar´ en la salida est´ ndar una l´nea que contendr´ dicho
a a ı a
n´ mero y la suma de sus d´gitos.
u ı
Deber´ s utilizar sem´ foros para que los dos hilos se sincronicen en el acceso
a a
al buffer intermedio. Estas son las funciones para comprobar si un n´ mero
u
es primo y para calcular la suma de los d´gitos de un n´ mero.
ı u
/∗ Devuelve la suma de los d´gitos del n´mero dado ∗/
ı u
int suma digitos (int numero) {
int suma= 0;
while (numero 0) {
suma+= numero %10;
numero/= 10;
}
return suma;
}
@ibaumo
/∗ Indica si el n´mero dado es primo ∗/
u
bool es primo (int numero) {
int divisor;
for (divisor= 2; divisor= sqrt(numero); divisor++)
if (numero %divisor== 0)
return false;
return true;
}
53. Escribe un programa que realice una simulaci´ n de la evoluci´ n del estado
o o
de las reservas en una aula de libre acceso. Para simplificar, sup´ n que el aula
o
tiene s´ lo un ordenador que se puede reservar en per´odos de 1 hora, desde
o ı
las 9:00 hasta las 21:00. 25 alumnos pueden reservar per´odos individuales
ı
de 1 hora, cancelar reservas y consultar el estado de las reservas.
La simulaci´ n debe consistir en que cada alumno realice cuatro operacio-
o
nes, cada una de las cuales podr´ ser una reserva, cancelaci´ n o consulta. La
a o
elecci´ n de la operaci´ n ser´ aleatoria, pero con mayor probabilidad para la
o o a
realizaci´ n de reservas (50 %) que para la realizaci´ n de consultas y cancela-
o o
ciones (25 % cada una). Cuando la operaci´ n a realizar sea una reserva, debe
o
elegirse aleatoriamente la hora que el alumno va a reservar.
El programa debe implementar un hilo principal que lanza 25 hilos en parale-
lo, uno por cada alumno. Mediante el empleo de sem´ foros debe garantizarse
a
25
J. Ribelles / J. Martínez / P. García - ISBN: 978-84-693-0148-7 30 100 Ejercicios resueltos de Sistemas Operativos - UJI
32. que los accesos a la tabla de reservas sean correctos. En concreto, cuando se
realice una reserva o cancelaci´ n no puede realizarse ninguna otra operaci´ n
o o
en paralelo sobre la tabla, pero una consulta puede simultanear su acceso a
la tabla con otras consultas.
En la implementaci´ n de la consulta de la tabla, muestra por pantalla el esta-
o
do de cada per´odo de una hora en una l´nea distinta. Para realizar una reser-
ı ı
va, comprueba que el per´odo que se solicita reservar est´ libre. Al realizar
ı e
una cancelaci´ n, deben quedar libres todas las horas que tuviese reservadas
o
el estudiante que la solicita. Si ese estudiante no tuviese ninguna reserva se
debe mostrar un mensaje de error.
Como todas las operaciones est´ n controladas por sem´ foros, escribe mensa-
a a
jes que indiquen el estado de las operaciones diferenciando cu´ ndo se solicita
a
realizar una acci´ n (a´ n no se tiene autorizaci´ n), y cu´ ndo se realiza efec-
o u o a
tivamente (ya se tiene autorizaci´ n). As´, se puede seguir la evoluci´ n de las
o ı o
operaciones y los efectos que producen en el estado de la tabla de reservas.
A continuaci´ n tienes un ejemplo del tipo de traza que se espera obtener.
o
Solicitud de reserva de al012: 9-10
Reserva de al012: 9-10
Solicitud de consulta de al004
Solicitud de cancelaci´n de al006
o
@ibaumo
Solicitud de reserva de al000: 15-16
Solicitud de consulta de al019
Consulta de al019: 9-10 = al012
Consulta de al019: 10-11 = LIBRE
Consulta de al019: 11-12 = LIBRE
Consulta de al019: 12-13 = LIBRE
Consulta de al019: 13-14 = LIBRE
Consulta de al019: 14-15 = LIBRE
Consulta de al019: 15-16 = LIBRE
Consulta de al019: 16-17 = LIBRE
Consulta de al019: 17-18 = LIBRE
Consulta de al004: 9-10 = al012
Consulta de al004: 10-11 = LIBRE
Consulta de al004: 11-12 = LIBRE
Consulta de al004: 12-13 = LIBRE
Consulta de al004: 13-14 = LIBRE
Consulta de al004: 14-15 = LIBRE
Consulta de al004: 15-16 = LIBRE
Consulta de al004: 16-17 = LIBRE
Consulta de al004: 17-18 = LIBRE
Consulta de al004: 18-19 = LIBRE
Consulta de al004: 19-20 = LIBRE
Consulta de al004: 20-21 = LIBRE
Consulta de al019: 18-19 = LIBRE
Consulta de al019: 19-20 = LIBRE
Consulta de al019: 20-21 = LIBRE
Denegada cancelaci´n de al006: No tiene reservas
o
Reserva de al000: 15-16
26
J. Ribelles / J. Martínez / P. García - ISBN: 978-84-693-0148-7 31 100 Ejercicios resueltos de Sistemas Operativos - UJI
33. Solicitud de reserva de al010: 9-10
Denegada reserva de al010: 9-10 est´ ocupada
a
Solicitud de cancelaci´n de al012
o
Cancelaci´n de al012: 9-10
o
...
o ı ´
54. Un puente es estrecho y s´ lo permite pasar veh´culos en un unico sentido
al mismo tiempo. Si pasa un coche en un sentido y hay coches en el mismo
sentido que quieren pasar, entonces estos tienen prioridad frente a los del otro
sentido (si hubiera alguno esperando para entrar en el puente). No hay l´mite
ı
al n´ mero de veh´culos que pueden haber en el puente al mismo tiempo.
u ı
Simula el sistema suponiendo que los coches son hilos y el puente el recurso
compartido. Utiliza sem´ foros para garantizar que se cumplen las condicio-
a
nes de acceso al puente. Cada hilo debe mostrar por pantalla cu´ ndo entra
a
en el puente y cu´ ndo lo abandona.Se generar´ n un total de 100 veh´culos,
a a ı
50 en un sentido y 50 en el otro. Tras un tiempo de espera al azar (utili-
zar sleep(random() %20) o algo similar) los veh´culos intentan entrar en el
ı
´
puente y, si lo consiguen, permanecer´ n en el durante un segundo (sleep(1))
a
antes de abandonarlo. Se apreciar´ m´ s el comportamiento del sistema si se
a a
alterna la creaci´ n de hilos en un sentido u otro.
o
@ibaumo
27
J. Ribelles / J. Martínez / P. García - ISBN: 978-84-693-0148-7 32 100 Ejercicios resueltos de Sistemas Operativos - UJI
34. Cap´tulo 3
ı
Gesti´ n de Archivos y Directorios
o
3.1. Sistemas de Archivos
55. Disponemos de un disco duro de 20 GB de capacidad. Hay establecida sobre
´ ´
el una unica partici´ n que contiene un sistema de ficheros del tipo FAT32 en
o
el que cada agrupamiento (cluster) consta de 16 sectores de 512 bytes cada
uno. ¿Cu´ ntos sectores del disco se necesitar´ n para almacenar cada copia
a a
de la FAT? Razona tu respuesta.
@ibaumo
56. La polic´a ha arrestado al sospechoso de un delito. Al analizar el contenido
ı
de su ordenador piensan que pueden inculparle pues el contenido del mismo
es el siguiente:
N´ m de bloque de datos
u Contenido
10 he
11 sido
12 yo
13 no
14 sigan
15 buscando
Como experto inform´ tico, pides consultar el contenido de la FAT, que es el
a
siguiente:
N´ m de entrada en la FAT
u Contenido
10 11
11 EOF
12 13
13 10
14 15
15 12
¿Apoyar´as la opini´ n de la polic´a? Razona tu respuesta.
ı o ı
29
J. Ribelles / J. Martínez / P. García - ISBN: 978-84-693-0148-7 33 100 Ejercicios resueltos de Sistemas Operativos - UJI
35. 57. Tenemos un sistema de ficheros tipo FAT sobre el que hay almacenado un
fichero de 160 Kbytes. Sabemos que para dicho fichero se emplean 10 en-
tradas de la FAT y que cada sector del disco contiene 512 bytes. ¿Cu´ ntos
a
sectores como m´nimo forman cada bloque o agrupamiento en dicho siste-
ı
ma? Razona tu respuesta.
58. Se dispone de una partici´ n de disco con sistema de ficheros basado en
o
FAT16. Si el tama˜ o de bloque es de 1KB, ¿cu´ ntos KB de dicha partici´ n
n a o
podr´ n direccionarse como m´ ximo? Si la partici´ n resulta tener un tama˜ o
a a o n
de 2GB, ¿qu´ tama˜ o deber´a como m´nimo tener el bloque para poder di-
e n ı ı
reccionar la partici´ n por completo?
o
59. Se dispone de una partici´ n de disco con sistema de ficheros basado en
o
FAT16. A la hora de ponerle formato el usuario especifica que los bloques
sean de tama˜ o 4Kbytes ¿Cu´ ntos Kbytes te´ ricamente podr´ n direccionar-
n a o a
se como m´ ximo? Si la partici´ n resulta tener un tama˜ o de 8Gbytes, ¿con-
a o n
sideras adecuado el tama˜ o de bloque escogido por el usuario? Justifica la
n
respuesta. En caso de que no est´ s de acuerdo prop´ n un tama˜ o de bloque
e o n
e indica en cu´ ntos de esos bloques se almacena la FAT.
a
60. Para una partici´ n de 8GB y tama˜ o de bloque de 1 KB,
o n
@ibaumo
Si se utiliza un sistema de ficheros basado en FAT16, ¿qu´ cantidad de
e
espacio en disco queda inutilizable?
Si se utiliza un sistema de ficheros basado en nodos-i, donde cada nodo-
i consta de dos ´ndices directos, dos indirectos simples y dos indirectos
ı
dobles, y para referenciar un bloque se utilizan 128 bits, ¿qu´ cantidad
e
de datos de un fichero que en concreto ocupa 131 KB puede ser irrecu-
perable en el caso de que un bloque de la partici´ n resultara ilegible?
o
Analiza todos los casos posibles.
61. Considera un sistema de ficheros basado en nodos-i, en el que cada nodo-i
contiene cinco ´ndices directos, tres indirectos simples, dos indirectos dobles
ı
y uno indirecto triple. Si el tama˜ o de un bloque de datos es de 2 Kbytes y
n
para referenciar a un bloque se utilizan 64 bits, ¿cu´ ntos bloques de disco
a
almacenar´ n enlaces para un fichero que contiene 1548 Kbytes de datos?
a
Razona tu respuesta.
62. Sea una partici´ n de disco donde el tama˜ o de bloque es de 4KB. Se utiliza
o n
un sistema de ficheros basado en nodos-i, donde cada nodo-i consta de dos
´ndices directos, dos indirectos simples y uno indirecto doble. Si para refe-
ı
renciar a un bloque se utilizan 32 bits, ¿cu´ l es el n´ mero de bloques que
a u
contendr´ n enlaces si el fichero ocupa el m´ ximo tama˜ o posible?
a a n
30
J. Ribelles / J. Martínez / P. García - ISBN: 978-84-693-0148-7 34 100 Ejercicios resueltos de Sistemas Operativos - UJI