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
Let us start with a basic reminder that a computer is, first and foremost, a set of hardware elements. There is generally a main board (known as the motherboard), with one (or more) processor(s), some RAM, device controllers, and extension slots for option boards (for other device controllers). Most noteworthy among these controllers are IDE (Parallel ATA), SCSI, and Serial ATA, for connecting to storage devices such as hard disks. Other controllers include USB, which is able to host a great variety of devices (ranging from webcams to thermometers, from keyboards to home automation systems) and IEEE 1394 (Firewire). These controllers often allow connecting several devices so the complete subsystem handled by a controller is therefore usually known as a “bus”. Option boards include graphics cards (into which monitor screens will be plugged), sound cards, network interface cards, and so on. Some main boards are pre-built with these features, and don't need option boards.
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.