Professional Documents
Culture Documents
Los usuarios son personas, máquinas o programas que usan los servicios del
sistema operativo.
1
Lo importante es que el sistema operativo debe:
2
Usuario 1 Usuario 2 … Usuario n
Sistema
Operativo
Hardware
3
c. Servicios (API: Aplication Program Interface): mediante estos
servicios las aplicaciones pueden realizar peticiones al sistema operativo
para acceder a los recursos hardware del sistema.
4
– Decidiendo a qué proceso se le asignan los recursos del CPU y por
cuánto tiempo
o Provee mecanismos para la sincronización y la comunicación entre los
procesos.
o Provee mecanismos para el manejo de procesos concurrentes.
5
al administrador de memoria para que encuentre espacio en RAM, coloque el
programa y registre su localización en RAM.
o Una vez que el programa está en memoria, el administrador del procesador
determina la prioridad y los recursos que le corresponde.
o Mientras el programa ejecuta, los administradores manejan los recursos que
el proceso necesita.
o Cuando el programa termina de ejecutar, los administradores liberaran los
recursos.
1 2 3
Comando Si lee del
Señales Ad.dispositivos Ad.procesador disco
Teclado eléctricas
6
Figura 5: Interprete de comandos
Fuente: http://www.programasok.com/wp-content/uploads/2009/06/fileidentifier.jpg
7
1.5 ARRANQUE DE LA COMPUTADORA
El arranque de una computadora actual tiene 2 fases: la fase de arranque
hardware y la fase de arranque del sistema operativo.
El programa cargador tiene por misión traer a memoria principal algunos de los
componentes del sistema operativo. Una vez cargados estos componentes se
pasa a la fase de inicialización, que incluye las siguientes operaciones:
• Comprobación del sistema
• Se establecen las estructuras de información propias del sistema operativo
como la tabla de procesos, las tablas de memoria y las de E/S.
• Se crea un proceso de inicio o login por cada terminal definido en el
sistema, así como una serie de procesos auxiliares y de demonios (o
servicios).
Como sabemos, cualquier función que queramos que el computador lleve a cabo
se tiene que hacer mediante el correspondiente programa de máquina.
Por tanto, para llevar un programa del disco duro a la memoria se necesita un
programa, que en este caso se denomina cargador.
8
Esta situación, en la que no se dispone de un programa en memoria principal y
en la cual, por tanto, el computador no puede hacer nada, se resuelve de la
siguiente forma: parte de la memoria principal se construye con pastillas del tipo
ROM, como se puede apreciar en el siguiente esquema:
Dirección Dirección
Zona
0 ROM
0
2.023
1.046.526
Zona
ROM
1.048.575 1.048.575
La memoria BIOS del PC es una memoria ROM que tiene varias funciones.
Sirve para arrancar el PC, por lo que incluye un programa de test, que
comprueba el funcionamiento del procesador y de la memoria principal, y un
programa cargador, que carga programas desde disquete o disco duro. Además,
tiene una serie de programas que llevan a cabo tareas de bajo nivel relacionadas
con la entrada/salida.
Carga
SO Sector de arranque Carga
Partición activa MBR
9
1.8 BIOS: CONCEPTOS Y CONFIGURACION
Figura 9: La BIOS
Fuente: https://belenus.unirioja.es/~alortiz/imagenes/chip_bios.jpg
Cuando hay problemas con la pila, los valores de dicha memoria tienden a
perderse, y es cuando pueden surgir problemas en el arranque del tipo: pérdida
de fecha y hora, necesidad de reconfigurar dispositivos en cada arranque, y
otros. En caso de problemas sustituir la pila es trivial, basta con comprar una de
iguales características, retirar la vieja y colocar la nueva en su lugar.
10
1.9 ACCESO Y MANIPULACIÓN DEL BIOS:
Para acceder al programa de configuración del BIOS, generalmente llamado
CMOS Setup, tendremos que hacerlo pulsando un botón durante el inicio del
arranque del ordenador. Generalmente suele ser la tecla Supr aunque esto varía
según los tipos de placa y en portátiles. Otras teclas empleadas son: F1, Esc, o
incluso una combinación, para saberlo con exactitud bastará con una consulta al
manual de su placa base o bien prestando atención a la primera pantalla del
arranque, ya que suele figurar en la parte inferior un mensaje similar a este:
Bajo el punto 4 hemos reunido una serie de opciones que suelen estar
distribuidas, gracias a ellas podemos insertar una contraseña de acceso al
programa del BIOS, modificar parámetros relativos a los periféricos integrados,
control de la administración de energía, control de la frecuencia y el voltaje, etc.
Y finalmente en el punto 5 reunimos las opciones que nos permiten guardar los
cambios efectuados, descartarlos, cargar valores por defecto, etc.
Además es importante aclara que dependiendo del tipo de placa base o del
modelo la presentación del setup puede variar.
11
Figura 10: Imagen de la interfaz más común de BIOS (Award y Phoenix)
Fuente: http://tpq70a.vtrbandaancha.net/imagenes/Blog005_Fig02.jpg
Esto le indica al BIOS a qué unidad ha de ir para buscar el arranque del sistema
operativo. La secuencia indica el orden de izquierda a derecha en que se buscará
en las unidades. Antiguamente el orden solía marcar A C SCSI/otros lo cual
indicaba que primero que debía mirar en la unidad A (disquetera) y
posteriormente en C (disco duro principal), gracias a esto se podía arrancar el
ordenador con un disco de arranque antes que el sistema operativo. Hoy en día
esto ha cambiado en muchos casos, cuando se necesita arrancar desde un CD
(instalación de sistemas operativos (Windows XP, Linux)) hay que modificar la
secuencia de arranque (a menos que el sistema sea tan nuevo que ya venga de
fábrica) para que inicialmente apunte a la unidad lectora de CD. Supongamos
que la unidad tiene la letra D, el orden podría ser D A C o D C A, por ejemplo.
La opción suele encontrarse en BIOS Features >> Boot Sequence para las
BIOS Award. En algunos casos en vez de integrarse en una sola opción, esto se
realiza en varias, suelen referirse al orden de arranque de dispositivos y se
llaman: First Boot Device, Second Boot Device, Third Boot Device y Boot
Other Device. Basta especificar en cada una cuál es el dispositivo que arrancará
en ese orden (First = primero, Second = segundo, Third = tercero, Other =
otro).
12
Figura 11: Secuencia de arranque
Fuente: http://tpq70a.vtrbandaancha.net/imagenes/Blog005_Fig06.jpg
13
7. Le cede el control para su ejecución….. y así comienza la carga de un
MSDOS: el IO.SYS lee el fichero MSDOS.SYS, el cual es de parámetros en
los sistemas operativos W95, W98, ME. Posteriormente y una vez
ejecutadas las tareas básicas e instaladas las rutinas del sistema
operativo, carga el interprete de comandos: el ‘command.com’
8. Si nuestro sistema operativo fuese MS-DOS, aquí terminaría la carga. Si es
W9X, busca el win.com para iniciar la carga de Windows.
14
Tabla 1.
Titulo: Resumen del arranque del computador
Fase Operación
Iniciador ROM Test del hardware
Carga del cargador del S.O.
Cargador del S.O. Carga en memoria de componentes del S.O.
Inicialización S.O. Test del sistema de archivos
Creación de estructuras de datos internas
Arranque de procesos del sistema(demonios)
Funcionamiento normal
Fuente: http://www.scribd.com/doc/98644/GUIA-DE-SISTEMA-OPERATIVO
En los 1940s:
– Primera generación de computadoras (tubos al vacío)
– Las aplicaciones eran científicas, matemáticas y militares.
– No había sistemas operativos ya que cada programa incluía las
instrucciones para manejar los recursos necesarios.
– Se programaba en lenguaje de máquina.
– Las máquinas eran operadas por los programadores que reservaban
tiempo de operación (se perdía tiempo).
– El proceso de depuración era manual (el programador detenía el programa
y examinaba el estado del CPU y RAM).
– Los programas se diseñaban pensando en la utilización de recursos
primero y la claridad del código después.
15
– Estas bibliotecas son la génesis de los sistemas operativos ya que se
fueron haciendo más complejas y podían controlar la ejecución de varios
trabajos en secuencia.
En la segunda mitad de los 1950s:
– Segunda generación de computadoras (transistores)
– Comienzan a surgir las aplicaciones comerciales.
– Surgen los primeros ensambladores (1954 por la IBM)
– Surgen los compiladores y lenguajes de alto nivel, tales como FOTRAN
(1954), ALGOL (1958) y COBOL (1959).
– IBM comienza a desarrollar mainframes en masa.
– General Motors, en 1956, crea lo que se considera el primer sistema
operativo, el GM-NAA I/O System, un sistema operativo en lote.
– Se contratan operadores que liberan de trabajo a los programadores.
– Se comienza con la planificación de trabajos (job scheduling) que permite
agrupar varios programas que tengan requisitos semejantes y decidir la
forma más adecuada de ejecutarlos.
– Ej.: Compilar varios programas en COBOL
– Surgen los lenguajes de control de trabajos (JCL, Job Control Language)
para crear libretos que indican los pasos necesarios para ejecutar un
trabajo.
– La diferencia en velocidad entre el CPU y los dispositivos E/S se redujo.
– Se creó el concepto de bloques de récords (record blocks) que permite
agrupar varios récords lógicos en uno físico y disminuir las operaciones
E/S.
– Se crean memorias intermedias (buffers) para aligerar las operaciones
E/S.
– También se desarrollan métodos de organización de archivos tales como el
acceso indexado y el aleatorio.
En los 1960s:
– Tercera generación de computadoras (circuitos integrados)
– Surgen las minicomputadoras.
– La diferencia en velocidad entre el CPU y los dispositivos E/S es todavía un
problema.
– Para ayudar se crea la multiprogramación (multiprogramming) que
permite que varios trabajos compartan la atención del CPU.
– En la multiprogramación pasiva, el CPU cambia de un trabajo al próximo
cuando el trabajo necesita esperar por un evento externo (normalmente
una operación E/S).
– En la multiprogramación activa, el sistema operativo le otorga a cada
trabajo un pedazo de tiempo. Cuando expira el tiempo, se interrumpe el
trabajo momentáneamente y se continúa con el próximo trabajo.
– La multiprogramación requirió la optimización de métodos de planificación
de trabajos (job scheduling) y de administración de la memoria.
– La idea de otorgar pedazos de tiempo a los trabajos y de atender varios
trabajos simultáneamente evolucionó hacia el time sharing (tiempo
compartido) y las multitareas en los sistemas interactivos.
En los 1970s:
– Se modifican algunos sistemas operativos en lote para que apoyen el
concepto de tiempo compartido y permitan interactividad con varios
usuarios a la vez.
– Surgen los primeros sistemas operativos puramente interactivos, tales
como UNIX a principios de los 1970s.
16
– UNIX es multiusuarios y multitareas (multitasking).
– Se desarrolló la memoria virtual, lo cual permitía que el CPU atendiera
más programas utilizando parte de la memoria secundaria como memoria
primaria.
– Se crean los primeros sistemas administradores de bases de datos.
– A mediados de los 1970s surgen las primeras computadoras personales
(Apple, Tandy/Radio Shack, Commodore).
– En esta década se crean las primeras supercomputadoras.
– Surgen lenguajes de alto nivel tales como Pascal y C.
En los 1980s:
– Disminuyen dramáticamente los costos de los componentes de las
computadoras.
– Las computadoras personales se vuelven más comunes.
– Surgen lenguajes orientados a objetos tales como C++.
– Mejora la infraestructura de comunicación de datos y surgen las redes de
cobertura local (LAN, Local Area Network).
– Surgen sistemas operativos y lenguajes de programación que apoyan el
multiprocesamiento (tener más de un procesador).
– Surgen los sistemas operativos de redes y sistemas distribuidos.
– Sistemas distribuidos – el usuario trabaja con un grupo (cluster) de
computadoras conectada en red como si fuera una sola.
En los 1990s:
– Se popularizan las computadoras personales debido a las aplicaciones y
sistemas operativos con GUIs.
– Surge el World Wide Web y las aplicaciones de multimedios.
– Los sistemas operativos en las computadoras personales se crean
pensando en la conectividad con redes.
– La seguridad en los sistemas se convierte en una prioridad.
En los 2000s:
– Se crean sistemas operativos que apoyan procesadores con núcleos
múltiples (multi-core processors).
– Se desarrolla el concepto de virtualización que permite particionar una
computadora en varias máquinas virtuales, cada una de ellas con su
propio sistema operativo y aplicaciones.
– Las aplicaciones multimedios que ejecutan en el Web se vuelven comunes.
– Se habla de la tecnología ubicua (en todo lugar en todo momento) ya que
dispositivos de uso común (celulares, PDAs, etc.) contienen computadoras
que requieren sistemas operativos empotrados.
17
Tabla 2.
Titulo: Evolución de los sistemas operativos
18
1.13 TIPOS DE SISTEMAS OPERATIVOS
Los sistemas operativos se categorizan de acuerdo al tiempo de respuesta y a
cómo los datos entran al sistema
Los tipos principales de sistemas operativos son:
– Sistemas en lote
– Sistemas interactivos
– Sistemas en tiempo real
19
– Sistemas estrictos (hard real-time systems) – el sistema se cae si no se
responde inmediatamente
Por ejemplo, marcapasos, expulsión de bolsas de aire (air bags) en los
autos, control de vuelo
– Sistemas flexibles (soft real-time systems) – el sistema sufre una
degradación en su desempeño si no se responde en el deadline pero no se
cae: Por ejemplo, lavadoras, cámaras de vídeo
Otros tipos de sistemas que también se reconocen son:
– Los sistemas empotrados (embedded systems) se colocan en
computadoras diseñadas para desempeñar unas pocas funciones definidas,
comúnmente con restricciones de tiempo real
Es posible convertir un sistema operativo de propósito general en un
sistema empotrado
Las computadoras y sistemas empotrados se colocan en productos a
los cuales se les quiere añadir capacidades de procesamiento
Sistemas tales como los de los motores y frenos de
automóviles, marcapasos y elevadores son sistemas
empotrados que también son de tiempo real
Sistemas para equipos que tocan música, PDAs y consolas de
juegos de vídeo son sistemas empotrados que no son de
tiempo real
– Los sistemas híbridos (hybrid systems) son una combinación de
sistemas en lote e interactivos
Estos sistemas permiten interactividad con los usuarios pero
ejecutan trabajos en lote cuando no hay muchos usuarios que
atender
Se encuentran en mainframes modernos
20
Figura 12: Sistemas operativos por servicios
Fuente: http://www.dspace.espol.edu.ec/bitstream/123456789/1416/6/2757.pdf
21
Figura 13: Modelo de máquina virtual
Fuente: http://blogs.utpl.edu.ec/sistemasoperativos/files/2009/03/capitulo-ii_so1.pdf
Tabla 3.
Titulo: Ventajas y desventajas de las máquinas virtuales
Ventajas Desventajas
El concepto de máquina virtual No permite compartición directa
provee protección total de los de los recursos
recursos del sistema ya que cada
máquina virtual está aislada de
las demás máquinas virtuales
Una máquina virtual es una El concepto de máquina virtual es
herramienta perfecta para el difícil de implementar debido al
desarrollo e investigación de esfuerzo requerido para proveer
sistemas operativos por ser que una copia exacta de la máquina
el desarrollo se hace en una
máquina virtual en vez de una
máquina física
Fuente: Autor
22
1.18 EL SISTEMA OPERATIVO USADO CON EL LENGUAJE DE
ÓRDENES
Básicamente podemos dividir a los usuarios de los servicios de los sistemas
operativos en dos amplias clases: usuarios del lenguaje de órdenes y usuarios de
las llamadas al sistema.
Informalmente, los usuarios del lenguaje de órdenes son aquellos que obtienen
los servicios del sistema operativo mediante órdenes, ya sean tecleadas en el
terminal o insertadas en un archivo de procesamiento (llamados scripts o batch).
Estos lenguajes de órdenes suelen ser específicos del sistema, aunque, en
general, las funciones suelen ser parecidas en todos ellos. Algunas de las clases
funcionales típicas de las órdenes del sistema operativo son: las relacionadas con
la conexión y desconexión, con la activación y control de programas, con la
gestión de archivos, las que muestran información de estado, las que permiten la
comunicación entre los usuarios y las relacionadas con la gestión del sistema.
Los usuarios de las llamadas al sistema invocan los servicios del sistema
operativo mediante llamadas al sistema en tiempo de ejecución. Estos usuarios,
conocidos como programadores de sistemas y aplicaciones, invocan a las
llamadas al sistema desde sus programas. Además de proporcionar la mayoría
de la funcionalidad accesible a los usuarios del lenguaje de órdenes, las llamadas
al sistema suelen permitir un mayor control sobre las operaciones del sistema y
un acceso más directo a las facilidades del hardware, especialmente a las de
entrada/salida; por este motivo, las llamadas al sistema representan un
superconjunto de las funciones accesibles a nivel de orden.
23
escribirse en lenguajes ensambladores. Sin embargo hoy se escriben en
lenguajes de alto nivel como C o C++.
Tabla 4.
Titulo: Estructura de capas del sistema operativo
24
UNIDAD II
PROCESOS Y MULTITAREA
2.2 PROCESOS
Todo el software ejecutable en la computadora, que con frecuencia incluye al
sistema operativo, se organiza en varios procesos secuenciales. Un proceso es
básicamente un programa ejecutante donde intervienen los valores corrientes del
contador de programa, registros y variables.
25
La unidad despachable.
26
Dado que, al parecer, las actividades listadas requieren procesamiento
secuencial, el método más sencillo es escribir un único programa para llevarlas a
cabo una tras otra.
Programa una_tarea;
...
begin
while true do
begin
recoger_ad;
guardar_d;
calcular_e;
imprimir_i;
end
end.
27
Esperar_señal_de(calcular);
Imprimir_I;
Enviar_señal_a(calcular)
End;
End;
{proceso padre}
Begin
Inicializar_entorno;
Enviar_señal_a(recoger, calcular);{para la primera pasada}
initiate recoger, guardar, calcular, imprimir
end{multitarea}
Process Imprimir;
Begin
While true do
Begin
Esperar_señal_de(calcular);
Imprimir_I;
Enviar_señal_a(calcular)
End
End;
28
La sincronización entre procesos concurrentes cooperativos es esencial para
preservar las relaciones de precedencia y para evitar los problemas de
temporización relacionados con la concurrencia. Los procesos cooperativos deben
sincronizarse unos con otros cuando va a utilizar recursos compartidos, tales
como estructuras de datos comunes o dispositivos físicos. Los sistemas
operativos multitarea e incluso algunos lenguajes de programación proporcionan
una colección de primitivas de sincronización entre procesos.
29
...
y PANTALLA decrementa ECO cada vez que visualiza un carácter:
eco:=eco - 1
Las situaciones en las que dos o más procesos leen o escriben en ciertos datos
compartidos y el resultado final depende de quién ejecuta qué y en qué
momento, reciben el nombre de condiciones de competencia
Debido a ello se puede establecer una “Lista de Listos” para los procesos “listos”
y una “Lista de Bloqueados” para los “bloqueados”.
La “Lista de Listos” se mantiene en orden prioritario y la “Lista de Bloqueados”
está desordenada, ya que los procesos se desbloquean en el orden en que tienen
lugar los eventos que están esperando.
30
Se puede observar que hay cuatro transiciones posibles entre los distintos
estados. Las transiciones 1 y 4 las lleva a cabo el planificador de procesos, que
forma parte del sistema operativo, sin intervención alguna de los procesos. La
transición 1 puede suceder cuando el planificador encuentra al procesador
ocioso, o bien porque considera que el proceso que se encuentra en ejecución ha
dispuesto del procesador durante un tiempo suficiente, con lo cual realizará
previamente la transición 4 para posteriormente llevar a cabo la transición 1. La
transición 2 ocurre cuando un proceso descubre que no puede continuar debido a
que demanda algún recurso de E/S, o bien que el sistema operativo lo bloquea
momentáneamente. Cuando el proceso en estado de espera ha finalizado el
evento externo que estaba esperando, o bien que el sistema lo desbloquea, se
producirá la transición 3, pasando el proceso nuevamente a estado de listo.
Los sistemas que administran los procesos deben poder crear, destruir,
suspender, reanudar, cambiar la prioridad, bloquear, despertar y despachar un
proceso.
31
Reanudar (reactivar) un proceso implica reiniciarlo en el punto donde fue
suspendido.
Una interrupción puede ser iniciada por un proceso en estado de ejecución o por
un evento que puede o no estar relacionado con un proceso en ejecución.
Interrupción Descripción
SVC Llamada al sistema operativo
Entrada / Salida Cambio de estado de un canal o dispositivo
Externa Evento externo al sistema
De Reinicio Reinicio del procesamiento
De Verificación de Programa Errores de procesos
De Verificación de Máquina Errores de hardware
Fuente: http://www.zator.com/Hardware/H2_4.htm
En general, existirá una lista con los PBCs de todos los procesos en situación de
preparado y una lista con todos los PBCs en situación de suspendido. Mediante
estas listas el sistema operativo forma colecciones de procesos en estados
análogos y serán examinadas por las rutinas de asignación de recursos del
sistema operativo.
32
Ejemplo: El planificador buscará el siguiente proceso a ejecutar en la lista de los
PBCs de procesos preparados.
33
La conmutación de procesos es una operación considerablemente más compleja
y costosa que la conmutación del contexto de interrupción y puede ser bastante
complicada en sistemas operativos grandes que disponen de un mantenimiento
preciso de recursos y de sofisticados esquemas de planificación. Dada su
complejidad y su relativamente alta frecuencia de ocurrencia, la implementación
de la conmutación de procesos puede afectar significativamente al rendimiento
de un sistema operativo de multiprogramación.
Los procesos son entidades que son relativamente costosas de crear y manipular
por parte del sistema operativo. En cambio, las hebras comparten los recursos
de los procesos y su manipulación es mucho menos costosa que la de éstos. La
principal ventaja de tener varias hebras de ejecución es permitir la ejecución
concurrente de actividades relacionadas dentro de un proceso.
34
sincronización, aunque también existen sistemas que incorporan primitivas de
paso de mensajes.
Con multiprogramación, un proceso ejecuta hasta que debe esperar por algún
evento. En un sistema simple sin multiprogramación el CPU estaría ocioso.
35
2.14 TIPOS DE PLANIFICACIÓN
La clave de la multiprogramación está en la planificación. De hecho, son cuatro
las clases de planificación que pueden entrar en juego normalmente:
Planificación a largo plazo: Decisión de añadir procesos a la reserva de
procesos a ejecutar.
Planificación a medio plazo: Decisión de añadir procesos al conjunto de
procesos que se encuentran parcial o completamente en memoria.
Planificación a corto plazo: Decisión sobre qué proceso disponible será
ejecutado en el procesador.
Planificación de E/S: Decisión sobre qué solicitud de E/S pendiente será
tratada por un dispositivo de E/S disponible.
36
Figura 18: Planificación y transiciones de estado de los procesos
Fuente: http://blogs.utpl.edu.ec/sistemasoperativos/files/2009/04/proceso4-300x151.jpg
37
2.15 NIVELES DE PLANIFICACIÓN DEL PROCESADOR
Se consideran tres niveles importantes de planificación, los que se detallan a
continuación.
38
– Todos los procesos son tratados de igual manera.
– Ningún proceso es postergado indefinidamente.
• Maximizar la capacidad de ejecución:
– Maximizar el número de procesos servidos por unidad de tiempo.
• Maximizar el número de usuarios interactivos que reciban unos
tiempos de respuesta aceptables:
– En un máximo de unos segundos.
• Ser predecible:
– Un trabajo dado debe ejecutarse aproximadamente en la misma cantidad
de tiempo independientemente de la carga del sistema.
• Minimizar la sobrecarga:
– No suele considerarse un objetivo muy importante.
• Equilibrar el uso de recursos:
– Favorecer a los procesos que utilizarán recursos infrautilizados.
• Equilibrar respuesta y utilización:
– La mejor manera de garantizar buenos tiempos de respuesta es disponer
de los recursos suficientes cuando se necesitan, pero la utilización total de
recursos podrá ser pobre.
• Evitar la postergación indefinida:
– Se utiliza la estrategia del “envejecimiento”.
– Mientras un proceso espera por un recurso su prioridad debe aumentar,
así la prioridad llegará a ser tan alta que el proceso recibirá el recurso
esperado.
• Asegurar la prioridad:
– Los mecanismos de planificación deben favorecer a los procesos con
prioridades más altas.
• Dar preferencia a los procesos que mantienen recursos claves:
– Un proceso de baja prioridad podría mantener un recurso clave, que puede
ser requerido por un proceso de más alta prioridad.
– Si el recurso es no apropiativo, el mecanismo de planificación debe otorgar
al proceso un tratamiento mejor del que le correspondería normalmente,
puesto que es necesario liberar rápidamente el recurso clave.
• Dar mejor tratamiento a los procesos que muestren un
“comportamiento deseable”:
– Un ejemplo de comportamiento deseable es una tasa baja de paginación.
• Degradarse suavemente con cargas pesadas:
– Un mecanismo de planificación no debe colapsar con el peso de una
exigente carga del sistema.
– Se debe evitar una carga excesiva mediante las siguientes acciones:
o No permitiendo que se creen nuevos procesos cuando la carga ya es
pesada.
o Dando servicio a la carga más pesada al proporcionar un nivel
moderadamente reducido de servicio a todos los procesos.
Muchas de estas metas se encuentran en conflicto entre sí, por lo que la
planificación se convierte en un problema complejo.
39
Tabla 6.
Titulo: Planificación Apropiativa Versus No Apropiativa
Disciplina Descripción
“Apropiativa” Una vez que se le ha otorgado la CPU a un proceso, le puede ser
retirada
“No Una vez que se le ha otorgado la CPU a un proceso, no le puede
Apropiativa” ser retirada
Fuente:
http://wwwdi.ujaen.es/~lina/TemasSO/PLANIFICACIONDEPROCESOS/2y3Obj.,Crit.yTiposdePlanific
acion.htm
40
Tabla 7.
Titulo: Criterios de un buen algoritmo de planificación
Criterio Descripción
Equidad Garantizar que cada proceso obtiene su proporción justa de
la CPU
Eficacia Mantener ocupada la CPU el ciento por ciento del tiempo
Tiempo de Minimizar el tiempo de respuesta para los usuarios
respuesta interactivos
Tiempo de Minimizar el tiempo que deben esperar los usuarios por
regreso lotes (batch) para obtener sus resultados
Rendimiento Maximizar el número de tareas procesadas por hora
Fuente: Autor
41
Este algoritmo de planificación es no apropiativo. Una vez que se ha asignado el
procesador a un proceso, éste lo conserva hasta que desee liberarlo, ya sea por
terminación o bien porque solicita un recurso de E/S.
FCFS tiene un mejor rendimiento en cómputo global con procesos largos que con
procesos cortos, ya que si por ejemplo un proceso corto llega siempre después
de un proceso largo, el tiempo de retorno normalizado para dicho proceso corto
será considerablemente mayor que el del proceso largo.
Otro problema que presenta este algoritmo, es que tiende a favorecer a los
procesos con carga de procesador frente a los procesos con carga de E/S, ya que
cuando un proceso con carga de procesador se está ejecutando, todos los
procesos con carga de E/S deben esperar (si han finalizado la correspondiente
ráfaga de E/S) la siguiente ráfaga de procesador, mientras que los dispositivos
de E/S estarán ociosos. Así pues, FCFS puede dar como resultado un uso
ineficiente tanto del procesador como de los dispositivos de E/S.
Ejemplo:
En un cierto instante se tiene los siguientes procesos, cuyo orden de llegada
es el indicado:
SOLUCIÓN: 1
Tabla 8.
Titulo: Algoritmo FCFS ejemplo 1
Proceso Tiempo de Tiempo Tiempo Tiempo de Turnaround Tiempo de
llegada de de Finalización Espera
Servicio Comienzo
A 0 1 0 1 1 0
B 1 100 1 101 100 0
C 2 1 101 102 100 101-2=99
D 3 100 102 202 199 102-3=99
Promedio 100 49.50
Fuente: Autor
42
SOLUCIÓN: 2
Tabla 9.
Titulo: Algoritmo FCFS con procesos ordenados por tiempo de servicio
Ejemplo:
En un cierto instante se tiene los siguientes procesos, cuyo orden de llegada
es el indicado:
43
Tiempo de espera y tiempo de retorno de cada trabajo, tiempo medio de
espera y retorno, cuando la planificación se realiza mediante los algoritmos
SJF y FCFS.
SOLUCIÓN: 1
Tabla 10.
Titulo: Algoritmo SJF
Proceso Tiempo de Tiempo Tiempo Tiempo de Turnaround Tiempo de
llegada de de Finalización Espera
Servicio Comienzo
A 0 8 0 8 8 0
B 1 4 8 12 12-1=11 8-1=7
C 2 9 17 26 26-2=24 17-2=15
D 3 5 12 17 17-3=14 12-3=9
Promedio 14.25 7.75
Fuente: Autor
Tabla 11.
Titulo: Algoritmo FCFS ejemplo 2
Proceso Tiempo de Tiempo Tiempo Tiempo de Turnaround Tiempo de
llegada de de Finalización Espera
Servicio Comienzo
A 0 8 0 8 8 0
B 1 4 8 12 12-1=11 8-1=7
C 2 9 12 21 21-2=19 12-2=10
D 3 5 21 26 26-3=23 21-3=18
Promedio 15.25 8.75
Fuente: Autor
44
siguiente proceso, existiendo igualmente que en el SJF peligro de inanición para
los procesos largos.
2.18.4 Prioridad
Ejemplo:
Sea la siguiente descripción de carga:
45
SOLUCIÓN:
Tabla 12.
Titulo: Algoritmo por Prioridades
Proceso Tiempo Priori Tiempo Tiempo de Tiempo de Turnaroun Tiempo de
de lleg. dad de Comienzo Finalizaci d Espera
Servicio ón
A 0 2 8 0 8 8 0
B 1 1 4 22 26 26-1=25 22-1=21
C 2 4 9 8 17 17-2=15 8-2= 6
D 3 2 5 17 22 22-3=19 17-3=14
Promedio 16.75 10.25
Fuente: Autor
Ejemplo:
En un cierto instante se tiene los siguientes procesos:
46
SOLUCIÓN:
Tabla 13.
Titulo: Algoritmo SRTF
Ejemplo: quantum =2;
Proces Tiempo Priori Tiempo de Tiemp Tiempo Turna. Tiempo
o de lleg. dad Servicio de de Fin de Espera
Com.
P1 0 7 7 5 3 1 0 4c 0,11,1 2,13,15,1 16-0=16 16-7=9
3,15 6
P2 2 4 4 2 0 2c 2,5 4,7 7-2=5 5-4=1
P3 4 1 1 0 2c 4 5 5-4=1 1-1=0
P4 5 4 4 2 0 2c 7,9 9,11 11-5=6 6-4=2
Promedio 7 3
Fuente: Autor
NOTA: cuando termina una corrida se vuelve a buscar desde arriba los más
cortos excepto los que ya terminaron
Una manera rápida de reducir la penalización que los procesos cortos sufren con
FCFS es usar expropiación basada en un reloj. Una interrupción de reloj es
generada a intervalos periódicos. Cuando ocurre la interrupción, el proceso en
ejecución es colocado en la cola de procesos listos y el próximo trabajo es
seleccionado basado en el esquema FCFS. A cada proceso se le da un trozo de
tiempo.
La principal decisión de diseño que surge con Round Robin es el tamaño del trozo
o quantum. Si el quantum es muy corto, entonces los procesos se moverán a
través del sistema rápidamente. Por otro lado, hay un cierto overhead o
desperdicio de tiempo envuelto con el manejo de la interrupción de reloj y las
funciones de planificación y despacho. Por lo tanto quanta muy pequeños
deberían evitarse. Una alternativa es usar un quantum de tiempo que sea un
poco más grande que el tiempo promedio requerido para una interacción típica.
47
Ejemplo:
En un cierto instante se tiene los siguientes procesos:
SOLUCIÓN:
Tabla 14.
Titulo: Algoritmo Round Robin
Proceso Tiempo de Tiempo Tiempo Tiempo de Turnaround Tiempo de
llegada de de Finalización Espera
Servicio Comienzo
A 0 8 0, 12, 21 3, 15, 23 23 15
B 1 4 3, 15 6, 16 16-1=15 11
C 2 9 6, 16, 23 9, 19, 26 26-2=24 15
D 3 5 9, 19 12,21 21-3=18 13
Promedio 20 13
Fuente: Autor
48
Figura 20: Planificación de colas múltiples
Fuente: http://www3.uji.es/~redondo/so/capitulo2_IS11.pdf
Esta política favorece a los procesos nuevos, ya que entran siempre los primeros
antes de cualquier otro proceso que se encuentre en otra cola, también favorece
a los procesos cortos, que no les da tiempo a que dichos procesos se degraden
mucho en la jerarquía de las colas de procesos listos.
49
Dentro de cada cola se podrá usar cualquier planificador monocola de los
definidos anteriormente, con lo que se flexibiliza aún más este algoritmo de
planificación.
Un problema que presenta este algoritmo, es que los procesos largos pueden
sufrir de inanición si llegan regularmente nuevos procesos al sistema. Para
compensar este problema se puede limitar el tiempo de espera en una cola de
menor prioridad. El remedio consiste en permitir que un proceso que se
encuentre en una cola de menor prioridad pueda promocionar a una cola de
mayor prioridad, si ha consumido cierta cantidad de tiempo en espera de
servicio.
50
era de esperar, si hay un flujo continuo de procesos listos de alta prioridad. Para
superar este problema, se puede pensar en diseñar un método que pueda
cambiar la prioridad del proceso en función de su edad, esto es, aumentar la
prioridad por envejecimiento.
51
UNIDAD III
52
disco en los casos en los que la memoria principal no le pueda dar capacidad a
todos los procesos que tienen necesidad de ella.
53
Figura 24: Organización simple de memoria
Fuente:
http://www.elprisma.com/apuntes/ingenieria_de_sistemas/sistemasoperativosfundamentos/default
2.asp
54
3.5 MULTIPROGRAMACIÓN CON PARTICIONES FIJAS
Para poder implementar la multiprogramación, se puede hacer uso de particiones
fijas o variables en la memoria. En el caso de las particiones fijas, la memoria se
puede organizar dividiéndose en diversas partes, las cuales pueden variar en
tamaño. Esta partición la puede hacer el usuario en forma manual, al iniciar una
sesión con la máquina.
Una vez implementada la partición, hay dos maneras de asignar los procesos a
ella. La primera es mediante el uso de una cola única (figura a) que asigna los
procesos a los espacios disponibles de la memoria conforme se vayan
desocupando. El tamaño del hueco de memoria disponible es usado para localizar
en la cola el primer proceso que quepa en él. Otra forma de asignación es buscar
en la cola el proceso de tamaño mayor que se ajuste al hueco, sin embargo hay
que tomar en cuenta que tal método discrimina a los procesos más pequeños.
Dicho problema podría tener solución si se asigna una partición pequeña en la
memoria al momento de hacer la partición inicial, el cual sería exclusivo para
procesos pequeños.
Partición 1
100 K
Sistema
Operativo
0
Figura 25: (a) Particiones fijas en Figura 25: (b) Particiones fijas en
memoria con una cola única de memoria con colas exclusivas para
entrada cada tamaño diferente de la partición
Fuente: Fuente:
http://www.elprisma.com/apuntes/ingenie http://www.elprisma.com/apuntes/ingenie
ria_de_sistemas/sistemasoperativosfunda ria_de_sistemas/sistemasoperativosfunda
mentos/default2.asp mentos/default2.asp
Esta idea nos lleva a la implementación de otro método para particiones fijas,
que es el uso de diferentes colas independientes (figura b) exclusivas para cierto
rango en el tamaño de los procesos. De esta manera al llegar un proceso, éste
sería asignado a la cola de tamaño más pequeño que la pueda aceptar. La
desventaja en esta organización es que si una de las colas tiene una larga lista
de procesos en espera, mientras otra cola está vacía, el sector de memoria
asignado para ese tamaño de procesos estaría desperdiciándose.
55
El sistema operativo lleva una tabla indicando cuáles partes de la memoria están
disponibles y cuáles están ocupadas. Inicialmente, toda la memoria está
disponible para los procesos de usuario y es considerado como un gran bloque o
hueco único de memoria. Cuando llega un proceso que necesita memoria,
buscamos un hueco lo suficientemente grande para el proceso. Si encontramos
uno, se asigna únicamente el espacio requerido, manteniendo el resto disponible
para futuros procesos que requieran de espacio.
0
Sistema
Operativo Lista de trabajos
2560K Procesos Memoria Tiempo
P1 600K 10
P2 1000K 5
P3 300K 20
P4 700K 8
P5 500K 15
2160K
2560K
56
Ejemplo de una división inicial de memoria y una lista de trabajos.
0 0 0 0 0
Sistema Sistema Sistema Sistema Sistema
operativo operativ operativ operativ operativ
400K 400K 400K 400K 400K
P5
P1 P1 P1 Hueco
900K
1000K 1000K 1000K 1000K Hueco
1000K
57
0 0
Sistema Sistema
operativ operativ
400K 400K
P5 P5
900K 900K
100k
1000K
Compactación P4
P4
1600K
1700K P3
300k 1900K
2000K
P3 660k
2300K
260k
2560K (a) 2560K (b)
Las estrategias más comunes para asignar algún hueco de la tabla son:
- Primer ajuste: Consiste en asignar el primer hueco con capacidad suficiente.
La búsqueda puede iniciar ya sea al inicio o al final del conjunto de huecos o
en donde terminó la última búsqueda. La búsqueda termina al encontrar un
hueco lo suficientemente grande.
- Mejor ajuste: Busca asignar el espacio más pequeño de los espacios con
capacidad suficiente. La búsqueda se debe de realizar en toda la tabla, a
menos que la tabla esté ordenada por tamaño. Esta estrategia produce el
menor desperdicio de memoria posible.
- Peor ajuste: Asigna el hueco más grande. Una vez más, se debe de buscar
en toda la tabla de huecos a menos que esté organizada por tamaño. Esta
estrategia produce los huecos de sobra más grandes, los cuales pudieran ser
de más uso si llegan procesos de tamaño mediano que quepan en ellos.
58
almacenamiento. Ni el primer o el mejor ajuste es claramente el mejor en
términos de uso de espacio, pero por lo general el primer ajuste es más rápido.
A B C D E
0 8 16 24
1111100
10 1 1 1 1 1 1
1100111
11 1 1 1 1 0 0
0
A B C D E
0 8 16 24
P 0 5 H 5 3 P 8 6 P 14 4
H 18 2 P 20 6 P 26 3 H 29 3
x
Figura 29: Administración de la memoria con listas ligadas
Fuente:
http://www.elprisma.com/apuntes/ingenieria_de_sistemas/sistemasoperativosfundamentos/default
2.asp
59
Ejemplo de listas ligadas
En este ejemplo, la lista de segmentos está ordenada por direcciones, lo que da
la ventaja de que al terminar o intercambiar un proceso, la actualización de la
lista es directa.
3.9 FRAGMENTACIÓN
La fragmentación es la memoria que queda desperdiciada al usar los métodos de
gestión de memoria que se vieron en los métodos anteriores. Tanto el primer
ajuste, como el mejor y el peor producen fragmentación externa.
60
duro u otro medio de almacenamiento secundario. Aunque esta técnica era eficaz
(porque resolvía el problema) no era eficiente (ya que no lo resolvía de la mejor
manera). Esta solución requería que el programador tuviera un conocimiento
muy profundo del equipo de cómputo y de las llamadas al sistema operativo.
Otra desventaja era la portabilidad de un sistema a otro: las llamadas
cambiaban, los tamaños de particiones también. Resumiendo, con esta técnica
se podían ejecutar programas más grandes que las particiones de RAM, donde la
división del código corría a cuenta del programador y el control a cuenta del
sistema operativo.
3.12 PAGINACIÓN
Es una técnica de manejo de memoria, en la cual el espacio de memoria se
divide en secciones físicas de igual tamaño, denominadas marcos de página. Los
programas se dividen en unidades lógicas, denominadas páginas, que tienen el
mismo tamaño que los marcos de páginas. De esta forma, se puede cargar una
página de información en cualquier marco de página.
61
Los mecanismos de paginación permiten la correspondencia correcta entre las
direcciones virtuales (dadas por los programas) y las direcciones reales de la
memoria que se reserven. Para tener el control de las páginas, debe mantenerse
una tabla en memoria que se denomina tabla de Mapas de Pagina (PMT) para
cada uno de los procesos.
El primer punto proviene del hecho de que las computadoras modernas utilizan
direcciones virtuales de al menos 32 bits. Por ejemplo, si el tamaño de página es
de 4K, un hueco de direcciones de 32 bits tiene un millón de páginas; en el caso
de un hueco de direcciones de 64 bits, se tendría más información de la que uno
quisiera contemplar.
62
Desventaja:
– Costosa en recursos si la tabla de páginas es grande (1 registro por
página)
– Costosa en tiempo
– En el cambio de contexto habría que cargar la tabla de páginas
Desventaja:
– Hay que hacer una o más referencias a memoria por cada instrucción para
acceder a la tabla de páginas
Ventaja:
– Reduce el tiempo empleado en la transformación de direcciones en un orden
de magnitud con respecto al caso en el que se guardaba la tabla de páginas
sobre memoria principal.
63
3.12.3 Transformación de direcciones mediante una memoria
asociativa
Con el fin de que se pueda hacer referencia a todas las páginas activas a través
de un PAR, hay que disponer de tantos como marcos haya en la memoria. En
este caso, el marco al que hará referencia cada PAR, no vendrá implícito por la
situación de éste, sino que deberá incluirse como un campo adicional en el
mismo PAR. El hardware de direccionamiento de la memoria lleva a cabo,
entonces, la operación de transformación de direcciones. Como antes, sólo se
requiere la intervención del software en el caso de que haya que sustituir una
página.
64
Tabla hash de página: El espacio de direcciones comunes es mayor a 32
bits. El número de página virtual se usa como llave de una tabla de
página hash. Esta tabla de página contiene una lista con los elementos
asociados al mismo registro. El número de página virtual es comparado en
esta lista buscando una coincidencia, si se encuentra, el marco de página
es extraído.
65
3.12.5 Uso del TLB en las tablas de páginas
Cada referencia a memoria virtual puede causar dos accesos a memoria física:
Una consulta en la tabla de páginas
Una para buscar el dato
Para superar el problema se coloca una cache de alta velocidad para entradas de
tablas de página llamada TLB - Translation Lookaside Buffer. Este buffer
contiene las entradas de tablas de página que han sido usadas más
recientemente, además funciona igual que una memoria cache
66
3.12.7 Estructura de una entrada de tabla de páginas
Solicitada
Protección
Cada vez que la CPU genere una dirección de memoria ésta es transformada por
una unidad hardware, de forma que en el bus del sistema se introduce la
dirección física correspondiente. Es importante observar que la paginación es en
sí misma una forma de reubicación dinámica. Cada dirección lógica es
transformada en alguna dirección física por el hardware de paginación. Observe
también que si el tamaño de página es una potencia de dos, el hardware no
precisa realizar ninguna división, simplemente sabe que los últimos n bits, si el
tamaño de página es de 2n, representan el desplazamiento, y los primeros bits la
página.
67
elemento de la tabla de páginas, para indicar si la página se encuentra presente
o no en la memoria principal, y si el campo de direcciones debe interpretarse
como una dirección de marco, o bien como una dirección de la memoria
secundaria. La elección de la página que habrá que sacar es el resultado de un
algoritmo de reemplazo de página.
Ejercicio de aplicación
En este ejemplo es de 4KB de páginas y marcos, con un espacio de direcciones
virtuales de 64K y 32KB de memoria física, tenemos 16 páginas virtuales y ocho
marcos de página. Cuando el programa trata de tener acceso a la dirección 0,
por ejemplo, con la intrusión la dirección virtual 0 envía a la MMU. Esta ve que
tal dirección virtual está en la pagina 0(0 a 4095, que según su correspondencia
es el marco de pagina 2(8192 a 12287). Así, la MMU; lo único que ve es una
solicitud de leer o escribir a la dirección 8192, y lo hace. Por lo tanto, la MMU ha
establecido la correspondencia total de todas las direcciones entre 0 y 4095 con
las direcciones físicas 8192 a12287.
68
3.12.9 Páginas compartidas
Características
El espacio de direcciones lógico de un proceso puede ser no contiguo.
Se divide la memoria física en bloques de tamaño fijo llamados marcos (frames).
Se divide la memoria en bloques de tamaño llamados páginas.
Se mantiene información en los marcos libres.
Para correr un programa de n paginas de tamaño, se necesitan encontrara n
marcos y cargar el programa.
Se establece una tabla de páginas para trasladar las direcciones lógicas a físicas.
Se produce fragmentación interna.
La memoria asociativa permite acelerar la traducción.
Comparte programas de uso corriente.
Tabla 15.
Titulo: Ventajas y desventajas de las máquinas virtuales
Ventajas Desventajas
Es posible comenzar a ejecutar un El costo de hardware y software
programa, cargando solo una se incrementa (si la tabla de
parte del mismo en memoria, y el paginas es grande), por la nueva
resto se cargara bajo la solicitud información que debe manejarse
y el mecanismo de traducción de
direcciones necesario. Se
consume mucho más recursos de
memoria, tiempo en el CPU para
su implantación
No es necesario que las paginas Se deben reservar áreas de
estén contiguas en memoria, por memoria para las PMT de los
lo que no se necesitan procesos procesos. Al no ser fija el tamaño
de compactación cuando existen de estas, se crea un problema
marcos de paginas libres semejante al de los programas
dispersos en la memoria (como asignar un tamaño óptimo
sin desperdicio de memoria, u
"ovearhead" del procesador)
Es fácil controlar todas las Aparece el problema de
páginas, ya que tienen el mismo fragmentación interna
69
tamaño
El mecanismo de traducción de Al implementar completamente
direcciones (DAT) permite en hardware, resulta
separar los conceptos de espacio problemática cuando la tabla de
de direcciones y espacios de páginas debe ser grande
memoria. Todo el mecanismo es
transparente al usuario
Se libera al programador de la La velocidad de acceso a memoria
restricción de programar para un principal es relativamente baja,
tamaño físico de memoria, con lo dado que cada referencia a
que se aumenta su productividad. memoria involucra 2 accesos
Se puede programar en función
de una memoria mucho más
grande a la existente
Al no necesitarse cargar un
programa completo en memoria
para su ejecución, se puede
amentar el número de programas
multiprogramándose
Se elimina el problema de
fragmentación externa
Cuando la tabla se implementa
completamente en hardware, se
obtiene una alta velocidad de
acceso a memoria
Permite la posibilidad de
compartir programas de uso
corriente
Cuando la tabla se implementa en
memoria principal, la tabla de
páginas puede crecer según se
requiera
Fuente: Autor
Al ocurrir el fallo de página, el sistema operativo debe elegir una página para
retirarla de la memoria y usar el espacio para la página que se necesita para
70
desbloquear el sistema y que el hardware pueda seguir trabajando. Si la página
por eliminar de la memoria fue modificada, se debe volver a escribir al disco para
mantener la información actualizada; de lo contrario, si la página no fue
modificada no es necesario rescribir la información a disco y la página que se
carga simplemente se escribe sobre la página a borrar en memoria. La figura 38
muestra gráficamente un intercambio de páginas entre la memoria principal y el
disco (memoria secundaria).
Página a eliminar
Marco elegido para
intercambio de
Página a cargar
Es el algoritmo más sencillo dado que no requiere tener ninguna información, sin
embargo, por no hacer uso de dicha información sobre el comportamiento del
proceso, no puede lograr un buen desempeño.
Este algoritmo debe de tener el menor índice de fallos de página de todos los
algoritmos. En teoría, este algoritmo debe de reemplazar la página que no va a
ser usada por el periodo más largo de tiempo.
Tal algoritmo existe y ha sido llamado OPT o MIN, pero se usa únicamente para
estudios de comparaciones. Por ejemplo, puede resultar muy útil saber que
aunque algún nuevo algoritmo no sea óptimo, está entre el 12.3% del óptimo y
entre el 4.7% en promedio.
71
3.12.13 Algoritmo de reemplazo de páginas según el uso no tan reciente
Este algoritmo hace uso de los dos bits de estado que están asociados a cada
página. Estos bits son: R, el cual se activa cuando se hace referencia (lectura /
escritura) a la página asociada; y M, que se activa cuando la página asociada es
modificada (escritura). Estos bits deben de ser actualizado cada vez que se haga
referencia a la memoria, por esto es de suma importancia que sean activados por
el hardware. Una vez activado el bit, permanece en ese estado hasta que el
sistema operativo, mediante software, modifica su estado.
Estos bits pueden ser utilizados para desarrollar un algoritmo de reemplazo que
cuando inicie el proceso, el sistema operativo asigne un valor de 0 a ambos bits
en todas las páginas. En cada interrupción de reloj, limpie el bit R para distinguir
cuáles páginas tuvieron referencia y cuáles no.
72
3.12.15 Reemplazo de páginas mediante el algoritmo FIFO
Este algoritmo es una modificación del FIFO. El algoritmo hace uso del bit de
referencia de la página. Cuando una página ha sido seleccionada para reemplazo,
se revisa el bit de referencia. Si tiene valor de 0, se procede a reemplazar la
página. Si por el contrario, el bit de referencia es 1 se le da a la página una
segunda oportunidad.
Este algoritmo organiza las páginas en una lista circular como se muestra en la
figura y se usa un apuntador (o manecilla) que señala a la página más antigua.
73
Figura 41: Reemplazo de páginas del reloj
Fuente: http://wwwdi.ujaen.es/~lina/TemasSO/MEMORIAVIRTUAL/Image19.gif
74
Pilas: Otra aproximación para implementar el reemplazo LRU es la de tener una
pila con los números de páginas. Siempre que se hace referencia a una página,
se quita de la pila y se pone en la parte superior. De esta manera, la parte
superior de la pila es la página de uso más reciente y la de abajo es la LRU, tal
como se muestra en la figura
E
E
D D
C C
B
A B
3.13 SEGMENTACIÓN
Otra opción para el manejo de la memoria es usar una forma de liberar al
programador de la tarea del control de las tablas en expansión y contracción, de
la misma forma que la memoria virtual elimina la preocupación por organizar el
programa en una serie de proyectos.
Aunque también es posible tener bibliotecas compartidas sin los sistemas con
paginación pura, es mucho más complejo. De hecho, estos sistemas simulan la
segmentación.
75
Segmentación pura
La implantación de la segmentación difiere del caso de la paginación en un
sentido esencial: las páginas tienen un tamaño fijo y los segmentos no. La figura
Desarrollo de fragmentación externa y su corrección mediante compactación,
muestra un ejemplo de memoria física que contiene al principio 5 segmentos.
Consideremos que el segmento 1 se elimina y su lugar se ocupa por el segmento
7, que es menor. El área que queda entre el segmento 7 y el 2 es un hueco.
Luego, el segmento 4 se reemplaza por el segmento 5 y el segmento 3 es
reemplazado por el segmento 6. Después de que el sistema esté en ejecución
durante cierto tiempo, la memoria quedará dividida en varios bloques, algunos
con segmentos y otros con huecos.
Segmento
Segmento Segmento Segmento Segmento 0 (4K)
0 (4K) 0 (4K) 0 (4K) 0 (4K)
(a) (b) (c) (d) (e)
Segmento
Segmento Segmento Segmento Segmento
1 (8K) 7 (5K)
7 (5K) 7 (5K) 7 (5K)
Segmento
Hueco
Hueco 2 (5K)
(3K) Hueco
(3K) (3K)
Segmento Segmento Segmento Segmento
2 (5K) 2 (5K) Segmento 2 (5K) 6 (4K)
2 (5K) Segmento
Segmento 6 (4K) Segmento
Segmento Segmento 5 (4K)
3 (8K)
3 (8K) 3 (8K) Hueco
(4K)
Segmento Hueco
Segmento 5 (4K) Segmento
4 (7K) Segmento 5 (4K) (10K)
4 (7K) Hueco Hueco
(3K) (3K)
76
necesitadas de los mismos se van referenciando (páginas). Para comprender este
esquema, nuevamente se verá cómo se traduce una dirección virtual en una
localidad de memoria real. Para la paginación y segmentación puras se puede
decir que el direccionamiento es `bidimensional' porque se necesitan dos valores
para hallar la dirección real. Para el caso combinado, se puede decir que se tiene
un direccionamiento `tridimensional'. En la figura 44 se muestran las partes
relevantes para lograr la traducción de direcciones. El sistema debe contar con
una tabla de procesos (TP). Por cada renglón de esa tabla se tiene un número de
proceso y una dirección a una tabla de segmentos.
Es decir, cada proceso tiene una tabla de segmentos. Cuando un proceso hace
alguna referencia a memoria, se consulta TP para encontrar la tabla de
segmentos de ese proceso. En cada tabla de segmentos de proceso (TSP) se
tienen los números de los segmentos que componen a ese proceso. Por cada
segmento se tiene una dirección a una tabla de páginas. Cada tabla de páginas
tiene las direcciones de las páginas que componen a un solo segmento. Por
ejemplo, el segmento `A' puede estar formado por las páginas reales
`a','b','c','p' y `x'. El segmento `B' puede estar compuesto de las páginas
`f','g','j','w' y `z'.
77
Ahora, en este esquema pueden haber dos tipos de fallos: por fallo de página y
por fallo de segmento. Cuando se hace referencia a una dirección y el segmento
que la contiene no está en RAM (aunque sea parcialmente), se provoca un fallo
por falta de segmento y lo que se hace es traerlo del medio de almacenamiento
secundario y crearle una tabla de páginas. Una vez cargado el segmento se
necesita localizar la página correspondiente, pero ésta no existe en RAM, por lo
cual se provoca un fallo de página y se carga de disco y finalmente se puede ya
traer la dirección deseada por medio del desplazamiento de la dirección virtual.
78
3.16.2 Gestión de memoria en sistemas basados en Linux
Los sistemas basados en Unix comparten multitud de aspectos con los basados
en Linux, aunque ciertos puntos sustanciales son diferentes, y por ello a
continuación se hace una diferenciación. Hay que destacar no obstante que el
sistema de gestión de memoria en Linux sigue siendo muy complejo. Respecto a
memoria virtual, Linux hace uso de una estructura de tabla de páginas con tres
niveles. Para utilizarlas, las direcciones virtuales en Linux se ven como un
conjunto de 4 campos.
Existen los tres tipos de direcciones inicialmente comentados, las lógicas, las
lineales y las físicas. Las transformaciones y el formato de las direcciones
dependen de la arquitectura. En Linux, los espacios de direcciones lógico y lineal
son idénticos. En los procesadores de la arquitectura i386, el paso de dirección
lógica a lineal se denomina segmentación, y de lineal a física paginación. Si
deshabilitamos la paginación, la dirección física es igual a la lineal.
79
Figura 45: Modelo de paginación de Linux
Fuente: http://www.neo-tech.es/wp/doc/presentacion-erc.pdf
80
3.17.1 Espacios de direcciones virtuales
Una dirección virtual no es una dirección física que apunte a una posición de la
memoria principal, sino una dirección utilizada por el sistema para acceder a una
determinada página de la tabla de páginas de un proceso. Utilizando
posteriormente diferentes algoritmos para traducir esa dirección virtual, el
sistema puede acceder a la memoria física donde está contenida la información
del proceso. Esto permite que no podamos acceder a las posiciones de otros
procesos porque no es posible hacer referencia a dichas posiciones.
Más sencillo representarlo como una tabla de n filas (de 0 a 4.xxx.xxx.xxx) que
representan páginas.
81
Tabla 16.
Titulo: Rangos de páginas
Fuente: http://www.neo-tech.es/wp/doc/presentacion-erc.pdf
82
UNIDAD IV
83
• El “Sistema de Archivos” es la parte del sistema de administración del
almacenamiento responsable, principalmente, de la administración de los
archivos del almacenamiento secundario
• Es la parte del sistema operativo responsable de permitir “compartir
controladamente” la información de los archivos
84
– “Integridad del archivo” para garantizar la integridad de la
información del archivo
• El sistema de archivos está relacionado especialmente con la
administración del espacio de almacenamiento secundario,
fundamentalmente con el almacenamiento de disco. Una forma de
organización de un sistema de archivos puede ser la siguiente:
– Se utiliza una “raíz ” para indicar en qué parte del disco comienza el
“directorio raíz ”
– El “directorio raíz ” apunta a los “directorios de usuarios”
– Un “directorio de usuario” contiene una entrada para cada uno de
los archivos del usuario
– Cada entrada de archivo apunta al lugar del disco donde está
almacenado el archivo referenciado
• Los nombres de archivos solo necesitan ser únicos dentro de un directorio
de usuario dado. El nombre del sistema para un archivo dado debe ser
único para el sistema de archivos.
• En sistemas de archivo “jerárquicos” el nombre del sistema para un
archivo suele estar formado como el “nombre de la trayectoria” del
directorio raíz al archivo
85
• No están ligados al ciclo de vida de una aplicación particular
• Abstraen los dispositivos de almacenamiento físico
• Se acceden a través de llamadas al sistema operativo o de bibliotecas de
utilidades
Servicio de nombrado
Identifica un archivo dentro de algún tipo de organización lógica
(por ejemplo jerárquica)
Tipo del archivo, que permite saber qué tipo de información
contiene
Servicios de almacenamiento
Seguridad, protección y cifrado. Necesario en sistemas multiusuario
Archivos compartidos por varios usuarios
Tratamiento especial según el tipo de archivo (FIFOS, enlaces,
dispositivos)
Servicios de directorio
Organización lógica (por ejemplo directorios jerárquicos)
Publicidad de la información
86
4.6.3 Visión funcional: directorios
bin boot var etc usr lib home proc sbin mnt dev
87
o read: lee datos de un archivo abierto, usando su descriptor, a un almacén en
memoria
o write: escribe datos a un archivo abierto, usando su descriptor, desde un
almacén en memoria
o lseek: mueve el apuntador a relativo_a+ desplazamiento
o ioctl: permite manipular los atributos de un archivo
4.8.1 FAT
Para los archivos que ocupan más de un cluster, la FAT contiene toda la
información para poder reconstruir dicho archivo desde su cadena de cluster y
cargarlo en memoria.
Tabla 17.
Titulo: Tamaños de Cluster en FAT16 y FAT32
88
Tamaño de la Partición Tamaño cluster FAT32
<256 MB 512 bytes
260 MB a 8 GB 4 KB
8 GB a 16 GB 8 KB
16 GB a 32 GB 16 KB
>32 GB 32 KB
Fuente: http://www.webtaller.com/maletin/articulos/sistemas-archivos-seguridad-datos.php
Debido a que FAT32 utiliza cluster más pequeños que FAT16, a igual tamaño de
partición, FAT32 aprovecha mejor el espacio del disco duro.
4.8.2 HPFS
Este sistema de archivos es mucho más seguro, estable y fiable que los FAT.
Estos acceden a los datos del disco duro a través de un búfer de alta velocidad
(caché) y es capaz de soportar varias particiones activas al mismo tiempo.
4.8.4 NTFS
Con este sistema abandonamos definitivamente las FAT ya que pese a sus
mejoras (V-FAT y FAT32) apenas si cumple los requisitos de un sistema de
archivos profesional que pueda ser utilizado en servidores.
89
Recordemos que los sistemas de archivos para sistemas operativos multiusuarios
y servidor precisan de derechos de acceso avanzados tanto para usuarios
individuales como avanzados.
Además NTFS permite particiones de disco mayores que las FAT (4 GB), siendo
fundamental para el uso de servidores, y es compatible con los métodos RAID (1
a 5) que aumentan la velocidad de acceso y sirven para las copias de datos
mediante los discos duros espejo.
Las particiones NTFS son fácilmente recuperables ante un fallo del sistema al
contrario de lo que ocurre con las FAT y además son menos propensas a la
fragmentación.
90
El tamaño del cluster lo establece NTFS automáticamente en función del tamaño
de la partición aunque también puede ser configurado manualmente por el
usuario en el momento del formato.
Existe una copia de seguridad de la MFT que en caso de error del disco duro
puede utilizarse para su reconstrucción y tanto la MTF como su copia pueden
encontrarse en cualquier lugar del disco duro ya que son tratados como lo que
son, archivos NTFS completamente normales.
En NTFS los directorios son tratados como archivos al igual que en la mayoría de
sistemas de archivos solo que en NTFS contienen otro atributo, por lo tanto
también existe un registro en la MFT del directorio que es guardado como un
índice compuesto por el nombre de los archivos y los subdirectorios y un número
único de archivos o directorios.
Es decir, para cada directorio tenemos un árbol de donde cuelgan los archivos y
directorios que contienen. A esto se le denomina árbol binario y permite que el
acceso a los datos sea mucho más rápido, recordemos que en la FAT para buscar
un archivo primeramente debe examinar por completo la tabla y además no
están ordenados.
91