컴퓨터는 화면에 텍스트와 GUI를 표시하는 방법을 어떻게 알 수 있습니까?

컴퓨터는 화면에 텍스트와 GUI를 표시하는 방법을 어떻게 알 수 있습니까?

어리석고 이상한 질문일지도 모르지만, 답을 찾을 때까지는 정말 잠이 오지 않습니다. 컴퓨터는 화면에 텍스트와 GUI를 표시하는 방법을 어떻게 알 수 있습니까? 내가 착각한 것이 아니라면 x86 컴퓨터의 부팅 프로세스는 다음과 같습니다.

  • BIOS는 CPU와 나머지 하드웨어를 시작하고 모든 것이 작동하는지 확인합니다.
  • CPU는 처음 512의 코드를 실행합니까? 부팅 파티션의 바이트를 저장하고 화면에 부트로더 메뉴가 표시됩니다.
  • 선택한 커널이 실행됩니다
  • 등.

내 질문은: 커널이 시작되기 전에 운영 체제가 없다면 컴퓨터는 화면에 텍스트를 표시하는 방법을 어떻게 알 수 있습니까? BIOS와 부트로더는 일부 텍스트와 기본 GUI를 표시할 수 있습니다. 그들은 이것을 어떻게 하는가? BIOS/부트로더는 위치 (0,0)에 파란색 픽셀을 표시하고 (1,0)에 흰색 픽셀을 표시해야 한다고 CPU(GPU?)에 지시합니까?

두 번째 이론은 BIOS에 화면에 인쇄할 수 있는 일종의 API가 있는 기본 디스플레이 드라이버가 있다는 것입니다. 디스플레이 드라이버에서 사용할 수 있는 일종의 print() 기능이 있습니까?

내가 본 바로는 텍스트를 인쇄하는 어셈블리 기능은 각 운영 체제마다 다르므로 CPU의 명령어 세트를 통해 직접 사용할 수는 없습니다.

내 질문의 두 번째 부분은 KDE 또는 GNOME과 같은 데스크탑 환경이 어떻게 작동합니까?입니다. 제가 완전히 새로운 Linux용 데스크톱 환경을 만들고 싶다고 가정해 보겠습니다. 어디서부터 시작해야 하나요? C/C++ 또는 기타 고급 언어에는n 색상(x,y) 위치의 프리셀입니다. 데스크탑을 표시하는 프로그램은 어떤 언어로 작성되어 있나요? 데스크톱을 픽셀 단위로 생성합니까? GTK나 Qt와 같은 라이브러리는 어떻게 작동하나요? 몇 가지 기능만 있는 창을 표시할 수 있다는 것을 알고 있지만 해당 기능이 실제로 어떻게 작동합니까?

질문이 명확하지 않다면 죄송합니다. 영어는 나의 모국어가 아닙니다.

답변1

기본적으로 마더보드에는 필요한 GUI를 표시하는 방법을 알려주는 ROM(읽기 전용 메모리) 칩이 있습니다. 소프트웨어가 없다고 생각하지만 실제로는 제조업체에서 사전 설치되어 제공됩니다. 사실, 이 소프트웨어는 칩에 내장되어 있기 때문에 "펌웨어"라고 부를 가능성이 더 높습니다.

그래픽 데스크탑 환경의 경우에는 실제로 특별한 것이 없습니다. 다른 모든 프로그램과 동일한 방식으로 화면에 그립니다. 화면에 그리는 데 실제로 필요한 것은 그래픽 처리를 담당하는 칩(일반적으로 GPU 또는 IGPU/APU)의 주소를 아는 것입니다. 일반 프로그램이 이 작업을 수행할 때 운영 체제에서 이 정보를 요청한다고 생각합니다. 따라서 자신만의 그래픽 데스크톱 환경을 작성하려면 데이터를 보낼 주소를 알아내야 합니다. 필요한 주소는 보유하고 있는 G/IG/APU에 관계없이 드라이버가 제공해야 합니다.

답변2

두 가지 주요 부분:

  1. MBR이 로드된 후 해당 코드는 Windows 부팅 관리자 또는 Linux의 GRUB라는 부팅 코드의 두 번째 단계를 로드합니다. 이 부팅 관리자/로더에는 코드로 구현된 텍스트 및 그래픽 기능이 있거나 텍스트 출력을 위해 직접 BIOS 액세스를 사용합니다.

  2. C, C++, Java, Basic과 같은 프로그래밍 언어를 사용하여 OS(Windows, Linux 등)를 로드한 후 화면에 쓰거나 그릴 수 있는 커널 및/또는 라이브러리에 구현된 기능에 액세스할 수 있습니다. 오늘날 모든 프로그래밍 언어에는 사용자 코드 작성을 크게 단순화하는 IDE(통합 개발 환경)가 있습니다.

관련 정보