PDF de programación - Bloque I: Principios de sistemas operativos

Filtrado por el tag: mono
Imágen de pdf Bloque I: Principios de sistemas operativos

Bloque I: Principios de sistemas operativosgráfica de visualizaciones

Publicado el 14 de Enero del 2017
885 visualizaciones desde el 14 de Enero del 2017
164,2 KB
22 paginas
Creado hace 14a (21/02/2011)
UNIVERSIDAD
DE CANTABRIA

Bloque I: Principios de sistemas
operativos
Tema 1. Principios básicos de los sistemas operativos
Tema 2. Concurrencia
Tema 3. Ficheros
Tema 4. Sincronización y programación dirigida por eventos
Tema 5. Planificación y despacho
Tema 6. Sistemas de tiempo real y sistemas empotrados
Tema 7. Gestión de memoria
Tema 8. Gestión de dispositivos de entrada-salida

GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS
2

© Michael González, J. Javier Gutiérrez

21/feb/11

1

Notas:

UNIVERSIDAD
DE CANTABRIA

Tema 2. Concurrencia

• Introducción a la programación concurrente
• Creación e identificación de procesos.
• Ejecución de programas.
• Terminación de procesos y espera a la terminación.
• Threads: conceptos básicos
• Creación de threads y manipulación de sus atributos.
• Terminación de threads.
• Identificación de threads.

GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS

© Michael González, J. Javier Gutiérrez

21/feb/11

2

1. Introducción a la programación
concurrente
Muchos problemas se expresan de forma natural mediante varias
actividades concurrentes:
• sistemas de control atendiendo a múltiples subsistemas y

UNIVERSIDAD
DE CANTABRIA

eventos

• sistemas multicomputadores o distribuidos
• para el uso concurrente de múltiples recursos
La concurrencia implica prever la sincronización:
• para la utilización de recursos y datos compartidos
• y para el intercambio de eventos e información

GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS

© Michael González, J. Javier Gutiérrez

21/feb/11

3

UNIVERSIDAD
DE CANTABRIA

Definiciones
Un flujo de control o thread es una secuencia de instrucciones de
programa.
Un programa concurrente es aquel con múltiples flujos de control,
que generalmente cooperan entre sí.
Los flujos de control se llaman procesos, tareas, o threads,
dependiendo del contexto.
A veces, dos o más flujos de control requieren un orden particular
para sus operaciones: sincronización.
Para ejecutar un programa concurrente se necesita un planificador
que gestione cuándo se ejecuta cada flujo de control y qué
recursos del sistema pueden usar.

GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS

© Michael González, J. Javier Gutiérrez

21/feb/11

4

Ejemplo: Control de un Automóvil
Actividades a controlar:

UNIVERSIDAD
DE CANTABRIA

Medida de
Velocidad

C=4 ms.
T=20 ms.
D=5 ms.

Control de
Frenos ABS

C=10 ms.
T=40 ms.
D=40 ms.

Control de
Inyección

C=40 ms.
T=80 ms.
D=80 ms.

C = Tiempo de ejecución
T = Periodo
D = Plazo máximo de
finalización

GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS

© Michael González, J. Javier Gutiérrez

21/feb/11

5

Ejemplo: solución cíclica
Una solución cíclica implica partir la actividad más larga en varias
partes:

UNIVERSIDAD
DE CANTABRIA

76

0

4

VELOC

otras tareas sin requisitos temporales

4

F U E L -
12

64

VELOC

F

U

E

6
-3

L

60

54

ABS

VELOC
40

44

16

F U E L - 2

ABS

14

20

F

U

E

L
-1

6

VELOC

24

GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS

© Michael González, J. Javier Gutiérrez

21/feb/11

6

Ejemplo: solución concurrente
La solución concurrente es más fácil de diseñar y modificar:

UNIVERSIDAD
DE CANTABRIA

Medida de la velocidad

Control de frenos ABS

loop
Medida_Velocidad;
next:=next+0.02;
Sleep_until next;
end loop;

loop
Frenos_ABS;
next:=next+0.04;
Sleep_until next;
end loop;

Control de inyección

Actividades sin requisitos temporales

loop
Inyeccion_Fuel;
next:=next+0.08;
Sleep_until next;
end loop;

loop
hacer cálculos;
...
end loop;

GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS

© Michael González, J. Javier Gutiérrez

21/feb/11

7

Ejemplo: mantenimiento
Suponer que necesitamos ejecutar una actividad aperiódica que
tiene 1ms de tiempo de ejecución. El tiempo mínimo entre llegadas
es de 80 ms, pero el plazo es de 20 ms:
1. Solución cíclica:

UNIVERSIDAD
DE CANTABRIA

- Muestrear al menos cada 19 ms para ver si hay que ejecutar
- Esto implica partir ABS y FUEL en varios trozos cada uno

- No se necesitan modificaciones al código existente.

2. Solución concurrente:

planificabilidad

- Añadir un nuevo proceso con alta prioridad y repetir el análisis de

GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS

© Michael González, J. Javier Gutiérrez

21/feb/11

8

Declaración de procesos: soporte en el
lenguaje
Algunos lenguajes tienen instrucciones especiales para crear
procesos concurrentes:
• instrucción estructurada: cobegin, coend (Pascal Concurrente)
• instrucción de bifurcación: fork
• declaración de un objeto de la clase “proceso” en la parte

UNIVERSIDAD
DE CANTABRIA

declarativa del programa (Ada)

• creación dinámica de un objeto de la clase “proceso” (Java)

GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS

© Michael González, J. Javier Gutiérrez

21/feb/11

9

Declaración de procesos: soporte en el
sistema operativo
Cuando la concurrencia no está soportada en el lenguaje se
pueden usar servicios de un sistema operativo:
• operación de bifurcación: fork crea una copia del proceso

UNIVERSIDAD
DE CANTABRIA

padre; posteriormente la copia puede ejecutar otro programa
(exec)

• operación spawn: se crea un nuevo proceso concurrente que

ejecuta el programa o función indicados

GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS

© Michael González, J. Javier Gutiérrez

21/feb/11

10

Estados de un proceso

UNIVERSIDAD
DE CANTABRIA

Creado

No existente

Activo

Terminado

Opcional

Bloqueado

Ejecutando

GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS

© Michael González, J. Javier Gutiérrez

21/feb/11

11

2. Creación e identificación de
procesos
Identificador de proceso (pid):
• es un entero positivo que identifica a un proceso
Parentesco de procesos:
• el padre de un proceso es el proceso que lo creo
• los procesos creados por el padre son hijos de éste

UNIVERSIDAD
DE CANTABRIA

GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS

© Michael González, J. Javier Gutiérrez

21/feb/11

12

Estructura de un proceso en C

UNIVERSIDAD
DE CANTABRIA

Proceso de usuario

funciones del

usuario

función main
del usuario

Rutina C de
Inicialización

exec

Llamada
al sistema

Rutina C
exit

Rutina C
_exit

Kernel

GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS

© Michael González, J. Javier Gutiérrez

21/feb/11

13

Ejemplo de un programa C

UNIVERSIDAD
DE CANTABRIA

// El programa muestra en pantalla todos sus argumentos
#include <stdio.h>

int main (int argc, char *argv[])
{

int i;

// Print all the arguments
for (i=0;i<argc;++i)
{

printf("%s\n",argv[i]);

}
exit(0);

}

GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS

© Michael González, J. Javier Gutiérrez

21/feb/11

14

La llamada fork
La llamada fork crea un nuevo proceso (hijo) que es una copia
exacta del padre, excepto por lo siguiente:
• el pid del hijo es diferente
• el hijo tiene su propia copia de los descriptores de fichero, que
apuntan a las mismas descripciones de fichero que en el padre

UNIVERSIDAD
DE CANTABRIA

• el hijo no hereda:

- alarmas
-
- operaciones de I/O asíncronas

temporizadores

El hijo hereda el estado del padre (incluyendo el PC), sus
semáforos, objetos de memoria, política de planificación, etc.

GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS

© Michael González, J. Javier Gutiérrez

21/feb/11

15

La llamada fork (cont.)
Interfaz:

#include <sys/types.h>
#include <unistd.h>
pid_t fork (void);

UNIVERSIDAD
DE CANTABRIA

Retornos:
• fork devuelve al proceso hijo un cero
• fork devuelve al proceso padre el pid del hijo
• en caso de error, devuelve -1, no crea el hijo, y la variable errno

se actualiza al valor asociado al error

Llamadas para identificación del proceso:

pid_t getpid(void); pid_t getppid(void);

GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS

© Michael González, J. Javier Gutiérrez

21/feb/11

16

Ejemplo de uso de fork

UNIVERSIDAD
DE CANTABRIA

// El proceso crea un hijo; padre e hijo muestran pids
#include <sys/types.h>
#include <stdio.h>
#include <unistd.h>

int main()
{

pid_t childpid;

if ((childpid=fork()) == -1) {

perror("can’t fork");
exit(1);

} else if (childpid == 0) {

// child process
printf("child: own pid = %d, parent pid = %d\n",

getpid(), getppid());

//the parent may be dead
exit(0);

} else {

GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS

© Michael González, J. Javier Gutiérrez

21/feb/11

17

Ejemplo de uso de fork (cont.)

UNIVERSIDAD
DE CANTABRIA

// parent process
printf("parent: own pid = %d, child pid = %d\n",

getpid(), childpid);

exit(0);

}

}

GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS

© Michael González, J. Javier Gutiérrez

21/feb/11

18

3. Ejecución de un programa: exec
La familia de llamadas exec sustituyen la imagen de proceso
actual por una nueva imagen de proceso, que se halla en un
fichero
Cuando la nueva imagen de proceso es un programa C, debe tener
la siguiente función:

UNIVERSIDAD
DE CANTABRIA

int main (int argc, char *argv[]);

Los parámetros corresponden a los argumentos en la llamada
Asimismo, la siguiente variable contiene un puntero a un array de
punteros que apuntan a los strings de entorno:

extern char **environ;

La llamada a exec sólo retorna en caso de error

GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS

© Michael González, J. Javier Gutiérrez

21/feb/11

19

UNIVERSIDAD
DE CANTABRIA

Ejecución de un fichero: exec (cont.)
Los descriptores de ficheros abiertos en el proceso original
continúan abiertos en el proceso nuevo, excepto aquellos que
tengan el flag FD_CLOEXEC habilitado
El nuevo proceso hereda:
• el pid y ppid del proceso original
• la política de planificación
• alarmas y señales pendientes

GRUPO DE COMPUTADORES Y TIEMPO REAL
FACULTAD DE CIENCIAS

© Michael González, J. Javier Gutiérrez

21/feb/11

20

Las llamadas exec

UNIVERSIDAD
DE CANTABRIA

int execl (const char *pat
  • Links de descarga
http://lwp-l.com/pdf940

Comentarios de: Bloque I: Principios 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