B.3. Jeroan dari suatu Komputer: Lapisan Berbeda yang Terlibat
Komputer sering dianggap sebagai sesuatu yang agak abstrak, dan antarmuka yang terlihat secara eksternal jauh lebih sederhana daripada kompleksitas internalnya. Kerumitan seperti itu sebagian berasal dari banyaknya bagian yang terlibat. Namun, potongan-potongan ini dapat dilihat dalam lapisan-lapisan, dimana suatu lapisan hanya berinteraksi dengan yang berada tepat di atas atau di bawahnya.
Pengguna akhir dapat bertahan tanpa mengetahui detail ini… selama semuanya berfungsi. Ketika menghadapi masalah seperti, “Internet tidak berfungsi!”, hal pertama yang harus dilakukan adalah mengidentifikasi di mana lapisan masalahnya berasal. Apakah kartu jaringan (perangkat keras) berfungsi? Apakah itu dikenali oleh komputer? Apakah kernel Linux melihatnya? Apakah parameter jaringan dikonfigurasi dengan benar? Semua pertanyaan ini mengisolasi lapisan yang tepat dan fokus pada sumber potensial masalah.
B.3.1. Lapisan Terdalam: Perangkat Keras
Mari kita mulai dengan pengingat dasar bahwa suatu komputer, pertama dan terpenting, adalah sekumpulan elemen perangkat keras. Biasanya ada suatu papan utama (dikenal sebagai motherboard), dengan satu (atau lebih) prosesor, RAM, pengendali perangkat, dan slot ekstensi untuk papan opsi (untuk pengendali perangkat lain). Yang paling penting di antara pengendali ini adalah IDE (Parallel ATA), SCSI, dan Serial ATA, untuk menghubungkan ke perangkat penyimpanan seperti hard disk. Pengontrol lainnya termasuk USB, yang dapat menghosting berbagai perangkat (mulai dari webcam hingga termometer, dari papan ketik hingga sistem otomasi rumah) dan IEEE 1394 (Firewire). Kontroler ini sering memungkinkan menghubungkan beberapa perangkat sehingga subsistem lengkap yang ditangani oleh pengontrol oleh karena itu biasanya dikenal sebagai ”bus”. Kartu-kartu opsi termasuk kartu grafis (di mana layar monitor akan dipasang), kartu suara, kartu antarmuka jaringan, dan sebagainya. Beberapa papan utama sudah dibangun sebelumnya dengan fitur-fitur ini, dan tidak perlu kartu opsi.
B.3.2. Awal: BIOS atau UEFI
Perangkat keras, berdiri sendiri, tidak mampu melakukan tugas-tugas yang berguna tanpa perangkat lunak terkait yang menggerakkannya. Mengendalikan dan berinteraksi dengan perangkat keras adalah tujuan dari sistem operasi dan aplikasi. Ini, pada gilirannya, memerlukan perangkat keras yang fungsional untuk berjalan.
Simbiosis antara perangkat keras dan perangkat lunak ini tidak terjadi dengan sendirinya. Ketika komputer pertama kali dinyalakan, beberapa penyiapan awal diperlukan. Peran ini diambil oleh BIOS atau UEFI, sepenggal perangkat lunak yang ditanamkan ke dalam main board yang berjalan secara otomatis saat mulai dinyalakan. Tugas utamanya adalah mencari perangkat lunak yang bisa dilimpahi kendali. Biasanya, seperti yang mungkin sudah Anda pelajari dalam
Bagian 9.1, “Boot Sistem”, dalam kasus BIOS, ini termasuk mencari hard disk pertama yang memiliki sektor boot (juga dikenal sebagai
master boot record atau
MBR), memuat sektor boot tersebut, dan menjalankannya. Selanjutnya, BIOS biasanya tidak terlibat (sampat boot berikutnya). Dalam kasus UEFI, prosesnya melibatkan pemindaian disk untuk mencari partisi EFI terdedikasi yang memuat aplikasi-aplikasi EFI yang selanjutnya dapat dieksekusi.
Sektor boot (atau partisi EFI), pada gilirannya, memuat penggalan perangkat lunak lain, yang dinamai bootloader, yang berguna untuk mencari dan menjalankan suatu sistem operasi. Karena bootloader ini tidak ditanamkan dalam papan utama tapi dimuat dari disk, itu bisa lebih cerdas daripada BIOS, yang menjelaskan mengapa BIOS sendiri tidak memuat sistem operasi. Sebagai contoh, bootloader (biasanya GRUB pada sistem Linux) dapat menampilkan daftar sistem operasi yang tersedia dan menanyakan ke pengguna untuk memilih satu. Biasanya, suatu tenggat waktu dan pilihan baku disediakan. Kadang pengguna juga dapat memilih untuk menambah parameter yang dilewatkan ke kernel, dan seterusnya. Pada akhirnya, suatu kernel ditemukan, dimuat ke memori, dan dieksekusi.
BIOS/UEFI juga bertanggung jawab mendeteksi dan mengisialisasi sejumlah perangkat. Tentu saja, ini termasuk perangkat IDE/SATA (biasanya drive CD/DVD-ROM dan hard disk), tapi juga perangkat-perangkat PCI. Perangkat-perangkat yang terdeteksi seringkali dimunculkan daftarnya dalam proses boot. Bila daftar ini berlalu terlalu cepat, gunakan tombol Pause untuk membekukannya cukup lama untuk dibaca. Perangkat-perangkat PCI terpasang yang tidak muncul adalah pertanda buruk. Terparahnya, perangkat bermasalah. Terbaiknya, itu sekedar tidak kompatibel dengan versi saat ini dari BIOS papan utama. Spesifikasi PCI bertumbuh, dan papan utama lama tidak dijamin menangani perangkat PCI yang lebih baru.
BIOS/UEFI maupun bootloader masing-masing hanya berjalan selama beberapa detik; sekarang kita sampai ke bagian pertama dari perangkat lunak yang berjalan untuk waktu yang lama, kernel sistem operasi. Kernel ini mengambil peran seorang dirigen orkestra, dan menjamin koordinasi antara perangkat keras dan perangkat lunak. Peran ini melibatkan beberapa tugas termasuk: menggerakkan perangkat keras, mengelola proses, pengguna dan izin, sistem berkas, dan seterusnya. Kernel menyediakan dasar yang umum untuk semua program lain pada sistem.
Walaupun segala sesuatu yang terjadi di luar kernel dapat dikelompok bersama di bawah ”ruang pengguna”, kita masih dapat memisahkan menjadi lapisan-lapisan perangkat lunak. Namun, interaksi mereka lebih kompleks daripada sebelumnya, dan klasifikasi mungkin tidak sederhana. Aplikasi umumnya menggunakan pustaka, yang pada gilirannya melibatkan kernel, tetapi komunikasi dapat juga melibatkan program lain, atau bahkan banyak pustaka memanggil satu sama lain.