맨위로가기

윈도우 콘솔

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

윈도우 콘솔은 윈도우 운영 체제에서 실행되는 텍스트 기반의 응용 프로그램으로, 창 모드와 전체 화면 모드를 지원한다. 창 모드에서는 운영 체제의 글꼴 렌더링을 사용하며, 전체 화면 모드는 하드웨어 텍스트 모드를 사용했으나, 윈도우 10부터는 윈도우 렌더링 하위 시스템을 사용한다. 윈도우 콘솔은 입력 버퍼와 출력 버퍼를 통해 윈도우 API로 상호 작용하며, 윈도우 3.1부터 윈도우 10까지 다양한 버전의 윈도우에서 구현 방식의 변화를 겪었다.

더 읽어볼만한 페이지

  • 텍스트 사용자 인터페이스 - ANSI 이스케이프 코드
    ANSI 이스케이프 코드는 비디오 단말기의 화면 제어 기능을 수행하는 문자열 시퀀스로, ECMA-48 표준으로 채택되어 커서 이동, 화면 지우기, 텍스트 스타일 및 색상 변경 등 다양한 기능을 지원하며 현대 터미널 에뮬레이터에서 널리 사용된다.
  • 텍스트 사용자 인터페이스 - 지움 문자
    지움 문자는 텍스트 편집 환경에서 문자를 삭제하는 제어 문자로, 초기에는 백스페이스와 유사한 기능을 했으나 이후 ASCII 코드 127번으로 정의되었고, 유닉스 시스템에서는 터미널 드라이버 설정으로 백스페이스 키를 삭제 문자로 설정해야 했으며, 현대 운영체제에서는 백스페이스 키로 대체되고 유닉스 계열에서는 `stty` 명령어로 설정 가능하다.
  • 자유 터미널 에뮬레이터 - PuTTY
    PuTTY는 SSH, 텔넷 등 다양한 통신 프로토콜을 지원하는 자유-오픈 소스 터미널 에뮬레이터로, 여러 운영체제에서 사용 가능하며 터미널 에뮬레이션, 포트 포워딩 기능과 함께 PSCP, PSFTP, Plink 등의 유틸리티 및 PuTTYgen, Pageant를 제공한다.
  • 자유 터미널 에뮬레이터 - Xterm
    Xterm은 X 윈도 시스템을 위한 터미널 에뮬레이터로, VT102, Tektronix 4014 등을 에뮬레이션하며 마우스 추적, 256색 프로토콜을 지원하고, X 리소스 파일 등을 통해 사용자 정의가 가능하며 UXterm은 유니코드를 지원한다.
  • 윈도우 관리 - 블루스크린
    블루스크린은 윈도우 운영체제에서 발생하는 치명적인 오류로, 컴퓨터 작동을 멈추고 파란색 화면에 오류 메시지를 표시하며, 하드웨어 또는 소프트웨어 문제로 인해 발생하고, 시스템 복원, 안전 모드 부팅 등의 방법으로 대처한다.
  • 윈도우 관리 - 파워셸
    파워셸은 마이크로소프트에서 개발한 작업 자동화 솔루션으로, 명령줄 셸과 스크립트 언어의 기능을 결합하여 윈도우 시스템 관리를 위해 설계되었으며, .NET 프레임워크 기반의 객체 지향적 특징을 갖고 다양한 플랫폼에서 자동화 스크립트 작성 및 실행, 시스템 구성 관리 등에 활용된다.
윈도우 콘솔 - [IT 관련 정보]에 관한 문서
일반 정보
종류윈도우 API, 단말 에뮬레이터
개발사마이크로소프트
운영 체제마이크로소프트 윈도우
플랫폼IA-32, x86-64, ARM64
프로그래밍 언어C++
라이선스MIT 라이선스
웹사이트윈도우 콘솔 공식 문서
저장소GitHub 저장소

2. 모드

윈도우 콘솔 응용 프로그램은 창 모드와 전체 화면 모드의 두 가지 모드로 실행될 수 있다. 키 조합을 사용하여 두 모드 간에 전환할 수 있다.[2]

2. 1. 창 모드

텍스트는 안에 표시되며, 운영 체제의 글꼴 렌더링을 사용한다. 이 모드에서 응용 프로그램과 사용자 간의 상호 작용은 윈도우 시스템에 의해 제어된다. 이는 X 윈도우 시스템의 xterm과 유사하다.[2]

2. 2. 전체 화면 모드

윈도우 XP 및 이전 버전에서 전체 화면 콘솔은 하드웨어 텍스트 모드를 사용하고 래스터 글꼴을 비디오 어댑터에 업로드했다. 이는 텍스트 시스템 콘솔과 유사했다. 이 초기 전체 화면 모드는 VGA 호환 텍스트 모드만 지원하여 최대 문자 화면 해상도가 80 열 x 28행이었다.[2] 윈도우 비스타에서는 이 모드가 더 이상 사용되지 않았다.[3] 윈도우 XP 디스플레이 드라이버를 설치하여 이 문제를 해결할 수 있었다.[3] 그러나 윈도우 8 및 이후 버전에서는 이를 허용하지 않는다.[4] 윈도우 10은 다시 전체 화면 모드를 제공하지만, 이 구현은 텍스트 모드 대신 기본 윈도우 렌더링 하위 시스템을 사용한다. 화면에 맞는 만큼 많은 열과 행을 가질 수 있다.[5]

3. 세부 사항

입력 버퍼는 키보드, 마우스 등에서 발생하는 이벤트가 저장되는 큐이다. 출력 버퍼는 문자 및 해당 속성이 저장되는 직사각형 그리드이다. 콘솔 창은 여러 개의 출력 버퍼를 가질 수 있으며, 주어진 순간에는 그중 하나만 활성화(즉, 표시됨)된다. 앱은 Windows API를 통해 프로그래밍 방식으로 윈도우 콘솔과 상호 작용할 수 있으며, 이는 `ReadConsole` 및 `WriteConsole`과 같은 상위 수준 함수와 `ReadConsoleInput` 및 `WriteConsoleOutput`과 같은 하위 수준 함수를 모두 제공한다.[6]

사용자는 시스템 전체 수준 또는 앱 수준에서 색상 팔레트 또는 글꼴을 변경할 수 있다. 그러나 콘솔 앱의 각 인스턴스 자체는 실행 중에 색상 팔레트나 글꼴을 변경할 수 없다.

윈도우 콘솔 앱은 MS-DOS 앱과 다르며, 윈도우(특히 Windows 9x)에서는 외형상 차이가 없을 수 있다. 윈도우 콘솔 앱은 전체 Windows API에 액세스할 수 있으며 MS-DOS 또는 호환 운영 체제에서 실행되지 않는다. 그러나 DOS 앱은 Windows API에 액세스할 수 없으며 가상 DOS 머신 (VDM)의 도움을 받아 32비트 버전의 윈도우에서만 실행될 수 있다.

4. 구현

윈도우 콘솔의 구현은 운영 체제 버전에 따라 다르다.

윈도우 3.1 및 이전 버전, 윈도우 9x, 윈도우 NT 및 윈도우 CE에 대한 자세한 내용은 각 하위 문서를 참조.

4. 1. 윈도우 3.1 및 이전 버전

윈도우 3.1 및 이전 버전에서는 콘솔에 대한 기본 지원이 없다. 이러한 버전은 단순히 MS-DOS에 대한 그래픽 인터페이스이기 때문에, 이전 윈도우 버전에서 실행되는 대부분의 텍스트 프로그램은 실제로 창에서 실행되는 MS-DOS 프로그램이었다. 응용 프로그램의 윈도우 이식 작업을 단순화하기 위해, 초기 버전의 비주얼 C++는 일반 창 내에서 기본적인 콘솔 기능을 구현하는 라이브러리인 퀵윈과 함께 제공되었다. 볼랜드 C++의 유사한 라이브러리는 이지윈이라고 불렸다.[17]

4. 2. 윈도우 9x

Command.com이 윈도우 95에서 윈도우 콘솔에서 실행되는 모습


윈도우 9x 지원은 윈도우 NT에 비해 상대적으로 부실한데, 콘솔 창이 시스템 가상 DOS 머신에서 실행되기 때문이다. Win32 콘솔 응용 프로그램에 대한 키보드 입력은 키보드 인터럽트를 후킹하여 실제 DOS 응용 프로그램에도 사용되는 DOS VM에서 실행되는 '''conagent.exe'''에 의해 전달되어야 했다. conagent.exe는 다음으로 '''Vcond''' (VxD)를 호출한다. '''Vcond'''는 키보드 입력을 시스템 VM으로 전달한 다음, 최종적으로 Win32 콘솔 응용 프로그램으로 전달해야 했다. 성능 외에도 이 구현의 또 다른 문제는 DOS VM에 로컬인 드라이브가 Win32 콘솔 응용 프로그램에 표시되지 않는다는 것이다. 이는 혼란을 야기할 수 있다.[1]

윈도우 9x에서 화면 버퍼는 VGA 텍스트 버퍼의 구조를 미러링하며, 문자 셀당 2바이트로 구성된다. 하나는 문자 코드용 바이트이고, 다른 하나는 속성용 바이트이다(문자는 OEM 문자 집합에 있어야 하며, 속성은 고휘도 배경/깜빡임 없음). 실제 VGA 텍스트 모드가 사용되는 경우 이는 작동 속도를 상당히 높여준다.[2]

4. 3. 윈도우 NT 및 윈도우 CE

전통적으로, 클라이언트/서버 런타임 서브시스템(CSRSS)은 Windows NT 계열 운영 체제에서 콘솔 창을 관리하는 역할을 해왔다.[7] 윈도우 7에서는 CSRSS가 각 콘솔 창마다 하나의 `conhost.exe`를 생성하여 관리한다. 윈도우 8 이상에서는 콘솔 앱이 자체적으로 `conhost.exe` 프로세스를 직접 생성한다. 이러한 변경은 보안 및 사용 편의성에 영향을 미친다. CSRSS는 매우 높은 권한의 보안 컨텍스트에서 실행되는 반면, 각 `conhost.exe`는 콘솔 앱과 동일한 보안 컨텍스트에서 실행된다. 또한 윈도우 7에서는 이러한 변경으로 콘솔 창이 Aero Glass 테마의 기능을 갖게 되었다.[8]

Windows NT 및 Windows CE에서 화면 버퍼는 문자 셀당 4바이트를 사용한다. 문자 코드에 2바이트, 속성에 2바이트이다. 문자는 유니코드(UCS-2)의 16비트 하위 집합으로 인코딩된다.[9] 하위 호환성을 위해 콘솔 API는 유니코드 및 비유니코드의 두 가지 버전으로 존재한다. API의 비유니코드 버전은 코드 페이지 전환을 사용하여 표시되는 문자 범위를 확장할 수 있다(단, 콘솔 창에 트루타입 글꼴이 사용된 경우에만 사용 가능하며, 사용 가능한 코드 범위를 확장한다). 심지어 UTF-8도 "코드 페이지 65001"로 사용할 수 있다.[10]

윈도우 10 2018년 10월 업데이트부터 Windows 콘솔은 완전한 유니코드 지원을 제공한다.[11]

참조

[1] 웹사이트 Introducing Windows Terminal https://devblogs.mic[...] Microsoft 2019-05-10
[2] Book The PC Graphics Handbook (for C++ Programmers) CRC Press
[3] 웹사이트 Some 16-bit DOS-based Programs and the Command Prompt will not run in full-screen mode in Windows Vista and in Windows 7 http://support.micro[...] Microsoft 2011-09-23
[4] 웹사이트 Roadmap for Developing Drivers for the Windows 2000 Display Driver Model (XDDM) http://msdn.microsof[...] Microsoft 2013-11-16
[5] 웹사이트 Open command prompt fullscreen in Windows 10 https://winaero.com/[...] 2019-07-31
[6] 웹사이트 Console Modes https://docs.microso[...] Microsoft 2020-10-13
[7] 웹사이트 Microsoft Security Advisory (930181): Exploit Code Published Affecting Windows Client Server Run-Time Subsystem http://www.microsoft[...]
[8] book Windows Internals, Part 1: System architecture, processes, threads, memory management, and more Microsoft Press 2017-05-15
[9] 웹사이트 Console Reference http://msdn.microsof[...] Microsoft 2010-01-01
[10] 웹사이트 Release Notes https://docs.microso[...] 2022-06-27
[11] 웹사이트 Windows Command-Line: Unicode and UTF-8 Output Text Buffer https://devblogs.mic[...] Microsoft 2019-06-14
[12] 웹사이트 SetConsoleTextAttribute function - Windows Console | Microsoft Docs https://docs.microso[...]
[13] 웹사이트 Console Screen Buffers - Windows Console | Microsoft Docs https://docs.microso[...]
[14] 웹사이트 VGA-Compatible Video Miniport Drivers (Windows 2000 Model) - Windows drivers https://docs.microso[...] Microsoft 2017-04-20
[15] Book The PC Graphics Handbook (for C++ Programmers) CRC Press
[16] 웹사이트 Some 16-bit DOS-based Programs and the Command Prompt will not run in full-screen mode in Windows Vista and in Windows 7 https://support.micr[...] Microsoft 2018-04-19
[17] 문서 Windows Vista以降ではSetConsoleScreenBufferInfoEx 関数でカラーパレットを指定できる。 https://docs.microso[...]
[18] 웹사이트 Microsoft Security Advisory 928604 https://docs.microso[...] Microsoft 2006-11-16
[19] 웹사이트 CHAR_INFO structure - Windows Console https://docs.microso[...] Microsoft 2019-11-17
[20] 웹인용 Introducing Windows Terminal https://devblogs.mic[...] 마이크로소프트 2019-05-10



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com