* Velocidad, puesto que es posible repartir el trabajo en varias tareas que se ejecutan en paralelo (en caso de que existan varios procesadores)
* Modularidad, puesto que el programador puede descomponer su código en unidades de ejecución (los procesos), de igual forma que lo hace en procedimientos u objetos
* Comodidad o amigabilidad, puesto que un usuario puede manejar a la vez varias tareas (ej. un entorno de ventanas)
Se planifican de este modo los procesos que se están ejecutando en modo usuario.
Un sistema multiprocesador en el que existe memoria global y un reloj global, cuyos tiempos de acceso son similares para todos los procesadores.
Diagrama de tiempos:
0
|
1
|
2
|
3
|
4
|
5
|
6
|
7
|
8
|
9
|
10
|
11
|
12
|
|
P1
|
P1
|
P3
|
P3
|
P3
|
P4
|
P4
|
P2
|
P2
|
P2
|
P2
|
P2
|
P2
|
Tiempos de espera:
Proceso
|
Tiempo
de espera
|
P1
|
0
|
P2
|
6
|
P3
|
0
|
P4
|
2
|
Diagrama de tiempos:
0
|
1
|
2
|
3
|
4
|
5
|
6
|
7
|
8
|
9
|
10
|
11
|
12
|
P1
|
P1
|
P2
|
P2
|
P3
|
P3
|
P4
|
P4
|
P2
|
P2
|
P3
|
P2
|
P2
|
Tiempos de espera:
Proceso
|
Tiempo
de espera
|
P1
|
0
|
P2
|
5
|
P3
|
6
|
P3
|
4
|
Porque cuando un archivo es borrado, sus bloques de datos (grupos o clusters) no son actualizados, manteniéndose sus contenidos hasta que dichos bloques sean asignados a otro archivo y se escriba sobre ellos.
Si eliminamos sin más un archivo, pueden quedar otros apuntadores (enlaces) al archivo inexistente o a sus bloques de datos, lo cual es incorrecto. Posibles soluciones son: a) recorrer la estructura de directorio para detectar y eliminar los enlaces del archivo recién borrado (opción costosa); b) utilizar un contador de referencias para cada archivo que nos informa del número de enlaces que posee cada archivo (el archivo sólo se elimina del disco cuando el contador llega a cero).
Sirve cualquier ejemplo donde sea necesario el acceso exclusivo a algún dato. Por ejemplo, las manidas transferencias bancarias.
Realmente, estas operaciones carecen de utilidad en un sistema no multiprogramado, ya que no hay otros procesos concurrentes a los que bloquear.
Desde el punto de vista algorítmico, no parece haber problema para implementar estas funciones fuera del espacio del núcleo. Sin embargo, no se cumplirían las propiedades descritas, ya que el bloqueo de un fichero puede ser ignorado por cualquier proceso que haga directamente una llamada al sistema (no se puede alterar la implementación de las llamadas al sistema).
Sean:
* Offset_Fichero = Apuntador del fichero (dato de entrada)
* Bloque_Inicio = Bloque de comienzo del fichero
* Long_punt = Lomgitud del enlace en los bloques de datos
* "/" = Operador de división entera
* "%" = Operador de resto
Se quiere obtener:
* Superficie, que tomará un valor entre 0 y 1
* Cilindro, que tomará un valor entre 0 y 79
* Sector, que tomara un valor ente 0 y 31
/* Obtenemos bloque relativo de sistema de ficheros */ Bytes_Efectivos = 1024 - Long_punt Bloque_relativo = Offset_fichero / Bytes_Efectivos; Offset_Bloque = Offset_fichero % Bytes_Efectivos; /* Obtenemos bloque absoluto de sistema de archivos */ Bloq_Absoluto = Bloque indicado en la entrada de directorio Acceder a Bloq_Absoluto Para Bloq=1 hasta Bloque_relativo Hacer Bloque_Siguiente = enlace existente en Bloq_Absoluto Bloq_Absoluto = Bloque_Siguiente Acceder a Bloq_Absoluto Fin Para /* Obtenemos sector lógico */ Sector_Logico = Bloque_Absoluto + Offset_Bloque / 512; /* Finalmente obtenemos dirección física */ Sectores_Cilindro = 64 Cilidro = Sector_Logico / Sectores_Cilindro; Superficie = (Sector_Logico % Sectores_Cilindro) / 32; Sector = (Sector_Logico % Sectores_Cilindro) % 32;Nota: Los cálculos del último paso dependen de la regla seguida para asignar sectores lógicos a sectores físicos. En este algoritmo se utiliza la siguiente: se empieza por el primer cilindro y primera superficie, cuando ésta se completa se pasa a la segunda superficie. Cuando se completan las dos superficies de un cilindro se repite el esquema de asignación con el siguiente cilindro y así sucesivamente. Recuerde que este asunto es importante, pues influye en los tiempos de acceso a los datos de los archivos almacenados en el disco. Se propone como ejercicio plantear una regla más eficiente que la descrita.
Datos del sistema:
* Tiempo de acceso a la memoria principal = 80 nseg.
* Tiempo de acceso a la TLB = 10 nseg.
* Tiempo de acceso al disco = 10 mseg.
Se quiere mantener un tiempo medio de acceso a un dato inferior a 100 nseg.
Si p es la tasa de aciertos de la TLB, se ha de cumplir:
(si se supone que el acceso a la TLB se hace concurrentemente con una operación de lectura con el bus, la tasa mínima obtenida es del 85'7%)
En las condiciones del problema, se tiene que:
* Tasa de aciertos de la TLB = 90%
* Tiempo medio de acceso a un dato = 200 nseg.
La tasa de fallos de página se puede estimar a partir de la expresión:
* Tm = tiempo de acceso a un dato en memoria principal = 0'9*90+0'1*170 = 98 nseg.
* Tf = tiempo de acceso a un dato cuando hay un fallo de página = 10 mseg. (aprox.) = 107 nseg.
* p = probabilidad de un fallo de página = incógnita
* Tmedio = tiempo medio de acceso a un dato = 200 nseg.
Sustituyendo, se obtiene que p = (Tmedio-Tm)/(Tf-Tm) = 102/107 = 1'02x10-5
Es decir, una tasa de fallos de página de uno por cada cien mil accesos.
Pregunta
|
Opción
correcta
|
---|---|
1
|
b
|
2
|
c
|
3
|
c
|
4
|
a
|
5
|
b
|
6
|
b
|
7
|
c
|
8
|
d
|
9
|
d
|
10
|
c
|
11
|
c
|
12
|
c
|
13
|
b
|
14
|
a
|
15
|
a
|
16
|
b
|
17
|
c
|
18
|
c
|
19
|
c
|
20
|
a
|