lunes, 19 de octubre de 2020

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 principal no se particiona. Lo que se hace es dividir los procesos 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.



viernes, 16 de octubre de 2020

4 - Configuración de la red en Vmware

Vmware Workstation dispone de 20 Switch virtuales que sirven para conectar máquinas virtuales. Los Switch 0, 1 y 8 tienen un comportamiento especial mientras que el resto son independientes es decir que cualquier máquina virtual que conectemos a ellos permanecerá completamente aislada, sin conexión con la máquina anfitriona, ni con otras máquinas externas.

Switch VMnet0 - BRIDGE


El Switch virtual 0 (VMnet0) hace la función de Puente entre la tarjeta de la maquina virtual y la tarjeta de la maquina física, por lo tanto nuestra maquina virtual podría conectarse con otras maquinas de la red y salir a Internet sin problema. Tanto la tarjeta de la máquina virtual como la tarjeta de la máquina física tendrán direcciones IP diferentes del mismo rango y visibles desde el exterior.


Modo BRIDGE


Switch VMnet8 - NAT


El Switch virtual 8 (VMnet8) crea un router virtual (NAT device) que de forma automática se encargará de que las direcciones IP de todas las tarjetas de red de las MV configuradas en NAT sean filtradas y traducidas para salir a través de la tarjeta física de la máquina real.

Bajo este sistema, las MV NAT pueden salir a Internet, sin embargo los ordenadores de la red externa (red del anfitrión) no podrán establecer conexión por defecto con las MV.

Este modo dispone de manera opcional de un servicio virtual propio DHCP que atenderá a las MV conectadas a través de NAT. Solo puede haber un interfaz virtual en modo NAT.


Modo NAT


Switch VMnet1 - Host Only


En este modo, (VMnet1) se crea una conexión entre entre las MV y la máquina física. El adaptador de las MV y el adaptador del anfitrión se encuentran conectados a una red privada y aislada del exterior. 

Las MV tienen conexión con el host pero no podrán salir a Internet. Este modo también dispone de un servicio virtual propio DHCP.

Modo HOST ONLY

Lan Segment


Esta configuración crea un segmento de red virtual. Cualquier máquina virtual que cuente con el mismo segmento de red que otra, podrá comunicarse con ella sin problemas.

Por ejemplo, si configuramos 3 máquinas virtuales en el mismo segmento de red dichas 3 máquinas estarán montadas en su propia red local virtual y tendrán comunicación directa entre ellas por red, pero será imposible que se comuniquen con cualquier otra máquina, ni con el host, ni con Internet.

Los segmentos de red los podemos crear desde el mismo botón “LAN Segments” que vemos en la pantalla de configuración de la red. Podemos crear tantos segmentos como queramos, y no importa el nombre que les pongamos.


Custom

Desde esta opción podemos indicar directamente a VMware que utilice una red virtual que hayamos creado anteriormente en el editor de redes de VMware. Si escogemos una red virtual no definida estaríamos creando un Lan segment.

jueves, 1 de octubre de 2020

03 - Particiones Windows 10 - BIOS/UEFI

Se puede realizar una instalación de Windows en modo legacy  BIOS para que sea compatible con el viejo particionado MBR o en modo UEFI para utilizar el nuevo particionado GPT. La instalación por defecto en el caso de que no haya particiones creadas (disco limpio), crea un esquema de particiones diferente en cada caso.


Veamos diferencias entre ambos modos a la hora de instalar Windows 10 Edu 1903 en un disco de 60GB y dejando que el SO decida por defecto. Los resultados los muestro con Gparted que tira información más detallada.

BIOS




Se crean dos particiones


Partición Reservada para el sistema de 579MB y Partición para el SO/Datos con todo el espacio restante. Ambas tienen formato ntfs


¿Para que sirve la reservada en MBR?


Contiene los ficheros de arranque de Windows (bootmgr, \Boot, etc.). A partir de W7 se pensó que era buena idea crear una partición extra para el arranque. La razón principal fue por necesidades de Bitlocker una herramienta nativa de cifrado de Windows.


¿Se puede prescindir de esta partición?


Antes de instalar el SO y si no se tiene pensado usar Bitlocker es posible evitar su creación. Después de instalar el SO se puede pero no es muy recomendable


¿Cómo evitar la creación de la reservada durante la instalación?


Desde el propio gestor gráfico de particiones, elimina (si existen) todas las particiones. Crea una nueva partición. Te saldrá el mensaje y se creará la partición reservada junto a la principal.





Sólo hay que eliminar la principal y extender la partición reservada para que ocupe el espacio que se desee. Al finalizar la instalación del SO podrás comprobar la existencia de una partición que contendrá los ficheros de arranque y el resto de ficheros del sistema.


UEFI




Si vamos a instalar Windows en modo UEFI, el SO debe ser de 64 bits, la unidad de disco que alberga la partición de Windows tiene que tener formato GPT. Si hay otras unidades de disco pueden tener formato MBR o GPT.


Se crean cuatro particiones
  • Recuperación (529MB - ntfs): Contiene herramientas del entorno de recuperación.
  • Sistema EFI (100MB - fat32): Aloja el cargador. El SO administra esta partición y arranca desde ella. No debe contener nada más.
  • Reservada de Microsoft (16MB - formato desconocido). Se añade en unidades GPT para ayudar con la administración de particiones. No puede almacenar datos.
  • Básica (mínimo 20GB - ntfs). Contiene SO/Datos.

En UEFI no se puede evitar la creación de ninguna de las particiones como en el caso de MBR. Se puede eliminar la partición de recuperación pero no es recomendable. Para borrar una partición protegida y oculta del estilo de la reservada de 16 MB se hace desde diskpart con delete partition override

Separar SO y Datos


Independientemente del modo de instalación (BIOS o UEFI), en SO Windows o Linux, es muy recomendable separar la partición que alberga el SO/Datos en dos, una para el Sistema Operativo y otra para los datos de usuario.

La partición que alberga el SO suele ser la que más daños sufre debido a diversos problemas como ataques, apagones, corrupción de información, actualizaciones entre otros muchos. En una situación difícil, podríamos tener que reinstalar el SO desde el principio y si los datos están junto al SO es posible que los pongamos en riesgo o que tengamos que sacarlos antes de la instalación, con el trabajo que eso conlleva.

Si almacenamos los datos en una partición aparte, solo tendríamos que arreglar la partición del SO sin poner en peligro los datos, y sin trabajo innecesario. Si además, esa partición esta en un segundo disco, todavía tendríamos un mayor nivel de seguridad ya que aunque se rompiera definitivamente el disco del SO, el de los Datos podría conservarse intacto. 

Hoy en día con las unidades de estado sólido SSD, se hace casi obligatorio almacenar los datos fuera del SSD, que normalmente alberga el SO, porque además, estas unidades en muchas situaciones no permiten recuperar los datos tan fácilmente como los discos duros.

Como veremos en una entrada posterior, además de estas razones también se reduce el impacto de la fragmentación beneficiando al rendimiento del disco.

Instalaciones UEFI

En primer lugar volvemos a recordad que instalar el SO operativo en modo UEFI implica elegir esquema de particionado GPT. También es recomendable que el disco se encuentre limpio sin particiones antes de proceder (Shift + F10 y Diskpart pueden ayudar con esto)

Además el dispositivo de arranque desde donde vamos a instalar el sistema tiene que arrancar en modo UEFI. Si es un USB, hay que montar la iso de Windows 10 con alguna herramienta tipo Rufus en modo UEFI.



Si el SO no está certificado (firmado por Microsoft), habría que desactivar el arranque seguro en la UEFI porque la instalación fallaría a la hora de actualizar la configuración de arranque. Si el SO no esta preparado para instalación UEFI además habrá que seleccionar en la UEFI el modo CSM que permite arranques compatibles con BIOS y montar la iso con Rufus de la forma que corresponde.



Arranque seguro (Secure Boot)

Es 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, con la excusa de evitar la carga de malware o aplicaciones no fiables,  lo implementa en la propia arquitectura del SO a partir de W8, obligando a que el SO y sus drivers estén firmados digitalmente. Además para que los equipos comercializados con W8 puedan tener la pegatina oficial tienen que implementar arranque seguro UEFI.

El arranque seguro debe ser posible desactivarlo ya que muchos sistemas operativos no lo implementan y por lo tanto no podrían instalarse. La mayoría de fabricantes permiten la posibilidad de desactivarlo en UEFI pero ya no es obligatorio y algunos no lo hacen generando malestar.

Actualmente gran parte de Linux 64 bit modernos ya entregan sus SO firmados para poder utilizar arranque seguro.



https://www.xataka.com/basics/que-secure-boot-uefi-como-puedes-desactivarlo

Ejercicio

Practica inicios de instalación de Windows en ambos modos para ver los distintos esquemas que se crean por defecto. Comprueba que BIOS permite prescindir de la reservada. Verifica que con UEFI se vuelven a generar reservada y EFI aunque las elimines, pero si se puede prescindir de la de recuperación. Aprende a separar partición de datos de la del sistema. No es necesario terminar la instalación, puedes empezarla, reiniciar la máquina y ver que particiones se han creado. Puedes usar particionado Gráfico o Diskpart (Shift + F10).