Ketertarikan saya terhadap komputer yang terus meningkat membuat saya mengajukan pertanyaan yang lebih dalam, yang sepertinya tidak perlu kami tanyakan lagi. Komputer kami, saat boot, sejauh yang saya mengerti, berada dalam mode teks , di mana karakter dapat ditampilkan menggunakan perangkat lunak interupsi 0x10
ketika AH=0x0e
. Kita semua telah melihat font booting terkenal yang selalu terlihat sama, terlepas dari apa yang boot komputer.
Jadi, bagaimana mungkin komputer menghasilkan grafik pada level terendah, katakanlah, di bawah OS? Dan juga, tentunya grafis tidak menghasilkan piksel pada suatu waktu menggunakan interupsi perangkat lunak, karena kedengarannya sangat lambat?
Apakah ada standar yang mendefinisikan keluaran dasar dari simpul, poligon, font, dll. (Di bawah OpenGL misalnya, yang OpenGL mungkin gunakan)? Yang membuat saya bertanya adalah mengapa OS 'sering kali baik-baik saja tanpa driver resmi diinstal; bagaimana mereka melakukannya?
Mohon maaf jika asumsi saya salah. Saya akan sangat berterima kasih atas uraian tentang topik-topik ini!
Jawaban:
Itulah (sebagian) peran BIOS.
Sistem Output Input Dasar komputer bertanggung jawab untuk menyediakan antarmuka umum untuk sistem operasi, meskipun terdapat perbedaan di antara komputer yang sebenarnya.
Yang mengatakan, untuk grafis secara khusus, ada berbagai cara menggambar ke layar. Ada perintah TTY yang dapat Anda kirim ke BIOS, tetapi itu hanya dalam mode nyata. Jika Anda ingin menggambar sesuatu dalam mode terproteksi, Anda perlu menggunakan VGA untuk menggambar sesuatu. Saya tidak dapat menjelaskannya lebih baik daripada OSDev, jadi lihat di sini untuk info lebih lanjut - tetapi pada dasarnya, Anda dapat menulis ke memori (memori video adalah memori yang dipetakan) mulai dari alamat
0xB8000
untuk menggambar sesuatu di layar.Jika Anda membutuhkan resolusi lebih tinggi dari VGA, Anda perlu menggunakan ekstensi VESA BIOS; Saya tidak terbiasa dengan itu, tetapi cobalah melihat kode sumber GRUB untuk info lebih lanjut.
Beberapa referensi yang bermanfaat:
Kode sumber GRUB :
Wiki OSDev (Menggambar dalam Mode Terlindungi)
VESA BIOS Extensions
Jika Anda terbiasa dengan D - saya menulis sedikit boot loader beberapa waktu lalu yang bisa menulis ke layar (hanya teks). Jika Anda tertarik, inilah kodenya:
sumber
memory-mapped
berarti ada area "buffer" di RAM tempat CPU (atau ada unit DMA lain?) dapat membaca dan menulis atas nama kartu grafis dan program yang mencoba menulis ke layar?Dari masa-masa awal PC IBM dan klon-klonanya, perangkat keras adaptor layar sangat sederhana: satu blok memori kecil didedikasikan untuk kisi-kisi sel karakter (80x25 karakter dalam mode standar), dengan dua byte memori untuk setiap sel . Satu byte memilih karakter, dan yang lainnya memilih "atribut" - warna foreground dan background ditambah kontrol kedip untuk adapter warna; tebal, bergaris bawah, berkedip, atau membalikkan video untuk adaptor monokrom. Perangkat keras mencari piksel dari tabel ROM bentuk karakter sesuai dengan isi memori karakter.
Untuk menawarkan tingkat kemandirian perangkat keras tertentu, antarmuka BIOS ke peta karakter memerlukan interupsi perangkat lunak untuk dieksekusi untuk mengatur sel karakter tunggal pada layar. Ini lambat dan tidak efisien. Namun, memori karakter juga dapat dialamatkan oleh CPU, jadi jika Anda tahu perangkat keras apa yang ada, Anda dapat langsung menulis ke memori. Either way, setelah diatur, karakter akan tetap di layar sampai berubah, dan total memori karakter yang Anda butuhkan untuk bekerja adalah 4000 byte - sekitar ukuran tekstur tunggal 32x32 penuh warna!
Dalam mode grafis, situasinya mirip; setiap piksel pada layar dikaitkan dengan lokasi tertentu dalam memori, dan ada antarmuka set-piksel BIOS tetapi pekerjaan berkinerja tinggi diperlukan untuk menulis langsung ke memori. Kemudian standar seperti VESA memungkinkan sistem melakukan beberapa permintaan berbasis BIOS yang lambat untuk mempelajari tata letak memori perangkat keras, kemudian bekerja secara langsung dengan memori. Beginilah cara OS dapat menampilkan gambar tanpa driver khusus, meskipun OS modern juga menyertakan driver dasar untuk setiap perangkat keras produsen GPU utama. Bahkan kartu NVidia terbaru akan mendukung beberapa mode kompatibilitas yang berbeda, mungkin sepanjang jalan kembali ke IBM CGA.
Satu perbedaan penting antara grafik 3D dan 2D adalah bahwa dalam 2D Anda biasanya tidak perlu menggambar ulang seluruh layar setiap frame. Dalam 3D, jika kamera bergerak sedikit pun, setiap piksel pada layar mungkin berubah; dalam 2D, jika Anda tidak menggulir, sebagian besar layar tidak akan berubah bingkai-ke-bingkai, dan bahkan jika Anda menggulir, Anda biasanya dapat melakukan salinan memori-ke-memori yang cepat alih-alih menyusun ulang seluruh adegan. Jadi tidak ada artinya harus mengeksekusi INT 10j untuk setiap piksel setiap bingkai.
Sumber: Saya sangat tua
sumber
Selama boot, BIOS sistem mencari adaptor video. Secara khusus, ia mencari adaptor video yang tertanam dalam program BIOS dan menjalankannya. BIOS ini biasanya ditemukan di lokasi C000h dalam memori. Sistem BIOS menjalankan BIOS video , yang menginisialisasi adaptor video.
Level atau mode video / grafik mana yang BIOS dapat tampilkan secara asli, tanpa OS atau driver, terutama tergantung pada Video BIOS itu sendiri.
Sumber / Info Lebih Lanjut Di Sini - "Urutan Booting Sistem"
sumber
Anda sedang berbicara tentang fungsi-fungsi warisan BIOS. Bahkan Anda tidak perlu menggunakan fungsi seperti itu sama sekali. Anda langsung menuliskannya ke dalam memori video.
Ini sangat berkaitan dengan bagaimana OS beroperasi. Lagi pula, operasinya sama pada tingkat perangkat keras: kartu video memiliki RAM video, yang menyimpan (menyederhanakan) gambar berikutnya untuk digambar di layar. Anda dapat berpikir bahwa setiap alamat adalah byte yang mewakili piksel (sebenarnya umumnya Anda membutuhkan lebih dari satu byte per piksel). Kemudian pengontrol video menangani menerjemahkan ini menjadi sinyal yang dimengerti monitor.
AFAIK, tidak. Tidak ada standar tentang representasi grafik logis.
Karena sudah ada driver yang sudah dibundel dengan OS.
sumber