Senin, 11 Januari 2010

Menulis Sistem Operasi Lagi ah ..

Mumpung lagi semangat-semangatnya untuk meneruskan hobi membuat sistem operasi (OS) yang terhenti beberapa saat lalu, saatnya kembali menelaah teori, konsep dan segala hal yang diperlukan untuk menulis sebuah OS.



Mari kita mulai dengan apa-apa saja yang kita butuhkan atau perlu diketahui

  • arsitektur komputer, khususnya yang menjadi tujuan implementasi daripada OS yang kita buat, dalam hal ini kita pilih aja platform x86 32bit (80386 hingga Pentium)
  • konsep dan struktur OS
  • pengetahuan bahasa assembly 80386 dan C. Bahasa assembly x86 ini mutlak diketahui karena bagaimana pun ada beberapa bagian yang bergantung dengan mesin perlu ditulis dengan bahasa assembly x86, namun tidak perlu khawatir, populasinya paling-paling hanya 1 – 3% saja. Sedangkan bahasa C mutlak digunakan untuk menulis semua komponen utama dari OS, mengapa C? Bahasa ini cukup sederhana, fleksible dan portable.
  • compiler, kita pakai aja GNU GCC, gratis dan komplit.
  • alat bantu untuk melakukan percobaan dan proses debugging, kita pakai bochs, aplikasi open source ini sangat bagus, selain gratis, mendukung platform x86 dari 16, 32bit hingga 64bit dan yang terpenting terdapat tool debugger yang berguna untuk membantu proses pembuatan OS ini.


Konsep dan Struktur OS

Secara garis besar, struktur sistem operasi terbagi atas 3, yakni monolithic, microkernel dan hibrid, sebenarnya masih ada lainnya seperti exokernel, dll. Namun tidak akan kita bahas karena implementasi didunia nyata sangat minim.

Konsep monolithic merupakan konsep tertua dimana sebuah kernel gendut yang didalamnya terdapat semua fungsi OS, komponen pendukung beserta driver-drivernya. Hampir semua prosedur dapat dipanggil oleh prosedur apapun. Keuntungannya gak ribet dan secara umum minim overhead. Kerugiannya itu tingkat bug sangat tinggi, susah di debug, sangat kompleks. Contoh OS monolithic itu adalah semua sistem operasi UNIX beserta turunannya seperti FreeBSD, NetBSD, OpenBSD, OpenSolaris, AIX, dll. Linux juga termasuk sebagai monolithic.

Konsep microkernel diperkenalkan untuk mengatasi masalah konsep monolithic, secara umum sebuah kernel microkernel sangat lah kecil karena hanya berisi komponen minimum seperti


Sedangkan semua komponen lain ditempatkan di user space sebagai 'server' process. Untuk komunikasi antara 'server' process dengan kernel maupun 'server' process lainnya digunakan message passing.

Keuntungan daripada konsep microkernel jelas tertuju pada peningkatan realibilitas sistem operasi, jumlah bug jauh lebih rendah dari pada monolithic, sistem terdistribusi, keamanan, dll. Kerugiannya adalah kinerja, karena bertumpu pada sistem message passing.

Proses Booting

Secara umum proses booting hingga OS dijalankan dapat gambarkan sebagai berikut

Computer On → POSTBIOS membaca Boot Sector dan meletakkan ke alamat memori 0x7c00 lalu dieksekusi → memanggil Boot Loader (optional) → memanggil Kernel (OS)

Untuk mempersingkat waktu kita akan memakai program GRUB sebagai pengganti Boot Sector dan boot loader untuk memanggil kernel OS beserta komponen pendukung lainnya

Tool GRUB ini akan mempersingkat waktu kita untuk menulis rutin boot loader, sehingga waktu yang ada bisa kita pakai untuk berkonsentrasi ke penulisan OS itu sendiri.

Tidak ada komentar:

Posting Komentar