stringtranslate.com

Consola de Windows

La consola de Windows es la infraestructura para las aplicaciones de consola en Microsoft Windows . Una instancia de una consola de Windows tiene un búfer de pantalla y un búfer de entrada . Permite que las aplicaciones de consola se ejecuten dentro de una ventana o en modo de texto de hardware (para ocupar toda la pantalla). El usuario puede cambiar entre los dos utilizando la combinación de teclas Alt+ ↵ Enter. El modo de texto no está disponible en Windows Vista y versiones posteriores. Sin embargo, a partir de Windows 10 , está disponible un modo de pantalla completa nativo.

Las instancias de la consola de Windows se utilizan normalmente para aplicaciones que no necesitan mostrar imágenes, pero que pueden utilizar colores. Algunos ejemplos son cmd.exe , Windows PowerShell , Far Manager y Midnight Commander .

En 2019, el host de la consola se convirtió en código abierto bajo la licencia MIT , junto con Windows Terminal . [1]

Modos de ventana y pantalla completa

Windows PowerShell en Windows Vista
Midnight Commander utiliza personajes con dibujos en forma de caja

En Windows, una aplicación de consola puede ejecutarse en dos modos.

Un modo coloca el texto en una ventana y utiliza la representación de fuentes de un sistema operativo . En este modo, la interacción de una aplicación con el usuario está controlada por el sistema de ventanas. Esto es análogo a las aplicaciones del sistema X Window, como xterm .

El segundo es el modo de pantalla completa. En Windows XP y versiones anteriores, la consola de pantalla completa utiliza un modo de texto de hardware y carga una fuente rasterizada en el adaptador de vídeo . Esto es análogo a una consola de sistema de texto . Este modo de pantalla completa inicial solo admite modos de texto compatibles con VGA, lo que le da una resolución máxima de caracteres de 80 columnas por 28 filas. [2] Este modo quedó obsoleto en Windows Vista . [3] Era posible evitar este problema instalando un controlador de pantalla de Windows XP; [3] sin embargo, Windows 8 y versiones posteriores no los aceptan. [4] Windows 10 presenta un modo de pantalla completa una vez más, pero esta implementación utiliza el subsistema de renderizado nativo de Windows, en lugar del modo de texto. Puede tener tantas columnas y filas como quepan en la pantalla. [5]

Se puede hacer que las aplicaciones cambien entre los dos modos usando la combinación de teclas + .Alt↵ Enter

Detalles

El buffer de entrada es una cola donde se almacenan los eventos (del teclado , ratón , etc.). El buffer de salida es una cuadrícula rectangular donde se almacenan los caracteres, junto con sus atributos. Una ventana de consola puede tener varios buffers de salida, de los cuales solo uno está activo (es decir, se muestra) en un momento determinado. Las aplicaciones pueden interactuar mediante programación con Windows Console a través de Windows API , que expone tanto funciones de alto nivel (como ReadConsoleand WriteConsole) como funciones de bajo nivel (por ejemplo, ReadConsoleInputand WriteConsoleOutput). [6]

Los usuarios pueden cambiar la paleta de colores o la fuente , ya sea a nivel de todo el sistema o a nivel de la aplicación. Sin embargo, cada instancia de una aplicación de consola no puede cambiar su paleta de colores o fuente sobre la marcha.

Las aplicaciones de consola de Windows son distintas de las aplicaciones MS-DOS , aunque en Windows (especialmente en Windows 9x ) pueden no parecer diferentes. Las aplicaciones de consola de Windows tienen acceso a toda la API de Windows y no se ejecutan en MS-DOS ni en sistemas operativos compatibles. Sin embargo, las aplicaciones DOS no pueden acceder a la API de Windows y solo pueden ejecutarse en versiones de 32 bits de Windows con la ayuda de la máquina virtual DOS (VDM).

Implementaciones

En Windows 3.1 y versiones anteriores, no hay soporte nativo para consolas. Debido a que esas versiones son simplemente una interfaz gráfica para MS-DOS, la mayoría de los programas de texto que se ejecutaban en versiones anteriores de Windows eran en realidad programas MS-DOS que se ejecutaban en una ventana. Para simplificar la tarea de trasladar aplicaciones a Windows, las primeras versiones de Visual C++ se suministran con QuickWin , una biblioteca que implementa la funcionalidad básica de la consola dentro de una ventana normal. Una biblioteca similar para Borland C++ se llamaba EasyWin.

Windows 9x

Command.com ejecutándose en una consola de Windows en Windows 95

El soporte de Windows 9x es relativamente pobre comparado con Windows NT , porque la ventana de consola se ejecuta en la máquina virtual DOS del sistema y, por lo tanto, la entrada del teclado a una aplicación de consola Win32 tuvo que ser dirigida a ella por conagent.exe ejecutándose en una VM DOS que también se usa para aplicaciones DOS reales al enganchar la interrupción del teclado. conagent.exeluego llama a Vcond (que es un VxD ). Vcond luego tuvo que pasar la entrada del teclado a la VM del sistema y, finalmente, a la aplicación de consola Win32. Además del rendimiento, otro problema con esta implementación es que las unidades que son locales a una VM DOS no son visibles para una aplicación de consola Win32. Esto puede causar confusión.

En Windows 9x, el búfer de pantalla refleja la estructura del búfer de texto VGA , con dos bytes por celda de carácter: un byte para el código del carácter, un byte para los atributos (el carácter debe estar en el conjunto de caracteres OEM , el atributo debe tener un fondo de alta intensidad/sin parpadeo). Esto acelera considerablemente la operación si se utiliza el modo de texto VGA real.

Windows NT y Windows CE

El subsistema de Windows para Linux que ejecuta Bash en Windows 10
Cmd.exe ejecutándose en Windows CE 3.0

Tradicionalmente, el subsistema de ejecución de cliente/servidor (CSRSS) ha sido responsable de administrar las ventanas de consola en la familia de sistemas operativos Windows NT. [7] En Windows 7 , CSRSS genera uno conhost.exepara cada ventana de consola, para administrarla. En Windows 8 y posteriores, las aplicaciones de consola generan sus conhost.exeprocesos directamente. Este cambio tiene implicaciones tanto de seguridad como de usabilidad. Si bien CSRSS se ejecuta en un contexto de seguridad altamente privilegiado, cada uno conhost.exese ejecuta en el mismo contexto de seguridad que la aplicación de consola. Además, en Windows 7, este cambio permitió que las ventanas de consola tuvieran las características del tema Aero Glass . [8]

En Windows NT y Windows CE , el búfer de pantalla utiliza cuatro bytes por celda de carácter: dos bytes para el código de carácter, dos bytes para los atributos. El carácter se codifica entonces en un subconjunto de 16 bits de Unicode ( UCS-2 ). [9] Para compatibilidad con versiones anteriores, las API de consola existen en dos versiones: Unicode y no Unicode. Las versiones no Unicode de las API pueden utilizar el cambio de página de códigos para ampliar el rango de caracteres mostrados (pero solo si se utilizan fuentes TrueType para la ventana de la consola, ampliando así el rango de códigos disponibles). Incluso UTF-8 está disponible como "página de códigos 65001" [10] (mostrando solo desde el subconjunto UCS-2 de Unicode completo [ cita requerida ] ).

A partir de la actualización de octubre de 2018 de Windows 10 , la consola de Windows tiene soporte completo para Unicode. [11]

Véase también

Referencias

  1. ^ Cinnamon, Kayla (6 de mayo de 2019). "Presentación de Windows Terminal". Herramientas de línea de comandos de Windows para desarrolladores . Microsoft . Consultado el 10 de mayo de 2019 .
  2. ^ Julio Sanchez; Maria P. Canton (2003), "Fundamentos de VGA, Parte II: Gráficos DOS", Manual de gráficos para PC (para programadores de C++) (libro), CRC Press, p. 125, ISBN 0849316782
  3. ^ ab "Algunos programas basados ​​en DOS de 16 bits y el símbolo del sistema no se ejecutarán en modo de pantalla completa en Windows Vista y Windows 7". Soporte . Microsoft. 23 de septiembre de 2011.
  4. ^ "Hoja de ruta para el desarrollo de controladores para el modelo de controlador de pantalla de Windows 2000 (XDDM)". Centro de desarrollo de Windows - Hardware . Microsoft . 16 de noviembre de 2013 . Consultado el 16 de diciembre de 2013 . Los controladores XDDM y VGA no se compilarán en Windows 8 y versiones posteriores
  5. ^ Tkachenko, Sergey (24 de noviembre de 2014). "Abrir el símbolo del sistema en pantalla completa en Windows 10". Winaero . Consultado el 31 de julio de 2019 .
  6. ^ "Modos de consola". Documentación de la consola de Windows . Microsoft . Consultado el 13 de octubre de 2020 – a través de Microsoft Docs.
  7. ^ Aviso de seguridad de Microsoft (930181): Se publicó un código de explotación que afecta al subsistema de tiempo de ejecución del servidor cliente de Windows
  8. ^ Yosifovich, Pavel; Ionescu, Alex; Russinovich, Mark E.; Solomon, David A. (15 de mayo de 2017). Windows Internals, Part 1: System architecture, processes, threads, memory management, and more (7.ª ed.). Redmond, Washington: Microsoft Press. pág. 67. ISBN 9780735684188.
  9. ^ "Referencia de consola". Microsoft. 2009. Consultado el 1 de enero de 2010 .
  10. ^ "Notas de la versión". docs.microsoft.com . 27 de junio de 2022. Consola: Corrección del error por el que no se muestra texto de salida en la página de códigos 65001 (utf8)
  11. ^ Turner, Rich (15 de noviembre de 2018). «Línea de comandos de Windows: búfer de texto de salida Unicode y UTF-8». Herramientas de línea de comandos de Windows para desarrolladores . Microsoft . Consultado el 14 de junio de 2019 .

Enlaces externos