Unidad I Administraci贸n de la Memoria M.C. Juan Carlos Olivares Rojas
• Este material se distribuye bajo una licencia Creative Commons Reconocimiento 2.5 México. Usted es libre de: copiar, distribuir y comunicar públicamente la obra hacer obras derivadas • Bajo las condiciones siguientes: Reconocimiento. Debe reconocer y dar crédito al autor original (Juan Carlos Olivares Rojas)
Temario • Unidad 0. Repaso de Sistemas Operativos I • 0.1 Historia • 0.2 Conceptos básicos de Sistemas Operativos • 0.3 Administrador de Procesos • 0.4 Administrador de Entrada/Salida
Temario 1.1 Política y filosofía de A.M. 1.2 Mecanismos de asignación 1.3 Estrategias de Asignación 1.4 En concepto de memoria virtual 1.5 Mecanismos de localización
Temario 1.6 Implantaci贸n de mecanismos de memoria virtual 1.6.1 Base limite 1.6.2 Segmentaci贸n 1.6.3 Paginaci贸n 1.6.4 Segmentaci贸n paginada 1.7 Mapa de Memoria 1.8 Memoria expandida 1.9 Memoria extendida
0.1 Introducción • ¿Qué es un sistema operativo? • Es el software que controla la computadora, sirve de interfaz hombre-máquina. Administra los recursos de un sistema de cómputo hardware y software. • Recordar que un sistema es un conjunto de elementos que están interrelacionados entre sí para lograr un fin común.
Introducci贸n
Introducción • La final de un sistema operativo es poder operar (manejar) una computadora. • Es el software principal de la computadora que se encarga al encenderlo. Existen sistemas operativos muy básicos, por ejemplo las consolas actuales de videojuegos cuentan con un sistema operativo en ROM para realizar muchas cosas.
Introducción Sistema de Bancos
Reservació nes
Navegador Web
Compiladores
Editores
Intérpretes de Comandos
Application programs
System programs
SISTEMA OPERATIVO Lenguaje Máquina Microprogramación Dispositivos Físicos
Hardware
Introducción • El desarrollo de los sistemas operativos está influenciado por el desarrollo tecnológico, el cual tiene como premisas (función objetivo): • Reducir el esfuerzo (minimizar la frontera hombre-máquina). • Maximizar el rendimiento de los recursos
Introducción • Los principales recursos que administra un sistema operativo son: • Administración de procesos (programas en ejecución, tareas) • Administración de E/S (dispositivos, periféricos) • Administración de memoria (principal) • Administración de archivos (almacenamiento persistente)
Introducci贸n
Introducción • Tanto la administración de memoria y archivos se encargan sobre el mismo recurso: espacio de almacenamiento, sólo varían el tipo de almacenamiento: primario (memoria RAM y ROM) y secundario (discos duros, discos flexibles, discos ópticos, etc.). • La parte esencial de cualquier sistema operativo se llama núcleo.
Introducción • Dependiendo del tipo de sistema operativo dependerá las acciones a realizar el sistema operativo. • No es la misma administración de recursos para un sistema monousuario que para uno multiusuario, que por ejemplo la administración de procesos en un sistema multitarea o de tiempo compartido.
Introducci贸n 55
IOCS
IBSYS
60
CTSS
65 DOS/360
OS/360
70 75
DOS/VDSE MVS/370
VM/370
MVS/XA
VM/XA SYSTEM V
90 VS/ESA MVS/ES 95
UNIXV.7 SYSTEM III
VS
VM/ESA
SYSTEM V.4
RT-11
LINUX AIX/ESA
SOLARIS 2
CP/M
VMS 1.0 4.1BSD XENIX MS-DOS 1.0
SUN OS 4.2BSD AIX POSIX MACH OSF/1 4.3BSD AIX/370
00 03
RSX-11M
UNIX
TSO
80 85
MULTICS
CP/CM5
4.4BSD
OS/2
WIN 3.0 VMS 5.4
DR/DOS
WIN 3.1 WIN NT WIN 9X
VMS 7.3 WIN 2000 LINUX 2.6
SOLARIS 10
WIN XP WIN Server 2003
Introducción • Los sistemas operativos trabajan generalmente en modo supervisor que a diferencia del modo usuario (en donde se ejecutan los demás programas) no está limitado y puede realizar cualquier operación por la computadora. • Los sistemas operativos son totalmente dependiente de la arquitectura de computadoras.
Introducción • Por este motivo sistemas operativos como Windows no pueden ejecutarse sobre arquitecturas como Power PC, sino que está ligado a una arquitectura Intel x86. • Recientemente han aparecido microprocesadores con palabras de 64 bits, para ellos se utilizan variaciones del sistema operativo para un manejo óptimo de los recursos.
Introducci贸n App
App User Mode Kernel Mode
Servicios del Sistema
Sistema Operativo Monol铆tico
Procedimientos OS
Hardware
Introducci贸n Progama de Aplicaci贸n
Programa de Aplicaci贸n
Programa de Aplicaci贸n
Modo Usuario Modo Kernel
Servicios del Sistema Sistema de Archivos Administrador de Dispositivos de E/S y Memoria Administrador de Procesos Hardware
Sistema Operativo por Capas
Introducci贸n Aplicaci贸n Cliente
Servidor de Memoria
Servidor De Procesos
Servidor de Red
Servidor de Archivos
Servidor de Despliegue
Modo Usuario Modo Kernel
solicitud
Microkernel
respuesta
Hardware
Introducción • Actualmente los sistemas operativos soportan multitarea y concurrencia de manera nativa soportando sistemas de múltiples procesadores y/o núcleos. • Para el bueno uso de los recursos se utilizarán políticas y mecanismos de control. Por lo que un sistema operativo se encarga de planificar, controlar, dirigir y ejecutar operaciones del sistema.
Introducción • Los programas pueden acceder directamente a algunas funciones en modo supervisor del sistema haciendo llamadas al sistema. • Un sistema operativo por lo tanto tiene una interfaz hacia el usuario y otra interfaz hacia los programas (programadores). • En UNIX esa distinción no existía.
Introducción • Así como el hardware y software son recursos no excluyentes (son un binomio). El sistema operativo está en la mitad de esos dos recursos. • Toda computadora tiene un sistema operativo aunque este sea muy básico. Por ejemplo una calculadora científica puede contar con un menú de administración.
Introducción • Esto a dado hincapié a sistemas operativos cada vez más especializados y robustos. • Actualmente la tendencia es hacia los sistemas operativos para dispositivos empotrados: ATM, Relojes, PDAs, celulares, electrodomésticos, etc. • Los otros tipos de sistemas operativos que están en boga son los de tiempo real.
Introducci贸n Subsistemas de ambientes
Procesos de Servicios y Sistemas
Aplicaci贸n De Usuarios POSIX Subsistema DLL
Windows
OS/2
Windows
User Mode Kernel Mode Executive Manejadores de Dispsoitvos
Kernel
Hardware Abstraction Layer (HAL)
Arquitectura de Alto Nivel de Windows NT
Windows User/GDI Device Driver
Introducci贸n Procesos de Procesos de Aplicaciones Subsistemas Soporte del Servicios de Usuarios de Ambiente Sistema Modo Usuario
Subsistema de DLLs
Modo Kernel
Executive Kernel
Manejador de Dispositivos
Hardware Abstraction Layer (HAL)
Ventanas y Gr谩ficos
Procesos del Sistema
Introducción Servicios
Servicio de Control de Gestión LSASS WinLogon User Mode
SvcHost.Exe
Windows
Admon- de Tareas
WinMgt.Exe
Explorer
SpoolSv.Exe
Manejador de Sesiones
Subistema de Entornos
Aplicaciones
OS/2
Aplicaciones de los Usuarios
Services.Exe
POSIX Subsistema de DLLs
Windows DLLs
NTDLL.DLL
Hilos de Sistemas Kernel Mode
Sistema de Despachador de Sistemas Windows USER, GDI
(interfaces invocables en el modo kernel)
Kernel Hardware Abstraction Layer (HAL) Interfaces de Hardware(buses, Dispositivos de E/S , interrupcciones, intervalos de temporizadores, DMA, control de memoria cache , etc.)
Llamada a Procesos Locales
Administrador De Configuración (Registro)
Procesos e Hilos
Memoria Virtual
Monitor de Referencias De Seguridad
Administrador De Energía
Manejador de Objetos
Caché del Sistema de Archivos
Manejador del Sistema de Archivos y Dispositivos
Administrador De Plug and Play
Manejador E/S
Manejador de Gráficos
Introducción • El Kernel y el Executive se encuentran en el proceso ntoskrnl.exe • En el Executive se encuentran los manejadores de archivos, memoria y procesos. • Los manejadores de dispositivos están ubicados en los archivos con extensión *.sys
Introducción • El manejador de ventanas y ventanas se encuentra en el archivo windowsk.sys • El HAL se encuentra en hal.dll • La gran mayoría del código de Windows está en C, algunos componentes están desarrollados en C++
Archivos Principales de Windows Core OS components: • • •
NTOSKRNL.EXE HAL.DLL NTDLL.DLL
Executive y kernel Hardware abstraction layer Funciones de Soporte Interno y sistema de servicio para ejecutar funciones del Executive
Procesos Fundamentales del Sistema: • • • •
SMSS.EXE WINLOGON.EXE SERVICES.EXE LSASS.EXE
Procesos de gestión de servicios Procesos de aunteticación del sistema Servicio de Control de Procesos Local Security Authority Subsystem
Subsistema de ventanas: • • •
CSRSS.EXE* WIN32K.SYS KERNEL32/USER32/GDI32.DLL
Subsistema de Procesos de Windows Componentes USER y GDI Windows subsystem DLLs
Versiones de Windows NT Build# 297 511 807 1057 1381 2195 2600 3790 4051
Version PDC developer release NT 3.1 NT 3.5 NT 3.51 NT 4.0 Windows 2000 (NT 5.0) Windows XP (NT 5.1) Windows Server 2003 (NT 5.2) Longhorn PDC Developer Preview
驴C贸mo saber cual es la versi贸n de Windows actual?
Date Jul 1992 Jul 1993 Sep 1994 May 1995 Jul 1996 Dec 1999 Aug 2001 Mar 2003 Oct 2003
ie nt o
0
N
3. 1
4. W 0 in do W ws in 2 d Se ow 000 rv s X er P 20 03
T
0
1990
1990
v2 v2.2 v2.3 .4 v2 .6
v2 .0
1980 NT
s
v1 .
1980
v1 .
1970 W in do w
VM S
1970
Li nu x
de UN U NI IX X p煤 bl UN ico IX V6
Na ci m
Evoluci贸n de Windows y Linux 2000
2000
Actividad • Buscar diferencias significativas entre los Sistemas Operativos Windows de 32 bits y de 64 bit, y Linux de 32 y 64 bits. • ¿Cuál es la diferencia entre procesos y aplicaciones?
WoW64 • Win32 over Win64 es el subistema de Windows que permite ejecutar aplicaciones de Windows de 32 bits en entornos de 64 bits de manera transparente. • Otras diferencias radican en la longitud de los cålculos y del direccionamiento de memoria del sistema operativo.
WoW64 32-bit EXE, DLLs 32-bit ntdll.dll Wow64cpu.dll Wow64.dll
Wow64win.dll
64-bit ntdll.dll Modo Usuario
Ejecutivo
Win32k.sys Modo Kernel
1.1 Política y filosofía de A.M. • Una de las principales características de una computadora es la capacidad que tienen para almacenar datos e información. • El primero en tener la idea de almacenar un programa en una computadora fue Jonh Von Neumman (participante en la ENIAC). • El utilizó la memoria para almacenar datos y programas.
Memoria • En otro modelo de arquitectura de computadoras conocida como Arquitectura Harvard, existe una memoria especial para datos y otra memoria para programas. Esto hace que los circuitos sean más eficientes pero más costosos a la vez. • La gran mayoría de la computadoras (incluyendo las PC) utilizan la arquitectura Von Neumman.
Concepto de memoria • La memoria principal puede ser considerada como un arreglo lineal de localidades de almacenamiento de un byte de tamaño. Cada localidad de almacenamiento tiene asignada una dirección que la identifica. • La memoria principal es el lugar donde el CPU lee las instrucciones a ejecutar, así como algunos datos a emplear.
Memoria
Memoria • ¿Por qué es importante la memoria? • Programas = Algoritmos + Estructuras de Datos • Estructuras de Datos (pilas, listas, colas, etc.) son memoria.
Conceptos de memoria • Existen dos tipos de memoria primaria: volátil (RAM) y no volátil (ROM). • La memoria volátil es parecida a un pizarrón. Puede perder los datos. • El administrador de memoria se va a encargar de gestionar la memoria RAM. La memoria ROM sólo la utiliza para funciones específicas.
Memoria
Memoria • La memoria se puede ver como un casillero en el cual se almacena información. • La memoria puede ser estática o dinámica dependiendo de cómo se gestione. • La memoria está divida en secciones de código, datos estáticos, Pila y el Heap (monton).
Memoria
Memoria
Conceptos de memoria • Todo sistema operativo tiene un mapa de memoria que indica como están administrada la memoria y que partes se pueden ocupar. • La filosofía del administrador de memoria consiste en optimizar el uso de este recurso, ya que la memoria es uno de los componentes críticos de todo sistema de cómputo.
Mapa de Memoria
Mapa de Memoria • Mapa de Memoria de Windows
Volcado de memoria • Vista del estado de la memoria a travÊs del comando debug.
Memoria • La principal problemática de la memoria principal es que no es persistente. Por este motivo se tienen que implementar estrategias de almacenamiento y recuperación de información. • Las operaciones básicas que se realizan sobre una memoria son dos: lectura (r) y escritura (w).
Memoria • Las operaciones anteriores son a nivel usuario. A nivel sistema se tienen llamadas al sistema como malloc, free, allocate, etc. También debe proporcionar opciones de bloqueo y desbloqueo (protección). • La ley de Parkinson dice: “los programas se expanden hasta llenar la memoria disponible para contenerlos”.
Memoria • No por tener el doble de memoria instalada en un sistema legado, este será el doble de rápido. • La memoria física es utilizado por muchos procesos en lugar de la memoria virtual. • Todo proceso necesita memoria física para poderse ejecutar.
Administrador de memoria • Sirve para tener un control sobre los lugares donde están almacenados los procesos y datos que actualmente se están utilizando. • Las políticas de administración de memoria generalmente son duras, es decir no modificables, pero se pueden configurar algunos parámetros para su mejor uso.
Administrador de Disponibilidad • Tanto el administrador de memoria y el de archivos son ejemplos claros de un administrador de disponibilidad sobre recursos. • La memoria basa sus políticas y mecanismos en base a jerarquía. Por ejemplo se tienen los registros en el microprocesador, la memoria caché y la RAM
Administrador de Disponibilidad
Políticas de asignación • La memoria caché es una memoria de acceso rápido. Es finita, se utiliza en muchos niveles como por ejemplo en microprocesadores, servicios como la Web, etc. • Otro ejemplo de memoria son los buffer o memorias temporales de E/S
Políticas de asignación • Pueden ser locales o globales. Es más difícil obtener una buena administración local. • Las políticas en general son globales mientras los mecanismos son locales
Ejemplos de memoria • Las tendencias actuales sobre el manejo de memoria indican el uso en diversas aplicaciones: • Portapapeles: permite guardar transferirlo a otros programas.
datos
y
• Uso de base de datos en memoria. Algunas versiones de MySQL Lite permiten hacerlo.
Ejemplos de memoria • Las computadoras actuales permiten guardar los datos al apagar una computadora, para tener un mejor desempeño (hibernación, suspensión). • Los punteros permiten desplazarnos por las localidades de memoria. Una variable es una localidad de memoria.
1.2 Mecanismos de asignación • Un mecanismo de asignación determina la cantidad de bloques (particiones) que serán administrados en la memoria. • El esquema básico de asignación consiste en particionar (dividir) la memoria en diferentes partes. • Existen 3 mecanismos de Asignación:
Mecanismos de asignación de memoria • Asignación de una partición. En la memoria se considera la existencia de una sola partición, esto es, se tiene la capacidad de ejecutar un proceso. • La partición es toda la memoria, cuya administración corre por cuenta del usuario, o sea, no hay un sistema operativo. Por ejemplo las consolas de videojuegos de 8bits al introducir un cartucho “ROM” se apodera de toda la máquina.
Mecanismos de Asignaci贸n de Memoria
Mecanismos de asignación de memoria • Asignación de dos particiones. La memoria se divide en 2 bloques. En una partición se carga el Sistema Operativo y en la otra el programa del usuario. • Es el concepto de Sistema Operativo Monousuario. Existen direcciones que un programa no puede acceder.
Mecanismos de Asignaci贸n de Memoria
Mecanismos de asignación de memoria • Asignación de múltiples particiones. La memoria es dividida en varias particiones una para el Sistema Operativo y las demás para los procesos de usuarios u otras funciones especiales del Sistema Operativo. • Este es el concepto teórico de asignación de memoria en los Sistemas Operativos de Multiparticiones y de Multitarea.
Mecanismos de Asignaci贸n de Memoria
1.3 Estrategias de asignación de memoria • Una estrategia de asignación de memoria determina el lugar donde será cargado un nuevo proceso en base a un criterio. Las estrategias de asignación son: • Primer ajuste. El Sistema Operativo asigna el primer bloque de memoria libre con espacio suficiente para satisfacer la información. La búsqueda de este bloque es de manera secuencial.
Estrategias de asignación de memoria • Mejor ajuste. El sistema operativo busca el bloque de memoria que represente el menor desperdicio según el requerimiento. • Peor ajuste. El sistema operativo asigna el bloque mas grande que encuentre.
Estrategias de asignación • Existen otras estrategias de asignación poco implementadas como: • Siguiente ajuste: en este esquema se accede a la siguiente partición de memoria disponible, es semejante al primer ajuste. Es útil para garantizar espacios extras.
Estrategias de Asignación • Sea el siguiente mapa de memoria en donde se cuentan con particiones fijas del tamaño indicado y tres procesos ya cargados en memoria. • Llegan los procesos p4, p5 y p6 de tamaño 100, 75 y 120. ¿cómo queda el mapa de memoria si se aplican las estrategias de mejor, primer, segundo y peor ajuste?
Estrategias de Asignaci贸n
Estrategias de Asignaci贸n
Estrategias de asignación • Listas variables: en este esquema, se propone un forma de mejorar el acceso a las unidades de asignación (partición) disponibles. • Este método mantiene varias listas con diferentes tamaños de particiones. La desventaja radica en actualizar la lista de control de dichas particiones.
Estrategias de Asignaci贸n
Complejidad de los mecanismos y estrategias de asignación • Cualquier método para manejar la disponibilidad de la memoria presenta inconvenientes como: • • • •
Fragmentación Overhead Relocalización de programas Trashing (sacar un programa inmediatamente después de haber sido asignado memoria)
Quiz 1 1. ¿Qué es memoria virtual? 2. ¿Un programa puede ejecutarse memoria virtual exclusivamente? V/F
con
3. ¿Antes del microprocesador 80386, existía memoria virtual? V/F 4. ¿Es necesaria la relocalización de programas que utilizan memoria virtual?
Quiz 1 5. ¿En que consiste la prepaginación? 6. Significado de las siglas LRU 7. ¿Por qué el algoritmo de reemplazo MIN es imposible de implantar? 8. ¿Cómo realiza Windows y Linux la memoria virtual: Prepaginación o paginación bajo demanda?
1.4 Concepto de Memoria virtual • Es un método mediante el cual, un sistema operativo simula tener mas memoria principal que la que existe físicamente. Para implementar la memoria virtual se utiliza un medio de almacenamiento secundario de alta velocidad de acceso, generalmente en disco duro de la maquina. • Se utiliza la paginación como método de administración de memoria básica y algún mecanismo de intercambio.
Memoria virtual • En las tablas de paginas se agrega un campo mas a cada entrada: el bit valido/invalido (p). • En los procesadores 80386 y posteriores, que indica si la página a la que se está haciendo referencia en un momento dado se encuentra en la memoria principal (válido) o en el disco duro (inválido). Cuando el sistema operativo haga referencia a una página inválida, deberá ir al disco duro y cargarla a memoria principal para continuar el procesamiento.
Virtual Memory • Espacio de Direcciones de 32-bit (4 GB) – 2 GB espacio de usuarios – 2 GB sistema operativo
• Espacio de Direcciones de 64-bit – 7192 GB espacio de usuario (Itanium) – 8192 GB espacione de usuario (x64) – ~6000 GB sistema operativo
Espacio de Direcciones De 32-bit Único por proceso
2 GB Espacio de Procesos de Usuario Systemwide
2 GB Sistema Kernel/HAL drivers Sistema de cache
1.5 Mecanismos de localización • Los mecanismos de localización hacen referencia a la forma en como se puede ubicar un programa en memoria. • Los programas se localizan en base a un mecanismo y estrategia de asignación. • La relocalización de un programa es más complicado ya que implica volver asignar un nuevo programa en memoria cuidando los demás espacios.
1.6 Implantación de mecanismos de memoria virtual • Existen 2 métodos para cargar programas en memoria: • Demanda de página: consiste en iniciar la ejecución de los procesos sin páginas cargadas, estas se irán cargando conforme el proceso las demande. • Prepaginación: consiste en que el sistema operativo predice cuales páginas se ocuparán durante la ejecución de un proceso.
Algoritmos de descarga (Reemplazo) • Se utiliza para determinar cuales páginas serán descargadas hacia el disco duro cuando se quiera cargar nuevas paginas y no haya memoria libre. Existen 3 algoritmos básicos: • MIN: Consiste en descargar la o las páginas que no se necesitarán en el periodo de tiempo más largo en el futuro. Esta implementación es imposible.
Algoritmos de descarga (Reemplazo) • FIFO: Consiste en tener un contador de tiempo para cada pagina para descargar las mas viejas. • LRU (Least Recently Used): Consiste en descargar las últimas páginas usadas (se usa el pasado para predecir el futuro). Lo utiliza Windows.
Algoritmos de Descarga (Reemplazo)
Algoritmos de Descarga (Reemplazo) • Sea el siguiente mapa de memorias con tres procesos activos y tres procesos nuevos, p4, p5 y p6 de tamaño 100, 75 y 120. • Como no existe memoria disponible se necesita sacar procesos de la memoria. Se asume que el primer proceso p1 es el más antiguo y que se tiene una tabla de utilización de las particiones de memoria.
Algoritmos de Descarga (Reemplazo)
Tarea • Administración de memoria en los siguientes sistemas operativos: • • • •
Symbian Windows CE PalmOS RIMOS (Blackberry)
Actividad • Realizar un simulador de memoria virtual. El cual deberá permitir crear procesos de un tamaño indicado planificados. • Lo primero que se realiza es la configuración del administrador de memoria. Tamaño de la memoria y tamaño de los segmentos. Se deberá realizar una carga de procesos estáticos para obtener un mapa de memoria.
Actividad • Se deberá indicar el tipo de estrategia de asignación de memoria, si se utiliza memoria virtual o no (se utilizará FIFO como algoritmo de descarga de páginas). • El usuario deberá introducir los procesos que quieren que se ejecuten y el sistema devolverá la asignación de los bloques de memoria respectivos.
Quiz 2 1. ¿Qué diferencia fundamental existe entre la segmentación y la paginación? 2. ¿Cuál es la forma de direccionar un valor a través de la segmentación del micro x86? 3. ¿Cuál es el límite de memoria que puede direccionar el micro 8086 y cual es el límite que puede redireccionar DOS?
Quiz 2
4. ¿Cuánta memoria puede redireccionar el micro 80286? 5. ¿El micro 80386 puede redireccionar mas de 1 Gb de memoria RAM? V/F 6. Esquematiza el mapa de memoria de Windows 95 7. Cómo se direcciona una localidad de memoria a través de paginación.
Quiz 2 8. ¿En qué consiste el swap? 9. ¿Cuáles son las dos formas de implantar la tabla de paginación? 10.¿Cuál es la forma de las direcciones lógicas de memoria cuando se utiliza el modelo de segmentación-paginación?
1.6.1 Base límite • El registro base y el registro límite pueden servir para localizar direcciones de memoria. • El registro base sirve como referencia para ubicar una dirección en particular y el registro límite ayuda a determinar si el desplazamiento de una dirección está por encima del área asignada. Este mecanismo sirve de protección para la memoria.
1.6.2 Segmentación • Un método de asignación de memoria es la manera mediante la cual el Sistema Operativo lleva el control de la memoria tratando de que sea lo más eficiente posible. Los métodos de asignación más comunes son: • Segmentación: Este método consiste en la asignación de bloques de memoria de tamaño variable, llamados segmentos. El tamaño de cada segmento será el requerido según la petición, por ejemplo el tamaño del proceso a cargar.
Métodos de asignación de memoria • El tamaño máximo para un segmento estará determinado por la capacidad de direccionamiento del hardware de la computadora, esto es, de cuantos bits se dispone para almacenar una dirección. • El acceso a cada elemento individual en la memoria se hace mediante una dirección de memoria que se integra por dos elementos: una dirección de segmento y una de desplazamiento.
Segmentación • La combinación (suma) de la dirección de segmento y la de desplazamiento generan la dirección de memoria absoluta a acceder. • Dado que en cada proceso se manejan direcciones lógicas, el sistema operativo debe obtener una dirección lógica. El sistema operativo debe también asegurarse de que cada dirección lógica esté dentro del rango de direcciones empleado por el proceso.
Direccionamiento DOS • MS-DOS (Segmentación) • 8086 (16 Bits) 220=1,048,576 = 1MB. • 80286 (16 Bits) Puede funcionar de alguno de los 2 modos: • Modo real = 8086 • Modo protegido: – Para cada programa se implementa una tabla de descriptores.
Direccionamiento DOS • Modo protegido – Capacidad de direccionamiento. 224 = 16,777,216 = 16MB
• Windows (Segmentación o Paginación) • 80386 (32 Bits), 486, Pentium – Capacidad de direccionamiento. 4,294,967,296 = 4GB
232
=
Segmentación en DOS • Si un programa trata de asignar un bloque de memoria de cierto tamaño, DOS busca un bloque apropiado, si lo encuentra, se modifica para que pertenezca al proceso solicitado. • Si el bloque es demasiado grande, DOS divide en un bloque asignado y un nuevo bloque libre.
Segmentación DOS • Cuando un programa libera un bloque de memoria, MS-DOS lo modifica para indicar que está disponible. • Cuando un programa reduce la cantidad de memoria que necesita, MS-DOS crea un nuevo bloque de control de memoria para la memoria liberada.
Tipos de segmentos • Segmentos de datos: sólo se puede leer y escribir, pero no se puede ejecutar código de programa. • Segmento de código: se puede ejecutar código pero no puede leer ni escribir. • Segmento del sistema: describe diferentes tipos de segmentos que todos ellos sirven para la gestión del modo protegido.
1.6.3 Paginación • Consiste en considerar el espacio de direcciones lógicas de cada proceso como un conjunto de bloques de tamaño consistente llamados paginas. Cada dirección lógica manejada para un proceso estará conformada por un par de valores [pagina: desplazamiento].
Implementación de mecanismos de paginación • La tabla de paginas se implementa completamente en hardware (ventaja: se obtiene una alta velocidad de acceso a memoria. Desventaja: resulta problemática cuando la tabla de páginas debe ser grande). • Implementar la tabla de páginas en la memoria principal (ventaja: la tabla de paginas puede crecer según se requiera. Desventaja: la velocidad de acceder a memoria es relativamente baja, dado que cada referencia a memoria involucra 2 accesos.
Swap • El swap es la forma en como se intercambia una partición de memoria por otra. Generalmente se utiliza en técnicas basadas en paginación. • Se ocupa de una administración adecuada del sistema de archivos para permitir paginación.
Swap โ ข Un ejemplo claro de intercambio es la famosa funciรณn de intercambio int swap(int a, int b) { int aux = a; a = b; b = aux; }
Esquema de paginación Windows • Windows '95 implementa memoria virtual mediante un esquema paginado, tomando como base la arquitectura de direccionamiento del procesador Intel 80386 y posteriores. • El algoritmo de carga/descarga de páginas empleado es el LRU (Least Recently Used) mediante el cual se descargan a disco las páginas menos recientemente usadas.
Esquema de paginación Windows • En el disco se genera un archivo de intercambio que contendrá las paginas que se vayan descargando. • Cada página correspondiente a una aplicación tiene asignado un manejador (Handler) a un descriptor/paginador (PD) almacenado en ella.
Esquema de paginación Windows • Un PD contiene las direcciones de las rutinas utilizadas para la transferencia de páginas entre la memoria física y el disco. • Cuando se requiera cargar o descargar una página, el paginador hará una llamada a la función apropiada dependiendo del estado que la página tenga en ese momento. Los posibles estados de una página son los siguientes.
Esquema de paginación de Windows • Virgen: significa que el contenido de la página no se ha modificado durante su tiempo de vida. Por ejemplo, las paginas de código EXE por lo general permanecen vírgenes. • Corruptas: significa que el contenido de la página se ha modificado al menos una vez desde que se creó. Por ejemplo las páginas de datos.
Esquema de paginación de Windows • Limpia: significa que el contenido de la página corrupta no fue modificado desde la última vez que se cargó. • Sucia: el contenido de una página corrupta fue modificado desde la última vez que se cargó (por lo que será necesario "guardarlo" nuevamente en el archivo de intercambio).
Esquema de paginación de Windows • Los nombres y tarea que realizará cada una de las funciones PD son: • • • • • •
Pd_virgin: cargar pagina virgen. Pd_taintedin: cargar pagina corrupta. Pd_cleanout: descargar pagina limpia. Pd_dirtyout: descargar pagina sucia. Pd_virginfree: liberar pagina virgen. Pd_taintedfree: liberar pagina corrupta.
1.6.4 Segmentación Paginada • Algunos sistemas operativos como Multics y la Serie 370 de IBM combinan las técnicas de segmentación y paginación para una mejora de los procesos. • El proceso es el siguiente: • Se hace la solicitud de acceso por medio de una dirección "V" la cual contiene los campos Segmento, Página y Desplazamiento.
Segmentación/Paginación • Con el campo Segmento, lo que se trata es de acceder a una Tabla de segmentos, cada campo de dicha tabla apunta directamente a la tabla de páginas asignada para ese segmento conteniendo una dirección que será sumada a una dirección en la Tabla Asociativa para por fin formar una dirección real con el desplazamiento de "V".
Administración de Memoria en SO Móviles • Symbian y algunos otros sistemas operativos empotrados manejan el concepto de “execute-in-place” para indicar que los programas no tienen que ser relocalizados ya que se pueden ejecutar de donde se encuentren, ¿cómo es posible esto?
Administración de Memoria en SO Móviles • Los sistemas operativos móviles en muchas ocasiones tienen limitación en cuanto al tamaño de los procesos. • Generalmente los sistemas operativos en dispositivos móviles son multitarea (aunque sólo hay un proceso a la vez) y de tiempo real (deben responder a eventos de manera inmediata, por ejemplo: recibir una llamada).
Administración de Memoria en SO Móviles • La mayoría de la memoria generalmente se encuentra en áreas de memoria no persistente, pero poco a poco esta tendencia está cambiando. • La gran mayoría de los kernels son del tipo nanokernel, en donde en el espacio del usuario corren diversos microkernels encargados de diversas funciones.
Administración de Memoria en SO Móviles • Los sistemas operativos para móviles generalmente no cuentan con memoria virtual por los altos costos de implementarla. • Generalmente los microprocesadores no tienen MMU (Memory Managment Unit) pero si la tienen, los sistemas operativos tratarán de utilizarla. Por lo que SO como Symbian y Windows CE pueden utilizar paginación.
Administración de Memoria en SO Móviles • La mayoría de los SO móviles permiten el uso de DMA (Direct Memory Acces, Acceso Directo a Memoria). • El sistema de memoria secundaria (Sistema de Archivos) está muy ligado al de memoria principal llegándose a confundir.
1.7 Mapa de Memoria • El mapa de memoria es la forma en como está distribuida las particiones de memoria de un sistema operativo. • El mapa de memoria ubica áreas de asignación a semejanza de un plano en donde se tienen países, estados, etc.
Mapa de memoria • El mapa de memoria va a depender del sistema operativo y de la arquitectura de hardware del sistema de cómputo. • El mapa de memoria puede ser totalmente independiente entre diferentes sistemas operativos que corren sobre la misma arquitectura.
1.8 Memoria expandida • Es un tipo especial de memoria paginada en la cual se puede obtener acceso a más memoria que la que el podía direccionar (640 KB), por lo que se accedería el rango de 640 KB a 1 MB que está orientado a drivers de controladores en memoria ROM. • Desde el 80386 los micros pueden utilizar memoria expandida sin ningún problema.
1.9 Memoria extendida • La memoria extendida es aquella que sobre pasa 1 MB de memoria RAM y que es accesible en procesadores 80286 y superiores. • Este tipo de memoria DOS no la maneja de manera nativa. Windows la maneja sin necesidad de algún controlador especial.
Tipos de Datos en Windows • BOOL lógico)
(objeto de 32 bits para almacenar un solo valor
• HANDLE • DWORD (entero no señalado de 32 bits) • LPSECURITY_ATTRIBUTE • LPTSTR
(definido como TCHAR *)
• LPCTSTR (definido como const TCHAR *) (Unicode: TCHAR puede ser char de 1 byte ó 2-bytes wchar_t)
Referencias
• Tutorial de Sistemas Operativos 2. Instituto Tecnológico de la Paz. http://sistemas.itlp.edu.mx/tutoriales/sistemasop [agosto 2007] • Tanebaum, A., Woodhull, A. (1997) Sistemas Operativos. Diseño e Implementación. México, Prentice Hall. ISBN: 970-17-0165-8.
Referencias • Windows Operating System Internals - by David A. Solomon and Mark E. Russinovich with Andreas Polze
多Preguntas?