Dalam rancangan keseluruhan, Linux
menyerupai implementasi UNIX nonmicrokernel yang lain. Ia adalah sistem yang multiuser,
multitasking dengan seperangkat lengkap alat-alat yang kompatibel dengan
UNIX. Sistem berkas Linux mengikuti semantik tradisional UNIX, dan model
jaringan standar UNIX diimplementasikan secara keseluruhan. Ciri internal
rancangan Linux telah dipengaruhi oleh sejarah perkembangan sistem operasi ini.
Walaupun Linux dapat berjalan pada berbagai macam platform, pada awalnya dia
dikembangkansecara eksklusif pada arsitektur PC. Sebagian besar dari
pengembangan awal tersebut dilakukan oleh peminat individual, bukan oleh
fasilitas riset yang memiliki dana besar, sehingga dari awal Linux berusaha
untuk memasukkan fungsionalitas sebanyak mungkin dengan dana yang sangat terbatas.
Saat ini, Linux dapat berjalan baik
pada mesin multiprocessor dengan main memory yang sangat besar
dan ukuran disk space yang juga sangat besar, namun tetap mampu
beroperasi dengan baik dengan jumlah RAM yang lebih kecil dari 4 MB. Akibat
dari semakin berkembangnya teknologi PC, kernel Linux juga semakin lengkap
dalam mengimplementasikan fungsi UNIX. Tujuan utama perancangan Linux adalah
cepat dan efisien, tetapi akhir-akhir ini konsentrasi perkembangan Linux lebih
pada tujuan rancangan yang ketiga yaitu standarisasi. Standar POSIX terdiri
dari kumpulan spesifikasi dari beberapa aspek yang berbeda kelakuan sistem
operasi. Ada dokumen POSIX untuk fungsi sistem operasi biasa dan untuk ekstensi
seperti proses untuk thread dan operasi real-time.
Linux dirancang agar sesuai dengan dokumen
POSIX yang relevan. Sedikitnya ada dua distribusi Linux yang sudah memperoleh
sertifikasi ofisial POSIX. Karena Linux memberikan antarmuka
standar ke programer dan pengguna, Linux tidak membuat banyak kejutan kepada
siapa pun yang sudah terbiasa dengan UNIX. Namun interface pemrograman Linux merujuk
pada semantik SVR4 UNIX daripada kelakuan BSD. Kumpulan pustaka yang berbeda
tersedia untuk mengimplementasi semantik BSD di tempat dimana kedua kelakuan
sangat berbeda.
Ada banyak standar lain di dunia
UNIX, tetapi sertifikasi penuh dari Linux terhadap standar lain UNIX terkadang
menjadi lambat karena lebih sering tersedia dengan harga tertentu (tidak secara
bebas), dan ada harga yang harus dibayar jika melibatkan sertifikasi
persetujuan atau kecocokan sebuah sistem operasi terhadap kebanyakan standar.
Bagaimana pun juga mendukung aplikasi yang luas adalah penting untuk suatu
sistem operasi, sehingga sehingga standar implementasi merupakan tujuan utama
pengembangan Linux, walaupun implementasinya tidak sah secara formal. Selain standar POSIX, Linux saat ini
mendukung ekstensi thread POSIX dan subset dari ekstensi untuk kontrol proses real-time
POSIX.
Sistem Linux terdiri dari tiga
bagian kode penting:
• Kernel
Bertanggung-jawab
memelihara semua abstraksi penting dari sistem operasi, termasuk hal-hal seperti
memori virtual dan proses-proses.
Walaupun berbagai sistem operasi modern
telah mengadopsi suatu arsitektur message-passing untuk kernel internal mereka,
Linux tetap memakai model historis UNIX: kernel diciptakan sebagai biner yang
tunggal dan monolitis. Alasan utamanya adalah untuk meningkatkan kinerja,
karena semua struktur data dan kode kernel disimpan dalam satu address space,
alih konteks tidak diperlukan ketika sebuah proses memanggil sebuah fungsi
sistem operasi atau ketika interupsi perangkat keras dikirim. Tidak hanya
penjadwalan inti dan kode memori virtual yang menempati address space ini,
tetapi juga semua kode kernel, termasuk semua device drivers, sistem
berkas, dan kode jaringan, hadir dalam satu address space yang sama. Kernel
Linux membentuk inti dari sistem operasi Linux. Dia menyediakan semua fungsi
yang diperlukan untuk menjalankan proses, dan menyediakan layanan sistem untuk
memberikan pengaturan dan proteksi akses ke sumber daya perangkat keras. Kernel
mengimplementasi semua fitur yang diperlukan supaya dapat bekerja sebagai
sistem operasi. Namun, jika sendiri, sistem operasi yang disediakan oleh kernel
Linux sama sekali tidak mirip dengan sistem UNIX. Dia tidak memiliki banyak
fitur ekstra UNIX, dan fitur yang disediakan tidak selalu dalam format yang diharapkan
oleh aplikasi UNIX. Interface dari sistem operasi yang terlihat oleh aplikasi
yang sedang berjalan tidak ditangani langsung oleh kernel, akan tetapi aplikasi
membuat panggilan (calls) ke perpustakaan sistem, yang kemudian memanggil
layanan sistem operasi yang dibutuhkan.
• Pustaka sistem
Menentukan
kumpulan fungsi standar dimana aplikasi dapat berinteraksi dengan kernel, dan
mengimplementasi hampir semua fungsi sistem operasi yang tidak memerlukan hak
penuh atas kernel.
Pustaka sistem menyediakan berbagai
tipe fungsi. Pada level yang paling sederhana, mereka membolehkan aplikasi
melakukan permintaan pada layanan sistem kernel. Membuat suatu system calls melibatkan transfer kontrol
dari mode pengguna yang tidak penting ke mode kernel yang penting; rincian dari
transfer ini berbeda pada masing-masing arsitektur. Pustaka bertugas untuk mengumpulkan
argumen system-call dan, jika perlu, mengatur argumen tersebut dalam bentuk khusus
yang diperlukan untuk melakukan system
calls. Pustaka juga dapat menyediakan versi lebih kompleks dari system call
dasar. Contohnya, fungsi buffered file-handling dari bahasa C semuanya
diimplementasikan dalam pustaka sistem, yang memberikan kontrol lebih baik
terhadap berkas M/K daripada system calls
kernel dasar. Pustaka juga menyediakan rutin yang tidak ada hubungan dengan
system call, seperti algoritma penyusunan (sorting), fungsi matematika, dan
rutin manipulasi string (string manipulation). Semua fungsi yang diperlukan
untuk mendukung jalannya aplikasi UNIX atau POSIX diimplementasikan dalam pustaka
sistem.
• Utilitas sistem
Program yang
melakukan pekerjaan manajemen secara individual.
Sistem Linux mengandung banyak
program-program pengguna-mode: utilitas sistem dan utilitas pengguna.
Utilitas sistem termasuk semua program yang diperlukan untuk menginisialisasi
sistem, seperti program untuk konfigurasi alat jaringan (network device)
atau untuk load modul kernel. Program server yang berjalan secara kontinu juga
termasuk sebagai utilitas sistem; program semacam ini mengatur permintaan
pengguna login, koneksi jaringan yang masuk, dan antrian printer. Tidak semua
utilitas standar melakukan fungsi administrasi sistem yang penting. Lingkungan pengguna
UNIX mengandung utilitas standar dalam jumlah besar untuk melakukan pekerjaan sehari-hari,
seperti membuat daftar direktori, memindahkan dan menghapus file, atau
menunjukkan isi dari sebuah file. Utilitas yang lebih kompleks dapat melakukan
fungsi text-processing, seperti menyusun data tekstual atau melakukan pattern
searches pada input teks. Jika digabung, utilitas-utilitas tersebut membentuk
kumpulan alat standar yang diharapkan oleh pengguna pada sistem UNIX mana saja;
walaupun tidak melakukan fungsi sistem operasi apa pun, utilitas tetap merupakan
bagian penting dari sistem Linux dasar.
0 komentar:
Posting Komentar