B.4. Beberapa Tugas yang Ditangani oleh Kernel
B.4.1. Menggerakkan Perangkat Keras
Kernel ini, pertama dan terutama, bertugas mengendalikan bagian-bagian perangkat keras, mendeteksi mereka, menyalakannya ketika komputer dihidupkan, dan seterusnya. Ini juga membuat mereka tersedia untuk perangkat lunak tingkat yang lebih tinggi dengan antarmuka pemrograman yang disederhanakan, sehingga aplikasi dapat memanfaatkan perangkat tanpa harus khawatir tentang detail seperti slot ekstensi mana tempat dipasangnya kartu opsi. Antarmuka pemrograman juga menyediakan lapisan abstraksi; ini memungkinkan perangkat lunak video-conferencing, misalnya, untuk menggunakan webcam tanpa tergantung kepada merek dan modelnya. Perangkat lunak ini hanya dapat menggunakan antarmuka Video for Linux (V4L), dan kernel menerjemahkan panggilan fungsi antarmuka ini ke perintah perangkat keras sebenarnya yang dibutuhkan oleh webcam tertentu yang digunakan.
Kernel mengekspor banyak rincian tentang perangkat keras yang terdeteksi melalui sistem berkas virtual /proc/
dan /sys/
. Bebearpa perkakas meringkas rincian itu. Di antara mereka, lspci
(dalam paket pciutils) menampilkan daftar perangkat PCI, lsusb
(dalam paket usbutils) menampilkan daftar perangkat USB, dan lspcmcia
(dalam paket pcmciautils) menampilkan daftar kartu PCMCIA. Peralatan ini sangat berguna untuk mengidentifikasi model eksak dari suatu perangkat. Identifikasi ini juga mengizinkan pencarian yang lebih presisi pada web, yang pada gilirannya, mengarah ke lebih banyak dokumen yang relevan.
Contoh B.1. Contoh dari informasi yang disediakan oleh lspci
dan lsusb
$
lspci
[...]
00:00.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse Root Complex
00:00.2 IOMMU: Advanced Micro Devices, Inc. [AMD] Starship/Matisse IOMMU
00:01.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge
00:01.2 PCI bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse GPP Bridge
00:02.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge
00:03.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge
[..]
02:09.0 PCI bridge: Advanced Micro Devices, Inc. [AMD] Device 43ea
05:00.0 PCI bridge: ASPEED Technology, Inc. AST1150 PCI-to-PCI Bridge (rev 04)
06:00.0 VGA compatible controller: ASPEED Technology, Inc. ASPEED Graphics Family (rev 41)
07:00.0 Ethernet controller: Intel Corporation I210 Gigabit Network Connection (rev 03)
08:00.0 Non-Volatile memory controller: Samsung Electronics Co Ltd NVMe SSD Controller PM9A1/PM9A3/980PRO
09:00.0 Non-Volatile memory controller: Samsung Electronics Co Ltd NVMe SSD Controller PM9A1/PM9A3/980PRO
0a:00.0 Non-Essential Instrumentation [1300]: Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Function
0b:00.0 Non-Essential Instrumentation [1300]: Advanced Micro Devices, Inc. [AMD] Starship/Matisse Reserved SPP
0b:00.1 Encryption controller: Advanced Micro Devices, Inc. [AMD] Starship/Matisse Cryptographic Coprocessor PSPCPP
0b:00.3 USB controller: Advanced Micro Devices, Inc. [AMD] Matisse USB 3.0 Host Controller
$
lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 05e3:0610 Genesys Logic, Inc. Hub
Bus 001 Device 003: ID 048d:c102 Integrated Technology Express, Inc. ITE Device(8910)
Bus 001 Device 004: ID 5986:115f Bison Electronics Inc. Integrated Camera
Bus 001 Device 005: ID 048d:c975 Integrated Technology Express, Inc. ITE Device(8295)
Bus 001 Device 006: ID 8087:0026 Intel Corp. AX201 Bluetooth
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 002 Device 002: ID 05e3:0620 Genesys Logic, Inc. GL3523 Hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Program-program ini memiliki pilihan -v
, yang mencantumkan informasi lebih rinci (tapi biasanya tidak perlu). Akhirnya, perintah lsdev
(dalam paket procinfo) menampilkan daftar sumber daya komunikasi yang digunakan oleh perangkat.
Applications often access devices by way of special files created within
/dev/
(see sidebar
KEMBALI KE DASAR Hak akses perangkat). These are special files that represent disk drives (for instance,
/dev/hda
and
/dev/sdc
),
/dev/nvme1n1
partitions (
/dev/hda1
or
/dev/sdc3
or
/dev/nvme1n1p2
), mice (
/dev/input/mouse0
), keyboards (
/dev/input/event0
), soundcards (
/dev/snd/*
), serial ports (
/dev/ttyS*
), and so on.
Sistem berkas adalah salah satu aspek yang paling menonjol dari kernel. Sistem Unix menggabungkan semua penyimpanan berkas ke dalam hirarki tunggal, yang memungkinkan pengguna (dan aplikasi) untuk mengakses data hanya dengan mengetahui lokasinya di dalam hierarki itu.
Titik awalk dari pohon hirarkis ini disebut root, /
. Direktori ini bisa memuat subdirektori-subdirektori yang dinamai. Sebagai contoh, subdirektori home
dari /
bernama /home/
. Subdirektori ini, pada gilirannya, memuat subdirektori lain, dan seterusnya. Setiap direktori juga bisa mengandung berkas, dimana data sebenarnya akan disimpan. Maka, nama /home/rmas/Desktop/hello.txt
mengacu ke sebuah berkas bernama hello.txt
yang disimpan di dalam subdirektori Desktop
dari subdirektori rmas
subdirektori dari direktori home
yang ada dalam root. Kernel menerjemahkan antara sistem penamaan ini dan penyimpanan fisik yang sebenarnya pada suatu disk.
Tidak seperti sistem lain, hanya ada satu hirarki seperti itu, dan itu bisa mengintegrasikan data dari beberapa disk. Salah satu dari disk ini dipakai sebagai root, dan yang lainnya ”dikait” pada direktori dalam hirarki (perintah Unix-nya bernama mount
); disk-disk lain ini maka kemudian teredia di bawah ”titik-titik kait” ini. Ini mengizinkan menyimpan direktori rumah pengguna (secara tradisional disimpan di bawah /home/
pada disk ke dua, yang akan memuat direktori rhertzog
dan rmas
. Sekali disk dikait pada /home/
, direktori-direktori ini menjadi dapat diakses pada lokasi biasa, dan path seperti /home/rmas/Desktop/hello.txt
tetap berjalan.
There are many filesystem formats, corresponding to many ways of physically storing data on disks. The most widely known are ext3 and ext4, but others exist. For instance, vfat is the system that was historically used by DOS and Windows operating systems, which allows using hard disks under Debian as well as under Windows. In any case, a filesystem must be prepared on a disk before it can be mounted and this operation is known as “formatting”. Commands such as mkfs.ext4
(where mkfs
stands for MaKe FileSystem) handle formatting. These commands require, as a parameter, a device file representing the partition to be formatted (for instance, /dev/sda1
). This operation is destructive and should only be run once, except if one deliberately wishes to wipe a filesystem and start afresh.
Ada juga sistem berkas jaringan, seperti
NFS, dimana data tidak tersimpan pada disk lokal. Sebaliknya, data ditransmisikan melalui jaringan ke server yang menyimpan dan mengambil mereka saat diminta. Abstraksi sistem berkas melindungi pengguna dari keharusan untuk perawatan: berkas tetap dapat diakses dalam cara hirarkis mereka yang biasa.
Karena sejumlah fungsi yang sama dipakai oleh semua perangkat lunak, layak untuk memusatkan mereka di dalam kernel. Sebagai contoh, penanganan sistem berkas bersama mengizinkan sebarang aplikasi sekedar membuka suatu berkas berdasarkan nama, tanpa perlu khawatir di mana berkas disimpan secara fisik. Berkas dapat disimpan di dalam beberapa potongan yang berbeda pada suatu hard disk, atau dipecah ke beberapa hard disk, atau bahkan disimpan pada suatu server berkas jarak jauh. Fungsi-fungsi komunikasi bersama dipakai oleh aplikasi-aplikasi untuk bertukar data secara independen dari cara data dipindahkan. Sebagai contoh, transpor bisa melalui sebarang kombinasi dari jaringa lokal atau nirkabel, atau melalui jalur telepon.
Suatu proses adalah sebuah instansi program yang sedang berjalan. Ini membutuhkan memori untuk menyimpan program itu sendiri dan data operasinya. Kernel bertugas menciptakan dan melacak mereka. Ketika sebuah program berjalan, kernel terlebih dahulu menyisihkan sebagian memori, kemudian memuat kode yang dapat dieksekusi dari sistem berkas ke dalamnya, dan kemudian memulai menjalankan kode. Kernel menyimpan informasi tentang proses ini, yang paling terlihat adalah nomor identifikasi yang dikenal sebagai pid (process identifier).
Kernel Unix-like (termasuk Linux), seperti kebanyakan sistem operasi modern lainnya, mampu ”multi-tasking”. Dengan kata lain, mereka memungkinkan menjalankan banyak proses ”pada saat yang sama”. Sebenarnya hanya ada satu proses yang berjalan pada satu waktu, tetapi kernel memotong waktu menjadi irisan-irisan kecil dan menjalankan setiap proses secara bergantian. Karena irisan waktu ini sangat pendek (dalam rentang milidetik), mereka menciptakan ilusi proses yang berjalan secara paralel, meskipun sebenarnya hanya aktif selama beberapa interval waktu dan menganggur di sisa waktu. Tugas kernel adalah menyesuaikan mekanisme penjadwalannya untuk menjaga ilusi itu, sambil memaksimalkan kinerja sistem global. Jika irisan waktu terlalu panjang, aplikasi mungkin tidak tampak responsif seperti yang diinginkan. Terlalu pendek, dan sistem kehilangan waktu karena beralih tugas terlalu sering. Keputusan-keputusan ini dapat disesuaikan dengan prioritas proses. Proses prioritas tinggi akan berjalan lebih lama dan dengan irisan waktu yang lebih sering daripada proses prioritas rendah.
Tentu saja, kernel memungkinkan menjalankan beberapa instansi independen dari program yang sama. Tetapi masing-masing hanya dapat mengakses irisan waktu dan memorinya sendiri. Data mereka dengan demikian tetap independen.
Sistem mirip Unix juga multi-pengguna. Mereka menyediakan sistem manajemen hak yang mendukung pengguna dan kelompok terpisah; itu juga memungkinkan kontrol atas tindakan berdasarkan izin. Kernel mengelola data untuk setiap proses, memungkinkannya untuk mengontrol perizinan. Seringkali, suatu proses diidentifikasi oleh pengguna yang memulainya. Proses itu hanya diizinkan untuk mengambil tindakan yang tersedia bagi pemiliknya. Misalnya, mencoba membuka berkas memerlukan kernel untuk memeriksa identitas proses terhadap izin akses (untuk detail lebih lanjut tentang contoh khusus ini, lihat
Bagian 9.3, “Mengelola Hak”).