Pembuatan Sistem Operasi Komputer Sederhana dengan ....
ISSN 2356 - 4393
Pembuatan Sistem Operasi Komputer Sederhana dengan Menggunakan Bahasa Assembly Mochamad Rizqian Zulkarnaen1), Tedi Lesmana Marselino 2) Informatika, Institut Teknologi dan Bisnis Kalbis, Jakarta Jalan Pulomas Selatan Kav.22 Jakarta Timur 13210 1) Email:
[email protected] 2) Email:
[email protected] Abstract: 16-bit operating systems worth studying because it can be a reference for understanding the machine instructions on computer hardware and microcontroller devices. This research aims to develop a 16-bit operating system with functions essentially: the execution process, memory allocation, and file management. Posts in this study discusses how to manufacture core programs such as the operating system bootloader, kernel, shell, system calls, file management, and handling input-output on the keyboard, the mouse, disk, and memory using Assembly language programming with NASM compiler. Therefore, this study also discusses the workings of computer hardware as a knowledge base. The Waterfall method is used to create an application that meets the basic functions of the operating system. VirtualBox software is used as a container for additional operating systems so that the operating system is made to run on existing operating systems. Keywords: hardware, programs, kernel, system calls, process, memory Abstrak: Sistem operasi 16 bit layak diteliti karena dapat menjadi acuan untuk memahami instruksi mesin pada perangkat keras komputer dan perangkat microcontroller. Penelitian ini bertujuan mengembangkan sistem operasi 16 bit dengan fungsi-fungsi dasarnya yaitu eksekusi proses, pengalokasian memory, dan manajemen file. Tulisan dalam penelitian ini membahas cara pembuatan program-program inti sistem operasi seperti bootloader, kernel, shell, system calls, file management, dan penanganan input-output pada keyboard, mouse, disk, dan memory menggunakan bahasa pemrograman Assembly dengan compiler NASM. Oleh karena itu, penelitian ini juga membahas cara kerja perangkat keras komputer sebagai pengetahuan dasarnya. Untuk membuat aplikasi yang memenuhi fungsi-fungsi dasar sistem operasi tersebut digunakan metode Waterfall. Software VirtualBox digunakan sebagai penampung sistem operasi tambahan sehingga sistem operasi yang dibuat dapat berjalan pada sistem operasi yang sudah ada. Kata Kunci: perangkat keras, program, kernel, system calls, proses, memory
I. PENDAHULUAN Sistem operasi adalah seperangkat program yang mengelola sumber daya perangkat keras komputer, dan menyediakan layanan umum untuk aplikasi perangkat lunak. Tanpa sistem operasi di zaman sekarang, pengguna tidak dapat menjalankan aplikasi pada komputer mereka, kecuali aplikasi bootloader. Sistem operasi menyembunyikan segala kerumitan yang terdapat pada perangkat keras dengan menyediakan fungsi-fungsi tingkat mesin untuk menghindari kerumitan pemrograman sehingga memudahkan perancang program aplikasi [1]. Untuk memahami cara mengembangkan sistem operasi, maka tidak hanya diperlukan algoritma program yang baik, tetapi juga mengetahui bagaimana
perangkat keras komputer bekerja. Hal ini disebabkan karena sistem operasi harus bisa menangani aplikasiaplikasi yang berjalan di atasnya dan menangani perangkat-perangkat keras komputer. Fungsifungsi seperti eksekusi proses, alokasi memory, dan manajemen file merupakan fungsi-fungsi dasar yang harus dimiliki oleh sebuah sistem operasi. Sistem operasi yang akan dibuat dalam penelitian ini adalah sistem operasi 16 bit dengan kemampuan single-tasking. Sistem operasi ini merupakan langkah awal yang bagus dalam memahami sistem operasi yang lebih kompleks. Sistem operasi dibuat berdasarkan sistem operasi Mike OS Project. Source code yang terdapat pada Mike OS Project ini dibuat murni dengan bahasa Assembly dengan compiler NASM, sehingga diharapkan pembaca bisa tahu lebih
1
Kalbiscentia,Volume 2 No.1 Februari 2015
rinci apa yang sebenarnya terjadi dalam sebuah mesin komputer ketika komputer sedang berjalan [2]. Selain itu, penelitian ini juga dapat dijadikan acuan dalam memahami pemrograman microcontroller yang masih banyak menggunakan prosesor 16 bit. Pemrograman pada prosesor 16 bit juga banyak digunakan dalam pemrograman robotik. Hal ini disebabkan karena microcontroller dan robotik menggunakan sumber daya listrik yang lebih hemat dibandingkan dengan komputer pada masa sekarang. Prosesor dengan jumlah bit yang lebih kecil akan memakan sumber daya listrik yang lebih sedikit dibandingkan dengan prosesor dengan jumlah bit yang lebih banyak. Sistem operasi yang dibuat akan dapat disimpan dalam Floppy Disk dan di USB Removable Disk. Tetapi, dalam penelitian penulis memilih media USB karena lebih mudah mendapatkannya. Hasil akhir dari penelitian berupa program bootloader yang akan memanggil kernel utama yang memiliki fungsi-fungsi pokok antarmuka pengguna dengan sistem komputer. Kernel yang dibuat memiliki beberapa fungsi untuk mengeksekusi program pengguna atau ditempatkan sebagai proses, mengalokasikan memori untuk setiap proses sehingga tidak terjadi konflik pengalokasian antara proses-proses yang akan dijalankan, mendeteksi input keyboard dan mouse, menampilkan output ke layar monitor, memuat system calls ke dalam memory, dan menjalankan tugas dari menu-menu yang dipilih pengguna. Selain itu program kernel juga sudah memiliki kemampuan untuk mendeteksi penekanan tombol keyboard dan mouse, menampilkan output ke layar monitor, memuat beberapa system calls ke dalam memori dan menjalankan beberapa tugas dari menu-menu yang dapat dipilih oleh pengguna. Sistem operasi juga memiliki kemampuan shell sederhana untuk mengeksekusi perintah-perintah pengguna. Kepada sistem operasi ditambahkan fungsi interpreter bahasa BASIC untuk dapat mengeksekusi program-program dengan ekstension .bas. Kemudian sistem operasi ini akan diberi nama FROS.
II. METODE PENELITIAN Metode pengembangan sistem operasi yang dipilih yaitu metode pengembangan software Waterfall. Metode Waterfall dipilih karena dari data yang didapat oleh penulis, yaitu IBM dan Microsoft menggunakan metode Waterfall ketika membuat sistem operasi pertama mereka [3].
2
Gambar 1 Model Waterfall
Tahap Analisis kebutuhan sistem dilakukan dengan melihat lingkup sistem operasi yang akan dikembangkan. Pada dasarnya sistem operasi ini dimulai dari pembuatan program boot loader dan pemanggilan kernel. Kernel sendiri dibuat dengan memiliki fungsi-fungsi dasar berupa system calls. Untuk membuat kernel digunakan source program dari MIKE OS Project. Mike OS Project adalah proyek non profit yang bertujuan untuk meneliti dan membagi pengetahuan tentang sistem operasi. Tahap penentuan kebutuhan perangkat keras adalah penentuan platform yang akan digunakan di mana sistem operasi ini berjalan dan dikembangkan. Sistem operasi dikembangkan dengan memilih target arsitektur x86 prosesor dengan kompatibilitasnya. Pada arsitektur x86 terdapat dua mode pemrograman, yaitu real mode dan protected mode. Untuk mode real terdapat sistem interupsi yang siap digunakan di mana sudah disediakan oleh sistem BIOS, sedangkan untuk mode protected harus membuat system calls sendiri. Untuk itu peran source code yang ada di Mike OS Project di sini digunakan. Sebagai platform pengembangan digunakan mesin virtual. Dengan mesin virtual pengembangan menjadi lebih mudah dan murah. Mesin virtual memudah proses pengembangan yang membutuhkan proses restart atau booting berulang, untuk itu penggunakan mesin virtual akan sangat efektif dan efisien. Media sistem operasi sendiri menggunakan virtual floppy disk dan USB. Pada dasarnya kedua media tersebut adalah sama karena menggunakan format struktur disk yang terdiri atas track dan sector. Teknik penempatan bootloader, image disk, pembuatan sistem file dan peletakkan kernel akan
Pembuatan Sistem Operasi Komputer Sederhana dengan ....
menyesuaikan dengan struktur disk yang digunakan sebagai media. Alur kerja program adalah sistem virtual akan bekerja seperti pada mesin nyata komputer. Proses startup akan mencari media boot untuk dicari program bootloader-nya. Program bootloader kemudian mencari kernel dan menempatkannya pada lokasi memori tertentu. Setelah itu proses akan diserahkan kepada kendali shell atau sistem interface yang berinteraksi kepada pengguna. Keseluruhan proyek sistem operasi pada dasarnya terdiri dari bagian-bagian modul yang dieksekusi secara bergiliran sampai siap dialokasikan di memori untuk mengeksekusi setiap proses program yang sudah dipanggil oleh kernel. System calls akan menerjemahkan setiap instruksi yang dieksekusi dari proses. Tahap pengembangan menggunakan assembly NASM yang bersifat open source, yang cukup banyak digunakan di masyarakat. Proses pengembangan perlu menerjemahkan source code dari Mike OS Project ke dalam bentuk NASM. Sistem operasi diuji pada sistem virtual dan fisik menggunakan USB drive.
III. PEMBAHASAN A. Dasar Pengembangan Sistem Operasi 1.
Konsep Dasar Sistem Operasi
Sistem operasi adalah sebuah program yang bekerja sebagai penghubung antara program aplikasi dengan perangkat keras komputer dan mengendalikan setiap eksekusi dari semua program komputer [4]. Secara teknis, sistem operasi adalah perangkat lunak yang mengatur perangkat keras. Sistem operasilah yang mengatur alokasi sumber daya memory, processor, device, dan data sehingga dapat mengeksekusi program yang dijalankan oleh pengguna [5].
l
Manajemen memory
l
Manajemen proses
l
Manajemen file
l
Manajemen I/O
l
Manajemen media penyimpanan
l
Networking
l
Sistem Proteksi
l
Command Interpreter System
Tetapi dalam sistem operasi 16 bit, seperti dalam penelitian ini hanya ada manajemen memory, manajemen file, manajemen media penyimpanan, dan command interpreter system, karena sistem operasi ini bersifat single-tasking sehingga tidak membutuhkan manajemen proses dan tidak memerlukan driver untuk menangani proses input-output. Prinsip dasar sebuah program layak dikatakan sebagai sebuah sistem operasi adalah jika program tersebut dapat melakukan manajemen perangkat keras dan dapat menjalankan program yang berjalan di atas sistem operasi. Program yang berjalan di atas sistem operasi pun tidak perlu melakukan manajemen perangkat keras karena semuanya sudah dikendalikan oleh sistem operasi.
2.
Manajemen memory
Manajemen memory mengacu pada manajemen memory utama (main memory). Memory utama adalah deretan word atau byte dimana setiap word atau byte mempunyai alamat masing-masing. Memory utama memberikan penempatan data secara cepat yang bisa diakses secara langsung oleh CPU. Jadi, sebuah program yang akan dieksekusi, harus berada di memory utama. Memory utama disebut juga RAM (Random Access Memory). Sistem operasi melakukan beberapa aktifitas berikut dalam manajemen memory: a. Menjaga setiap alamat memory yang sedang dipakai dan yang tidak b. Memberikan memory ketika suatu proses membutuhkannya c. Mengambil memory ketika suatu proses telah selesai menggunakan
Gambar 2 Tampilan abstrak komponenkomponen dalam sistem komputer
Delapan komponen penting dari sistem operasi 32 bit adalah sebagai berikut [6]:
Untuk prosesor 32 bit, ada proteksi memori karena adanya protected-mode sehingga setiap proses mempunyai alamat memorinya masing-masing sehingga tidak ada dua proses yang mempunyai alamat yang sama. Hal inilah yang menyebabkan prosesor 32 bit mempunyai kemampuan multi-tasking. Berbeda
3
Kalbiscentia,Volume 2 No.1 Februari 2015
dengan prosesor 32 bit, prosesor 16 bit yang hanya mendukung real-mode dimana tidak ada proteksi memory sehingga memungkinkan ada dua proses yang bisa mempunyai alamat memory yang sama. Oleh karena itu, dalam prosesor 16 bit, harus dibuat sistem operasi yang bersifat single-tasking.
e. Terminated: Proses telah selesai mengeksekusi
3. Manajemen File Sebuah sistem berkas (file system) normalnya membentuk direktori-direktori untuk memudahkan pencarian. Direktori ini biasanya memiliki berkasberkas (files) dan direktori-direktori lainnya. Sistem operasi melakukan beberapa aktifitas berikut untuk sebuah manajemen berkas: a. Menjaga setiap informasi, lokasi, dan isi suatu file tetap pada tempatnya b. Memutuskan berkas mana yang akan mendapatkan sumber daya, sehingga pengguna dapat membuka dan menjalankan file yang dipilih c. Memberikan sumber daya kepada file yang membutuhkan
Gambar 3 Fase-fase proses
6. Kernel Secara program, sistem operasi adalah sebuah kernel, yaitu program yang terus berjalan selama komputer dijalankan. Kernel merupakan jantung dari sistem operasi. Semua proses input dan output yang berlangsung selama komputer berjalan diatur oleh kernel, seperti pembacaan dan penulisan terhadap disk, manajemen memory, dan penjadwalan program aplikasi [6].
c. Manupulasi sistem file
Semua aplikasi yang berjalan di atas kernel harus mendapat izin dari kernel agar aplikasi tersebut dapat berjalan di komputer. Contohnya, ketika seorang pengguna membuka sebuah web browser, maka yang terjadi sebenarnya adalah kernel mengecek input dari pengguna, bisa berupa input keyboard atau mouse, lalu kernel mengecek sumber daya yang ada pada komputer untuk menentukan apakah program ini boleh dijalankan, jika boleh maka kernel akan memanggil alamat instruksi awal yang terdapat pada browser tersebut lalu browser akan berjalan.
d. Mendeteksi kesalahan
7. Shell
d. Mengambil sumber daya apabila sudah tidak membutuhkan
4. Layanan-layanan dalam sistem operasi Beberapa layanan yang biasa diberikan oleh sistem operasi adalah sebagai berikut: a. Eksekusi program b. Operasi input-output
e. Alokasi sumber daya f. Proteksi
5. Memahami proses Proses dapat diartikan sebagai program yang sedang berjalan. Proses juga memiliki fase-fase keadaan, yaitu: a. New: Proses sedang diciptakan b. Ready: Proses sedang menunggu memberikan tugas ke prosesor
untuk
c. Running: Instruksi proses sedang dijalankan d. Waiting: Proses sedang menunggu sesuatu terjadi (seperti menunggu operasi I/O sampai dengan selesai)
4
Shell adalah aplikasi yang menghubungkan pengguna komputer dengan sistem operasi. Segala perintah yang diberikan oleh pengguna komputer akan melalui perantara shell, agar bisa diproses untuk memberikan output yang diinginkan. Contoh sebuah shell adalah Command Prompt pada Windows. Shell ada yang berada di dalam kernel, ada juga yang berada di luar kernel. Dalam sistem operasi ini, shell berada di luar kernel, tepatnya ada di program command.bin.
8. System Calls System Calls, yang merupakan interface untuk layanan sistem operasi, adalah sekumpulan fungsi yang ditawarkan sistem operasi untuk digunakan oleh aplikasi pengguna. Fungsi-fungsi ini menjelaskan
Pembuatan Sistem Operasi Komputer Sederhana dengan ....
perilaku dari mesin virtual. Programmer dapat menulis program mereka untuk berjalan di atas mesin virtual ini tanpa perlu memperhatikan perangkat keras di mana aplikasi tersebut sebenarnya berjalan. Hal ini selain mempermudah penulisan program juga memudahkan porting ke perangkat keras secara langsung [6]. Bila sebuah fungsi dalam system calls dipanggil, maka system akan mengeksekusi instruksi trap, yaitu interrupt yang dihasilkan oleh perangkat lunak, yang akan mengubah mode operasi dari user mode ke kernel mode dan memindahkan kontrol ke sistem operasi. Sistem operasi akan menentukan call mana yang dipanggil dan memanggil kode kernel yang tepat. System calls sendiri merupakan kumpulan libray yang sudah disediakan oleh sistem operasi. Pada UNIX, system calls ini dinamakan POSIX, sedangkan pada Windows dinamakan Win32 API. Pada sistem-sistem operasi tersebut, system calls dibuat dengan bahasa C atau C++. Tabel 1 adalah beberapa perbandingan antara system calls POSIX dan Win32: Tabel1 1Perbandingan Perbandingan system system calls dan Win32 Tabel callsPOSIX POSIX dan Win32 POSIX
Win32
Deskripsi
fork()
CreateProcess()
Menciptakan proses baru
open()
CreateFile()
Membuka file untuk baca dan tulis
close()
CloseHandle()
Menutup file yang sudah dibuka
read()
ReadFile()
Membaca data dari file ke buffer
write()
WriteFile()
Menulis data dari buffer ke file
mkdir()
CreateDirectory()
Membuat direktory baru
rmdir()
RemoveDirectory()
Menghapus directory yang kosong
unlink()
DeleteFile()
Menghapus file
Tabel 2 Perangkat keras yang dibutuhkan
Selain memudahkan menulis program dengan adanya system calls, system calls juga membuat No. Jenis Spesifikasi 1. Processor Intel Pentium IV 2,6 bahasa-bahasa program tingkat tinggi yang berjalan GHz atau lebih di atas sistem operasi menjadi portable. Sebagai 2. RAM 2 GB atau lebih, 192 contoh, dalam bahasa programMB C, kita tahu bahwa untuk mesin untuk membuka suatu file kita perlu membuat objek virtual dari ofstream, misalnya output, kemudian kita 3. kelas Motherboard 4. filePS/2 atau buka denganmouse fungsi open(). touchpad pada laptop
Gambaran jelasnya seperti berikut: atau notebook
Keyboard 5. ofstream output;
6. Monitor output.open(“D:\berkas.txt”); 7. USB Removable Disk
-
Pada penggalan source code di atas, kita akan Tabel 3 Perangkat lunak yang dibutuhkan membuka file berkas.txt yang ada di drive D. Fungsi Jenis untuk bahasa C,Keterangan iniNo.berlaku tak masalah sistem 1. Sistem Operasi Sebagai sistem operasi operasi yang digunakan, sintaks di atas akan selalu Windows XP awal untuk membuat sama. Pada saat source codesistem itu di-compile, maka operasi FROS ini compiler C akan memanggil Sebagai system calls ada 2. Oracle VirtualBox mesinyang virtual di sistem operasi yang bersangkutan. penampung Jika sistem Guest 3.
Notepad++
4.
Netwide Assembler
Operating System Sebagai text-editor untuk bahasa pemrograman Assembly Sebagai Assembler
operasi tersebut adalah Unix, maka akan memanggil fungsi open() pada library POSIX (bahasa C memang sengaja dibuat untuk membuat sistem operasi Unix, jadi banyak kesamaan sintaks), lalu jika sistem operasi tersebut adalah Windows, maka akan memanggil fungsi CreateFile() pada Win32 API. Dari system calls, maka selanjutnya kernel yang akan mengambil alih untuk melaksanakan tugas yang dimaksud.
9. Bootloader Bootloader adalah bagian sistem operasi yang melakukan pengambil alihan tugas dari BIOS ke sistem operasi, selanjutnya bootloader akan menjalankan kernel sehingga tugas pun beralih kepada kernel. Pada bootloader juga tersimpan informasi-informasi yang dibutuhkan oleh sistem operasi [7]. Ketika seorang pengguna menekan tombol power pada komputer, kabel yang terhubung ke tombol akan mengirim sinyal elektronik ke motherboard, lalu motherboard akan meneruskan sinyal ke Power Supply. Sinyal elektronik tersebut mempunyai rangkaian data byte [8]. BIOS sendiri berisi program yang sudah dibuat sebelumnya di pabrik dimana komputer tersebut dibuat untuk melakukan beberapa tugas. BIOS tersimpan di dalam ROM (Read Only Memory). BIOS akan menjalankan beberapa tugas seperti menciptakan Interrupt Vector Tabel, memberikan beberapa interrupt services, dan menjamin semua perangkat keras dalam keadaan baik. Selanjutnya BIOS akan mencari bootable device seperti floppy disk, harddisk, USB Removable Disk, atau CD. Lalu BIOS akan mencari program bootloader pada device yang sesuai dengan pengaturan menu boot di BIOS dan memuatnya di memory pada alamat 0x07C0. Jika pada device tersebut tidak ditemukan program bootloader, maka BIOS akan memberikan pesan “No Operating System Found” lalu akan menghentikan sistem. Program bootloader harus berada dalam keadaan real-mode yang masih didukung prosesor 16 bit. Syarat sebuah program bisa menjadi program bootloader adalah program tersebut harus memuat instruksi awalnya di alamat 0x07C0, lalu program tersebut maksimal berukuran 512 byte, dimana 2 byte terakhir harus bernilai 0AA55h. Program bootloader akan melaksanakan beberapa tugas seperti mereset disk yang menjadi bootloader device tersebut, membaca sector-sector pada disk tersebut, lalu akan mencari file kernel.bin untuk kemudian tugas selanjutnya akan diberikan file kernel.bin tersebut, dan disitulah sistem operasi mulai berjalan.
5
Kalbiscentia,Volume 2 No.1 Februari 2015
10. Struktur Komputer
dari semua cluster yang ada di disk. Jika FAT hilang atau rusak, maka isi disk tak akan bisa dibaca oleh sistem operasi. Ada beberapa tipe FAT, yaitu FAT12, FAT16, dan FAT32 [10]. Dalam sistem operasi ini, FAT12 yang akan dipakai. FAT12 ini juga dipakai oleh sistem operasi DOS. Struktur harddisk mirip dengan floppy disk, hanya saja harddisk bisa terdiri dari banyak kepingan yang disebut platter, dan floppy hanya ada satu. Untuk pembuatan sistem operasi FROS ini, penulis hanya membahas struktur dari perangkat keras floppy disk.
Gambar 4 Struktur komputer [9]
Gambar 4 adalah garis besar dari struktur perangkat keras komputer. CPU atau prosesor, RAM, dan peralatan-peralatan lainnya seperti keyboard, mouse, monitor, dan harddisk, semuanya saling terhubung dengan system bus yang terdapat pada motherboard.
Meski sistem operasi ini juga bisa berjalan pada media USB, itu disebabkan karena media USB tersebut nantinya akan diformat menjadi seperti floppy disk dengan aplikasi flashnul. Dengan begitu, struktur pada USB tersebut akan memiliki struktur yang seolah-olah mirip dengan struktur floppy. Gambaran struktur floppy sdapat dilihat pada Gambar 5:
System bus mempunyai 3 jalur bus, yaitu data bus, control bus, dan address bus. Pada saat CPU melakukan sebuah tugas atau instruksi, misalnya ingin membaca data pada alamat 2000:0010h, maka CPU akan mengirimkan nilai 2000:0010h melalui address bus menuju memory controller dan memberi sinyal bahwa ini adalah read operation pada control bus. Kemudian memory controller akan mengerti bahwa CPU ingin membaca data pada alamat 2000:0010h, maka memory controller akan mengambil data dari alamat memory 2000:0010h dan mengirimkan balik ke CPU melalui data bus. Jika yang terjadi adalah write operation, maka memory controller akan menulis data pada memory yang berasal dari data bus. Jika CPU ingin membaca data dari harddisk, maka CPU juga akan mengirimkan ke disk controller. Disk controller akan membaca sectorsector yang diminta CPU agar kemudian bisa di-load ke memory. Pada dasarnnya CPU hanya akan bisa memproses data yang berada pada memory, tetapi karena memory bersifat volatile, yang artinya isi memory akan hilang jika tak ada arus listrik, maka komputer membutuhkan media penyimpanan kedua seperti harddisk, floppy disk, USB, dan sebagainya. Sedangkan pada monitor, sudah mempunyai graphic controller yang akan menerjemahkan setiap byte data yang dikirim kepadanya.
Gambar 5 Struktur floppy [11]
Floppy Disk 1,44 MB mempunyai rincian sebagai berikut: l
l
l
Floppy Disk mempunyai 2 sisi, dan setiap sisi dinamakan head Drive head bergerak di atas permukaan kedua sisi Jarak drive head dengan permukaan sangat kecil, bisa 5000-10000 mikron
l
Setiap sisi mempunyai 80 track (nomor 0-79)
11. File Allocation Table
l
Setiap track mempunyai 18 track (nomor 1-18)
FAT (File Allocation Tabel) adalah tabel yang diletakkan di media penyimpanan seperti harddisk, USB atau floppy yang menunjukkan lokasi dan data
l
Setiap sector mempunyai 512 byte
6
l
Total ukuran floppy adalah 2 x 80 x 18 x 512 = 1.472.560 byte atau setara 1,44 MB
Pembuatan Sistem Operasi Komputer Sederhana dengan ....
Ruang penempatan untuk file dalam floppy dibagi ke dalam unit-unit yang disebut sector. Dalam device yang lebih besar, seperti harddisk, sekumpulan sector membentuk cluster. Khusus untuk floppy disk, jumlah sector dalam setiap cluster hanya satu. Dengan demikian, ukuran cluster untuk floppy disk adalah 512 byte. Struktur FAT12 pada floppy mempunyai 4 sector utama, yaitu : boot sector, FAT tabels, root directory, dan data area.
Nama-nama file dalam FAT12 membatasi 8 karakter untuk nama dan 3 karakter untuk ekstensi. Aturan-aturan untuk penamaan file dalam FAT12 adalah sebagai berikut: l
l
l
Gambar 6 Struktur FAT12
Masing-masing sebagai berikut [12]: l
l
l
l
penjelasan
l
sector
adalah
Boot sector terdapat pada sector pertama (sector 1) pada disk. Boot sector mengandung informasi spesifik tentang struktur dari sistem file, termasuk berapa banyak salinan dari FAT tabels yang ada, seberapa besar masing-masing sector, berapa banyak sector yang ada dalam cluster dan lain-lain. FAT tables mengandung pointer untuk setiap cluster pada disk, dan mengindikasikan nomor dari cluster berikutnya dalam sebuah rantai cluster, akhir dari rantai cluster, apakah cluster dalam keadaan kosong atau dalam keadaaan error. FAT tables adalah satu-satunya metode untuk menemukan lokasi file dan direktori dalam disk. Biasanya ada 2 salinan FAT tables, yang satu berguna untuk keamanan data dan satu lagi untuk tujuan recover data. Pada floppy, karena hanya ada satu cluster untuk satu sector, maka ada FAT entry pointer untuk setiap sector pada disk.
l
l
Nama file, directory, atau ekstensi tidak diakhiri dengan karakter null. Nama file dan directory selalu menempati 8 byte, jika nama file atau directory lebih pendek dari 8 byte, maka sisa byte diisi dengan spasi (dengan kode ASCII 20). Ini juga berlaku untuk 3 karakter extensi file. Nama file, directory, atau ekstensi selalu huruf besar. Bila pengguna membuat nama file dengan huruf kecil, maka sistem operasi akan mengubahnya menjadi besar. Nama directory juga bisa memiliki ekstensi. “FILE1” dan FILE1.TXT” adalah 2 nama yang berbeda. File dan directory tidak boleh memiliki nama yang sama, meskipun atributnya berbeda.
B. TAHAP PENGEMBANGAN SISTEM OPERASI 1. Analisis Tingkat Kebutuhan Sistem Sistem operasi yang dikembangkan dalam Tabel 1 Perbandingan system calls POSIX dan Win32 penelitian ini bertujuan untuk dapat berjalan pada POSIX komputer Win32 dengan prosesor Deskripsi tipe x-86 atau x-64. semua fork()
CreateProcess()
Menciptakan proses baru
close()
CloseHandle()
Menutup file yang sudah dibuka
CreateFile() file untuk baca dan tulis 2.open() Analisis KebutuhanMembuka Perangkat Keras
tipe x-86 atau x-64data umumnya read()Prosesor ReadFile() Membaca dari file ke berasal buffer dari keluarga Intel dan AMD. Untuk write() WriteFile() Menulis data dariprosesor buffer ke fileyang bukan atau x-64, sistem operasi mkdir() x-86 CreateDirectory() Membuat direktoryini baru tak akan bisa berjalan karena mempunyai yang rmdir() RemoveDirectory() Menghapusbahasa directorymesin yang kosong unlink() DeleteFile() Menghapus file berbeda. Tabel kerasyang yangdibutuhkan dibutuhkan Tabel22Perangkat Perangkat keras
Root directory adalah directory utama pada disk. Tidak seperti directory lainnya yang berada dalam data area, root directory mempunyai ukuran yang terbatas (untuk FAT12, 14 sector * 16 directory = 224 possible entries), angka 224 ini menunjukkan jumlah maksimum file dan directory yang dapat ditampung oleh floppy disk dalam struktur FAT12.
No. 1.
Data Area mengandung data isi file dan directory dan mengisi sisa seluruh sector yang ada di floppy.
5. 6. 7.
2. 3. 4.
Jenis Processor
Spesifikasi Intel Pentium IV 2,6 GHz atau lebih RAM 2 GB atau lebih, 192 MB untuk mesin virtual Motherboard PS/2 mouse atau touchpad pada laptop atau notebook Keyboard Monitor USB Removable Disk -
Tabel 3 Perangkat lunak yang dibutuhkan
No. 1.
Jenis Sistem Operasi Windows XP
Keterangan Sebagai sistem operasi awal untuk membuat
7
virtual Motherboard PS/2 mouse atau Kalbiscentia,Volume 2 No.1 Februari touchpad pada laptop 2015 atau notebook 5. Keyboard 3.6. Analisis Tingkat Kebutuhan Monitor 7. Lunak USB Removable Disk 3. 4.
Perangkat
Tabel 3 Perangkat lunak yang dibutuhkan Tabel 3 Perangkat lunak yang dibutuhkan
No. 1.
Jenis Sistem Operasi Windows XP
2.
Oracle VirtualBox
3.
Notepad++
4.
Netwide Assembler (NASM) Floppy Disc Image Disc Image File dari Windows XP Flashnul
5. 6. 7.
Keterangan Sebagai sistem operasi awal untuk membuat sistem operasi FROS ini Sebagai mesin virtual penampung Guest Operating System Sebagai text-editor untuk bahasa pemrograman Assembly Sebagai Assembler Sebagai floppy virtual Sebagai file installer dari Windows XP Untuk memformat USB menjadi seperti Floppy Disc
4. Rancangan Arsitektur Sistem operasi yang akan dibuat disini bersifat single-tasking, yang artinya hanya bisa menjalankan satu program. Sebagai contoh, ketika pengguna menjalankan sebuah text-editor, maka pengguna tidak bisa menjalankan program lainnya, sehingga jika pengguna ingin menjalankan program yang lainnya, maka dia harus menutup program sebelumnya. Sistem operasi ini hanya menerima input keyboard untuk menjalankan sebuah proses dan input mouse untuk beberapa proses seperti memilih menu di setiap halaman explorer.
5. Rincian Rancangan Sistem operasi ini bersifat text-mode, dimana layar yang ditampilkan tidak bersifat grafis seperti kebanyakan sistem operasi zaman sekarang. Meski begitu, sistem operasi ini masih mendukung 16 warna dan khusus untuk aplikasi paint bersifat grafis yang mendukung 256 warna. Layar yang bersifat text-mode hanya mendukung satu jenis font huruf. Sistem operasi jenis ini mirip dengan MS-DOS waktu pertama kali muncul. Selain itu, layar dibagi menjadi 80 kolom dan 25 baris, jadi dalam satu layar hanya bisa menampilkan 80 x 25 karakter. Ada 4 jenis utama halaman layar, yaitu: a. Halaman desktop, yang berguna sebagai halaman awal layar dimana pengguna bisa memilih menu, yaitu menu untuk memilih daftar program yang ingin dijalankan, menu
8
untuk menuju halaman explorer, dan menu untuk menuju halaman command atau shell. b. Halaman telusur atau halaman explorer berguna untuk menampilkan daftar program dan berkas yang ada di komputer, dimana pengguna bisa membuka, mengedit, menghapus, menyalin, atau menamai ulang suatu berkas atau aplikasi yang ada di komputer. c. Halaman command atau halaman instruksi, dimana pengguna bisa menjalankan suatu perintah langsung ke komputer seperti melihat jam, melihat tanggal, mengedit, menghapus, dan menyalin suatu berkas. Halaman ini seperti Command Prompt yang terdapat pada sistem operasi Windows atau Shell yang terdapat pada sistem operasi Unix. d. Halaman aplikasi, dimana aplikasi yang ditampilkan adalah aplikasi yang dipilih oleh pengguna. Untuk penangananan berkas, penulis memilih FAT12, karena ini adalah yang paling mudah dipahami, tetapi sedikit berbeda dengan MS-DOS yaitu hanya bisa menampilkan daftar berkas atau aplikasi dan tidak bisa membuat suatu directory. Sehingga, tidak boleh membuat, menyalin suatu berkas dengan nama yang sama. Jika sudah ada nama yang sama, maka sistem operasi akan memberi pesan untuk mengganti dengan nama lain. Ini dilakukan untuk kemudahan dalam pembuatan sistem operasi FROS ini. Ada 4 jenis extensi file yang didukung oleh sistem operasi ini, yaitu .bin, .bas, .txt, dan .pcx. Masing-masing mempunyai penjelasan sebagai berikut: a. .BIN, yaitu berisi kode biner murni atau kode bahasa mesin sehingga memungkinkan untuk langsung dijalankan oleh processor. b. .BAS, yaitu berisi source code bahasa pemrograman BASIC, sehingga programmer lain dapat membuat suatu aplikasi dengan bahasa BASIC agar dapat berjalan di sistem operasi ini. c. .TXT , yaitu berisi data karakter ASCII, yang merupakan data teks karakter seperti aplikasi Notepad yang terdapat pada Windows. d. .PCX , yaitu berkas berisi data gambar dengan resolusi 320 x 200 dan mendukung 256 warna. Terdapat library yang memungkinkan programmer lain bisa membuat source code bahasa pemgraman Assembly menjadi lebih pendek. Selain itu
Pembuatan Sistem Operasi Komputer Sederhana dengan ....
programmer lain juga dapat membuat suatu aplikasi dengan bahasa BASIC sehingga aplikasinya dapat berjalan dalam sistem operasi ini. Terakhir, pengguna bisa memilih warna sesuai keinginan pengguna untuk layar halaman dekstop dimana default-nya adalah hijau muda.
dengan byte 0 dan 2 byte terakhir adalah 0AA55h. Ini terlihat pada baris program:
6. Tahapan Coding
Untuk membuat program kernel ini, penulis membutuhkan beberapa file yang berisi source code bahasa Assembly. File-file tersebut adalah kernel.asm, basic.asm, disk.asm, keyboard.asm, math.asm, misc. asm, ports.asm, sound.asm, string.asm, dan screen. asm. Selain file kernel.asm, simpan file-file lainnya dalam directory features.
a. Membuat Bootloader Untuk membuat bootloader, penulis menuliskan programnya di Notepad++, lalu merubahnya menjadi file biner dengan NASM. Setelah source code program dibuat dengan nama file boot.asm, simpan file tersebut di folder instalasi NASM. Default-nya adalah C:\ Program Files\Nasm. Lalu ketikkan perintah “nasm boot.asm –o boot.bin” untuk merubahnya menjadi file boot.bin di Command Prompt. Tahap selanjutnya adalah menyimpan file boot. bin di Floppy Disc Image. Penulis tidak bisa menyalin begitu saja karena file boot.bin harus diletakkan di sector pertama floppy disk. Maka langkah yang harus dilakukan adalah membuka Command Prompt dan mengetikkan perintah-perintah berikut:
debug = untuk memanggil program debug.com yang terdapat pada Windows.
n boot.bin = untuk memanggil file boot.bin yang akan diproses.
l 0 = untuk memuat isi file boot.bin ke dalam memory.
w 0 0 0 1 = untuk menyalin file boot.bin ke sector pertama floppy virtual.
Instruksi awal dalam file boot.asm adalah memastikan program memulai alamat awal memory di 07C0h. Ini bisa dilihat pada bagian kode: mov ax, 07C0h mov ds, ax
Setelah itu prosedur 12hts akan membaca cluster-cluster untuk bisa mencari lokasi file kernel. bin. Jumlah sector yang pertama dibaca adalah 14 sector. Terlihat pada baris program mov ah, 2 mov al, 14
Setelah file kernel.bin ditemukan, langkah selanjutnya adalah memuat file kernel.bin ke alamat memory 2000h yang merupakan alamat awal file kernel.bin. Untuk memastikan ukuran program bootloader sebesar 512 byte dan 2 byte terakhir adalah 0AA55h, maka sisa dari program akan diisi
times 510-($-$$) db 0 dw 0AA55h
b. Membuat Kernel
Untuk menghasilkan file kernel.bin, maka penulis perlu meng-compile file kernel.asm. Caranya adalah membuka file nasm.bat dan ketikkan “nasm kernel.asm –o kernel.bin”. File-file yang terdapat dalam directory features sudah di-include dalam file kernel.asm. Jika tidak ada pesan yang muncul, maka proses compile sukses. Setelah itu cukup salin file kernel.bin ke floppy virtual. Program kernel yang merupakan program inti dari sistem operasi akan melakukan banyak tugas penting seperti mengeksekusi sebuah proses, mengalokasi memory untuk program yang berjalan, membuat, menyalin, dan menghapus file, menerjemahkan instruksi bahasa BASIC, dan memberikan pesan jika ada suatu kesalahn.
c. Membuat Shell, Interpreter Basic, Paint, dan Editor Untuk membuat program Shell, Interpreter BASIC, Paint, Editor, dan lain-lain cukup dengan meng-compile file-file paint.asm, editor.asm, dan command.asm tersebut dengan program NASM. File basic.asm sudah di-include dalam kernel.asm. Proses compile sama dengan meng-compile file kernel.asm.
d. Pengujian Sistem Selama tahap pembuatan coding, banyak pengujian yang terjadi untuk mengecek error dan mengira-ngira bagian mana yang salah jika terjadi error run-time. Dalam level ini, tidak ada debugger untuk mengecek error pada saat run-time. Karena penulis membuat pada VirtualBox, maka cukup merestart VirtualBox tersebut dengan memilih menu restart. Jika terjadi error, maka penulis kembali ke sistem operasi Windows XP pada VirtualBox dan melakukan coding lagi.
9
Kalbiscentia,Volume 2 No.1 Februari 2015
Penulis telah mencoba pada beberapa USB dengan kapasitas-kapasitas berbeda seperti 2GB, 4 GB, dan 16 GB. Semuanya tetap diubah menjadi berukuran 1,38 MB oleh software flashnul ini. Metode pengujian yang dipakai adalah metode black box, dimana tujuannya untuk mengetahui apakah sistem operasi ini sudah memenuhi prinsipprinsip dasar sistem operasi. l
Gambar 7 Tampilan awal sistem operasi FROS pada VirtualBox
Kesalahan pada saat run-time yang sering penulis temukan adalah kesalahan dari penempatan instruksi atau data program pada alamat memory. Hal ini memang sangat membutuhkan ketelitian karena jika satu byte saja salah, maka program tidak bisa berjalan semestinya atau bahkan crash. Untuk penanganan mouse dan efek suara, penulis harus langsung mengujinya di komputer karena sistem operasi Windows tidak akan mengizinkan untuk memakai port mouse dan speaker. Jika runtime error terjadi pada saat pengujian langsung di komputer, maka penulis harus segera mematikan komputer karena pada saat itu terjadi exception pada prosesor dan tak akan mungkin diteruskan. Untuk menguji sistem operasi agar bisa di-boot dari USB dan mengujinya langsung di komputer, maka penulis membutuhkan software flashnul. Floppy Disc Image yang telah berisi program sistem operasi ini disalin ke direktori flashnul-1rc1. Selanjutnya buka Command Prompt dan menuju direktori flashnul tersebut. Ketikkan “flashnul –p” untuk mengetahui nomor drive USB. Kita anggap Floppy Disc Image kita mempunyai nama floppy.img, dan nomor drive USB kita adalah 1, maka langkah selanjutnya adalah ketikkan “flashnul 1 –L floppy.img”. Setelah muncul instruksi untuk mengetik “yes”, maka kita ketikkan “yes”, kemudian tekan enter. Jika tidak ada error yang muncul, maka kita siap untuk mem-boot sistem operasi dari USB. Software flashnul ini akan memformat USB sehingga setiap sector besarnya 512 byte, layaknya floppy disk. Ini bisa dilihat dari besarnya ukuran USB tersebut, dari yang besar awalnya adalah 2 GB, setelah diformat dengan flashnul menjadi hanya 1,38 MB. Hal ini diperlukan karena batasan-batasan dari sistem operasi yang kita buat, dimana sistem operasi ini menggunakan FAT12.
10
Hal-hal yang diuji adalah sebagai berikut: Apakah sistem operasi ini sudah memenuhi prinsip-prinsip dasar sistem operasi dimana sistem operasi bisa menjalankan program yang dijalankan pengguna dan program tersebut tidak perlu menangani perangkat keras komputer secara langsung?
l
Apakah pengguna cepat mengenali menggunakan sistem operasi ini?
cara
l
Apakah sistem operasi ini dapat berjalan di semua PC dengan jenis prosesor x-86 dan x-64?
Setelah ditulis beberapa program dengan bahasa Assembly dan bahasa BASIC, program-program tersebut dapat berjalan di sistem operasi FROS ini dengan memanfaatkan system calls yang terdapat di dalam sistem operasi FROS ini. Jika instruksi dalam bahasa BASIC tidak dikenal, maka akan muncul pesan kesalahan. Sedangkan, jika programmer ingin menulis program bahasa Assembly tanpa memanfaatkan system calls yang ada pada sistem operasi FROS ini, jika terdapat kesalahan pengalamatan memory, maka program tidak akan berjalan dengan semestinya. Dapat disimpulkan sistem operasi FROS ini sudah memenuhi prinsip-prinsip dasar sistem operarsi sehingga layak dikatakan sebagai sistem operasi karena program pengguna tak perlu menangani perangkat keras secara langsung. Karena tampilan sistem operasi ini menyesuaikan dengan tampilan-tampilan sistem operasi yang biasa dilihat pengguna pada saat ini seperti Windows dan Linux, maka pengguna cepat memahami cara menggunakan sistem operasi ini, meski sistem operasi ini bersifat text-mode. Tombol enter dan tombol panah yang paling banyak digunakan dalam sistem operasi ini, maka pengguna tidak kesulitan untuk cepat menghapal dan memahaminya. Selain itu, ada petunjuk di menu bantuan pada halaman explorer untuk membantu pengguna memahami sistem operasi FROS ini. Sistem operasi FROS ini telah diuji pada beberapa PC dengan jenis prosesor x-86 dan x-64, seperti berikut:
Pembuatan Sistem Operasi Komputer Sederhana dengan .... Tabel44Data Data pengujian pengujian sistem FROS pada beberapa PC PC Tabel sistemoperasi operasi FROS pada beberapa
No. 1.
Merek PC Acer
2.
Asus
3.
Lenovo
4.
Acer
Spesifikasi Processor – Intel coreI3 32 bit RAM – 2 GB Processor – Intel coreI3 32 bit RAM – 4 GB Processor – Intel coreI5 64 bit RAM – 4 GB Processor –Intel dual core 32 bit RAM – 1 GB Processor –Intel coreI3 32 bit RAM – 4 GB
untuk memuat isi file ke dalam memory, os_create_ file yang berguna untuk membuat file baru, os_ remove_file yang berguna untuk menghapus file dan masih banyak yang lainnya. Prosedur-prosedur tersebut disimpan di filefile terpisah yang berada di directory feature. Di akhir bagian file kernel.asm penulis menambahkan directive %include agar prosedur-prosedur tersebut bisa dikenali oleh assembler NASM.
Pada awal bagian file kernel.asm terdapat penggalan source code seperti jmp os_main, jmp os_ print_string, jmp os_move_cursor dan seterusnya. Diharapkan sistem operasi ini dapat berjalan Instruksi-instruksi tersebut tak akan melakukan Tabel 5 Paket byte pertama pada saat mouse event terjadi pada jenis-jenis PC yang ada pada tahun 1980-an, tetapi NASM akan mencatat setiap alamat Y X Y X Selalu Middle Right apa-apa, Left tetapi karena penulissign sulitsign mendapatkannya, overflow overflow 1 Button maka Button dari Button instruksi tersebut pada saat file kernel.asm dihanya data yang terdapat bit pada bit tabel 3.3 yang penulis compilasi menjadi kernel.bin. Alamat-alamat dari Bit 7 Untuk Bit 6jenis Bit Bit Bit 3 Bit 2 Bit 1 Bit 0 dapat. komputer Apple, sebenarnya 5 4 Apple bukan prosesor instruksi tersebut tidak lain adalah alamat masingprosesor yang digunakan masing prosedur yang terdapat pada kernel.bin yang tipe x-86 atau x-64 seperti Intel dan AMD sebelum di-load ke memory pada saat sistem operasi mulai tahun Prosesor Tabel 62006. Paket byte kedua saatyang mouse terdapat event terjadipada komputer berjalan. Apple sebelum tahun 2006 adalah PowerPC yang X movement Hal ini akan mempermudah programmer lainnya mempunyai bahasa mesin yang berbeda. Tetapi, Tabel 7 Paket byte ketiga saat mouse event terjadi sekarang Apple sudah membuat komputer dengan yang ingin membuat program yang akan berjalan prosesor Intel sehingga sistem operasi FROS ini juga pada sistem operasi ini. Misalnya, programmer ingin Y movement membuat prosedur untuk mencetak kalimat “Hello dapat berjalan pada jenis komputer Apple [13]. People”, maka source code yang dia harus buat adalah : 5.
Apple
e. Analisis Sistem Operasi
Setelah program bootloader berhasil menemukan lokasi sector program kernel, maka program kernel akan di-load di memory pada alamat 2000h:000h, dan akan menempati 32 KB, lalu 32 KB sisanya digunakan untuk program-program lainnya yang dijalankan oleh pengguna. Total memory yang digunakan adalah 64 KB karena sistem operasi ini hanya akan menempati satu segment. 32 KB milik kernel terdiri dari 24 KB untuk kernel executabel code dan 8 KB untuk operasi disk seperti membaca dan menulis isi file. Konsekuensi dari kecilnya jumlah memory ini adalah ukuran program kernel tidak boleh melebihi 24 KB, dan ukuran program external atau program pengguna tidak boleh lebih dari 32 KB. Seperti disebutkan pada BAB II, pembatasan jumlah memory yang dipakai ini untuk mempermudah pembuatan sistem operasi. Dalam program kernel ini terdapat banyak prosedur yang berguna untuk mempersingkat source code program. Prosedur-prosedur itu antara lain os_ print_string yang berguna untuk mencetak string, os_move_cursor yang berguna untuk memindahkan cursor, os_speaker_tone yang berguna untuk menyalakan speaker, os_load_file yang berguna
BITS 16
ORG 32768
%INCLUDE ‘mikedev.inc’
start:
mov si, teks
call os_print_string
mov ah,0
int 16h
ret
teks db ‘Hello People’, 0
Dengan source code ini, akan bisa menampilkan kalimat “Hello People”. Sebagaimana kita lihat, prosedur os_print_string belum didefinisikan sama sekali, tetapi program ini tetap bisa berjalan untuk menampilkan kalimat “Hello People”. Ini disebabkan karena pada file mikedev.inc berisi alamat-alamat instruksi dari prosedur-prosedur yang ada pada file kernel.bin. Alamat-alamat tersebut adalah alamat
11
Kalbiscentia,Volume 2 No.1 Februari 2015
yang berada di memory. Dengan begitu, program pengguna akan dapat memanggil prosedur-prosedur tersebut. Jika ingin membuat program tanpa prosedur yang ada di kernel, maka source code yang harus dibuat adalah seperti ini :
BITS 16
ORG 32768
start:
mov si, teks
call os_print_string
mov ah,0
int 16h
ret os_print_string: pusha
mov ah,0Eh
.ulang: lodsb
cmp al,0
je .done
int 10h
jmp .ulang
.done:
Setelah itu, pastikan segment berada pada lokasi 2000h yang menjadi lokasi memory sistem operasi ini berjalan. Kemudian sistem operasi akan menampilkan splash screen. File rizky.pcx merupakan file gambar yang terdapat dalam disk dan digunakan untuk splash screen. Prosedur splash_screen akan membaca byte data pada file rizky.pcx dan akan menampilkan di video memory. Dalam prosedur splash_screen tersebut, penulis menggunakan interrupt timer untuk menunda proses selama 4 detik sehingga gambar yang ditampilkan hanya berlangsung 4 detik. Halaman command adalah program terpisah yang berada pada file command.bin. Halaman command.bin akan di-load ke memory dengan prosedur os_load_file. Setelah di-load ke memory, baru progam bisa dieksekusi oleh CPU. Pada halaman command, pengguna bisa mengetikkan perintah-perintah yang sudah disediakan sistem operasi agar bisa dieksekusi oleh sistem operasi. Misalnya pengguna mengetikkan “jam”, maka program command.bin akan menampilkan waktu jam saat ini. Perintah ataupun segala macam instruksi dalam sistem operasi ini tidak bersifat case sensitive, yang berarti tidak membedakan huruf besar dan kecil karena segala macam instruksi akan diubah menjadi uppercase sebelum dieksekusi. Ilustrinya seperti berikut: l
Misal, pengguna mengetikkan “jam”, “Jam”, ataupun “JAM” pada halaman command.
l
Lalu program akan merubah “jam”, “Jam”, ataupun “JAM” menjadi “JAM” dengan prosedur os_string_uppercase.
l
Setelah terbentuk instruksi “JAM”, program akan membandingkan apakah perintah termasuk dari salah satu daftar perintah yang disediakan dengan prosedur os_string_compare.
l
Jika termasuk dari salah satu daftar perintah maka program akan melakukan tugas sesuai daftar perintah tersebut.
l
Jika tidak termasuk dari salah satu daftar perintah, maka program akan menampilkan kalimat “Tak ada instruksi seperti itu”.
l
Jika pengguna mengetikkan “keluar”, maka program akan kembali ke halaman sebelumnya.
popa ret
teks db ‘Hello People’, 0
Seperti kita lihat source code tersebut menjadi lebih panjang dan tentu menjadi tidak efektif dalam menulis program. Ini adalah prinsip dasar system calls yang telah dibahas pada BAB II. Hanya saja ini dibuat dengan bahasa Assembly. Prosedur yang dipanggil adalah prosedur yang berasal dari kernel yang berada pada alamat memory yang sudah ditentukan. Program-program yang ingin berjalan di sistem operasi ini harus memulai alamat awalnya pada lokasi 32768. Hal itu terlihat pada penggalan source code org 32768. Alamat 0-32767 adalah milik kernel dan alamat 32768-65531 adalah milik program yang sedang dijalankan pengguna. Hal ini dilakukan untuk mempermudah manajemen memory dalam sistem operasi ini.
12
Pada halaman desktop, jika pengguna menekan tombol enter, maka sistem operasi akan menampilkan daftar program dan file yang ada di disk dengan prosedur os_file_selector. Dengan prosedur os_file_ selector pengguna dapat memilih program yang
Pembuatan Sistem Operasi Komputer Sederhana dengan ....
ingin dijalankan dengan menekan tombol enter dan berpindah dengan tombol panah atas dan bawah. Ketika berpindah antar daftar program, maka background program yang dipilih menjadi hitam dan warna tulisan menjadi putih. Hal ini tidak semudah hanya memberikan background hitam dan warna tulisan putih untuk program yang dipilih. Setiap background harus di-reset ulang karena warna yang ditinggalkan di layar komputer akan terus seperti itu sehingga bisa meninggalkan jejak. Contoh lainnya yang lebih mudah dipahami adalah pada saat mouse digerakkan untuk memilih menu pada halaman explorer. Sebelum menggambar pointer pada lokasi koordinat mouse, maka background harus digambar ulang terlebih dahulu untuk menghapus gambar mouse pada lokasi koordinat sebelumnya. Jika tidak, maka gambar pointer pada lokasi sebelumnya akan tetap ada sehingga meninggalkan jejak. Selanjutnya ketika pengguna sudah selesai menjalankan programnya, maka sistem operasi akan mengambil alih lagi. Ini ditandai dengan instruksi “ret” yang menyatakan untuk kembali ke program yang memanggil yaitu sistem operasi. Dari sudut pandang sistem operasi, programprogram yang dijalankan pengguna sebenarnya adalah prosedur yang sedang dipanggil. Sedangkan dari sudut pandang komputer, program sistem operasi dan program-program lainnya yang berjalan di atas komputer adalah satu program utuh yang terdiri dari banyak prosedur. Semua proses yang terjadi karena ada proses yang memanggilnya. Semua ini terjadi seperti itu dari pertama komputer dihidupkan. Untuk menginisialisasi atau mendeteksi keberadaan mouse, terlebih dahulu dicek apakah buffer keyboard dalam keadaan kosong, yang artinya pengguna tidak sedang menekan keyboard. Jika menekan, maka keyboard otomatis akan menerima input dan memprosesnya, sedangkan proses penginisialisasian mouse akan dihentikan. Jika tidak menekan, maka mouse port akan diaktifkan dengan mengirim nilai 0A8h ke port 64h. Selanjutnya kernel akan mengaktifkan mouse dengan mengirim nilai 0D4h ke port 64h. Selanjutnya kernel mengecek lagi buffer keyboard, untuk memastikan pengguna tidak menekan keyboard. Jika menekan, maka keyboard akan diaktifkan secara otomatis dan mouse akan dimatikan. Jika tidak menekan, maka selanjutnya akan dikirim nilai 0F4h ke port 60h agar mouse bisa mengirimkan paket byte untuk setiap mouse event yang terjadi. Kecepatan paket ini adalah 100 paket
Tabel 4 Data pengujian sistem operasi FROS pada beberapa PC
operasi FROS pada beberapa PC per Tabel detik4 Data danpengujian kernel sistem membutuhkan 3 paket mouse untuk mouse yang terjadi. Jadi urutan No.setiap Merek PC event Spesifikasi No. Merek PC Spesifikasi 1. yangAcer Processor – Intel coreI3 32 bit paket dibutuhkan harus kelipatan 3. Seperti 1. Acer Processor – Intel coreI3 32 bit RAM – 2 GB paket 1-3, paket 4-6, paketRAM 7-9, –paket 2 GB 10-12, ...paket 2.4 Data pengujian Asus sistem operasi FROS Processor – PC Intel coreI3 32 bit Tabel pada beberapa 2. paket Asus22-25,...paket Processor –dan Intelseterusnya. coreI3 32 bit 19-21, 36-39 RAM – 4 GB RAM – 4 GB No.3. salah Merek PC Spesifikasi Harus satu dari urutan paket di atas. Jika tidak Lenovo Processor – Intel coreI5 64 bit 1. 3. Acer Lenovo ProcessorProcessor – Intel coreI3 32 bit coreI5 64 bit – Intel RAM – 4 GB maka sistem operasiRAM tidak akan menangani mouse – 2 RAM GB – 4 GB Processor –Intel core 32 2. 4. dengan Asus Acer baik Processor – Intelterjadi coreI3 32error bit dualseperti event dan akan 4. Acer Processor –Intel dual core 32 RAM – 4 bit GB pergerakkan yang bit menjadi kacau dan tidak 3. Lenovo mouse Processor – Intel– coreI5 RAM 1 GB64 bit 1 GB sedang diklik. RAM – 4 RAM GB – yang bisa5.membedakan tombol mana 32 bit 4. 5. Acer Apple ProcessorProcessor –Intel dual–Intel core 32coreI3 Apple Processor –Intel coreI3 32 bit Contoh paket yang bit salah adalah RAM – 4seperti GB paket 8-10, RAM – 4 GB RAM – 1dan GB seterusnya yang bukan paket 14-16, paket 23-25 5. Apple Processor –Intel coreI3 32 bit merupakan kelipatanRAM 3. – 4 GB Tabel 5 Paket byte pertama pada saat mouse event terjadi Tabel 5 Paket byte pertama pada saat mouse event terjadi
X Y saatXmouseSelalu Middle TabelY event terjadi Y5 Paket byteXpertama pada Y X Selalu Middle
Right Left Right Left Button Button Button overflow overflow sign sign 1 Button Button Button Y X Y Xbit Selalu bit Middle Right Left bit 1 bit Button Button Button overflow overflow sign sign Bit 7 Bit 6 Bit Bit Bit 3 Bit 2 Bit 1 Bit 0 Bit 7 Bit 6bit bitBit Bit Bit 3 Bit 2 Bit 1 Bit 0 5 4 Bit 7 Bit 6 Bit Bit 5 Bit 43 Bit 2 Bit 1 Bit 0 Tabel 5 Paket byte pertama pada saat sign mouse event terjadi 1 overflow overflow sign
5
4
6 Paket kedua saat mouseevent eventterjadi terjadi TabelTabel 6 Paket bytebyte kedua saat mouse Tabel 6 Paket bytesaat kedua mouse Tabel 6 Paket byte kedua mousesaat event terjadi event
terjadi
X movement X movement X movement Tabel 7 Paket byte ketiga mousesaat event terjadi event Tabel 7 Paket bytesaat ketiga mouse
terjadi
TabelTabel 7 Paket bytebyte ketiga saat mouse 7 Paket ketiga saat mouseevent eventterjadi terjadi Y movement
Y movement Y movement
Setelah menerima 3 paket byte, maka harus segera memproses apa yang diperlukan saat mouse event terjadi seperti menggambar pointer pada lokasi koordinat yang ditunjukkan oleh mouse, melakukan suatu proses pada saat mouse diklik, contohnya adalah pada saat pengguna mengklik menu Baru, maka kernel akan langsung menampilkan dialog box untuk membuat file baru. Setelah memproses mouse event, maka sistem operasi segera siap-siap menerima 3 paket berikutnya. Hal ini menjadi semakin rumit jika 3 paket pertama yang diterima belum menyelesaikan prosesnya dan 3 paket berikutnya sudah datang sehingga sistem operasi akan mengambil paket yang tidak tepat atau salah. Contohnya pada saat mengambil 3 paket pertama, yaitu paket 1-3, lalu sistem operasi akan menggambar pointer, tetapi ternyata sistem operasi baru berhasil menggambar pointer pada saat paket ke 5 datang, sehingga sistem operasi akan menganggap paket 5-7 adalah 3 paket berikutnya. Hal ini tentu menjadi kacau karena paket 5-7 bukan merupakan kelipatan 3. Informasi yang diambil akan menjadi salah, seharusnya paket 5 menunjukkan perpindahan koordinat x, tetapi diambil sebagai penentuan apakah mouse sedang diklik atau tidak.
13
Kalbiscentia,Volume 2 No.1 Februari 2015
Sebenarnya ada beberapa metode yang dipakai untuk menangani masalah ini oleh sistem operasi modern saat ini. Tetapi, itu tidak dibahas disini karena akan menjadi lebih kompleks dan rumit. Untuk sistem operasi sederhana ini, proses yang dilakukan pada saat mouse event terjadi tidaklah terlalu banyak dan tidak memakan waktu, hanya beberapa milisecond. Kecepatan paket data mouse adalah 100 paket per detik yang setara dengan 10 milisecond untuk setiap paket. Proses yang terjadi pada saat mouse event terjadi tidak selama itu, sehingga kernel bisa memastikan untuk menerima urutan paket dengan benar. Pada sesaat sebelum menerima 3 paket ini, kernel tetap akan mengecek apakah keyboard dalam keadaan kosong atau tidak. Selanjutnya jika kosong maka kernel akan mematikan keyboard terlebih dahulu. Kemudian kembali mengaktifkan keyboard untuk berjaga-jaga jika penggguna menekan keyboard sewaktu-waktu. Jika ya, maka keyboard akan diaktifkan dan mouse dimatikan.Jika tidak, maka kernel akan mengambil 3 paket byte tersebut kemudian memproses mouse event. Selanjutnya terus seperti itu berulang-ulang sampai pengguna menekan keyboard. Jika pengguna tidak menggerakkan mouse atau mengklik, maka tidak ada paket yang dikirim. Tetapi, tetap mengecek keadaan keyboard untuk memastikan apakah pengguna menekan keyboard sewaktu-waktu. Untuk mengetahui informasi dari paket data mouse yang dikirim, maka kernel perlu mengambil bit 0, bit 1, bit 2 dari byte pertama untuk mengecek tombol mana yang diklik. Jika bit 0 bernilai 1, maka tombol kiri diklik, jika bit 1 bernilai 1, maka tombol kanan diklik, jika bit 2 bernilai 1, maka tombol tengah diklik. Bit 4 dan 5 dari byte pertama untuk menentukan apakah mouse bergerak ke atas, ke bawah, ke kiri atau ke kanan. Jika bit ke 4 bernilai 1, maka mouse bergerak ke kiri, jika 0 maka bergerak ke kanan. Jika bit 5 bernilai 1, maka mouse bergerak ke bawah, jika 0 maka bergerak ke atas. Byte kedua menunjukkan jarak perpindahan X, dan byte ketiga menunjukkan jarak perpindahan Y. Sebagai contoh, jika byte kedua bernilai 10 dan bit ke-4 dari byte pertama bernilai 0, maka mouse telah bergerak sejauh 10 pixel ke kanan. Posisi sebelumnya lalu ditambahkan dengan 10 untuk mengetahui lokasi koordinat mouse sekarang. Selanjutnya kernel akan menggambar pointer pada lokasi yang ditunjukkan. Jika byte kedua bernilai 246 dan bit ke-4 dari byte pertama bernilai 1, maka perhitungannya adalah 256 dikurang 246 yang hasilnya 10. Karena bit ke-5 bernilai 1, maka menandakan mouse telah
14
bergerak sejauh 10 pixel ke kiri. Posisi sebelumnya lalu dikurangi dengan 10 untuk mengetahui lokasi koordinat mouse sekarang. Selanjutnya kernel akan menggambar pointer pada lokasi yang ditunjukkan. Karena sistem operasi ini bersifat text-mode, hanya mendukung 80 kolom dan 25 baris, maka jika posisi mouse sudah melebihi 80, maka jarak pointer dibatasi tak boleh lebih dari 80. Dan untuk alasan kemudahan, maka jarak baris atau sumbu Y hanya sampai 5 baris ke bawah. Pointer yang digambar disini adalah gambar love dengan kode ASCII 3. Pointer akan ditempatkan pada baris dan kolom yang telah dihitung sebelumnya dari perpindahan gerak mouse. Sebelum menggambar pointer, maka harus me-reset kembali layout menu untuk menghapus jejak yang ditinggalkan dari gambar pointer sebelumnya. Sistem operasi juga akan mengecek menu apa saja yang sudah diklik dengan mencocokkan posisi koordinat mouse saat ini dengan posisi menu. Jika sesuai dengan posisi, maka proses selanjutnya bisa dilakukan. Dari keterangan tentang mouse di atas, penaganan mouse dan keyboard yang hampir bersamaan merupakan contoh dari salah satu manajemen proses dan context-switching untuk berpindah antara mouse dan keyboard. Pada saat pengguna mengedit suatu file .TXT atau .BAS, maka proses yang terjadi pada keyboard sangat kompleks. Program catatan.bin tidak hanya sekedar menerima input keyboard dan menampilkannya di layar. Program catatan.bin akan mengecek dulu, apakah tombol yang ditekan merupakan tombol penting seperti F2 untuk mensimpan hasil editan file, Esc untuk keluar dari program editor dan lainlain. Setelah itu akan mengecek apakah tombol yang ditekan tombol backspace. Jika ya, maka program catatan.bin akan mengecek apakah cursor berada pada kolom pertama. Jika tidak, maka sistem akan menghapus karakter sebelumnya. Tidak ada interrupt atau instruksi dalam Assembly yang berguna untuk menghapus karakter. Yang ada hanyalah, karakter sebelumnya akan diganti dengan karakter null. Lalu jika pengguna menekan tombol enter, maka program akan memberikan karakter dengan bilangan hexadesimal 0Dh untuk pindah baris berikutnya dan karakter dengan bilangan hexadesimal 0Ah untuk kembali ke kolom awal. Selama proses input keyboard terjadi, selain menampilkan karakter yang di-input, juga setiap karakter yang di-input akan langsung disimpan ke dalam memory. Setiap alamat memory ini akan bertambah atau berkurang sesuai dengan
Pembuatan Sistem Operasi Komputer Sederhana dengan ....
posisi cursor. Pada saat pengguna menekan tombol panah kiri, maka cursor akan berpindah satu kolom ke kiri. Pada saat menekan tombol panah kanan, maka cursor akan berpindah satu kolom ke kanan. Pada saat menekan tombol panah atas, maka cursor akan berpindah satu baris ke atas. Pada saat menekan tombol panah bawah, maka cursor akan berpindah satu baris ke bawah. Jika sudah mencapai baris terbawah pada saat menekan tombol panah bawah, maka setiap baris karakter akan naik 1 baris karakter ke atas agar menampilkan karakter di bagian bawah yang tidak terlihat. Jika sudah mencapai baris teratas pada saat menekan tombol panah atas, maka setiap baris karakter akan turun 1 baris karakter ke bawah agar menampilkan karakter di bagian atas yang tidak terlihat. Untuk menampilkan karakter yang tidak terlihat sebelumnya, maka program akan mengambil data karakter yang tersimpan dalam memory. Setelah pengguna selesai menulis datanya pada text-editor, maka pengguna cukup menekan F2 untuk menyimpan file ke dalam disk. Pada saat file disimpan ke dalam disk, maka program catatan.bin akan membaca ulang FAT12 untuk mengecek sectorsector mana saja yang masih kosong untuk bisa ditempati oleh data pengguna agar bisa disimpan di dalam disk. FAT12 mempunyai pointer-pointer untuk menunjuk sector-sector mana saja yang masih bisa ditempati. Lalu program catatan.bin akan menyimpan data file pengguna pada sector-sector yang ditunjuk oleh FAT12. Kemudian program catatan akan menulis nama file pengguna pada tabel yang ada dalam FAT12. Untuk membaca data file pengguna ketika pengguna membuka suatu file, program catatan akan membaca tabel yang ada dalam FAT12 dan mencari nama file yang dimaksud. Setelah program catatan menemukan file yang dimaksud, maka program akan membaca data dari sector-sector yang ditunjuk oleh FAT12 dan menyimpannya dalam memory agar selanjutnya bisa diproses oleh CPU. Selain bisa menjalankan file .BIN, sistem operasi juga bisa menjalankan file .BAS. Sistem operasi sudah mempunyai interpreter-nya sendiri untuk menerjemahkan setiap instruksi pada file .BAS. Membuat interpreter, pada dasarnya mirip dengan membuat shell, hanya saja lebih kompleks. Interpreter akan mengecek setiap sintaks apakah termasuk sintaks yang valid. Jika tidak sah, maka interpreter akan berhenti memproses dan menampilkan pesan error pada baris dimana terjadi error tersebut. Jika sintaks adalah sebuah fungsi yang sudah dikenal, maka interpreter akan langsung melakukan prosedur
yang terdapat dalam system calls. Jika sintaks adalah variable, maka interpreter akan mengalokasikan ruang memory untuk variable tersebut. Jika sintaks termasuk keyword seperti IF, THEN, FOR, DO dan lain-lain maka interpreter akan melakukan operasi logika dan pengulangan. Programmer dapat membuat program dengan bahasa Assembly atau dengan bahasa BASIC dalam sistem operasi FROS ini. Bahasa Assembly tidak bisa ditulis dalam sistem operasi ini, melainkan harus ditulis di sistem operasi lainnya karena sistem operasi ini tidak menyediakan Assembler. Sedangkan bahasa BASIC bisa ditulis dalam sistem operasi ini karena sistem operasi ini sudah menyediakan interpreter untuk bahasa BASIC. Tetapi, tidak semua instruksi dalam bahasa BASIC bisa diterjemahkan. Sistem operasi yang dihasilkan bersifat textmode, kecuali untuk aplikasi paint yang bersifat graphic-mode. Dalam tampilan yang text-mode ini, pengguna hanya bisa menggunakan alat input keyboard, hanya operasi pemilihan menu pada halaman explorer yang bisa menerima input mouse. Interface yang dihasilkan sudah disesuaikan dengan keadaan saat ini, sehingga pengguna akan cepat memahaminya. Petunjuk menu ataupun semua instruksi memakai Bahasa Indonesia, sehingga pengguna di Indonesia akan cepat memahami menggunakan sistem operasi ini. Hanya satu program yang bisa dijalankan sekali eksekusi, sehingga jika ingin menjalankan program lainnya, program sebelumnya harus dikeluarkan dulu. Program tersebut menempati seluruh layar komputer. Program tak bisa di-resize, di-minimize atau maximize, semuanya menempati satu layar komputer. Pengguna dapat membuat file baru, menghapus file, menyalin file dengan nama berbeda, menamai ulang suatu file dan membuka suatu file. Nama-nama file tidak boleh ada yang sama.
IV. SIMPULAN Berdasarkan analisis dari penelitian pembuatan sistem operasi ini, bisa diperoleh beberapa kesimpulan untuk pembaca. Kesimpulan-kesimpulan tersebut adalah: l
l
Dengan membuat program menggunakan bahasa Assembly, semua instruksi yang terjadi pada mesin komputer bisa dipahami dengan sangat baik. Program bootloader adalah program di luar BIOS yang akan pertama kali dijalankan ketika
15
Kalbiscentia,Volume 2 No.1 Februari 2015
l
l
l
komputer dinyalakan untuk memanggil program inti sistem operasi, yaitu kernel.
[4]. S. Abraham et. al. Operating System Concepts with
Program kernel adalah program inti dari sistem operasi, yang akan melakukan semua operasi penting sistem operasi seperti menjalankan program pengguna, mengalokasikan memory untuk program yang sedang berjalan, mendeteksi input keyboard dan mouse, menampilkan output ke layar monitor, memuat system calls ke dalam memory, dan menjalankan tugas dari menumenu yang dipilih pengguna.
[5]. S. Abraham et. al. Operating System Concepts 8th
Program Shell yang terpisah dari program kernel juga dapat menjalankan instruksi yang di-input oleh pengguna seperti layaknya program kernel.
[8].
Interpreter BASIC yang berguna untuk menerjemahkan instruksi-instruksi yang terdapat pada bahasa BASIC dapat dijalankan dalam sistem operasi ini, sehingga programmer lain dapat menuliskan programnya untuk dijalankan di sistem operasi ini.
[9].
JAVA 6th Edition. Asia: WILLEY. 2004. Hlm 6. Edition. Asia:WILEY. 2010.Hlm 89-90. [6]. S. Abraham Silberschatz et. al. Operating System Concepts 6th Edition. Asia: WILLEY. 2005. Hlm 5661, 63, 95-97. [7].
Operating System Tutorial. [Online]. Diakses 1 September 2013 dari http://www.tutorialspoint.com/ operating_system/pdf/index.pdf Operating Systems Development. [Online]. Diakses 5 Mei 2013 dari http://www.brokenthorn.com/Resources/ OSDev3.html Computer Tutorial. [Online]. Diakses 21 Juni 2013 dari http://www.coval.net/ teach/emu8086/helpfiles/ computer_structures.html
[10]. What is FAT12 ?. [Online]. Diakses 29 Oktober 2013 dari http://www.easeus.com/resource/drive/fat12.htm [11]. What is FAT12 and its features ?. [Online]. Diakses 29 Oktober dari http://www.data-recovery-app.com/ datarecovery/fat12.html
V. DAFTAR RUJUKAN [1]. B.H.
Santoso.
Perancangan
[12]. An overview of FAT12. [Online]. Diakses 6 Juli 2013 Sistem
Operasi.
Yogyakarta: Andi .2005. Hlm 1-2. [2].
Mike OS x086 Operating System. [Online]. Diakses 14 Januari 2013 dari http://mikeosberlios.de
[3]. A. C. Michael & S. Stanley. Beyond the Waterfall: Sotware Development at Microsoft. 1995. [Online]. Diakses 30 Agustus 2013 dari http://dspace.mit.edu/ bitstream/handle/1721.1/2593/SWP-3844-33836288. pdf
16
dari
http://students.cs.byu.edu/cs345ta/labs/fall03_
specs/lab_fat_help.htm [13] Apple to Use Intel Microprocessors Beginning in 2006. [Online]. Diakses 7 Maret 2014 dari http://www. apple.com/pr/library/2005/06/06Apple-to-Use-IntelMicroprocessor-Beginning-in-2006.htm