1. Struktur Sederhana
Pada awalnya, sistem operasi dimulai
sebagai sistem yang kecil, sederhana, dan terbatas. Lama kelamaan,
sistem operasi semakin berkembang menjadi suatu sistem yang lebih besar
dari awalnya. Dalam perkembangannya, ada sistem yang terstruktur dengan
kurang baik, dan ada juga yang baik. Contoh sistem yang terstruktur
kurang baik adalah MS-DOS. Sistem operasi ini dirancang sedemikian rupa
agar mampu berjalan pada hardware yang terbatas. Memang memiliki
struktur, tapi belum terbagi-bagi dalam modul-modul, dan interface serta
fungsionalitas tidak begitu jelas batasannya.
Begitu pula dengan UNIX, yang pada awalnya juga terbatas oleh hardware
yang ada. Sistem ini dapat dibagi menjadi dua bagian, yaitu kernel dan
program sistem. Kernel sendiri dapat dibagi menjadi dua bagian, yaitu
device driver dan interface, yang kemudian terus berkembang seiring
dengan perkembangan UNIX. Berikut ini adalah skema struktur UNIX.
Gambar 7.1. Struktur UNIX
Versi-versi UNIX selanjutnya dirancang agar mampu bekerja dengan
hardware yang lebih baik. Begitu pula dengan strukturnya, yang dibuat
makin modular.
2. Struktur Berlapis
Rasanya susah membayangkan sekian banyak fungsi yang disediakan oleh
sistem operasi diimplementasikan dalam satu program saja. Karena itu,
lebih mudah untuk membaginya dalam sejumlah layer/lapisan. Tentu setiap
lapisan memiliki fungsinya sendiri-sendiri, dan juga bisa menambah
fungsi-fungsi lain, berdasarkan fungsi-fungsi yang tersedia pada
lapisan-lapisan lain yang dibawahnya.
Lapisan-lapisan sistem operasi adalah suatu abstraksi dari enkapsulasi
sekumpulan struktur data dalam sistem operasi. Lapisan-lapisan yang
berada di atas bisa mengakses operasi-operasi yang tersedia di
lapisan-lapisan bawahnya. Stallings memberi model yang lebih detail,
sebagai berikut:
• Lapisan 1. Berisi berbagai sirkuit elektronik, misal register, memory cells, dan logic gate.
• Lapisan 2. Berisi instruksi prosesor, misal instruksi aritmatika, instruksi transfer data, dsb.
• Lapisan 3. Penambahan konsep seperti prosedur/subrutin, maupun fungsi yang me-return nilai tertentu.
• Lapisan 4. Penambahan interrupt.
• Lapisan 5. Program sebagai sekumpulan instruksi yang dijalankan oleh prosesor.
• Lapisan 6. Berhubungan dengan secondary storage device, yaitu membaca/menulis head, track, dan sektor.
• Lapisan 7. Menciptakan alamat logika untuk proses. Mengatur
hubungan antara main memory, virtual memory, dan secondary memory.
• Lapisan 8. Program sebagai sekumpulan instruksi yang dijalankan oleh prosesor.
• Lapisan 9. Berhubungan dengan secondary storage device, yaitu membaca/menulis head,track, dan sektor.
• Lapisan 10. Menciptakan alamat logika untuk proses. Mengatur
hubungan antara main memory, virtual memory, dan secondary memory.
• Lapisan 11. Program sebagai sekumpulan instruksi yang dijalankan oleh prosesor.
• Lapisan 12. File adalah objek yang memiliki nama dan ukuran. Abstraksi dari lapisan 9.
• Lapisan 13. Menyediakan interface agar bisa berinteraksi dengan pengguna.
Lapisan-lapisan dari 1-4 bukanlah bagian dari sistem operasi dan masih menjadi bagian dari prosesor secara ekslusif.
Lapisan ke-5 hingga ke-7, sistem operasi sudah berhubungan dengan
prosesor. Selanjutnya dari lapisan ke-8 hingga 13, sistem operasi
berhubungan dengan media penyimpanan maupun perlatan-peralatan lain yang
ditancapkan, misalnya peralatan jaringan.
3. Mikro Kernel
Pada pembahasan "Struktur Sederhana", sempat disinggung istilah
"kernel". Apakah kernel itu? Kernel adalah komponen sentral dari sistem
operasi. Ia mengatur hal-hal seperti interrupt handler(untuk menyediakan
layanan interupsi), process scheduler(membagi-bagi proses dalam
prosesor), memory management, I/O, dan sebagainya. Atau dengan kata
lain, ia adalah jembatan antara hardware dengan software.
Cara tradisional untuk membangun sistem operasi adalah dengan membuat
kernel monolitis, yaitu semua fungsi disediakan oleh kernel, dan ini
menjadikan kernel suatu program yang besar dan kompleks. Cara yang lebih
modern, adalah dengan menggunakan kernel mikro. Pada awalnya, konsep
mikro kernel dikembangkan pada sistem operasi Mach. Ide dasar dari
pengembangan kernel mikro adalah bahwa hanya fitur-fitur yang perlu saja
yang diimplementasikan dalam kernel (mengenai fitur-fitur apa saja yang
perlu diimplementasikan, ini bisa berbeda tergantung desain sistem
operasi).
Walaupun garis pembatas mengenai apa saja yang berada di dalam dan luar
kernel mikro bisa berbeda antara desain yang satu dengan yang lain,
namun ada karakteristik yang umum, yaitu servis-servis yang umumnya
menjadi bagian sistem operasi menjadi subsistem eksternal yang bisa
berinteraksi satu sama lain dan dengan kernel tentunya. Ini mencakup
device driver, file system, virtual memory manager, windowing system,
dan security devices. Pendekatan kernel mikro menggantikan pendekatan
berlapis yang vertikal tradisional.
Komponen-komponen sistem operasi yang berada di luar kernel mikro
diimplementasikan sebagai server process dan berkomunikasi dengan
message passing via kernel mikro. Misalnya jika user ingin membuat
berkas baru, dia mengirim pesan ke file system server, atau jika ingin
membuat proses baru, dia mengirimkan pesan ke process server.
Gambar 7.2. Struktur kernel mikro
Beberapa kelebihan kernel mikro:
a. Interface yang seragam. Proses tidak lagi dibedakan, baik antara
kernel-level maupun user-level, karena semuanya berkomunikasi via
message passing.
b. Extensibility . Bisa menambahkan fitur-fitur baru tanpa perlu melakukan kompilasi ulang.
c. Flexibility . Fitur-fitur yang sudah ada bisa dikurangi, atau
dimodifikasi sesuai dengan kebutuhan sehingga menjadi lebih efisien.
Misalnya tidak semua pengguna membutuhkan security yang sangat ketat,
atau kemampuan untuk melakukan distributed computing.
d. Portability . Pada kernel mikro, semua atau sebagian besar kode
yang prosesor-spesifik berada di dalamnya. Jadi, proses porting ke
prosesor lain bisa dilakukan dengan relatif sedikit usaha. Pada kelompok
desktop misalnya, tampaknya dominasi Intel makin kuat. Tapi, sampai
seberapa lama itu bisa bertahan? Karena itulah, portability adalah salah
satu isu yang sangat penting.
e. Reliability . Semakin besar suatu software, maka tentulah semakin
sulit untuk menjamin reliability-nya. Desain dengan pendekatan berlapis
sangatlah membantu, dan dengan pendekatan kernel mikro bisa lebih lagi.
Kernel mikro dapat dites secara ekstensif .Karena dia menggunakan API
yang sedikit, maka bisa meningkatkan kualitas code di luar kernel.
f. Support for object-oriendted OS . Model kernel mikro sangat sesuai
untuk mengembangkan sistem operasi yang berbasis object-oriented.
Contoh sistem operasi yang menggunakan kernel mikro adalah MacOS X dan
QNX.
3.1 Proses Boot
Booting adalah istilah untuk menghidupkan komputer. Secara umum, gambaran yang terjadi pada proses boot adalah sebagai berikut.
• Saat komputer dihidupkan, memorinya masih kosong. Belum ada
instruksi yang dapat dieksekusi oleh prosesor. Karena itu, prosesor
dirancang untuk selalu mencari alamat tertentu di BIOS ROM. Pada alamat
tersebut, terdapat sebuah instruksi jump yang menuju ke alamat eksekusi
awal BIOS. Setelah itu, prosesor menjalankan power-on-self test(POST),
yaitu memeriksa kondisi hardware yang ada.
• Sesudah itu, BIOS mencari video card. Secara khusus, dia mencari
program BIOS milik video card. Kemudian system BIOS menjalankan video
card BIOS. Barulah setelah itu, video card diinisalisasi.
• Kemudian BIOS memeriksa ROM pada hardware yang lain, apakah
memiliki BIOS tersendiri apakah tidak. Jika ya, maka akan dieksekusi
juga.
• BIOS melakukan pemeriksaan lagi, misal memeriksa besar memori dan
jenis memori. Lebih lanjut lagi, dia memeriksa hardware yang lain,
seperti disk. Lalu dia mencari disk dimana proses boot bisa dilakukan,
yaitu mencari boot sector. Boot sector ini bisa berada di hard disk,
atau floppy disk.
3.2. Kompilasi Kernel
Pada dasarnya Linux hanyalah sebuah kernel. Sedangkan program-program
lain seperti teks editor, browser, kompilator, dan seterusnya melengkapi
kernel menjadi suatu paket sistem operasi. Tentunya agar kernel dapat
bekerja dengan optimal, perlu dilakukan konfigurasi sesuai dengan
hardware yang ada. Biasanya, kompilasi kernel dilakukan saat hendak
menambahkan device baru yang belum dikenali sebelumnya atau jika hendak
mengaktifkan fitur tertentu pada sistem operasi. Pada proses kompilasi
kernel, sangat mungkin terjadi kesalahan. Karena itu, jangan lupa
membackup kernel yang lama, dan menyiapkan emergency boot disk. Pada
penjelasan berikut, diasumsikan kernel yang digunakan adalah versi
2.6.20 dan komputer menggunakan prosesor Intel.
Beberapa tahapan dalam kompilasi kernel:
a. Mendownload kernel. Ada banyak situs di internet tempat
mendownload kernel. Tapi ada baiknya jika anda mengunjungi situs
resminya, yaitu "kernel.org". Anda bisa melihat beraneka versi kernel
dan patchnya disana.Format penamaan kernel Linux adalah
linux-X.YY.ZZ.tar.gz atau linux-X.YY.ZZ.tar.bz2, dimana: X = major
number; Y = minor number; ZZ = revision number. Contoh: linux-2.6.20.
Angka 2 adalah major number (angka 2 ini jarang berubah dan baru berubah
jika sudah terjadi perubahan besar) Angka 6 adalah minor number (karena
6 adalah bilangan genap, berarti kernel ini versi stabil) Angka 20
menunjukkan nomor revisi.
b. Mengekstrak kernel. Source code kernel Anda yang lama bisa dilihat
di direktori /usr/src/linux. Supaya source code kernel sebelumnya tidak
hilang, ekstraklah kernel yang baru di direktori yang berbeda, misal
/usr/src/linux-2.6.20 (tentunya sesuaikan angka-angka tersebut dengan
versi kernel yang anda pakai).
c. Buat symbolic link.
ln -s linux-2.6.20 linux
d.
Konfigurasi kernel. Sebelum proses kompilasi, anda memiliki 2 pilihan,
yaitu membuat konfigurasi baru, atau menggunakan konfigurasi kernel
sebelumnya. Jika anda ingin membuat konfigurasi baru, maka jalankan
perintah: make xconfig (atau make menuconfig). Pada tahap ini, anda
mengkonfigurasi kernel sesuai dengan hardware yang ada di komputer anda.
Isinya antara lain mengatur jenis prosesor, memory, networking, USB,
dsb. Dengan ini, kernel bisa bekerja optimal pada hardware yang ada
Setelah berkas configurasi (.config) terbentuk, anda bisa memulai proses
kompilasi. Sedangkan jika anda ingin menggunakan konfigurasi kernel
yang lama, anda bisa mengcopy berkas .config dari direktori kernel yang
lama ke direktori kernel yang baru, lalu menjalankan perintah: make
oldconfig
e. Kompilasi. Jalankan perintah "make bzImage". Proses kompilasi
kernel bisa memakan waktu cukup lama, dan sangat mungkin terjadi
kesalahan disitu. Jika ada kesalahan, coba lakukan lagi konfigurasi
kernel. Setelah itu, coba lakukan kompilasi lagi. Jika sukses, terbentuk
berkas bzImage di/usr/src/linux-2.6.20/arch/i386/boot. Copy ke
direktori /boot dengan perintah:
f.
cp arch/i386/boot/bzImage /boot/vmlinuz-2.6.20
Selanjutnya, kompilasi modul. Jalankan perintah :
make modules
diikuti oleh
make modules_install
Terbentuk berkas System.map. Copylah ke /boot dengan perintah:
cp System.map /boot/System.map-2.6.20
Supaya kernel yang baru bisa digunakan, ubahlah konfigurasi bootloader
anda supaya ia mengetahui dimana kernel yang baru berada. Misal jika
anda menggunakan Lilo, modifikasi berkas lilo.conf (ada di /etc), atau
jika anda menggunakan grub, modifikasi berkas menu.lst (ada di
/boot/grub). Khusus jika anda menggunakan lilo, jalankan perintah lilo.
Setelah itu, reboot komputer anda.
4. Rangkuman
Ada beberapa cara untuk menghubungkan komponen-komponen yang ada didalam
suatu sistem operasi. Pertama, dengan menggunakan struktur sederhana.
Kedua, dengan pendekatan terlapis atau level. Lapisan yang lebih rendah
menyediakan layanan untuk lapisan yang lebih tinggi. Ketiga, dengan
pendekatan kernel mikro, yaitu sistem operasi disusun dalam bentuk
kernel yang lebih kecil.
Sistem berprosesor jamak mempunyai lebih dari satu CPU yang mempunyai
hubungan yang erat; CPU-CPU tersebut berbagi bus komputer, dan
kadang-kadang berbagi memori dan perangkat yang lainnya. Sistem seperti
itu dapat meningkatkan throughput dan reliabilititas.
Sistem hard real-time sering kali digunakan sebagai alat pengontrol
untuk applikasi yang dedicated/spesifik tugas tertentu. Sistem operasi
yang hard real-time mempunyai batasan waktu yang tetap yang sudah
didefinisikan dengan baik.Pemrosesan harus selesai dalam batasan-batasan
yang sudah didefinisikan, atau sistem akan gagal.
Sistem soft real-time mempunyai lebih sedikit batasan waktu yang keras,
dan tidak mendukung penjadwalan dengan menggunakan batas akhir. Sistem
ini menggunakan prioritas untuk memilih tugas-tugas mana yang harus
terlebih dahulu dikerjakan
Sistem terdistribusi adalah sistem yang menjalankan bagian-bagian
program di beberapa komputer yang berbeda. Komputer-komputer itu
terhubung dalam suatu jaringan. Sistem terdistribusi adalah salah satu
bentuk dari paralelisme
Sistem terkluster adalah sistem yang terdiri dari banyak komputer yang
disusun sedemikian rupa untuk menyatukan sumber daya yang ada dan
seolah-olah dapat dipandang sebagai satu komputer saja. Model seperti
ini sering digunakan untuk membangun super komputer.
Pengaruh dari internet dan WWW telah mendorong pengembangan sistem
operasi modern yang menyertakan web browser serta perangkat lunak
jaringan dan komunikasi sebagai satu kesatuan. Multiprogramming dan
sistem time-sharing meningkatkan kemampuan komputer dengan melampaui
batas operasi (overlap) CPU dan M/K dalam satu mesin. Hal seperti itu
memerlukan perpindahan data antara CPU dan alat M/K, ditangani baik
dengan polling atau interrupt-driven akses ke M/K port Agar komputer
dapat menjalankan suatu program, maka program tersebut harus berada di
memori utama.
Sumber : http://bebas.vlsm.org/v06/Kuliah/SistemOperasi/BUKU/SistemOperasi-4.X-1/