jueves, 19 de octubre de 2017

05 - Memoria virtual. Técnicas de gestión

Las necesidades de manejar memoria crecen dado que el tamaño de la memoria real estaba limitado, los programas eran cada vez más grandes y los procesadores tenían mayor potencia.

Así surge la Memoria virtual, capaz de manejar mas espacio en memoria que la memoria principal, valiéndose tanto de la memoria principal como de una cantidad determinada de almacenamiento secundario.

Esta estrategia permite utilizar el disco como si fuera RAM, así, cuando un programa es más grande que el tamaño físico de la RAM, lo que se hace es pasar a disco las porciones de RAM que no se estén utilizando en un momento determinado, dejando solo en memoria las partes del programa que se estén ejecutando. Los programas no se dan cuenta de todo lo que esta ocurriendo por debajo, sin embargo como la velocidad de acceso a disco es miles de veces mas lenta que la de la RAM, a la hora de devolver porciones del programa a memoria desde el disco, el sistema puede comportarse de manera más lenta (sobre todo cuando se cargan muchos procesos de forma simultánea).

La clave del concepto de memoria virtual está en la disociación entre direcciones virtuales a las que hace referencia un programa y direcciones reales que son las disponibles en memoria real.

El funcionamiento consiste en lo siguiente:
  • El SO intercambia en memoria principal programas o procesos enteros en particiones de memoria y al mismo tiempo maneja segmentos y páginas, entre memoria real y memoria secundaria.
  • Los procesos hacen referencia a direcciones virtuales pero éstas deben ejecutarse en la memoria, así se produce un proceso de traducción entre direcciones virtuales y reales, mientras el proceso está en ejecución.
  • El proceso de traducción debe ser suficientemente rápido para no degradar el sistema. 

Los métodos más comunes de implementación de memoria virtual son:
  • Técnicas de Paginación.
  • Técnicas de Segmentación.
  • Una combinación de ambas técnicas (Paginación Segmentada o Segmentación Paginada). 

1- Paginación

Técnica que consiste en dividir la memoria en zonas iguales llamadas marcos de página. A su vez los los procesos (un proceso es un programa en ejecución) también se dividen en partes del mismo tamaño, denominadas páginas. El SO se encarga de asignar los marcos de página necesarios a cada proceso y mantiene una estructura llamada tabla de páginas que indica en que marco está cada página y también una lista de marcos libres.
La asignación de los marcos de página a las páginas no tiene que ser consecutiva y un proceso puede estar ubicado en marcos no contiguos.

Uno de los principales inconvenientes de esta técnica es la Fragmentación Interna.

Esquema de paginación de memoria

Nota: El tamaño de los marcos de página se diseña mediante hardware


2- Segmentación

A diferencia de la paginación, en la segmentación la memoria se divide en zonas de tamaño variable denominadas segmentos. El SO mantiene una tabla de segmentos para cada proceso indicando la dirección de carga y la longitud de cada segmento. La asignación de segmentos tampoco tiene que ser contigua.

Uno de los principales inconvenientes de esta técnica es la Fragmentación Externa.



Fragmentación

La fragmentación de la memoria es la memoria que queda desperdiciada al usar los métodos de gestión de memoria. La hay de dos tipos: Externa e Interna


Fragmentación externa e interna
Externa

Existe espacio total de memoria para satisfacer un requerimiento, pero no es contigua. La fragmentación externa se puede reducir mediante la compactación para colocar toda la memoria libre en un solo gran bloque, pero solo es posible si la relocalización es dinámica y en tiempo de ejecución.

Interna

El hecho de asignar memoria en bloques de tamaño fijo y predefinido se traduce en que la memoria asignada puede ser ligeramente mayor que la que realmente se necesita, en cuyo caso se desperdicia cierta cantidad. Se podría evitar permitiendo la asignación exacta de memoria que necesite cada proceso de forma dinámica.

Observación

Una estrategia común para reducir el impacto de la fragmentación es separar las zonas del sistema de archivos que experimenten muchas mas lecturas y escrituras de otras zonas más volátiles donde se crean y borran continuamente archivos. Por ejemplo el SO se compone de carpetas estáticas que se modifican con mucha menor frecuencia que los Perfiles de los usuarios donde se suele estar creando y destruyendo información continuamente. Al separar ambas zonas en particiones independientes logramos que el desfragmentador trabaje de forma mucho más eficiente.

lunes, 9 de octubre de 2017

04 - BIOS UEFI

UEFI (Unified Extensible Firmware Interface) es una interfaz estándar impulsada por la mayoría de fabricantes de PC y diseñada para reemplazar la histórica BIOS de IBM. Es mucho mas amigable que la BIOS tradicional, soporta un entorno gráfico de mayor calidad, multilenguaje, pre-carga de aplicaciones, gestión LAN, etc.
No se limita a arquitecturas de 32 bits sino que también puede manejar arquitecturas de 64 bit, permitiendo que las aplicaciones en pre-boot puedan direccionar 64 bits.

Ejemplo de BIOS UEFI

En general ofrece varias ventajas
  • Inicios más rápidos
  • Compatible con discos de más de 2 TB
  • Particiones ilimitadas
  • Aumento de velocidades de transferencia sobre todo de múltiples archivos
  • Compatible con controladores de dispositivos modernos (firmware 64 bits)
  • SecureBoot (protección del inicio frente a bootkits)


Nota: Un bootkit es un programa malicioso que infecta el MBR. Es difícil de detectar porque su código esta fuera del sistema de archivos del SO. Además algunos bootkits esconden al MBR infectado devolviendo un MBR limpio cuando se intenta leer esta zona. El objetivo final es infectar el Sistema dirigiendo su ataque sobre el o sobre ciertas aplicaciones con fines variados, malware, agujeros de seguridad, ... 

Instalaciones UEFI. Consideraciones

  1. En Bios UEFI solo podemos instalar SO de 64 bits.
  2. No se puede instalar un SO desde un Pendrive en modo UEFI, excepto que la BIOS permita arranque USB en modo UEFI y casi ninguna lo hace.
  3. El disco donde instalemos tiene que ser GPT (no MBR).
  4. Requiere una partición adicional para el Boot.


La mayor parte de las BIOS nuevas tienen los dos modos:
  • Legacy Mode (Bios normal)
  • UEFI Mode

Nota: Para poder instalar Windows XP hay que activar Legacy Mode, deshabilitar Secure Boot y el particionado de disco debe ser MBR. Por contra para instalar Windows 8 en modo UEFI con Secure Boot activado se utiliza particionado GPT y tanto la BIOS como el disco o medio de instalación deberán estar configurados para UEFI.


Secure Boot


Se trata de un firmware propio de UEFI,  embebido en la máquina, que exige que el SO y sus drivers estén firmados digitalmente  y que dicha firma concuerde con el firmware embebido. Microsoft implementa en la propia arquitectura de su nuevo Windows 8, el arranque seguro, obligando a que el SO y sus drivers estén firmados digitalmente. Además para que los equipos comercializados con Windows 8 puedan tener la pegatina oficial tienen que implementar arranque seguro UEFI.
    Según Microsoft en la configuración del firmware se incluye una opción para que sea el usuario el que decida desactivar esta opción, pero si los fabricantes se sienten presionados por el gigante sería muy fácil dejar de incluir esa opción con tal de poder seguir vendiendo máquinas con la pegatina oficial de Microsoft y las repercusiones de esto podrían ser bastante nefastas para el usuario final, que con la excusa de la seguridad podría tener serios problemas para bootear un USB o un DVD con un SO no certificado, por poner un ejemplo Windows 7 o las distribuciones Linux.
  • ¿Estaría garantizado poder instalar el SO que el usuario decidiese?
  • ¿Qué ocurriría con los equipos a medio plazo?
  • ¿Quién sería la autoridad de certificación central para firmar otros SO?
  • ¿El resto de SO tendrían que negociar con Microsoft?

Opción Secure Boot

GPT vs. MBR


El sistema GPT se creó para UEFI con la idea de modernizar el proceso de arranque.
  • GPT puede manejar discos mayores de 2TB.
  • Permite una cantidad teórica ilimitada de particiones.
  • Ofrece muchas ventajas para servidores que usan sistemas avanzados que requieren grandes cantidades de espacio.
El problema es que un disco duro no puede tener particiones de ambos tipos y la solución pasa por eliminar la partición GPT, sin embargo el administrador de discos o el instalador de Windows no las eliminan y habrá que recurrir a la consola de Windows para su borrado o bien a través de utilidades externas.

SATA (IDE/AHCI)


Los discos duros SATA se pueden configurar en modo IDE o en modo AHCI. El primero permite compatibilidad con discos duros antiguos IDE mientras que el modo AHCI mejora el rendimiento de lectura y escritura y permite conexión en caliente. AHCI no es compatible con SO antiguos. Se puede cambiar la configuración de un disco SATA desde la BIOS.

Nota: Se suele poner el SATA en modo AHCI por ejemplo con SSD


Para finalizar veamos algunos escenarios:


1) Intento instalar Windows7 64b y la instalación lanza un mensaje diciendo que el sistema no puede instalarse porque el disco está en GPT y el hardware posiblemente no sea capaz de arrancarlo

En la ventana de seleccionar discos pulsa Shift+F10 para forzar la consola del sistema, desde alli:
  • diskpart
  • select disk 0
  • clean
  • exit
Esto elimina cualquier partición y contenido del disco. Salimos de la consola y actualizamos para continuar la instalación.

2) Comienza la instalación de Windows 7 pero al terminar aparece un mensaje que indica que Windows no puede actualizar la configuración de arranque

Las BIOS UEFI protegen el arranque o inicio del sistema impidiendo que se puedan hacer modificaciones. Es necesario entrar en la BIOS y quitar la protección de Seguridad de Inicio del sistema (desactivar el arranque seguro)

3) Quiero instalar Windows 7 64b en modo UEFI para mejorar las prestaciones ya que dispongo también de un disco duro grande y quiero usar GPT

Antes de nada si mi equipo viene con Windows 8 tengo que saber si existen controladores disponibles para Windows 7, para ello debería consultar la web del fabricante. Si no es el caso no deberíamos hacer downgrade al sistema porque algunos dispositivos podrían no funcionar de forma correcta. Si disponemos de drivers adecuados podemos proceder:

  • Desactivar Secure Boot
  • Comprobar que la BIOS está en modo UEFI
  • Arrancar desde el lector en modo UEFI. Es necesario meter el Dvd (tiene que ser una imagen original de Microsoft, no modificaciones piratas), apagar la máquina con el Dvd introducido en el lector y encenderla de nuevo. Al encenderlo debería quedar claro que el lector esta arrancando en modo UEFI o dar la posibilidad al usuario de hacerlo.
Nota: Existe una forma de saber con seguridad si estamos arrancando en modo UEFI y consiste en que en la pantalla de bienvenida salgamos a la consola con Shift+F10 y ejecutemos notepad Windows\Panther\setupact.log para abrir un fichero que nos informará de si el entorno de arranque está en modo BIOS o UEFI.
  • Las BIOS UEFI necesitan que el disco donde vamos a instalar sea GPT y además instalan una partición de arranque UEFI, por eso el disco tiene que estar vacío. Ya hemos visto este paso en el escenario 1.
  • Desde la misma pantalla de selección de disco pulsamos en actualizar y SIN seleccionar NADA (no seleccionamos el disco) continuamos con la instalación.
  • Se creará la partición UEFI y en el resto se instalará el SO. Más adelante podremos crear otras particiones desde el administrador de discos reduciendo el tamaño de la partición del sistema.

martes, 26 de septiembre de 2017

03 - Particionado GPT

GPT (GUID Partition Table), es el nuevo estándar que está sustituyendo a MBR y que está asociado con los nuevos sistemas UEFI. Su nombre viene de que a cada partición se le asocia un único identificador global, GUID. A día de hoy, GPT no tiene ningún límite más allá que los que establezcan los propios SO, tanto en tamaño como en número de particiones (por ejemplo, Windows tiene un límite de 128 particiones).


Kbolino de Wikipedia

Estructura

  • Cabecera de tabla de particionesDefine los bloques de disco que pueden ser utilizados por el usuario y el número y tamaño de las entradas de partición que conforman la tabla de particiones. Contiene el GUID del disco y registra su propio tamaño y localización (siempre LBA 1), y el tamaño y la localización de la cabecera y tabla de la GPT secundarias (siempre en el último sector del disco).
  • Entradas de partición: Contienen tipo, GUID de partición, comienzo y final de partición, nombre y otros atributos.
  • MBR heredado: Se ha mantenido un MBR al principio del disco para evitar que las herramientas antiguas de manejo de discos basados en MBR, que no reconocen GPT, se confundan y puedan estropear el disco. Este MBR de seguridad especifica, contiene una única entrada de partición que abarca toda la unidad GPT.
Observaciones
  • Mientas que en MBR la tabla de particiones se almacena en el primer sector del disco, con los consiguientes problemas en caso de que dicho sector se pierda, corrompa o sobrescriba, GPT crea múltiples copias redundantes a lo largo de todo el disco de manera que, en caso de fallo, problema o error, la tabla de particiones se recupera automáticamente desde cualquiera de dichas copias.
  • La herramienta de particionado debe ser compatible con este nuevo formato, de lo contrario, se activará una especie de protección para evitar que la herramienta incompatible confunda la tabla de particiones GPT con una MBR “sin formato” y se puedan sobrescribir las particiones.
  • Windows solo puede arrancar desde discos GPT en sus versiones de 64 bits desde Vista en adelante. Los sistemas de 32 bits, aunque no pueden arrancar desde estos discos, sí que son capaces de leer y escribir en ellos sin problemas.
  • Las versiones modernas de Linux también son compatibles con este tipo de discos, e incluso Apple ha empezado a utilizar GPT como tabla de particiones por defecto en lugar de su propia APT (Apple Partition Table).

Información:  http://www.softzone.es/