Virtual Console과 TTY

# tty # console # linux-master-1

Virtual Console

실제 물리적인 콘솔은 하나지만, 커널이 이를 가상화하여 여러 개의 세션을 제공합니다.

  • 마치 하나의 모니터와 키보드를 마치 여러 개의 독립된 터미널인 것처럼 나누어 사용하는 기능
  • 보통 프로그램은 결과를 화면에 출력하기 위해 하드웨어를 직접 제어하고 싶어 합니다. 하지만 커널은 이를 허용하지 않고 중간에 가상 터미널 드라이버(TTY)를 둡니다.
  • 추상화: 하드웨어와 프로세스의 분리
    물리 장치는 실제 모니터 1대 이지만
    가상 장치 tty1, tty2, tty3… (커널 내부의 논리적 번호표)로 커널은 각 가상 콘솔마다 별도의 데이터 버퍼(메모리 공간)를 할당하여,
    내가 1번 화면을 보고 있어도 2번 화면에서 돌아가는 프로그램의 출력 내용을 별도의 메모리에 차곡차곡 쌓아둡니다.
  • 시분할 및 상태 저장: 커널은 현재 사용자가 어떤 화면을 보고 있는지(포커스)를 추적합니다.
  • 입출력 리다이렉션 (내부적 처리): 가상화의 핵심은 입력의 행방을 결정하는 것입니다.
  • 결론적으로, 커널은 하드웨어 자원을 아주 빠르게 스위칭(Switching)하고 데이터를 격리함으로써, 사용자에게는 여러 대의 독립적인 컴퓨터를 쓰는 듯한 경험을 제공하는 것입니다.

이해를 돕는 비유: 콜센터 상담원

  • 고객(프로그램들): 6명의 고객이 동시에 전화를 걸었습니다.
  • 상담원(실제 모니터/키보드): 상담원은 1명뿐입니다.
  • 커널의 가상화:
    • 상담원은 ‘대기 모드’ 기능을 써서 5명은 대기음(버퍼)을 듣게 하고, 한 번에 한 명하고만(활성 콘솔) 통화합니다.
    • 상담원이 버튼을 눌러 통화 대상을 바꿀 때마다, 이전 고객과의 대화 내용은 기록(저장)되고 새 고객의 정보가 모니터에 뜹니다.