* El apuntador a fichero, que todo descriptor de fichero activo tiene asociado, no es compartido entre los descriptores asociados al mismo fichero.
De esta manera se reducen los tiempo de acceso a los datos almacenados en el disco: como resultado de la compactación, los datos pertenecientes a un mismo fichero se encuentran próximos, y por tanto se reducen los desplazamientos de las cabezas de lectura/escritura.
Condiciones:
* Asignación contigua
* Disco de 2 caras con 80 pistas y 32 sectores por pista. El tamaño de sector es de 512 bytes.
* El sistema de archivos gestiona el espacio para ficheros mediante bloques de 1024 bytes.
Solución:
Sean
Offset_Fichero = Apuntador del fichero (dato de entrada)
Bloque_Inicio = Bloque de comienzo del fichero
"/" Operador división entera
"%" Operador resto de división
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 */
Bloque_relativo = Ofsset_fichero / 1024; /* Parte entera */
Offset_Bloque = Offset_fichero % 1024;
/* Obtenemos bloque absoluto de sistema de archivos */
Bloque_Absoluto = Bloque_Inicio + Bloque_Relativo;
/* 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 aspecto es importante pues influye en los tiempos de acceso a los datos de los archivos almacenados en el disco.
Ejercicio: plantear una regla más eficiente que la descrita.
Se pide describir un escenario de seguridad que no encaje en el modelo jerárquico de anillos de protección. Caben aquí tantas respuestas como dé la imaginación de cada cual, aunque todas serán semajantes a casos como estos:
* Varias personas con el mismo nivel de privilegio para acceder a unos recursos, pero con privilegios mutuamente excluyentes sobre otra clase de recursos. Ej. unos ejecutivos que tienen el privilegio de utilizar cierta impresora, pero cada uno de ellos puede trabajar en un directorio personal que nadie más puede mirar.
* Una persona con un nivel de privilegio superior que no esté autorizada a realizar operaciones de niveles inferiores. Por ejemplo, un jefe que no esté autorizado a intervenir los mensajes de correo electrónico de un subordinado.
En general, un proceso UNIX pasa a modo núcleo o modo sistema cuando efectúa una llamada al sistema; así hasta que retorne la llamada. También puede ejecutarse en modo sistema cuando llega algún evento que el proceso acepte (p.ej. una señal) y se tenga que ejecutar código del núcleo.
Un proceso zombi es aquél que ha terminado, pero que mantiene su bloque de control de proceso, debido a que su padre no ha terminado y no ha ejecutado aún una llamada wait para recibir el código de terminación de tal proceso.
Un proceso zombi no mantiene recursos como memoria virtual, ficheros abiertos, etc.
Significa que a todo usuario o proceso se le deben conceder los mínimos privilegios de acceso a los recursos que sean suficientes para su normal desempeño en el sistema. De esta forma, se evitan los riesgos de ejecutar operaciones inadecuadas que atenten contra la seguridad (p.ej. borrar archivos del sistema).
Pueden mencionarse múltiples parecidos y diferencias. Algunas similitudes destacables son:
* Gestión de espacio no contigua
* La información de los ficheros se guarda en bloques lógicos de tamaño fijo
* La información de los ficheros no se estructura, sino que se maneja como una ristra de bytes
* Los directorios se consideran archivos, aunque de tipo especial
* Permiten proporcionar una interfaz de acceso tanto directo como secuencial de forma eficiente
Algunas diferencias notables:
* La estrategia de ubicación del UNIX es indexada, mientras que en MS-DOS es enlazada por medio de una FAT en una zona separada del disco.
* El UNIX mantiene la información de control de los archivos en unas estructuras (nodos-i) ubicadas en zonas aparte del disco, mientras que en MS-DOS esta información se guarda en el directorio.
* UNIX permite referenciar al mismo archivo a través de varios nombres (concepto de enlace).
* La implementación de MS-DOS facilita la recuperación de archivos borrados.
* En UNIX existe la operación de montaje, que no aparece en MS-DOS.
* Antes de ejecutar una operación sobre archivos, en UNIX se verifica que el proceso tiene privilegios suficientes
Datos:
dirección virtual = 32 bits
dirección física = 24 bits
tamaño de página = 4096 bytes
tamaño máximo de una tabla secundaria = 4096 bytes
Como cada página ocupa 4096 bytes, se necesitan 12 bits dentro de la dirección virtual para el desplazamiento dentro de la página. Quedan 20 bits para seleccionar la tabla de páginas.
Cada entrada en la tabla de páginas (secundaria) ocupará en torno a 2 bytes, ya que: a) con 24 bits para dirección física, nos salen 24-12=12 bits para marcos de página, más 3 bits de gestión (validez, referencia y modificación). Por tanto, 15 bits por entrada, que podemos redondear a 16 bits=2 bytes.
Con ello, una tabla de páginas secundaria puede ocupar hasta 4096/2 = 2048 entradas diferentes. Para direccionar 2048 entradas hacen falta 11 bits.
Así, nos quedan 9 bits para seleccionar la tabla de páginas, con lo cual la dirección virtual podría tener estos componentes:
9 bits
|
11
bits
|
12
bits
|
selector
de tabla
|
selector
de página dentro de la tabla secundaria
|
desplazamiento
dentro de la página
|
El orden de los bits no tiene por qué ser el que se muestra. También pueden seguirse otros razonamientos que lleven a tamaños algo diferentes, pero al menos tienen que tenerse 12 bits para desplazamiento dentro de la página.
10 megabytes = 10 x 220 bytes
1 marco = espacio para 1 página = 4006 bytes = 212 bytes
Marcos disponibles = (10 x 220 bytes) / 212 bytes = 2.560
páginas necesarias para 4 megabytes = (4 x 220 bytes) / 212 bytes = 1.024
El proceso necesita 1.024 entradas en tablas de páginas. Habrá que multiplicar esta cantidad por los bytes que consume cada entrada, para saber cuánto se lleva en tablas secundarias. Según los cálculos del primer apartado, se necesitan 1.024x2 = 2.048 bytes, lo cual cabe holgadamente en una sola tabla secundaria.
Por otra parte, habrá que construirle al proceso una tabla primaria con una sola entrada.
Pregunta
|
Opción
correcta
|
---|---|
1
|
d
|
2
|
c
|
3
|
d
|
4
|
a
|
5
|
d
|
6
|
a
|
7
|
b
|
8
|
b
|
9
|
c
|
10
|
a
|
11
|
a
|
12
|
d
|
13
|
c
|
14
|
b
|
15
|
c
|