Dalam rancangan keseluruhan, Linux menyerupai
implementasi UNIX non-microkernel yang lain. Ia adalah sistem yang multi-user,
multi-tasking dengan alat-alat UNIX-compatible yang lengkap. Sistem berkas Linux mengikuti semantik
tradisional UNIX, dan model jaringan standar UNIX diimplementasikan secara
keseluruhan. Ciri internal desain Linux telah dipengaruhi oleh sejarah
perkembangan sistem operasi ini.
Walau pun Linux dapat berjalan pada berbagai macam
platform, pada awalnya dia dikembangkan secara eksklusif pada arsitektur PC.
Sebagian besar dari pengembangan awal tersebut dilakukan oleh peminat
individual, bukan oleh fasilitas riset yang berdana besar, sehingga dari awal
Linux berusaha untuk memasukkan fungsionalitas sebanyak mungkin dengan dana
yang sangat terbatas.
Prinsip Desain Linux
Akibat semakin berkembangnya teknologi PC, kernel
Linux juga semakin lengkap dalam mengimplementasikan fungsi UNIX. Cepat dan
efisien merupakan tujuan desain yang penting, tetapi akhir-akhir ini
konsentrasi perkembangan Linux lebih pada tujuan desain yang ketiga yaitu
standarisasi. Standar POSIX terdiri dari kumpulan spesifikasi dari aspek
berbeda kelakuan sistem operasi. Ada dokumen POSIX untuk fungsi sistem operasi
biasa dan untuk ekstensi seperti proses untuk thread dan operasi real-time.
Linux di desain supaya sesuai dengan dokumen POSIX yang relevan; sedikitnya ada
dua distribusi Linux yang sudah memperoleh sertifikasi ofisial POSIX.
Karena Linux memberikan interface standar ke
programmer 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 perpustakaan yang berbeda
tersedia untuk mengimplementasi semantik BSD di tempat dimana kedua kelakuan
sangat berbeda.
Ada banyak standar lain di dunia UNIX, tetapi
sertifikasi penuh 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 system operasi terhadap kebanyakan standar. Mendukung aplikasi
yang luas penting untuk semua sistem operasi sehingga implementasi dari standar
merupakan tujuan utama pengembangan Linux walau pun 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.
Komponen
Sistem Linux
Sistem Linux terdiri dari tiga bagian kode penting:
1.
Kernel: Bertanggung jawab
memelihara semua abstraksi penting dari sistem operasi, termasuk hal seperti
proses-proses dan memori virtual.
2.
Perpustakaan system (system Library): menentukan kumpulan fungsi standar dimana aplikasi dapat
berinteraksi dengan kernel, dan mengimplementasi hampir semua fungsi sistem
operasi yang tidak memerlukan hak penuh atas kernel.
3. Utilitas Sistem (System Utility): adalah program yang melakukan pekerjaan manajemen secara individu dan
khusus.
Kernel
v
Sistem operasi modern lain mengadopsi arsitektur message-passing bagi
kernel internal mereka, Linux memakai model historis UNIX, dimana kernel
diciptakan sebagai biner yang tunggal dan monolitis. Alasan utamanya adalah
untuk meningkatkan performa.
v
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 scheduling inti dan kode memori virtual menempati address space ini,
semua kode kernel, termasuk semua device drivers, sistem berkas, dan kode
jaringan, hadir dalam satu address space yang sama.
v
Kernel Linux membentuk inti dari
sistem operasi Linux, yang menyediakan semua fungsi yang diperlukan untuk menjalankan proses,
dan menyediakan servis sistem untuk memberikan pengaturan dan proteksi akses ke
sumber daya (resource) perangkat keras.
v
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.
v
Kernel Linux tidak memiliki banyak fitur ekstra UNIX, dan fitur yang
disediakan tidak selalu dalam format yang diharapkan oleh aplikasi UNIX.
v
Interface dari sistem operasi yang terlihat oleh aplikasi yang sedang
berjalan tidak dipelihara secara langsung oleh kernel. Melainkan, aplikasi
membuat panggilan (calls) ke library sistem, yang kemudian memanggil servis
sistem operasi yang dibutuhkan.
v
Kernel Linux
terdiri dari beberapa bagian penting, seperti:
v
manajemen proses,
v
manajemen memori,
v
hardware device
drivers,
v
filesystem
drivers,
v
manajemen
jaringan dan lain-lain.
Namun bagian yang terpenting ialah manajemen proses dan manajemen
memori.
§ Manajemen
memori menangani daerah pemakaian memori, daerah swap, bagian-bagian kernel dan
untuk buffer cache.
§ Manajemen
proses menangani pembuatan proses-proses dan penjadwalan proses. Pada bagian
dasar kernel berisi hardware device drivers untuk setiap jenis hardware yang
didukung.
Selain
mengatur penggunaan memori, piranti masukan keluaran (perangkat I/O),
proses-proses, pemakaian file pada file system dan lain-lain, kernel juga
menyediakan sekumpulan layanan yang digunakan untuk mengakses kernel yang
disebut “system call”. System call ini digunakan untuk mengimplementasikan
berbagai layanan yang dibutuhkan oleh sistem operasi.
Perpustakaan Sistem (System Library)
v
Perpustakaan sistem (termasuk sekumpulan layanan yang dimiliki kernel) menyediakan
banyak tipe fungsi. Pada level yang paling mudah, mereka membolehkan aplikasi
melakukan permintaan pada servis sistem kernel.
v
Library system membuat sebuah panggilan sistem (system calls), melibatkan
transfer kontrol dari mode user yang tidak penting ke mode kernel yang penting,
detil dari transfer ini berbeda pada masing-masing arsitektur.
v
library bertugas untuk mengumpulkan argumen system-call dan jika perlu
mengatur argumen tersebut dalam bentuk khusus yang diperlukan untuk melakukan
system call.
v
Semua fungsi yang diperlukan untuk mendukung jalannya aplikasi UNIX atau
POSIX diimplementasikan dalam perpustakaan sistem.
v Sistem Library dan semua program-program lainnya yang
berjalan di atas kernel disebut “user
mode”.
v
Perbedaan
mendasar antara perpustakaan sistem dan program aplikasi adalah perpustakaan
sistem dibutuhkan agar suatu sistem operasi dapat berjalan sedangkan program
aplikasi adalah program yang dibutuhkan untuk menjalankan suatu aplikasi
tertentu. Contoh : daemon merupakan system library dan pengolah kata (word
processor) merupakan program aplikasi.
Utilitas Sistem
Sistem linux mengandung banyak
program-program user-mode:
v
utilitas sistem dan
v
utilitas user.
Utilitas sistem termasuk semua
program yang diperlukan untuk meng-inisialisasi 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 user 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 toolset
standar yang diharapkan oleh user pada sistem UNIX mana saja, walau pun tidak
melakukan fungsi sistem operasi apapun, utilitas tetap merupakan bagian penting
dari sistem Linux dasar.
0 komentar:
Posting Komentar