Documentos de Académico
Documentos de Profesional
Documentos de Cultura
peraativo
os
V129
9
CARLOS A. RUIZ GUTIÉRREZ
SISTEMAS
OPERATIVOS
2012
Ruiz Gutiérrez, Carlos Alberto
Sistemas operativos [Archivo de Internet] / Carlos A. Ruiz Gutiérrez. – Ávila: Universidad Católica de
Ávila, 2012. – 1 archivo de Internet (PDF). – (Manuales)
ISBN 978‐84‐9040‐088‐3 D.L. AV 181‐2012
1. Sistemas operativos (Ordenadores)
QA76.76.O63
004.45
© Servicio de Publicaciones
Universidad Católica de Ávila
C/ Canteros s/n. 05005 Ávila
Tlf. 920 25 10 20
publicaciones@ucavila.es
www.ucavila.es
© Primera edición (en papel): septiembre 2010
Reimpresión (en formato electrónico): septiembre 2012
“Cualquier forma de reproducción, distribución, comunicación pública o transformación de esta obra
sólo puede ser realizada con la autorización de sus titulares, salvo excepción prevista por la ley. Diríjase
a CEDRO (Centro Español de Derechos Reprográficos http://www.cedro.org) si necesita imprimir o
descargar algún fragmento de esta obra.”
ISBN: 978‐84‐9040‐088‐3
Depósito Legal: AV 181‐2012
Índice general
Sistemas Operativos
1
UNIDAD 2. PROCESOS
3.1. Concurrencia
3.1.1. Ventajas de la ejecución concurrente
3.1.2. Tipos de procesos concurrentes
3.2. Problemas clásicos de comunicación y sincronización
3.2.1. Problema de la sección crítica
3.2.2. Problema del productor-consumidor
3.2.3. Problema de los lectores-escritores
3.2.4. Problema de los filósofos comensales
3.3. Mecanismos de comunicación y sincronización
3.3.1. Comunicación mediante archivos
3.3.2. Comunicación y sincronización mediante tuberías
3.3.3. Semáforos
3.3.4. Mutex y variables condicionales
3.3.5. Memoria compartida
3.3.6. Sincronización mediante señales
3.3.7. Paso de mensajes
Sistemas Operativos
2
UNIDAD 4. INTERBLOQUEOS
4.1. Definición
4.2. Interbloqueo en un sistema informático
4.2.1. Tipos de recursos
4.3. Modelado del sistema
4.3.1. Grafo de asignación de recursos
4.3.2. Matrices de asignación de recursos
4.4. Identificación del interbloqueo
4.5. Tratamiento del interbloqueo
4.6. Detección y recuperación del interbloqueo
4.6.1. Detección del interbloqueo
4.6.2. Recuperación del interbloqueo
4.7. Prevención del interbloqueo
4.7.1. Exclusión mutua
4.7.2. Retención y espera
4.7.3. No expropiación
4.7.4. Espera circular
4.8. Predicción del interbloqueo
4.8.1. Estado seguro
4.8.2. Algoritmos de predicción
Sistemas Operativos
3
UNIDAD 5. ENTRADA/SALIDA
5.1. Definición
5.2. Clasificación de dispositivos de E/S
5.2.1. Conexión de un dispositivo de E/S
5.2.2. Dispositivos según dirección de E/S
5.2.3. Dispositivos de bloques o de caracteres
5.2.4. Dispositivos de E/S programada o por interrupciones
5.3. Mecanismos de optimización
5.3.1. Acceso directo a memoria (Dma)
5.3.2. Canales de E/S con Dma
5.3.3. Memoria caché
5.3.4. Solapamiento de operaciones
5.4. Estructura del sistema de E/S
5.4.1. Componentes del sistema de E/S
5.5. Software de entrada/salida
5.5.1. Manejadores de interrupción
5.5.2. Manejadores de dispositivos
5.5.3. Software independiente del dispositivo
5.6. Almacenamiento secundario
5.6.1. Discos
5.6.2. Políticas de planificación de disco
5.6.3. Fiabilidad y tolerancia a fallos
Sistemas Operativos
4
UNIDAD 6. ARCHIVOS Y DIRECTORIOS
Sistemas Operativos
5
UNIDAD 7. GESTIÓN DE MEMORIA
Sistemas Operativos
6
SISTEMAS
OPERATIVOS
1
INTRODUCCIÓN
A LOS SISTEMAS
OPERATIVOS
V129 (01)
Sistemas Operativos
ÍNDICE
♦ OBJETIVOS................................................................................................3
♦ INTRODUCCIÓN ........................................................................................4
1.1. Definición de sistema operativo (SO)..................................................5
1.2. Funciones del sistema operativo ........................................................6
1.3. Componentes del sistema operativo ...................................................9
1.4. Estructura del sistema operativo ......................................................11
1.4.1. Sistemas operativos monolíticos ....................................................11
1.4.2. Sistemas operativos estructurados ................................................12
1.5. Gestión de procesos ..........................................................................14
1.5.1. Servicios de procesos ....................................................................15
1.6. Gestión de memoria ...........................................................................16
1.6.1. Servicios de memoria ....................................................................16
1.7. Comunicación y sincronización de procesos...................................17
1.7.1. Servicios de comunicación y sincronización...................................17
1.8. Gestión de la E/S ................................................................................18
1.8.1. Servicios de la E/S ........................................................................18
1.9. Gestión de archivos y directorios .....................................................19
1.9.1. Servicios de archivos .....................................................................21
1.9.2. Servicios de directorios ..................................................................21
1.10. Historia de los sistemas operativos ..................................................22
♦ RESUMEN ................................................................................................29
♦ OBJETIVOS
♦ INTRODUCCIÓN
Sistema operativo
Cada una de estas capas, nos desvela una de las tres funciones básicas de
un SO, que se detallaran a continuación:
Por último debe analizar o contabilizar el uso que hacen los programas de los
recursos que tienen asignados. Cuando la contabilidad se emplea meramente
para conocer la carga del sistema se denomina monitorización.
• Espera una orden del usuario. En el caso de una interfaz textual, espera lo
que escribe el usuario en la línea de comandos. Y en el caso de interfaz
gráfica está a la espera de un evento o acción (del ratón, del teclado, etc.).
USUARIOS
HARDWARE
El problema que plantean estos SO, es que todas sus funciones y servicios
están situadas al mismo nivel, lo que complica el hecho de modificar o añadir
nuevos componentes. Ya que para ello, se debe modificar un programa
compuesto por miles de líneas de código y funciones, que se invocan entre
ellas.
Existen dos tipos de estructuras, que son las que normalmente se aplican a
los SO: la estructura de capas y la estructura cliente-servidor.
Estructura de capas
Estructura cliente-servidor
El fundamento de esta estructura consiste en implementar la mayor parte de
los servicios y funciones del SO para que sean ejecutadas en modo usuario,
dejando solo una pequeña parte ejecutándose en modo núcleo. A esta
pequeña parte se denomina micronúcleo y a los procesos que ejecutan el
resto de funciones se les denomina servidores.
Procesos Procesos
cliente servidores
Programa de Servidor
usuario Servidor de Servidor de Servidor de Servidor de
de
procesos E/S archivos seguridad
API memoria
MICRONÚCLEO
HARDWARE
Proceso
• Permitir que los procesos compartan sus espacios de memoria, con el fin
de que se comuniquen entre ellos.
Archivos
Todos los archivos llevan asociada una información básica, que es de gran
utilidad tanto al usuario como al sistema:
• Tipo de archivo.
Directorios
En esta estructura jerárquica hay que diferenciar entre nombre relativo, que
es el nombre del archivo dentro del directorio actual y el nombre absoluto,
que incluye los nombres de todos los subdirectorios que se han de recorrer
desde la raíz.
• Abrir un directorio: al igual que con los archivos, un directorio debe ser
abierto antes de acceder a su contenido. Devuelve al usuario un
identificador, que permite realizar las operaciones sobre ese directorio.
Antes de los SO
Los trabajos se siguen ejecutando en serie y cada uno de ellos pasa por las
siguientes fases:
Desde entonces han sido muchos los fabricantes que han adoptado a UNIX
como SO de sus máquinas (SUN, HP y AIX de IBM).
Los sistemas operativos que han dominado los PC desde sus inicios son
UNIX, MS-DOS, Windows 95, 98, NT, 2000, XP, Vista y Windows 7. También
cabe destacar el desarrollo de Linux, sistema operativo similar a UNIX
desarrollado de forma desinteresada por voluntarios. Es uno de los ejemplos
más destacados de software libre; todo su código fuente puede ser utilizado,
modificado y redistribuido libremente por cualquiera bajo los términos de la
GPL (Licencia Pública General de GNU) y otra serie de licencias libres.
♦ RESUMEN
PROCESOS
Sistemas Operativos
ÍNDICE
♦ OBJETIVOS................................................................................................3
♦ INTRODUCCIÓN ........................................................................................4
2.1. Concepto de proceso ...........................................................................5
2.1.1. Multitarea .........................................................................................5
2.2. Estados de un proceso ........................................................................7
2.2.1. Cambio de contexto .........................................................................8
2.3. Procesos ligeros .................................................................................11
2.3.1. Información de los procesos ligeros ...............................................11
2.3.2. Estados de un proceso ligero.........................................................12
2.3.3. Paralelismo ....................................................................................13
2.4. Planificación de procesos ..................................................................14
2.4.1. Planificación expulsiva/no expulsiva ..............................................15
2.4.2. Colas de procesos .........................................................................16
2.4.3. Objetivos de la planificación...........................................................17
2.5. Algoritmos de planificación ...............................................................18
2.5.1. FCFS (First Come First Served).....................................................19
2.5.2. SJF (Sort Job First) ........................................................................22
2.5.3. SRTF (Sort Remaining Time First) .................................................23
2.5.4. RR (Round Robin) .........................................................................25
2.5.5. Planificación basada en prioridades...............................................28
2.5.6. Planificación basada en múltiples colas .........................................29
♦ RESUMEN ................................................................................................31
Unidad 2. Procesos. 1
Sistemas Operativos
♦ OBJETIVOS
Unidad 2. Procesos. 3
Formación Abierta
♦ INTRODUCCIÓN
4 Unidad 2. Procesos.
Sistemas Operativos
Básicamente, los procesos son todos los programas o tareas que están
ejecutándose en el sistema operativo. Aunque una definición más correcta
seria:
Proceso
2.1.1. MULTITAREA
Unidad 2. Procesos. 5
Formación Abierta
Características
La multitarea se caracteriza por:
Proceso nulo
Planificador y activador
6 Unidad 2. Procesos.
Sistemas Operativos
NUEVO TERMINADO
Planificado
Admitido Terminación
o excepción
PREPARADO EJECUCIÓN
Tiempo consumido
Fin Operación E/S Operación E/S o
u ocurre el evento espera por un evento
BLOQUEADO
Unidad 2. Procesos. 7
Formación Abierta
Interrupción
En ejecución
Guardar estado P1
Ocioso
Recuperar estado P2
Ocioso
Interrupción En ejecución
Guardar estado P2
Ocioso
Recuperar estado P1
En ejecución
8 Unidad 2. Procesos.
Sistemas Operativos
• Estado del procesador: contiene los valores iniciales del estado del
procesador y los valores en el momento de la interrupción.
Unidad 2. Procesos. 9
Formación Abierta
NUEVO TERMINADO
COLA DE PREPARADOS
EJECUCIÓN
E/S
10 Unidad 2. Procesos.
Sistemas Operativos
Proceso A Proceso B
Hilos o
procesos
ligeros
Figura 2.4. Procesos ligeros
Cada proceso ligero tiene información propia y que no comparte con otros
procesos ligeros. Esta información, corresponde básicamente a su propio
contexto de ejecución, pudiéndose destacar las siguientes:
• Contador de programa.
• Pila.
• Registros.
Unidad 2. Procesos. 11
Formación Abierta
Por otro lado, todos los procesos ligeros de un mismo proceso comparten la
información de éste. En concreto:
• Espacio de memoria.
• Variables globales.
• Archivos en uso.
• Procesos hijos.
• Temporizadores.
• Señales.
• Contabilidad.
El estado del proceso será la combinación del estado de sus hilos. Si tiene
algún hilo en ejecución, su estado será en ejecución. Si no tiene hilos en
ejecución pero tiene alguno preparado, el estado del proceso será preparado.
Y por último, si todos sus hilos están bloqueados, el estado del proceso será
bloqueado.
12 Unidad 2. Procesos.
Sistemas Operativos
Proceso
Hilos Hilo en
Preparados Ejecución
Hilo
Bloqueado
2.3.3. PARALELISMO
Ejecución en serie
P = Preparado
CPU = En ejecución
E/S = En operación de E/S
F = Finalizado
Unidad 2. Procesos. 13
Formación Abierta
14 Unidad 2. Procesos.
Sistemas Operativos
TERMINADO
PLANIFICADOR A
PLANIFICADOR A
LARGO PLAZO
EJECUCIÓN CORTO PLAZO
…..
…..
PREPARADO BLOQUEADO
SUSPENDIDO SUSPENDIDO
…..
PLANIFICADOR A
MEDIO PLAZO
Unidad 2. Procesos. 15
Formación Abierta
16 Unidad 2. Procesos.
Sistemas Operativos
Todos estos objetivos son incompatibles entre sí. Por ello cada sistema
operativo, en función de para que esté diseñado, se centrará en el que más
interese para su óptimo funcionamiento.
Unidad 2. Procesos. 17
Formación Abierta
Por naturaleza, no hay un algoritmo que sea mejor o peor que otro, esto
dependerá de cada caso, del tipo de procesos que se estén gestionando y de
los criterios de planificación establecidos.
18 Unidad 2. Procesos.
Sistemas Operativos
Tiempo de Tiempo de
Proceso
llegada ejecución
A 0 9
B 1 2
C 2 3
D 3 1
E 4 5
Por ejemplo, en esta tabla se puede observar que el proceso llamado “C”, ha
llegado al sistema en el instante de tiempo 2 y que necesita 4 unidades de
tiempo para llevar a cabo su ejecución.
Unidad 2. Procesos. 19
Formación Abierta
Tiempo 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
CPU A A A A A A A A A B B C C C D E E E E E
Obsérvese lo siguiente:
Tiempo de Tiempo de
Proceso
retorno espera
A 9 0
B 10 8
C 12 9
D 12 11
E 16 11
Tiempos medios 59/5 39/5
20 Unidad 2. Procesos.
Sistemas Operativos
Tiempo de Tiempo de
Proceso
llegada ejecución
D 0 1
B 1 2
C 2 3
E 3 5
A 4 9
Tiempo 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
CPU D B B C C C E E E E E A A A A A A A A A
Tiempo de Tiempo de
Proceso
retorno espera
A 20 8
B 2 0
C 4 1
D 1 0
E 8 3
Unidad 2. Procesos. 21
Formación Abierta
Tiempo de Tiempo de
Proceso
llegada ejecución
A 0 9
B 1 2
C 2 3
D 3 1
E 4 5
Tiempo 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
CPU A A A A A A A A A D B B C C C E E E E E
Tiempo de Tiempo de
Proceso
retorno espera
A 9 0
B 11 9
C 13 10
D 7 6
E 16 11
22 Unidad 2. Procesos.
Sistemas Operativos
Obsérvese lo siguiente:
Unidad 2. Procesos. 23
Formación Abierta
Tiempo de Tiempo de
Proceso
llegada ejecución
A 0 9
B 1 2
C 2 3
D 3 1
E 4 5
Tiempo 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
CPU A B B D C C C E E E E E A A A A A A A A
Tiempo de Tiempo de
Proceso
retorno espera
A 20 11
B 2 0
C 5 2
D 1 0
E 8 3
24 Unidad 2. Procesos.
Sistemas Operativos
Unidad 2. Procesos. 25
Formación Abierta
Tiempo de Tiempo de
Proceso
llegada ejecución
A 0 9
B 1 2
C 2 3
D 3 1
E 4 5
Tiempo 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
CPU A A B B C C A A D E E C A A E E A A E A
Tiempo de Tiempo de
Proceso
retorno espera
A 20 11
B 3 1
C 10 7
D 6 5
E 15 10
Obsérvese lo siguiente:
26 Unidad 2. Procesos.
Sistemas Operativos
Cola de preparados
C B CPU
Cola de preparados
ACB CPU
Cola de preparados
CAB CPU
Tiempo 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
CPU A A B B A A C C D E E A A C E E A A E A
Tiempo de Tiempo de
Proceso
retorno espera
A 20 11
B 3 1
C 12 9
D 6 5
E 15 10
Unidad 2. Procesos. 27
Formación Abierta
28 Unidad 2. Procesos.
Sistemas Operativos
Unidad 2. Procesos. 29
Sistemas Operativos
♦ RESUMEN
• Los algoritmos más importantes son: FCFS (First Come First Served), SJF
(Sort Job First), SRTF (Sort Remaining Time First), RR (Round Robin),
Planificación basada en prioridades y Planificación basada en
múltiples colas.
Unidad 2. Procesos. 31
SISTEMAS
OPERATIVOS
3
COMUNICACIÓN Y
SINCRONIZACIÓN DE
PROCESOS
Sistemas Operativos
ÍNDICE
♦ OBJETIVOS................................................................................................3
♦ INTRODUCCIÓN ........................................................................................4
3.1. Concurrencia ........................................................................................5
3.1.1. Ventajas de la ejecución concurrente ..............................................6
3.1.2. Tipos de procesos concurrentes ......................................................7
3.2. Problemas clásicos de comunicación y sincronización ....................9
3.2.1. Problema de la sección crítica .........................................................9
3.2.2. Problema del productor-consumidor ..............................................11
3.2.3. Problema de los lectores-escritores ...............................................12
3.2.4. Problema de los filósofos comensales ...........................................13
3.3. Mecanismos de comunicación y sincronización..............................15
3.3.1. Comunicación mediante archivos ..................................................16
3.3.2. Comunicación y sincronización mediante tuberías .........................16
3.3.3. Semáforos .....................................................................................20
3.3.4. Mutex y variables condicionales.....................................................24
3.3.5. Memoria compartida ......................................................................30
3.3.6. Sincronización mediante señales ...................................................30
3.3.7. Paso de mensajes .........................................................................30
♦ RESUMEN ................................................................................................35
♦ OBJETIVOS
♦ INTRODUCCIÓN
3.1. CONCURRENCIA
Proceso 1
Proceso 2
Proceso 3
Tiempo
Multiprocesador
Cuando una computadora está equipada con varias CPU que comparten la
memoria principal, se le denomina sistema multiprocesador. En esta
arquitectura, los procesos concurrentes no solo pueden intercalar su
ejecución (multiprogramación), sino que pueden superponerla. En un
momento dado, se pueden estar ejecutando tantos procesos distintos como
procesadores existan, por lo que aquí sí que se produce realmente una
ejecución simultánea de procesos.
CPU 1
CPU 2
Proceso 1
Proceso 2
Proceso 3
Tiempo
Multicomputadora
Procesos Independientes
Son procesos que se ejecutan sin requerir la cooperación de otros procesos.
Estos procesos compiten por los recursos que la máquina les proporciona
para la ejecución y son independientes, puesto que entre ellos no existe
ninguna necesidad de comunicación.
Procesos Cooperantes
Estos procesos están diseñados para trabajar conjuntamente, por lo que
deben ser capaces de interactuar y comunicarse entre ellos, para llegar a
conseguir el objetivo común.
En esta solución, existe una variable “i” y otra “j” que indica el proceso que se
está ejecutando. Si se está ejecutando el proceso “i”, entonces “i” valdrá 0 y
“j” 1.
//variables globales
Bool indicador [2];
Bool turno;
SECCIÓN CRÍTICA
En este problema existe un recurso, que puede ser un archivo, registro, etc.,
el cual es utilizado por un grupo de procesos concurrentes. Existen dos tipos
de procesos, los lectores que únicamente acceden al recurso para leer datos,
sin realizar ninguna modificación sobre ellos, y los escritores, los cuales
modifican el contenido del recurso que comparten, esta actualización implica
leerlo, modificarlo y escribir el nuevo contenido.
Como en todos los problemas, la solución debe cumplir las tres condiciones
necesarias que son: exclusión mutua, progreso y espera limitada.
Especialmente en este caso, ya que puede llegarse fácilmente a una situación
de bloqueo total (abrazo mortal o deadlock).
Archivos.
Tuberías.
Paso de mensajes.
Señales.
Tuberías.
Semáforos.
Paso de mensajes.
Como se puede observar, hay mecanismos que sirven para dar solución tanto
a la tarea de comunicación, como a la de sincronización.
Ventajas
Inconvenientes
Todos los datos que se lean, serán eliminados. Si se desean leer más
datos de los que están disponibles, se obtendrán los que hubiera y se
éel proceso hasta obtener el volumen de datos requeridos.
Normalmente las lecturas son de un volumen inferior, al tamaño total
de la tubería.
• Cuando varios procesos intenten ejecutar este código, solo uno de ellos
conseguirá leer el testigo de la tubería. El resto quedarán bloqueados,
hasta que el proceso que lo ha leído ejecute su sección crítica y escriba
de nuevo el testigo en la tubería, para que así, otro proceso pueda leerlo y
ejecutar su sección crítica.
• De esta manera se garantiza que solo un proceso (el que lea el testigo)
podrá estar ejecutando su sección crítica. También se garantiza el
progreso, ya que todos los procesos en algún momento tomarán el testigo
y ejecutarán su SC. Y por último, la espera será limitada, podrá ser mayor
o menor, pero un proceso siempre terminará obteniendo el testigo.
PRODUCTOR {
For( ; ; ;){
Producir dato
Escribir dato en tubería
}
}
CONSUMIDOR {
For( ; ; ;){
Leer dato de tubería
Consumir dato
}
}
3.3.3. SEMÁFOROS
Wait(s){
s=s–1
if (s < 0)
Bloquear el proceso;
}
Signal(s){
s=s+1
if (s <= 0)
Desbloquear proceso;
}
Wait (s)
Código SECCIÓN CRÍTICA
Signal (s)
Valor
Semáforo 0 -1 -2 -1 0 1
(inicial = 1)
Figura 3.8. Ejemplo sección crítica con semáforos.
Productor() {
Int posicion = 0;
for ( ; ; ) {
producir dato;
wait (huecos); /* decrementa los huecos */
buffer [posicion] = dato; /* inserta elemento en buffer */
posicion = (posicion + 1) % MAXIMO_BUFFER;
signal (elementos); /* incrementa los elementos */
}
}
Consumidor() {
Int posicion = 0;
for ( ; ; ) {
wait (elementos); /* decrementa los elementos */
dato = buffer [posicion]; /* extrae elemento del buffer */
posicion = (posicion + 1) % MAXIMO_BUFFER;
signal (huecos); /* incrementa los huecos */
consumir dato;
}
}
Por otro lado, los procesos consumidores, antes de extraer un elemento del
buffer decrementa el valor con la operación wait (elementos). Si el valor se
convierte en negativo, los procesos se bloquean a la espera de que se
inserten más datos. Al final, incrementa el valor de los huecos con una
operación signal (huecos).
Lector() {
wait (lectores);
num_lectores = num_lectores + 1;
if (num_lectores == 1)
wait (recurso);
signal(lectores);
wait (lectores);
num_lectores = num_lectores - 1;
if (num_lectores == 0)
signal (recurso);
signal(lectores);
}
Escritor() {
wait (recurso);
MODIFICAR RECURSO;
signal(recurso);
}
Obsérvese, que aun siendo una solución válida, se concede prioridad a los
lectores sobre los escritores. Siempre que haya un proceso lector accediendo
al recurso compartido, el resto de procesos lectores también podrán acceder
sin solicitar permiso. Sin embargo, los procesos escritores deberán esperar a
que hayan abandonado el recurso todos los lectores para que les sea
permitido el acceso.
Una variable Mutex actúa como un cerrojo protegiendo los datos o recursos.
El concepto básico de Mutex es similar a todos los vistos anteriormente, es
decir, que solo un proceso puede cerrar el cerrojo en un determinado instante,
o lo que es lo mismo, acceder al recurso de manera exclusiva. Incluso si
varios procesos intentan hacerlo al mismo tiempo.
Algo muy importante es que todos los procesos/hilos deben utilizar el mismo
protocolo para bloquear y desbloquear los cerrojos en el acceso a los
recursos, ya que si mientras dos procesos/hilos utilizan el cerrojo de forma
correcta, existe otro que simplemente accede a los datos protegidos, no se
garantiza la exclusión mutua y pueden darse condiciones de carrera y errores
en los resultados.
Las operaciones que se pueden realizar sobre una variable mutex o cerrojo
en general son tres: init(), lock() y unlock().
Dado que las operaciones sobre un mutex son atómicas, solo un proceso
conseguirá bloquear el mutex y podrá acceder a su sección crítica.
Las operaciones básicas que se pueden realizar sobre estas variables son:
lock(m);
código SECCIÓN CRÍTICA
while (condición == FALSE) /* condición indica si el buffer esta libre */
c_wait (c , m)
resto código SECCIÓN CRÍTICA /* en esta parte escribe en el buffer */
unlock(m)
lock(m);
código SECCIÓN CRÍTICA /* en esta parte se extraen datos del buffer */
condición == TRUE /* condición indica que el buffer esta libre */
c_signal (c )
unlock(m)
En este caso el proceso extrae datos del buffer, por lo que hace cierta la
condición de que existe espacio libre. Ejecuta la operación c_signal sobre la
variable condicional, con la que despierta a un proceso bloqueado por dicha
variable, el cual vuelve a competir por adquirir el mutex.
Productor() {
Int posicion = 0;
for ( ; ; ) {
producir dato;
lock(mutex);
while (num_elem == MAXIMO_BUFFER) /* si buffer lleno */
c_wite(lleno, mutex); /*se bloquea el proceso */
buffer [posicion] = dato; /* inserta elemento en buffer */
posicion = (posicion + 1) % MAXIMO_BUFFER;
num_elem = num_elem + 1; /* incrementa los elementos */
if (num_elem == 1)
c_signal(vacio); /*buffer no vacio*/
unlock(mutex);
}
}
Consumidor() {
Int posicion = 0;
for ( ; ; ) {
lock(mutex);
while (num_elem == 0) /* si buffer vacio */
c_wite(vacio, mutex); /*se bloquea el proceso */
dato = buffer [posicion]; /* extrae elemento del buffer */
posicion = (posicion + 1) % MAXIMO_BUFFER;
num_elem = num_elem - 1; /* decrementa los elementos */
if (num_elem == (MAXIMO_BUFFER - 1)
c_signal(lleno); /*buffer no lleno*/
unlock(mutex);
consumir dato;
}
}
Lector() {
lock(mutex_lectores);
num_lectores = num_lectores + 1;
if (num_lectores == 1)
lock(mutex);
unlock(mutex_lectores);
lock(mutex_lectores);
num_lectores = num_lectores - 1;
if (num_lectores == 0)
unlock(mutex);
unlock(mutex_lectores);
}
Escritor() {
lock(mutex);
MODIFICAR RECURSO;
unlock(mutex);
}
Flujo de datos
Nombre
Los procesos que desean recibir o enviar mensajes, deben tener alguna
manera para referirse los unos a los otros. Así pues la comunicación puede
ser de dos tipos: directa o indirecta.
Sincronización
La comunicación entre procesos puede ser síncrona o asíncrona. Se
denomina comunicación síncrona, cuando para comunicarse dos procesos,
uno ejecuta la operación de envío y el otro la de recepción al mismo tiempo.
Si las operaciones no se realizan al mismo tiempo, se denomina
comunicación asíncrona.
Existen tres combinaciones habituales de sincronismo:
Almacenamiento
Hace referencia a la capacidad del canal de comunicación para almacenar o
no mensajes.
Productor() {
for ( ; ; ) {
producir dato;
send( consumidor, dato);
}
}
Consumidor() {
for ( ; ; ) {
receive( productor, dato);
consumir dato;
}
}
♦ RESUMEN
INTERBLOQUEOS
Sistemas Operativos
ÍNDICE
♦ OBJETIVOS................................................................................................3
♦ INTRODUCCIÓN ........................................................................................4
4.1. Definición ..............................................................................................5
4.2. Interbloqueo en un sistema informático .............................................8
4.2.1. Tipos de recursos ............................................................................8
4.3. Modelado del sistema.........................................................................14
4.3.1. Grafo de asignación de recursos ...................................................14
4.3.2. Matrices de asignación de recursos ...............................................17
4.4. Identificación del interbloqueo ..........................................................20
4.5. Tratamiento del interbloqueo.............................................................22
4.6. Detección y recuperación del interbloqueo ......................................24
4.6.1. Detección del interbloqueo.............................................................24
4.6.2. Recuperación del interbloqueo ......................................................27
4.7. Prevención del interbloqueo ..............................................................29
4.7.1. Exclusión mutua ............................................................................29
4.7.2. Retención y espera ........................................................................29
4.7.3. No expropiación .............................................................................30
4.7.4. Espera circular ...............................................................................30
4.8. Predicción del interbloqueo ...............................................................31
4.8.1. Estado seguro................................................................................31
4.8.2. Algoritmos de predicción ................................................................32
♦ RESUMEN ................................................................................................35
Unidad 4. Interbloqueos. 1
Sistemas Operativos
♦ OBJETIVOS
• Conocer, por último, las técnicas de predicción del interbloqueo, así como
los algoritmos más importantes.
Unidad 4. Interbloqueos. 3
Formación Abierta
♦ INTRODUCCIÓN
En este capítulo, se intentarán compaginar los aspectos teóricos del tema con
su aplicación informática, y por tanto, se darán las pautas a seguir para la
detección y recuperación, la prevención y la predicción de los interbloqueos
en un sistema informático.
Así pues, la unidad comienza con una definición y un ejemplo informal, pero
muy descriptivo del concepto de interbloqueo. Posteriormente se formalizará y
ampliará este concepto, detallando las explicaciones con dos técnicas: la
representación mediante grafos y la representación matricial, ambas de gran
utilidad en este tema.
4 Unidad 4. Interbloqueos.
Sistemas Operativos
4.1. DEFINICIÓN
Interbloqueo
Unidad 4. Interbloqueos. 5
Formación Abierta
Cada uno de los vehículos posee un recurso, que es la parte de puente que
ya ha recorrido. Y a su vez necesita otro recurso, que es la parte de puente
que le queda por recorrer y que está bloqueada por el vehículo contrario. Por
tanto, se encuentran en una situación en la que el recurso que necesita cada
uno de ellos, lo posee el otro vehículo. Están en una situación de
interbloqueo. A su vez todos los vehículos que sigan intentando acceder al
puente se bloquearán, pudiendo llegar a un colapso total de la circulación.
• Detección y recuperación.
6 Unidad 4. Interbloqueos.
Sistemas Operativos
• Prevención y predicción.
Unidad 4. Interbloqueos. 7
Formación Abierta
• Las entidades activas, que obviamente son los procesos o en su caso los
hilos.
• Los recursos, tanto físicos como lógicos de los que dispone un sistema
informático.
8 Unidad 4. Interbloqueos.
Sistemas Operativos
PROCESO P1 PROCESO P2
Unidad 4. Interbloqueos. 9
Formación Abierta
10 Unidad 4. Interbloqueos.
Sistemas Operativos
El sistema por su parte, debe controlar quién está utilizando este recurso y en
qué modo. Así pues, si un proceso solicita el recurso en modo exclusivo, solo
podrá asignárselo si el recurso está libre, es decir, no lo está utilizando ningún
otro proceso. Si la solicitud de uso se hace en modo compartido, el recurso se
podrá asignar siempre que no esté siendo utilizado por otro proceso en modo
exclusivo, es decir, se asignará si el recurso está libre o está siendo utilizado
en modo compartido.
Puesto que en todos los ejemplos expuestos, han sido utilizados recursos
exclusivos y compartidos, no se desarrollará ningún ejemplo en este punto
con el fin de simplificarlo.
Unidad 4. Interbloqueos. 11
Formación Abierta
Desde el punto de vista de los interbloqueos, los recursos o son únicos o son
múltiples, no cabe la posibilidad de asignar un perfil distinto a cada uno de los
recursos múltiples. Supóngase un sistema que dispone de dos impresoras,
las dos son idénticas en todo excepto que una permite imprimir en color y la
otra únicamente en blanco y negro. El recurso múltiple “impresora” no
permite la diferenciación de impresora en color y en b/n. Por tanto, si un
recurso necesita imprimir, lo hará por la que se le asigne, sin saber a priori si
será en color o en b/n. Si los procesos necesitaran diferenciar una impresora
de otra, se pasaría de tener un recurso múltiple (dos impresoras) a tener dos
recursos únicos (una impresora en color y una impresora en b/n).
PROCESO P1 PROCESO P2
12 Unidad 4. Interbloqueos.
Sistemas Operativos
Los recursos expropiables son aquellos que, en caso de que el proceso que
los está utilizando se bloquee, pueden ser liberados y asignados a otro
proceso. Esto implica que se debe almacenar el trabajo que el proceso
llevaba hecho con el recurso expropiado, para posteriormente retomarlo en
ese punto.
Los recursos no expropiables son los que no permiten esta operación, bien
porque no es factible o porque resultaría demasiado ineficiente.
Unidad 4. Interbloqueos. 13
Formación Abierta
• Los procesos.
• Un conjunto de recursos reutilizables y exclusivos. Cada uno de ellos
compuestos por una o varias unidades.
• Otro conjunto de relaciones entre los procesos y los recursos, las cuales
indican los recursos que tiene solicitados y no concedidos un proceso, y
en su caso, el número de unidades solicitadas.
Una vez descritos los elementos, se definirán los dos métodos más utilizados
de representación del estado de asignación de recursos en un sistema.
R2
P1
Proceso P1
14 Unidad 4. Interbloqueos.
Sistemas Operativos
• Un conjunto de vectores (V), formado por una parte por los vectores de
asignación, que salen de un recurso hacia un proceso y representan los
recursos asignados a ese proceso. Y por otra parte, los vectores de
solicitud, que salen de un proceso hacia un recurso e indican que un
proceso tiene solicitado cierto recurso.
P1 P2
Proceso P1: tiene asignada una
unidad del recurso R1 y tiene
solicitada una unidad del recurso
R2.
R1 R2
Unidad 4. Interbloqueos. 15
Formación Abierta
El grupo de nodos N, indica que el grafo está formado por los procesos P1,
P2 y P3 y por los recursos R1 del que se disponen de 2 unidades, R2 con 3
unidades y R3 con 2 unidades.
Por su parte, el grupo de vectores V, indica que existen dos vectores desde
R1 a P1, otro desde R2 a P2 y así sucesivamente. Recuérdese que los
vectores que van desde un recurso a un proceso son de asignación y si es al
contrario se trata de vectores de solicitud.
P1 P2 P3
R1 R2 R3
5 - P3 solicita R2 [1]
6 - P1 solicita (R2 [1], R3 [2]) P1 se bloquea porque no hay unidades de
R2
16 Unidad 4. Interbloqueos.
Sistemas Operativos
P1 P2 P3
R1 R2 R3
Para ello es necesario utilizar dos matrices, una matriz de solicitudes (S) y
una matriz de asignaciones (A), además de un vector con las unidades
existentes de cada recurso (E) y otro con las unidades disponibles (D):
Unidad 4. Interbloqueos. 17
Formación Abierta
Así, por ejemplo la componente A [2 ,1] indicará las unidades que el proceso
P2 tiene asignadas del recurso R1.
P1 P2 P3
R1 R2 R3
18 Unidad 4. Interbloqueos.
Sistemas Operativos
⎡2 0 0⎤ ⎡0 0 0 ⎤
A = ⎢⎢0 1 0 ⎥⎥ S = ⎢⎢ 1 0 0 ⎥⎥ E = [ 2 3 2] D = [ 0 1 2]
⎢⎣0 1 0 ⎥⎦ ⎢⎣0 0 0 ⎥⎦
Del mismo modo, la componente D[3] = 2, del vector D, indica que existen 2
unidades disponibles del recurso R3.
P1 P2 P3
R1 R2 R3
⎡2 0 0⎤ ⎡0 1 2 ⎤
A = ⎢⎢0 1 0 ⎥⎥ S = ⎢⎢ 1 0 0 ⎥⎥ E = [ 2 3 2] D = [0 0 2]
⎢⎣0 2 0 ⎥⎦ ⎢⎣0 0 0 ⎥⎦
Unidad 4. Interbloqueos. 19
Formación Abierta
• Exclusión mutua.
Los recursos implicados deben usarse en modo exclusivo por los
procesos. Una vez que se le ha asignado un recurso a un proceso, ningún
otro proceso podrá utilizarlo. Como ya se comentó, los recursos
compartidos nunca están involucrados en un interbloqueo.
• Retención y espera.
Cuando no se puede satisfacer la petición de un recurso por parte de un
proceso, éste se bloquea manteniendo los recursos que ya tenía
asignados previamente.
• No expropiación.
Los recursos solo pueden ser liberados por la acción explícita del proceso
que los posee y nunca por decisión de un agente externo.
• Espera circular.
Debe existir una lista circular de procesos tal que cada proceso en la lista
este esperando por uno o más recursos qué tiene asignado el siguiente
proceso de la lista. Un ejemplo sería que un proceso P1 posee el recurso
R1 y solicita el recurso R2 y otro proceso P2 que posee el recurso R2,
solicita el recurso R1.
20 Unidad 4. Interbloqueos.
Sistemas Operativos
Las tres primeras condiciones están relacionadas con las políticas de gestión
de recursos que se utilicen. Sin embargo la cuarta, la espera circular, indica
cómo debe ser el comportamiento dinámico de los procesos para que se
produzca el interbloqueo.
Unidad 4. Interbloqueos. 21
Formación Abierta
Existen tres tipos de técnicas para el tratamiento del interbloqueo, las cuales
se irán explicando detalladamente en los puntos siguientes. Son:
22 Unidad 4. Interbloqueos.
Sistemas Operativos
Unidad 4. Interbloqueos. 23
Formación Abierta
• Fase de detección.
Debe ejecutarse un algoritmo que analice en cada momento si en el
sistema se está produciendo algún interbloqueo, y de ser así identificar
qué procesos y recursos están implicados. Este tipo de algoritmos suelen
tener un coste de ejecución alto, lo que puede afectar al rendimiento del
sistema. Por ello se debe tener cuidado al establecer la frecuencia de
ejecución de dicho algoritmo. En el momento en que el algoritmo detecte
un interbloqueo, se activará la fase de recuperación.
• Fase de recuperación.
En esta fase, se debe aplicar alguna acción que elimine el interbloqueo.
Esta acción normalmente consiste en abortar la ejecución de alguno o
algunos de los procesos implicados, liberando de esta forma los recursos
que tuvieran asignados. Para ello, se utiliza también un algoritmo, que es
el encargado de dictaminar qué proceso o procesos deben ser abortados.
24 Unidad 4. Interbloqueos.
Sistemas Operativos
P1 P2 P3
R1 R2 R3
Puesto que el único proceso que tiene todos los recursos que necesita es P3,
se aplica una reducción por P3. El resultado es el siguiente grafo:
P1 P2 P3
R1 R2 R3
Se han liberado los recursos que tenía asignados P3, y por tanto, ahora P1 ya
puede disponer de todos los recursos que tiene solicitados. Por tanto, el
siguiente paso es una reducción por P1. El resultado es el siguiente:
P1 P2 P3
R1 R2 R3
Unidad 4. Interbloqueos. 25
Formación Abierta
Por último, al aplicar la reducción por P2 que ya tiene todos los recursos
disponibles, se puede observar que todos los procesos han satisfecho sus
peticiones de recursos, y por tanto, sus ejecuciones. Por lo tanto, se puede
asegurar que no existe interbloqueo.
⎡2 0 0⎤ ⎡0 1 2 ⎤
A = ⎢⎢0 1 0 ⎥⎥ S = ⎢⎢ 1 0 0 ⎥⎥ E = [ 2 3 2] D = [0 0 2]
⎢⎣0 2 0 ⎥⎦ ⎢⎣0 0 0 ⎥⎦
⎡2 0 0⎤ ⎡0 1 2 ⎤
A = ⎢⎢0 1 0 ⎥⎥ S = ⎢⎢ 1 0 0 ⎥⎥ E = [ 2 3 2] D = [0 2 2]
⎢⎣0 0 0 ⎥⎦ ⎢⎣0 0 0 ⎥⎦
26 Unidad 4. Interbloqueos.
Sistemas Operativos
⎡0 0 0 ⎤ ⎡0 1 2 ⎤
A = ⎢⎢0 1 0 ⎥⎥ S = ⎢⎢ 1 0 0 ⎥⎥ E = [ 2 3 2] D = [ 2 2 2]
⎢⎣0 0 0 ⎥⎦ ⎢⎣0 0 0 ⎥⎦
⎡0 0 0 ⎤ ⎡0 1 2 ⎤
A = ⎢⎢0 0 0 ⎥⎥ S = ⎢⎢ 1 0 0 ⎥⎥ E = [ 2 3 2] D = [ 2 3 2]
⎢⎣0 0 0 ⎥⎦ ⎢⎣0 0 0 ⎥⎦
Al igual que sucedía con los grafos, si hubiera llegado un momento en el que
no hubiera sido posible la reducción de ningún otro proceso, se trataría de un
caso de interbloqueo.
Unidad 4. Interbloqueos. 27
Formación Abierta
28 Unidad 4. Interbloqueos.
Sistemas Operativos
Esta condición indica que para que suceda un interbloqueo, deben existir
procesos que tengan asignados algunos recursos, pero estén bloqueados a la
espera de otros.
Una primera estrategia sería obligar a todos los procesos a solicitar, al inicio
de su ejecución, todos los recursos que vayan a necesitar hasta su
finalización. Esta solución tiene el gran inconveniente de la infrautilización de
los recursos. Ya que habrá procesos con los recursos asignados desde el
principio, que no los utilizarán hasta pasado un tiempo. Con lo que el recurso
estará parado, e inaccesible a que el resto de procesos lo utilice.
Unidad 4. Interbloqueos. 29
Formación Abierta
4.7.3. NO EXPROPIACIÓN
30 Unidad 4. Interbloqueos.
Sistemas Operativos
Cabe destacar que con el uso de esta técnica, se podría dar el caso de que
un proceso solicite un recurso, y aunque dicho recurso esté disponible, el
sistema no se lo asigne porque eso implicaría un interbloqueo en el futuro. Así
pues en este ejemplo utilizado con anterioridad:
PROCESO P1 PROCESO P2
Solicita (D) Solicita (I)
Solicita (I) Solicita (D)
Usa los recursos Usa los recursos
Libera (I) Libera (D)
Libera (D) Libera (I)
Unidad 4. Interbloqueos. 31
Formación Abierta
PROCESO P1 PROCESO P2
32 Unidad 4. Interbloqueos.
Sistemas Operativos
Existen otros algoritmos, aunque solo se detallará uno de ellos por ser el más
relevante.
Unidad 4. Interbloqueos. 33
Sistemas Operativos
♦ RESUMEN
Unidad 4. Interbloqueos. 35
Formación Abierta
36 Unidad 4. Interbloqueos.
SISTEMAS
OPERATIVOS
ENTRADA/SALIDA
Sistemas Operativos
ÍNDICE
♦ OBJETIVOS ................................................................................................. 3
♦ INTRODUCCIÓN .......................................................................................... 4
5.1. Definición ................................................................................................ 7
5.2. Clasificación de dispositivos de E/S ................................................... 9
5.2.1. Conexión de un dispositivo de E/S .................................................. 9
5.2.2. Dispositivos según dirección de E/S ............................................... 11
5.2.3. Dispositivos de bloques o de caracteres ......................................... 12
5.2.4. Dispositivos de E/S programada o por interrupciones .................... 12
5.3. Mecanismos de optimización ............................................................. 15
5.3.1. Acceso directo a memoria (Dma) .................................................... 15
5.3.2. Canales de E/S con Dma ................................................................ 16
5.3.3. Memoria caché ................................................................................ 17
5.3.4. Solapamiento de operaciones ......................................................... 17
5.4. Estructura del sistema de E/S ............................................................. 18
5.4.1. Componentes del sistema de E/S ................................................... 18
5.5. Software de entrada/salida .................................................................. 21
5.5.1. Manejadores de interrupción ........................................................... 22
5.5.2. Manejadores de dispositivos ........................................................... 22
5.5.3. Software independiente del dispositivo ........................................... 24
5.6. Almacenamiento secundario .............................................................. 27
5.6.1. Discos ............................................................................................. 28
5.6.2. Políticas de planificación de disco .................................................. 34
5.6.3. Fiabilidad y tolerancia a fallos ......................................................... 37
♦ RESUMEN .................................................................................................. 41
Unidad 5. Entrada/salida. 1
Sistemas Operativos
♦ OBJETIVOS
• Conocer las políticas más utilizadas de acceso a disco, como son FCFS,
SSF, SCAN, LOOK, etc. Así como los cálculos que permiten definir la
política más adecuada, en función de los movimientos necesarios para
satisfacer todas las peticiones.
Unidad 5. Entrada/salida. 3
Formación Abierta
♦ INTRODUCCIÓN
Por otro lado, existe una variedad cada vez más amplia de dispositivos de
E/S. Algunos nuevos dispositivos son tan distintos de los dispositivos
anteriores que constituye todo un desafío incorporarlos en las computadoras y
los sistemas operativos.
4 Unidad 5. Entrada/salida.
Sistemas Operativos
Unidad 5. Entrada/salida. 5
Sistemas Operativos
5.1. DEFINICIÓN
Ahora bien, la CPU por sí sola no serviría de nada, está obligada a trabajar
conjuntamente con el resto de elementos hardware y periféricos. Los cuales
le permiten almacenar información, interactuar con el usuario, comunicarse
con otros equipos, etc.
• Dispositivos de almacenamiento.
Unidad 5. Entrada/salida. 7
Formación Abierta
• Dispositivos de comunicaciones.
Sistema de E/S
8 Unidad 5. Entrada/salida.
Sistemas Operativos
Unidad 5. Entrada/salida. 9
Formación Abierta
Controladores de dispositivo
Los controladores son muy variados, casi tanto como los dispositivos. Una de
las tareas que se ha intentado llevar a cabo en los últimos años, es la de
estandarizar dichos controladores. De manera que un único controlador, sea
capaz de controlar dispositivos de distintos fabricantes. Algunos ejemplos de
ello, son los dispositivos SCSI, dispositivos IDE o SATA.
• El registro de estado, está compuesto por varios bits. Uno de ellos sirve
para indicar que el controlador puede transmitir un dato. En las
operaciones de lectura, indica que se ha cargado en el registro de datos
un nuevo valor, mientras que en las de escritura indica que necesita un
nuevo dato. Otros bits de este registro le sirven al controlador, para
informar de posibles errores que han ocurrido durante la última operación
de E/S.
• El registro de control, también está compuesto por varios bits, los cuales
le indican al controlador las operaciones que debe realizar el periférico.
10 Unidad 5. Entrada/salida.
Sistemas Operativos
Para los dispositivos que se direccionan a través de puertos, cada vez que
se instala uno de ellos, se le asigna un puerto de E/S a su controlador, una
interrupción hardware y un vector de interrupción. Para realizar operaciones
de E/S, la CPU ejecuta las instrucciones pertinentes, con la dirección del
puerto del dispositivo y una serie de parámetros que indican el registro que se
quiere manipular. Independientemente del dispositivo (teclado, ratón, monitor,
impresora, disco…) la instrucción ejecutada por la CPU es siempre la misma,
obviamente modificando el puerto y los parámetros. El problema que conlleva
este tipo de direccionamiento es que obliga a conocer las direcciones de E/S
de todos los dispositivos y a la programación de instrucciones específicas
para su manejo.
Unidad 5. Entrada/salida. 11
Formación Abierta
E/S programada
12 Unidad 5. Entrada/salida.
Sistemas Operativos
Unidad 5. Entrada/salida. 13
Formación Abierta
14 Unidad 5. Entrada/salida.
Sistemas Operativos
Unidad 5. Entrada/salida. 15
Formación Abierta
Las dos ventajas principales que proporciona la utilización de DMA son las
siguientes:
16 Unidad 5. Entrada/salida.
Sistemas Operativos
Por tanto, los controladores realizan ambas tareas al mismo tiempo, es decir,
programan las operaciones de búsqueda en los dispositivos y mientras
reciben la respuesta transfieren datos de otros dispositivos. Así se consigue
un paralelismo real entre las operaciones de los distintos dispositivos.
Unidad 5. Entrada/salida. 17
Formación Abierta
Cada una de las capas del sistema de entrada/salida tiene una funcionalidad
muy concreta que se detallará a continuación.
18 Unidad 5. Entrada/salida.
Sistemas Operativos
• Sistemas de archivos.
• Gestor de redes.
• Gestor de bloques.
• Gestor de caché.
• Manejadores de dispositivo.
Unidad 5. Entrada/salida. 19
Formación Abierta
20 Unidad 5. Entrada/salida.
Sistemas Operativos
APLICACIÓN
SERVICIOS
GEST. ARCHIVOS
Software de E/S
GEST. BLOQUES
independiente
del dispositivo GEST. CACHÉ
MANEJADOR
DISPOSITIVO
Software de E/S
dependiente del
dispositivo MANEJADOR
INTERRUPCIÓN
CONTROLADOR
Hardware
Unidad 5. Entrada/salida. 21
Formación Abierta
Una operación de E/S de este tipo, requiere que entren en acción las
siguientes capas:
• Manejador de interrupciones.
• Manejador de dispositivos.
22 Unidad 5. Entrada/salida.
Sistemas Operativos
Los manejadores reciben las peticiones formuladas en alto nivel, las cuales
son tratadas por la parte independiente del dispositivo. Esta parte se
encarga de la traducción a un nivel funcional comprensible por el
controlador del dispositivo. Una vez traducidas, se envían al controlador y
se espera a la comunicación de que la operación ha concluido
satisfactoriamente.
Unidad 5. Entrada/salida. 23
Formación Abierta
Acceso
A nivel del acceso, el tamaño de los bloques también debe ser homogéneo y
transparente, por ello se hace uso de tamaños de bloque comunes, lo que
permite ocultar el tamaño real de información con la que trabaja cada
dispositivo. Así pues, en el caso de dispositivos que trabajen por bloques,
queda oculto el tamaño real del bloque que gestiona cada uno de los
dispositivos. Y en el caso de dispositivos que trabajen a nivel de carácter, se
ocultaría si realmente trabajan con un carácter cada vez, como el teclado, o
trabajan con flujos de caracteres, como el modem o las redes.
Almacenamiento intermedio
24 Unidad 5. Entrada/salida.
Sistemas Operativos
Gestión de dispositivos
• Nombrado.
Permite traducir los nombres de usuario a identificadores del sistema. Por
ejemplo, en UNIX, cada dispositivo tiene un nombre (por ejemplo:
/dev/cdrom) que se traduce en un único identificador interno (o nodo-i),
que a su vez se traduce en un único número de dispositivo principal (clase
de dispositivo) y secundario (elemento de la clase).
• Protección.
Cada dispositivo tiene asociada una información de protección (en UNIX
mediante 3 bits para dueño, grupo y mundo) y este nivel de software
asegura que los requisitos de protección se cumplen.
• Control de acceso.
Para que un dispositivo dedicado, como una impresora, sea accedido por
un único usuario cada vez.
Planificación de entrada/salida
Control de errores
Por último, este nivel proporciona gestión de errores para aquellos casos que
el manejador de dispositivo no puede solucionar. Un error transitorio de
lectura de un bloque se resuelve en el manejador reintentando su lectura. Un
error permanente de lectura no puede ser resuelto y debe ser comunicado al
usuario para que tome las medidas adecuadas.
Unidad 5. Entrada/salida. 25
Formación Abierta
26 Unidad 5. Entrada/salida.
Sistemas Operativos
Unidad 5. Entrada/salida. 27
Formación Abierta
• Discos.
• Manejadores de disco.
Controlan todas las operaciones que se hacen sobre los discos, entre las
que son especialmente importantes las cuestiones de planificación de
peticiones a disco.
5.6.1. DISCOS
• Discos duros.
También denominado disco rígido (en inglés Hard Disk Drive HDD) es un
dispositivo electromecánico, no volátil, que conserva la información aun
con la pérdida de energía, que emplea un sistema de grabación
magnética digital.
28 Unidad 5. Entrada/salida.
Sistemas Operativos
• Dispositivos SCSI.
• Dispositivos SATA.
Acrónimo de Serial Advanced Technology Attachment, es otro tipo de
interfaz de transferencia de datos entre la placa base y algunos
dispositivos de almacenamiento, como puede ser el disco duro, u otros
dispositivos de altas prestaciones que están siendo todavía desarrollados.
Las ventajas sobre los dispositivos IDE, es que proporciona mayores
velocidades, mejor aprovechamiento cuando hay varios discos, mayor
longitud del cable de transmisión de datos y capacidad para conectar
discos en caliente (con la computadora encendida).
Unidad 5. Entrada/salida. 29
Formación Abierta
• Dispositivos USB.
El Universal Serial Bus (bus universal en serie) es un puerto que sirve
para conectar periféricos a un ordenador. En el caso de la conexión a
través de este puerto de discos duros, es poco probable que el USB
reemplace completamente a los buses (el ATA (IDE) y el SCSI), pues el
USB tiene un rendimiento más lento que esos otros estándares. Sin
embargo, el USB tiene una importante ventaja en su habilidad de poder
instalar y desinstalar dispositivos sin tener que abrir el sistema, lo cual es
útil para dispositivos de almacenamiento externo. Hoy en día, una gran
parte de los fabricantes ofrece dispositivos USB portátiles que ofrecen un
rendimiento casi indistinguible en comparación con los ATA (IDE). Por el
contrario, el nuevo estándar Serial ATA permite tasas de transferencia de
hasta aproximadamente 150/300 MB por segundo, y existe también la
posibilidad de extracción en caliente e incluso una especificación para
discos externos llamada eSATA.
Estructura física
Dentro de un disco duro hay uno o varios platos (entre 2 y 4 normalmente,
aunque hay hasta de 6 ó 7 platos), que son discos de aluminio o cristal
concéntricos y que giran todos a la vez. El cabezal (dispositivo
electromagnético de lectura y escritura) es un conjunto de brazos alineados
verticalmente que se mueven hacia dentro o fuera según convenga, todos a la
vez. En la punta de dichos brazos están las cabezas de lectura/escritura, que
gracias al movimiento del cabezal pueden leer tanto zonas interiores como
exteriores del disco.
30 Unidad 5. Entrada/salida.
Sistemas Operativos
Unidad 5. Entrada/salida. 31
Formación Abierta
Existen cierto parámetros, asociados a la estructura física del disco, que son
de vital importancia para el manejador, ya que los utiliza para optimizar las
operaciones de E/S. Estos parámetros son:
Donde:
32 Unidad 5. Entrada/salida.
Sistemas Operativos
Estructura lógica
Durante la operación de formateo físico del disco duro, una de las tareas que
se realiza, es la de crear un sector especial, denominado sector 0, que se
reserva para incluir en él la información de distribución lógica del disco en
subconjuntos denominados volúmenes o particiones. Esta información se
guarda en una estructura denominada tabla de particiones. Una partición es
una porción contigua de disco delimitada por un sector inicial y final.
• Partición primaria.
• Partición extendida.
Es otro tipo de partición que actúa como una partición primaria; sirve para
contener infinidad de unidades lógicas en su interior. Solo puede existir
una partición de este tipo por disco, y solo sirve para contener particiones
lógicas. Por lo tanto, es el único tipo de partición que no soporta un
sistema de archivos directamente.
Unidad 5. Entrada/salida. 33
Formación Abierta
• Partición lógica.
Cada partición puede tener su propio sistema de archivos, pero el tema de los
sistemas de archivos se tratará en detalle en la próxima unidad.
34 Unidad 5. Entrada/salida.
Sistemas Operativos
Política SCAN
Junto con otra serie de políticas y sus variantes se denominan políticas del
ascensor, ya que es la política que sigue normalmente este tipo de
mecanismos en edificios altos.
Unidad 5. Entrada/salida. 35
Formación Abierta
Por ello se mejoró esta política, pensando que como en los ascensores, es
mucho más costoso ir de arriba abajo o viceversa, parando que sin parar. En
un disco cuesta casi lo mismo ir del principio al final, que de una pista a otra.
Por ello se creó la política CSCAN.
Política LOOK
Existen otros tipos de políticas, pero son mucho más específicas de sistemas
en los que la respuesta tiene un tiempo límite (deadline) o sistemas de tiempo
real. Algunas de estas políticas son EDF (Earliest Dead Line), SCAN_EDF y
SCAN-RT.
36 Unidad 5. Entrada/salida.
Sistemas Operativos
Dispositivos RAID
Existen hasta siete niveles RAID, pero únicamente los cinco primeros son
operativos.
• RAID 1.
Crea una copia exacta (o espejo) de un conjunto de datos en dos o más
discos. Esto resulta útil cuando el rendimiento en lectura es más
importante que la capacidad. Un conjunto RAID 1 solo puede ser tan
grande como el más pequeño de sus discos. Un RAID 1 clásico consiste
en dos discos en espejo, lo que incrementa exponencialmente la fiabilidad
respecto a un solo disco; es decir, la probabilidad de fallo del conjunto es
igual al producto de las probabilidades de fallo de cada uno de los discos
(pues para que el conjunto falle es necesario que lo hagan todos sus
discos).
Unidad 5. Entrada/salida. 37
Formación Abierta
• RAID 2.
• RAID 3.
38 Unidad 5. Entrada/salida.
Sistemas Operativos
• RAID 4.
• RAID 5.
Unidad 5. Entrada/salida. 39
Formación Abierta
40 Unidad 5. Entrada/salida.
Sistemas Operativos
♦ RESUMEN
Unidad 5. Entrada/salida. 41
Formación Abierta
42 Unidad 5. Entrada/salida.
SISTEMAS
OPERATIVOS
ARCHIVOS Y
DIRECTORIOS
Sistemas Operativos
ÍNDICE
♦ OBJETIVOS................................................................................................3
♦ INTRODUCCIÓN ........................................................................................5
6.1. El sistema de archivos .........................................................................7
6.2. Archivos ................................................................................................8
6.2.1. Nombres de archivos .....................................................................10
6.2.2. Estructura de archivos ...................................................................11
6.2.3. Métodos de acceso ........................................................................12
6.3. Directorios...........................................................................................14
6.3.1. Estructura de directorios ................................................................15
6.3.2. Nombres de directorios ..................................................................18
6.4. Servicios del sistema de archivos .....................................................22
6.4.1. Servicios para archivos ..................................................................22
6.4.2. Servicios para directorios ...............................................................23
6.5. Gestión de almacenamiento secundario...........................................25
6.5.1. Asignación contigua .......................................................................25
6.5.2. Asignación enlazada ......................................................................27
6.5.3. Asignación FAT .............................................................................28
6.5.4. Asignación indexada ......................................................................28
6.6. Seguridad del sistema de archivos ...................................................30
6.6.1. Integridad del sistema de archivos .................................................30
6.6.2. Fiabilidad y recuperación ...............................................................31
6.6.3. Accesos al sistema de archivos .....................................................32
6.6.4. Identificación de usuarios...............................................................34
RESUMEN.....................................................................................................37
♦ OBJETIVOS
♦ INTRODUCCIÓN
Otro detalle, que verifica la distinta visión que tienen los usuarios y el sistema,
es que los sistemas también permiten a los usuarios asignar un nombre lógico
a los archivos y directorios. El cual es muy diferente de los descriptores
físicos internos que el SO utiliza. Esto facilita, considerablemente, el manejo
de los mismos por parte de los usuarios.
6.2. ARCHIVOS
Archivo
Como ya se ha comentado, hay que tener en cuenta que existen dos puntos
de vista diferentes, el de los usuarios y el del sistema operativo. Desde el
punto de vista de los usuarios, el archivo es el mecanismo que les permite
gestionar el almacenamiento secundario. Para ellos también es importante
que el sistema operativo especifique claramente, la forma de nombrar los
archivos, las operaciones disponibles sobre archivos, etc.
Los archivos poseen una serie de atributos, los cuales pueden variar de un
sistema operativo a otro, pero en general todos contienen los siguientes:
• Nombre.
• Identificador único.
• Tipo de archivo.
• Protección.
• Información temporal.
• Información de control.
Número mágico
Cabecera primaria Número de secciones
Tipo de sección,
tamaño de la sección Tamaño segmento texto
Cabecera de sección 1 dirección virtual
…
Cabecera de sección n Tipo de sección,
Tamaño datos sin valor
tamaño de la sección
inicial
dirección virtual
Sección 1 Código Tamaño tabla de símbolos
Sección 2 Datos con valor inicial Valor inicial de registros
…
Dirección inicial
…
Información con carga Opciones
Tabla de símbolos
Otra información
• Acceso secuencial.
Con este tipo de acceso solo se pueden leer los datos del archivo en
orden, comenzando desde el principio. No se permite la lectura
desordenada o posicionarse en una parte concreta del archivo. Si se
quiere volver a atrás, se debe iniciar la lectura desde el inicio del fichero
hasta llegar a los datos deseados.
• Acceso directo.
En este modo de acceso, el archivo se considera como un conjunto de
bloques. Esta idea surgió, a partir del modelo de almacenamiento de los
dispositivos de almacenamiento secundario como los discos duros. En los
que la información se ordena en bloques, los cuales son accesibles
aleatoriamente según las necesidades.
6.3. DIRECTORIOS
Directorio
Un directorio posee una entrada por cada archivo que contiene o es accesible
a través de él. Para evitar ambigüedades, un mismo nombre no puede
identificar a dos archivos distintos, dentro del mismo directorio. Pero sí que es
posible que un archivo sea identificado por varios nombres diferentes.
Esta nueva versión, mejoraba la seguridad entre usuarios, ya que cada uno
trabajaba sobre su propio directorio. Sin embargo, impedía agrupar archivos
en nuevos directorios o compartir archivos entre usuarios.
Estructura de árbol
Grafo acíclico
La estructura de árbol, no daba solución al problema de compartir archivos ya
que para ello se debería poder llegar a un mismo archivo a través de caminos
distintos (uno por cada usuario que puede acceder al archivo), y por definición
esto no es posible en esta estructura.
Por ello se establece una nueva organización denominada grafo acíclico, que
permite romper la relación uno a uno entre nombre y archivo. Así por ejemplo,
un subdirectorio o archivo puede estar en dos directorios distintos,
conectando a través de enlaces con el elemento compartido. Existen dos
tipos de enlaces:
• Físico.
• Simbólico.
Nombre absoluto
El nombre absoluto de un archivo proporciona todo el camino a través de la
estructura de árbol de directorios, partiendo del directorio raíz y finalizando en
el propio archivo.
Esta ruta, le indica al sistema de archivos que para llegar hasta el archivo
LISTA.C, comenzando desde el directorio raíz, debe atravesar el directorio
USR, después el subdirectorio BIN y allí encontrará el archivo buscado.
El sistema de archivos, debe dar una serie de pasos para interpretar los
nombres absolutos. Para poder comprender mejor el ejemplo y en base a la
estructura de la figura 6.6, se van a detallar cómo serían algunas tablas con la
información de los directorios en un sistema UNIX (figura 6.7). En estas
tablas las entradas “ . ” y “ .. “ se refieren al directorio actual y al padre.
A continuación, se detallarán los pasos que debe dar el sistema para resolver
el nombre absoluto: / USR / BIN / LISTA.C
Nombre relativo
• Crear.
• Borrar.
• Abrir.
Antes de utilizar una archivo, este debe ser abierto. Lo primero que
comprueba este servicio es que el fichero existe y que el usuario tiene
derecho de acceso. A continuación, se trae a memoria la información del
archivo y devuelve un identificador temporal del archivo para su
utilización. El número de archivos que el sistema operativo permite tener
abiertos al mismo tiempo suele ser limitado.
• Cerrar.
• Leer.
• Escribir.
Con este servicio se sitúa el puntero en otra posición dentro del archivo.
Este servicio es necesario para llevar a cabo los accesos aleatorios al
archivo.
• Modificación de atributos.
Los servicios básicos que permiten trabajar con directorios, son los
siguientes:
• Crear.
• Borrar.
• Abrir.
• Cerrar.
• Leer.
• Cambiar directorio.
• Enlazar.
Al igual que ocurría con los archivos, estos son únicamente los servicios
básicos, pero los sistemas operativos implementan otros más específicos.
Este método consiste en asignar el espacio en disco de tal manera que las
direcciones de todos los bloques correspondientes a un archivo se
almacenarán de forma consecutiva en el disco. La entrada de directorio para
cada uno de los ficheros se compone de:
Directorio
Archivo Inicio Longitud
AA 1 5
BB 12 4
CC 19 8
DD 113 4
EE 7 2
0 1 2 3 4 5 6 7 8 9
AA AA AA AA AA EE EE
10 11 12 13 14 15 16 17 18 19
BB BB BB BB CC
20 21 22 23 24 25 26 27 28 29
CC CC CC CC CC CC CC
Con este método, se consigue que todos los bloques de un mismo fichero
estén almacenados en posiciones consecutivas. Lo que reduce al mínimo el
movimiento de las cabezas del disco si al fichero se accede de forma
secuencial, aunque cabe destacar, que también se permite el acceso de
forma directa.
En este tipo de asignación, los archivos se tratan como una lista enlazada de
bloques. La entrada de estos archivos en el directorio, contiene un puntero al
bloque inicial y otro al final.
Cada uno de los siguientes bloques, contiene tanto una parte de los datos
como el puntero al siguiente bloque de datos.
Directorio
Archivo Inicio Final
AA 4 9
0 1 2 3 4 5 6 7 8 9
12 -1
10 11 12 13 14 15 16 17 18 19
25
20 21 22 23 24 25 26 27 28 29
118
Directorio
Archivo Inicio
AA 4
FAT
0 1 2 3 4 5 6 7 8 9
3 7 1 9 -1
Directorio
Archivo Bloque índice
AA 10
BB 117
EE 24
0 1 2 3 4 5 6 7 8 9
AA EE AA AA EE
10 11 12 13 14 15 16 17 18 19
1,7,3 BB BB
20 21 22 23 24 25 26 27 28 29
2,8
… … 112 113 114 115 116 117 118 119
19,14
Nodo-i
Información
DISCO
del archivo 820
…
Direcciones
de los diez 342
primeros
1623
bloques
8204 1134
Indirecto
…
Indirecto
doble
2046
Indirecto 20464
ti l
675
En el caso concreto del SO Unix, existe una utilidad (fsck) que detecta las
inconsistencias que pudieran ocurrir por algún error o incluso un mal apagado
del sistema y las corrige. Cuando el deterioro del sistema de archivos es
irreparable es necesario disponer de copias de seguridad a partir de las
cuales poder restaurarlo.
Los fallos y deterioros del sistema de archivos, causados por actos fortuitos o
errores de la máquina o humano (se puede haber borrado un archivo sin
querer), se solucionan con las adecuadas copias de seguridad, tal como se
ha visto.
• Matriz de acceso.
• Lista de accesos.
A cada objeto se le asocia una lista ordenada con todos los dominios que
pueden tener acceso al objeto y la forma de dicho acceso. Esta lista se
denomina lista de accesos para el objeto especificado. El principal
inconveniente de las listas de accesos es el retardo que se provoca con la
búsqueda para verificar la autoridad de un sujeto para acceder al objeto
solicitado. Para evitar búsquedas de listas potencialmente muy largas de
usuarios autorizados y ahorrar espacio de almacenamiento, algunos
sistemas dividen a los usuarios en grupos y solo almacenan los derechos
de acceso de los grupos.
• Lista de capacidades.
En este caso a cada dominio se le asocia una lista de objetos a los cuales
puede tener acceso, junto con una indicación de las operaciones
permitidas sobre cada objeto. Esta lista se denomina lista de capacidades.
Para llegar a obtener un sistema lo más seguro posible, existen también unos
principios de seguridad en el diseño del sistema de archivos [Saltzer y
Schroeder (1975)], que son:
Los derechos de acceso deben ser adquiridos solo con permiso explícito.
• Mínimos privilegios.
• Psicológicamente aceptable.
Contraseñas
Identificación física
Otro método consiste en utilizar características propias del usuario para la
identificación. Las características se pueden catalogar en dos grupos:
RESUMEN
• Los archivos poseen una serie de atributos, los cuales pueden variar de
un sistema operativo a otro, pero en general todos contienen los
siguientes: nombre, identificador único, tipo de archivo, mapa del archivo,
protección, tamaño del archivo, información temporal e información de
control.
GESTIÓN
DE MEMORIA
Sistemas Operativos
ÍNDICE
♦ OBJETIVOS................................................................................................3
♦ INTRODUCCIÓN ........................................................................................5
7.1. El sistema de gestión de memoria ......................................................7
7.1.1. Funciones del sistema de gestión de memoria ................................7
7.2. Ciclo de vida de un programa ............................................................12
7.3. Intercambio .........................................................................................15
7.4. Memoria virtual ...................................................................................16
7.4.1. Fundamentos de la memoria virtual ...............................................16
7.4.2. Ventajas de la memoria virtual .......................................................18
7.5. Paginación ..........................................................................................19
7.5.1. Mecanismos de optimización .........................................................20
7.6. Segmentación .....................................................................................23
7.6.1. Segmentación paginada ................................................................24
7.7. Paginación por demanda ...................................................................25
7.8. Políticas de reemplazo .......................................................................26
♦ RESUMEN ................................................................................................29
♦ OBJETIVOS
• Saber cuáles son las principales ventajas del uso de la memoria virtual.
♦ INTRODUCCIÓN
El gestor de memoria del sistema operativo debe hacer de puente entre los
requisitos de las aplicaciones y los mecanismos que proporciona el hardware
de gestión de memoria. Se trata de una de las partes del sistema operativo
que está más ligada al hardware. Esta estrecha colaboración ha hecho que
tanto el hardware como el software de gestión de memoria hayan ido
evolucionando juntos. De hecho, la frontera entre la labor que realiza el
hardware y la que hace el software de gestión de memoria es difusa.
Archivo ejecutable
0 CABECERA
100 LOAD R1, #1000
104 LOAD R2, #2000
108 LOAD R3, /1500
112 LOAD R4, [R1]
116 STORE R4, [R2]
120 INC R1
124 INC R2
128 DEC R3
132 JNZ /12
136 ……………………
Puesto que esta tarea de traducción se debe realizar con todas las
direcciones utilizadas, debe ser el procesador el encargado de realizar dicha
conversión. Esta tarea la realiza un módulo concreto del procesador
denominado MMU (Memory Management Unit). El SO es el encargado de
indicar a la MMU qué función de traducción debe aplicar a cada proceso que
se ejecuta.
11.500
Protección
Otro de los objetivos que debe alcanzar el sistema gestor de memoria, es el
de proteger el correcto funcionamiento del sistema operativo e incluso de
otros procesos.
Compartir memoria
Esto implica que varias direcciones lógicas distintas entre sí, se correspondan
con la misma dirección física en memoria. Y también que el sistema gestor de
memoria, permita que la memoria asignada a un proceso no sea contigua.
Los mapas de los procesos están formados por distintas regiones, cada una
de ellas con sus características y propiedades. Ya que el SO conoce qué
regiones componen el mapa de un proceso, el sistema gestor de memoria
junto con él, debería dar soporte a estas regiones, conservando y cumpliendo
sus características y propiedades. Un ejemplo claro sería que la región
correspondiente al código del programa, puesto que posee la propiedad de no
ser modificable, debería ser protegida por el gestor de memoria, para ser
inaccesible, notificando un error, en caso de detectar intentos de escritura
sobre direcciones de dicha región.
El sistema operativo, como programa que es, también tiene sus propias
regiones, a las cuales también debe dar soporte el gestor de memoria.
Maximizar el rendimiento
• Compilación.
• Enlace.
• Carga.
• Ejecución.
Programa fuente
Compilador
Modulo objeto
Otros objetos y
bibliotecas Enlazador
Programa ejecutable
Bibliotecas del
sistema Cargador
Hardware
Bibliotecas dinámicas
7.3. INTERCAMBIO
Los primeros sistemas, tenían muy poca capacidad de memoria, por lo que
normalmente no se podía cargar más de un proceso en memoria al mismo
tiempo. Para solucionar este problema y optimizar el uso tanto del procesador
como de la memoria, se desarrolla la técnica de intercambio o swapping.
• Preasignación.
Al crear el proceso, ya se reserva el espacio de swap suficiente para
alojar su imagen.
• Sin preasignación.
Se reserva espacio en el área de swap, en el momento en el que el
proceso es desalojado de la memoria principal.
Así pues, la memoria virtual utiliza una jerarquía de dos niveles, formada por
la memoria principal y la memoria secundaria (el disco). Sobre la memoria
secundaria se crea un mapa completo de la memoria virtual. Por tanto, las
direcciones utilizadas por el procesador durante la ejecución, se refieren a
este mapa virtual, pero sin embargo, los accesos reales se realizan sobre la
memoria principal. Esta gestión de memoria, se realiza de forma automática
por el sistema operativo y el hardware como la MMU.
Memoria virtual
Memoria
principal
Dirección
Física
Dirección
Memoria
Fallo de secundaria
Procesador Virtual página
(Disco)
MMU
Se debe tener en cuenta, que el uso de memoria virtual no significa que los
programas se vayan a ejecutar más rápidamente. En realidad puede ser todo
lo contrario, debido a la necesidad de transferencia de información entre el
disco y la memoria. Por ello no es una técnica apropiada para sistemas de
tiempo real.
7.5. PAGINACIÓN
• Fragmentación interna.
• Fragmentación externa.
Dirección lógica
Memoria
Página Desplazamiento
Marco de página
Tabla de páginas
• Eficiencia.
Dado que para acceder a cada dirección se deben realizar dos accesos a
memoria (uno para obtener el marco de página y otro para acceder a la
propia página), el rendimiento se reduce considerablemente. Para
solucionar este problema se utiliza una caché de traducciones
denominada TLB, que se detallaran a continuación.
• Consumo de espacio.
Las tablas de página son muy grandes y se debe almacenar una por cada
proceso, con tantas entradas como páginas, incluyendo las que estén
vacías. La solución a este problema es la utilización de las tablas
multinivel.
La MMU accede a la TLB solo por el número de página. Así pues cada
vez que se produce un cambio en el proceso en ejecución, se debe
invalidar la TLB, ya que para cada proceso será diferente.
Con este esquema, en vez de existir una sola tabla de páginas por proceso,
hay una jerarquía de ellas. Partiendo de una única tabla de primer nivel, cada
una de sus entradas apunta a una tabla de página de segundo nivel y así
sucesivamente.
Dirección lógica
Memoria
Marco de página
Tabla de páginas
de primer nivel
Tabla de páginas
de segundo nivel
7.6. SEGMENTACIÓN
Dirección lógica
Segmento Desplazamiento
Memoria
Límite Base
No
>
Sí
Cabe destacar, que con este método, al almacenar los segmentos de forma
contigua, existe fragmentación externa.
Con esta técnica, se intentan unir las ventajas que poseen la técnica de
segmentación y la de paginación por separado.
Los algoritmos de reemplazo que se utilizan para decidir qué marco de página
debe ser expulsado, se pueden utilizar tanto como reemplazo global como
reemplazo local. El objetivo principal de estos algoritmos es minimizar la tasa
de fallos de página, procurando que la ejecución del propio algoritmo no
influya en el rendimiento del sistema. A continuación se detallan los
algoritmos más importantes.
Es una mejora del algoritmo FIFO, para evitar expulsar páginas que sean muy
utilizadas. En el momento en que se necesita expulsar una página, se
comprueba el bit de referencia, que indica si la página ha sido accedida (la
primera vez siempre estará a 1, ya que habrá sido accedida). Si el bit posee
el valor 1 (indicando que ha sido accedida), se pone a cero y se coloca la
página al principio de la lista como si acabase de llegar. Así, se le proporciona
una segunda oportunidad y en caso de que siga siendo accedida, nunca será
expulsada de memoria.
♦ RESUMEN
SEGURIDAD Y
PROTECCIÓN
Sistemas Operativos
ÍNDICE
♦ OBJETIVOS................................................................................................3
♦ INTRODUCCIÓN ........................................................................................4
8.1. Concepto de seguridad ........................................................................7
8.2. Problemas de seguridad ....................................................................10
8.2.1. Caballo de Troya ...........................................................................10
8.2.2. Puerta trasera ................................................................................11
8.2.3. Bomba lógica .................................................................................11
8.2.4. Desbordamiento de pila y de búfer ................................................12
8.2.5. Virus ..............................................................................................13
8.2.6. Gusanos ........................................................................................15
8.2.7. Escaneo de puertos .......................................................................15
8.2.8. Denegación de servicio ..................................................................16
8.3. Políticas de seguridad ........................................................................17
8.4. Criptografía .........................................................................................18
8.4.1. Cifrado ...........................................................................................19
8.5. Concepto de protección .....................................................................22
8.6. Mecanismos de protección ................................................................23
8.6.1. Autenticación de usuarios ..............................................................23
8.6.2. Utilización de claves ......................................................................24
8.6.3. Dominios........................................................................................27
8.6.4. Matrices .........................................................................................30
RESUMEN.....................................................................................................33
♦ OBJETIVOS
• Saber cuáles son los distintos niveles en los que se deben adoptar las
medidas de seguridad en un sistema.
♦ INTRODUCCIÓN
En esta última unidad, se tratará una tarea que también corresponde, en gran
parte, al sistema operativo y que de alguna manera afecta a todas las demás
funciones de dicho sistema. Se trata de la tarea de seguridad y de protección
de todos los elementos del sistema.
• Físico.
• Humano.
• Sistema operativo.
• Red.
Son muchos los datos, en los sistemas informáticos actuales, que viajan a
través de líneas privadas, de líneas compartidas como Internet, de
conexiones inalámbricas, etc. La interceptación de estos datos podría ser
tan dañina como el acceso a una computadora, y la interrupción de la
comunicación podría constituir un ataque remoto de denegación de
servicio, disminuyendo la capacidad de uso del sistema y la confianza en
el mismo por parte de los usuarios.
8.2.5. VIRUS
Otro tipo de amenaza en forma de programa son los virus. Los virus pueden
ser autoreplicantes y suelen estar diseñados para infectar otros programas.
Un virus es el fragmento de código malintencionado, integrado dentro de un
programa legítimo.
Una vez que un virus alcance una máquina objetivo, un programa conocido
como lanzador de virus inserta el virus en el sistema. El lanzador de virus es
usualmente un caballo de Troya, que se ejecuta por otras razones pero cuya
principal actividad consiste en instalar el virus. Una vez instalado, el virus
puede hacer lo que desee. Existen literalmente miles de virus distintos, pero
se los puede clasificar en varias categorías generales. Observe que muchos
virus pertenecen a más de una categoría a la vez:
• Archivo.
• Arranque.
• Macro.
• Código fuente.
• Polimórfico.
Este tipo de virus cambia cada vez que se instala, para evitar su detección
por parte del software antivirus. Los cambios no afectan a la funcionalidad
del virus, sino que solo modifican la signatura del virus. Una signatura de
virus es un patrón que puede usarse para identificar un virus,
normalmente una serie de bytes que forman parte del código de virus.
• Cifrado.
• Encubierto.
• Túnel.
Este tipo de virus trata de evitar la detección por los programas antivirus
instalándose a sí mismo en la cadena de rutinas de tratamiento de
interrupciones. Otros virus similares se instalan en los controladores de
dispositivo.
• Multiparte.
• Acorazado.
8.2.6. GUSANOS
8.4. CRIPTOGRAFÍA
Existen muchas defensas frente a los ataques informáticos, que abarcan
desde simples metodologías hasta el uso de la última tecnología. Entre estas
defensas y herramientas, la más utilizada por los usuarios y los diseñadores
de sistemas es la criptografía.
Criptografía
8.4.1. CIFRADO
• Un conjunto K de claves.
• Un conjunto M de mensajes.
• Un conjunto C de mensajes de texto cifrado.
• Una función E: E es una función para generar mensajes de texto cifrado a
partir de los mensajes de texto en claro.
Así, una computadora que posea la clave puede descifrar los mensajes de
texto cifrado, para obtener los mensajes de texto en claro que se usaron para
producirlos. Pero una computadora que no posea la clave no puede descifrar
esos mensajes cifrados. Puesto que los mensajes cifrados están
generalmente expuestos (por ejemplo, enviándolos a través de la red), es
importante que no se pueda deducir la clave a partir de los mensajes cifrados.
Cifrado simétrico
Cifrado asimétrico
En un algoritmo de cifrado asimétrico, las claves de cifrado y descifrado son
distintas. Uno de los algoritmos asimétricos más conocidos, es el denominado
RSA debido a las iniciales de los nombres de sus inventores (Rivest, Shamir y
Adleman). El algoritmo RSA de cifrado es un algoritmo de cifrado de bloque
de clave pública y es el algoritmo asimétrico más ampliamente utilizado.
Como en todo sistema de clave pública, cada usuario posee dos claves de
cifrado: una pública y otra privada. Cuando se quiere enviar un mensaje, el
emisor busca la clave pública del receptor, cifra su mensaje con esa clave, y
una vez que el mensaje cifrado llega al receptor, éste se ocupa de descifrarlo
usando su clave privada.
Actualmente estos primos son del orden de 10200, y se prevé que su tamaño
aumente con el aumento de la capacidad de cálculo de los ordenadores.
• Pedir un objeto que posee el usuario, como puede ser una firma
electrónica, una tarjeta con banda magnética o con un chip.
Asignación de claves
Almacenamiento de claves
Para evitar que el usuario utilice unas pocas claves, de forma cíclica, empieza
a ser frecuente el uso de contraseñas válidas para un único acceso (claves de
una sola vez). Hay tres formas básicas de implementar esta política:
8.6.3. DOMINIOS
• La forma en que se define dicha relación: por objetos, por usuarios, etc.
Por ejemplo:
• Owner.
Dueño del objeto. Suele ser su creador. El alumno Miguel, por ejemplo.
Cada usuario tiene un identificador (uíd) único en todo el sistema. Este
identificador está asociado a todos los objetos creados por el usuario,
para indicar que es su dueño.
• Group.
• Others.
• Leer (r).
• Escribir (w).
• Ejecutar (x).
Además, cada objeto tiene asociados 2 bits extra para conceder permisos
especiales del dueño y del grupo al que pertenece el dueño.
El primero de ellos se denomina bit setuid y el segundo bit setgid. Estos bits
permiten realizar cambios de dominio cuando se ejecutan objetos que tienen
alguno de ellos activado. Cuando un usuario A ejecuta un programa del
usuario B, almacenado en un archivo cuyos bits de setuid y setgid están
inactivos, su identificación sigue siendo la de A y ése es el setuid del proceso.
Sin embargo, si el archivo tiene el bit setuid activado, la identidad del proceso
será la de B, aun cuando sea el usuario A el que está ejecutando el proceso.
Asimismo, si tiene activado el setgid, la identidad del grupo del proceso será
la del grupo de B. Estos bits se pueden modificar usando llamadas al sistema.
Para evitar la total desprotección del sistema, en UNIX cada proceso que se
ejecuta tiene cuatro identificadores asociados:
• gid: identidad real del grupo al que pertenece el usuario que ejecuta el
proceso.
• egid: identidad efectiva del grupo al que pertenece el usuario que ejecuta
el proceso. Puede no coincidir con la real si ha cambiado de dominio
porque el archivo del proceso tiene el bit setgid activado.
8.6.4. MATRICES
• Almacenar la matriz por columnas, con una lista por objeto que especifica
qué operaciones puede hacer cada dominio sobre ese objeto. La lista
resultante se denomina lista de control de accesos (ACL, Access
Control List).
• Almacenar la matriz por filas, con una lista por dominio que especifica qué
operaciones se pueden hacer sobre un objeto cuando se pertenece a ese
dominio. La lista resultante se denomina lista de capacidades
(capabilities).
RESUMEN
• Toda política debe cumplir una serie de requisitos: debe cubrir todos los
aspectos relacionados con la misma, adecuarse a las necesidades y
recursos, ser atemporal y definir estrategias y criterios generales a
adoptar en distintas funciones y actividades.