PDF de programación - Prácticas de Sistemas Operativos

Imágen de pdf Prácticas de Sistemas Operativos

Prácticas de Sistemas Operativosgráfica de visualizaciones

Publicado el 14 de Enero del 2017
1.214 visualizaciones desde el 14 de Enero del 2017
60,8 KB
9 paginas
Creado hace 12a (03/05/2011)
UNIVERSIDAD
DE CANTABRIA

Prácticas de Sistemas Operativos

GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS

© J. Javier Gutiérrez

3/ma/11

Práctica 1
Gestión de procesos y threads
Objetivos:
• Practicar la gestión de procesos y threads concurrentes
Descripción:
• Desarrollar un programa que cree varios procesos

concurrentes, que escriban periódicamente mensajes
diferentes en la pantalla

1

UNIVERSIDAD
DE CANTABRIA

• Hacer lo mismo con threads periódicos. Pasar a cada thread

como parámetros el periodo y el mensaje a escribir. Los threads
se crearán en estado "independiente"

GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS

© J. Javier Gutiérrez

3/ma/11

2

Práctica 2
Ficheros
Objetivos
• Hacer operaciones simples con ficheros, usando las llamadas al

UNIVERSIDAD
DE CANTABRIA

sistema operativo

Descripción
• Escribir un programa que copie los contenidos de un fichero en

otro. Se pasarán los nombres como argumentos al programa.

• Modificarlo para que ponga el estado del fichero generado

según los parámetros de entrada que se le pasen los permisos
del usuario (rwx)

• Asimismo, deberá presentar información del estado de los
ficheros (original y copia) en pantalla (fechas, tamaño, etc.)

GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS

© J. Javier Gutiérrez

3/ma/11

3

UNIVERSIDAD
DE CANTABRIA

GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS

© J. Javier Gutiérrez

3/ma/11

4

UNIVERSIDAD
DE CANTABRIA

Práctica 3
Objetivos
• Practicar con la sincronización de acceso mutuamente

exclusivo.
Descripción
• Escribir un programa con tres threads que se sincronicen para
acceder de manera mutuamente exclusiva a un conjunto de
datos que representan las coordenadas x,y,z de un cuerpo en
el espacio

• Uno de los threads deberá modificar los datos de manera

periódica según las siguientes ecuaciones (una recta):
3+

0 1+

8+

4x

2y–

y

=

3x

=

x

=

x

z

GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS

© J. Javier Gutiérrez

3/ma/11

5

UNIVERSIDAD
DE CANTABRIA

Práctica 3 (cont.)
• Otro thread consulta esa información y muestra x,y,z y
también (y-3x), que debe ser 8
• Otro thread consulta esa información y muestra x ,y,z y
también (z-4x+2y), que debe ser 3
• Para la protección de los datos se usará un mutex.
• El programa se ejecutará con y sin protección, y así podrá

observarse la inconsistencia del conjunto de datos cuando no
hay protección
• Puede utilizarse el "come tiempos" que se encuentra en los
ficheros load.c y load.h disponibles en el servidor. Cópialos
en tu directorio de trabajo.

GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS

© J. Javier Gutiérrez

3/ma/11

6

UNIVERSIDAD
DE CANTABRIA

Práctica 4
Objetivo:
• Practicar con la sincronización de espera.
Descripción:
• Escribir un programa con un thread productor de datos y un
thread consumidor de estos datos. Los datos serán strings.
• Tanto el productor como el consumidor tendrán tiempos de
ejecución aleatorios dentro de un rango (usar load.h)
• Utilizarán una variable compartida para la comunicación

- contiene un string
- y un booleano que dice si hay un dato válido o no

• Utilizarán un mutex para acceder a la variable

GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS

© J. Javier Gutiérrez

3/ma/11

Práctica 4 (cont.)
• Utilizarán dos variables condicionales.

está ocupada

está vacía.

7

UNIVERSIDAD
DE CANTABRIA

- Una para que el productor espere cuando la variable compartida

- Otra para que el consumidor espere cuando la variable compartida

• Una vez realizado el programa, jugar con él variando los rangos

de los tiempos; practicar con un productor muy rápido o muy
lento, consumidores iguales, o uno más lento, o más rápido, etc.

GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS

© J. Javier Gutiérrez

3/ma/11

8

Práctica 5
Objetivo:
• Practicar con la recepción y tratamiento de señales para

notificar eventos

UNIVERSIDAD
DE CANTABRIA

Descripción:
• Escribir un programa que responda a todas las señales desde

un thread que actúa como manejador de señal, poniendo un
mensaje en la pantalla que indique qué señal se recibió. El
programa principal se queda dormido.
• Probar el programa enviándole señales desde una shell (con la
orden kill -num_señal pid)

Nota: Según la versión de Linux se pueden crear (incorrectamente)
varios procesos si hay manejadores de señal.

GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS

© J. Javier Gutiérrez

3/ma/11

9

UNIVERSIDAD
DE CANTABRIA

GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS

© J. Javier Gutiérrez

3/ma/11

10

Práctica 6
Objetivo:
• Averiguar qué tipo de planificación por omisión utilizan los

UNIVERSIDAD
DE CANTABRIA

threads

Descripción:
• Escribir un programa que cree dos threads periódicos

tiempo de ejecución

concurrentes. A cada thread se le pasará como parámetro:
- periodo
-
- número de identificación
• Para hacer threads periódicos se usará la función
clock_nanosleep()
-

inicialmente se pueden hacer pseudo-periódicos con sleep()

GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS

© J. Javier Gutiérrez

3/ma/11

11

Práctica 6 (cont.)
• Para simular el tiempo de ejecución se usa la función eat()
suministrada

UNIVERSIDAD
DE CANTABRIA

• Cada décima de segundo de tiempo de ejecución consumido se
pondrá un mensaje en la pantalla con el identificador del thread

• También se pondrán mensajes al inicio y final del periodo
• A partir de la secuencia de ejecución dibujar un diagrama

temporal de la ejecución

• Tratar de inferir a partir del diagrama el tipo de planificación

(expulsora o no; cíclica, FIFO, ...); probar con dos
combinaciones diferentes de periodos y tiempos de ejecución

GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS

© J. Javier Gutiérrez

3/ma/11

12

UNIVERSIDAD
DE CANTABRIA

Práctica 6 (cont.)
Compilar y ejecutar el programa desarrollado para Linux en el
sistema operativo MaRTE OS sobre máquina desnuda:
• Hacer las mismas pruebas que en el caso anterior
Para ello:
• Ajustar la variable PATH ejecutando
• Compilar el programa con mgcc
• Copiar el programa en el servidor

- . /usr/local/marte-1.9/martevars.sh

- cp el_programa /net/lctrserver/mprogram_HOSTNAME

• Encender el computador (PC industrial)

GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS

© J. Javier Gutiérrez

3/ma/11

13

UNIVERSIDAD
DE CANTABRIA

GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS

© J. Javier Gutiérrez

3/ma/11

14

Práctica 7
Objetivo:
• Observar el fenómeno de la inversión de prioridad e

implementar un mecanismo para evitarla.

UNIVERSIDAD
DE CANTABRIA

Descripción:
• Escribir un programa que cree varios threads periódicos

planificados por prioridades fijas, y que se sincronizan para
utilizar un recurso compartido.

• Inicialmente se protegerá este recurso compartido por medio de

un mutex convencional.

• Los threads calcularán sus tiempos de respuesta de peor caso

y cada vez que se produzca un tiempo peor lo pintarán en la
pantalla.

GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS

© J. Javier Gutiérrez

3/ma/11

15

Práctica 7 (cont.)
• Eligiendo de manera adecuada los tiempos de ejecución y el

instante de comienzo de cada tarea se podrá observar el
fenómeno de la inversión de prioridad no acotada, por el que
una tarea de alta prioridad tiene que esperar a la finalización de
una tarea de baja prioridad.

UNIVERSIDAD
DE CANTABRIA

• A continuación se modificará el programa anterior que sufría
inversión de prioridad para evitarla por medio del uso de un
mutex:
- Usar el protocolo de protección de prioridad.
- Observar cómo la inversión de prioridad se minimiza, y el thread de

alta prioridad tiene un tiempo de respuesta mucho menor.

• Comprobar el comportamiento en MaRTE OS

GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS

© J. Javier Gutiérrez

3/ma/11

16

UNIVERSIDAD
DE CANTABRIA

Práctica 8
Objetivo:
• Escribir un script sencillo
Descripción:
• Escribir un script para ser ejecutado por una shell:

- que permita cambiar de nombre a todos los ficheros de un

directorio añadiéndoles a todos una extensión
la extensión y el nombre del directorio serán parámetros que se
pasen al script

-

• Probarlo creando un directorio de prueba con varios ficheros

GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS

© J. Javier Gutiérrez

3/ma/11

17

Práctica 8 (cont.)
• Escribir un segundo script que invoque al primero para todos

los directorios contenidos en el directorio de trabajo
- Este segundo script tendrá un único argumento: la extensión a

UNIVERSIDAD
DE CANTABRIA

añadir al nombre de cada fichero

• Probarlo creando un directorio de prueba con varios directorios,

que a su vez tengan varios ficheros

GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS

© J. Javier Gutiérrez

3/ma/11

18
  • Links de descarga
http://lwp-l.com/pdf950

Comentarios de: Prácticas de Sistemas Operativos (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad