edición general
Fortuna

Fortuna

En menéame desde diciembre de 2020

8,35 Karma
6.742 Ranking
13 Enviadas
4 Publicadas
628 Comentarios
0 Notas
  1. #7 Realmente no. Pero bueno. Eso es lo que se ha dicho en los mentideros desde los 90, y nada de lo que se diga hoy en día lo va a cambiar la creencia popular.

    Pero lo cierto es que, como han dicho algunos ingenieros de MS desde hace muchos años, MS-DOS 7 (el que venía con Windows 95), no era MS-DOS 6.22 con un par de retoques.
    El DOS sobre el que corría Windows 95 era básicamente una interfaz de texto tipo compatible con DOS de los subsistemas de Windows 95.
    Todo el sistema de interrupciones programables, gestión de memoria, etc eran radicalmente diferentes y delegaban en el código de Windows 95, incluso si arrancabas la máquina en modo MS-DOS.

    Si no, hubiera sido imposible ejecutar varios programas de MS-DOS a la vez en distintas ventanas, donde cada programa podía perfectamente enmascarar las interrupciones o cambiar el modo de pantalla, u obtener memoria y manipularla.
    El MS-DOS de Windows 95 era Windows 95 con cara de MS-DOS.
  2. Muy chulo. WSL9x no convierte Linux en un driver; lo que hace es usar un VxD como loader y runtime para ejecutar un kernel Linux directamente en ring 0 dentro de Windows 9x.

    El flujo real es bastante claro mirando el código:

    El VxD implementa un loader ELF mínimo (loader.c + elf.h) que abre vmlinux.elf vía interrupciones DOS, parsea las secciones y las mapea en memoria en una dirección fija (0xd0000000).
    La memoria se reserva con APIs internas del VMM (PageReserve, PageCommit), o sea, Linux vive en memoria del sistema, no como proceso ni como módulo “formal”.
    Luego el driver crea un hilo en la System VM, le asigna una pila (16 KiB) y hace un salto directo al entrypoint del kernel (_start).

    A partir de ahí no hay virtualización: ambos kernels comparten ring 0. El VxD mantiene un bucle de control (ver entry.c) que se encarga de:

    entrar/salir de Linux
    despachar IRQs (hay una máscara de pendientes tipo pending_irqs)
    idle/scheduling cooperativo

    El handling de syscalls es especialmente…   » ver todo el comentario

menéame